Now that the CLI and the Next.js app are one package, nesting it inside app/ served no purpose - the repo root itself becomes the published npm package. Merges app/.gitignore and app/README.md into the root versions, drops the now-duplicate app/LICENSE, and updates path references (README, docs/ARCHITECTURE.md, docs/CONFIG_REFERENCE.md, package.json's repository.directory) that assumed the app/ nesting. Also fixes a real bug this surfaced: the in-app docs viewer resolved docs/ relative to process.cwd(), which only worked by accident when the CLI happened to be invoked from app/'s parent directory. A first attempt at fixing it with import.meta.dirname broke instead, for the same cross-module-graph reason config-path resolution already documented - Next compiles Route Handlers through a separate module graph that doesn't preserve source-relative import.meta paths. Fixed by exposing the app root via TRIGGERSHELL_APP_ROOT (set once in server.ts, where import.meta *does* resolve correctly), the same pattern already used for TRIGGERSHELL_CONFIG_PATH. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
22 lines
649 B
TypeScript
22 lines
649 B
TypeScript
import type { ControlType, VariableConfig } from "./schema";
|
|
|
|
/** Resolves the effective shadcn control for a variable: explicit `control` wins, otherwise a type-based default. */
|
|
export function resolveControl(variable: VariableConfig): ControlType {
|
|
if (variable.control) return variable.control;
|
|
|
|
switch (variable.type) {
|
|
case "string":
|
|
if (variable.secret) return "password";
|
|
if (variable.multiline) return "textarea";
|
|
return "text";
|
|
case "number":
|
|
return "number";
|
|
case "boolean":
|
|
return "checkbox";
|
|
case "enum":
|
|
return "select";
|
|
case "multiselect":
|
|
return "multiselect";
|
|
}
|
|
}
|