@askrjs/cli 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +140 -0
- package/dist/add-DqhqRzBQ.js +555 -0
- package/dist/add-DqhqRzBQ.js.map +1 -0
- package/dist/add.js +3 -0
- package/dist/cli.js +91 -0
- package/dist/cli.js.map +1 -0
- package/dist/create.js +923 -0
- package/dist/create.js.map +1 -0
- package/dist/is-direct-execution-Cdlr-ZUl.js +20 -0
- package/dist/is-direct-execution-Cdlr-ZUl.js.map +1 -0
- package/dist/openapi.js +127 -0
- package/dist/openapi.js.map +1 -0
- package/dist/skills/askr-accessibility/SKILL.md +68 -0
- package/dist/skills/askr-accessibility/agents/openai.yaml +4 -0
- package/dist/skills/askr-agent-execution/SKILL.md +85 -0
- package/dist/skills/askr-agent-execution/agents/openai.yaml +4 -0
- package/dist/skills/askr-agent-workflows/SKILL.md +57 -0
- package/dist/skills/askr-agent-workflows/agents/openai.yaml +4 -0
- package/dist/skills/askr-api-integration/SKILL.md +79 -0
- package/dist/skills/askr-api-integration/agents/openai.yaml +4 -0
- package/dist/skills/askr-app-builder/SKILL.md +99 -0
- package/dist/skills/askr-app-builder/agents/openai.yaml +4 -0
- package/dist/skills/askr-auth-access/SKILL.md +74 -0
- package/dist/skills/askr-auth-access/agents/openai.yaml +4 -0
- package/dist/skills/askr-cli-vite/SKILL.md +76 -0
- package/dist/skills/askr-cli-vite/agents/openai.yaml +4 -0
- package/dist/skills/askr-dashboard-charts/SKILL.md +82 -0
- package/dist/skills/askr-dashboard-charts/agents/openai.yaml +4 -0
- package/dist/skills/askr-design-system/SKILL.md +86 -0
- package/dist/skills/askr-design-system/agents/openai.yaml +4 -0
- package/dist/skills/askr-env-config/SKILL.md +74 -0
- package/dist/skills/askr-env-config/agents/openai.yaml +4 -0
- package/dist/skills/askr-error-loading-empty/SKILL.md +89 -0
- package/dist/skills/askr-error-loading-empty/agents/openai.yaml +4 -0
- package/dist/skills/askr-file-upload-artifacts/SKILL.md +77 -0
- package/dist/skills/askr-file-upload-artifacts/agents/openai.yaml +4 -0
- package/dist/skills/askr-forms-tables-crud/SKILL.md +98 -0
- package/dist/skills/askr-forms-tables-crud/agents/openai.yaml +4 -0
- package/dist/skills/askr-mental-model/SKILL.md +109 -0
- package/dist/skills/askr-mental-model/agents/openai.yaml +4 -0
- package/dist/skills/askr-migration-react/SKILL.md +81 -0
- package/dist/skills/askr-migration-react/agents/openai.yaml +4 -0
- package/dist/skills/askr-observability-debugging/SKILL.md +83 -0
- package/dist/skills/askr-observability-debugging/agents/openai.yaml +4 -0
- package/dist/skills/askr-project-structure/SKILL.md +79 -0
- package/dist/skills/askr-project-structure/agents/openai.yaml +4 -0
- package/dist/skills/askr-query-mutation/SKILL.md +115 -0
- package/dist/skills/askr-query-mutation/agents/openai.yaml +4 -0
- package/dist/skills/askr-realtime-streaming/SKILL.md +76 -0
- package/dist/skills/askr-realtime-streaming/agents/openai.yaml +4 -0
- package/dist/skills/askr-resources-data/SKILL.md +100 -0
- package/dist/skills/askr-resources-data/agents/openai.yaml +4 -0
- package/dist/skills/askr-routing-layouts/SKILL.md +107 -0
- package/dist/skills/askr-routing-layouts/agents/openai.yaml +4 -0
- package/dist/skills/askr-runtime-reactivity/SKILL.md +92 -0
- package/dist/skills/askr-runtime-reactivity/agents/openai.yaml +4 -0
- package/dist/skills/askr-ssr-ssg/SKILL.md +76 -0
- package/dist/skills/askr-ssr-ssg/agents/openai.yaml +4 -0
- package/dist/skills/askr-testing-determinism/SKILL.md +75 -0
- package/dist/skills/askr-testing-determinism/agents/openai.yaml +4 -0
- package/dist/skills/askr-theming/SKILL.md +86 -0
- package/dist/skills/askr-theming/agents/openai.yaml +4 -0
- package/dist/skills/askr-ui-composition/SKILL.md +92 -0
- package/dist/skills/askr-ui-composition/agents/openai.yaml +4 -0
- package/dist/skills-Bh0mEhIx.js +682 -0
- package/dist/skills-Bh0mEhIx.js.map +1 -0
- package/dist/skills.js +3 -0
- package/dist/ssg.js +188 -0
- package/dist/ssg.js.map +1 -0
- package/dist/templates/full-stack/AGENTS.md +12 -0
- package/dist/templates/full-stack/README.md +18 -0
- package/dist/templates/full-stack/gitignore.template +4 -0
- package/dist/templates/full-stack/index.html +14 -0
- package/dist/templates/full-stack/package.json +37 -0
- package/dist/templates/full-stack/server.ts +13 -0
- package/dist/templates/full-stack/src/action-authorizations.ts +10 -0
- package/dist/templates/full-stack/src/actions/create-message.ts +10 -0
- package/dist/templates/full-stack/src/i18n.ts +8 -0
- package/dist/templates/full-stack/src/main.tsx +12 -0
- package/dist/templates/full-stack/src/pages/home.tsx +25 -0
- package/dist/templates/full-stack/src/pages/layout.tsx +33 -0
- package/dist/templates/full-stack/src/pages/not-found.tsx +4 -0
- package/dist/templates/full-stack/src/routes.tsx +20 -0
- package/dist/templates/full-stack/src/schemas.ts +11 -0
- package/dist/templates/full-stack/src/server/action-registry.ts +12 -0
- package/dist/templates/full-stack/src/server/actions/create-message.ts +14 -0
- package/dist/templates/full-stack/src/server/app.ts +66 -0
- package/dist/templates/full-stack/src/server/dependencies.ts +55 -0
- package/dist/templates/full-stack/src/server/entry-server.ts +8 -0
- package/dist/templates/full-stack/src/telemetry.ts +4 -0
- package/dist/templates/full-stack/src/vite-server.d.ts +6 -0
- package/dist/templates/full-stack/tests/actions/create-message.test.ts +13 -0
- package/dist/templates/full-stack/tsconfig.json +16 -0
- package/dist/templates/full-stack/vite.config.ts +11 -0
- package/dist/templates/spa/AGENTS.md +60 -0
- package/dist/templates/spa/README.md +96 -0
- package/dist/templates/spa/gitignore.template +16 -0
- package/dist/templates/spa/index.html +13 -0
- package/dist/templates/spa/package.json +35 -0
- package/dist/templates/spa/src/adapters/operations-client.ts +90 -0
- package/dist/templates/spa/src/components/shared/metric-card.tsx +27 -0
- package/dist/templates/spa/src/components/shared/status-badge.tsx +24 -0
- package/dist/templates/spa/src/features/operations/operations.query.ts +9 -0
- package/dist/templates/spa/src/main.tsx +10 -0
- package/dist/templates/spa/src/pages/_layout.tsx +9 -0
- package/dist/templates/spa/src/pages/_routes.tsx +27 -0
- package/dist/templates/spa/src/pages/app/_layout.tsx +94 -0
- package/dist/templates/spa/src/pages/app/_routes.tsx +10 -0
- package/dist/templates/spa/src/pages/app/admin-home.tsx +152 -0
- package/dist/templates/spa/src/pages/app/agent-runs.tsx +93 -0
- package/dist/templates/spa/src/pages/app/settings.tsx +91 -0
- package/dist/templates/spa/src/pages/auth/_layout.tsx +38 -0
- package/dist/templates/spa/src/pages/auth/_routes.tsx +6 -0
- package/dist/templates/spa/src/pages/auth/login.tsx +63 -0
- package/dist/templates/spa/src/pages/not-found.tsx +22 -0
- package/dist/templates/spa/src/pages/public/_layout.tsx +47 -0
- package/dist/templates/spa/src/pages/public/_routes.tsx +6 -0
- package/dist/templates/spa/src/pages/public/home.tsx +143 -0
- package/dist/templates/spa/src/shared/format.ts +12 -0
- package/dist/templates/spa/src/shared/navigation.ts +15 -0
- package/dist/templates/spa/src/styles/components.css +49 -0
- package/dist/templates/spa/src/styles/layout.css +192 -0
- package/dist/templates/spa/src/styles/reset.css +44 -0
- package/dist/templates/spa/src/styles/theme.css +57 -0
- package/dist/templates/spa/src/styles/tokens.css +20 -0
- package/dist/templates/spa/src/styles.css +7 -0
- package/dist/templates/spa/src/styles.d.ts +1 -0
- package/dist/templates/spa/tests/app.test.tsx +37 -0
- package/dist/templates/spa/tests/components/shared.test.tsx +12 -0
- package/dist/templates/spa/tests/resources.test.ts +22 -0
- package/dist/templates/spa/tsconfig.json +20 -0
- package/dist/templates/spa/tsconfig.node.json +10 -0
- package/dist/templates/spa/vite.config.ts +24 -0
- package/dist/templates/spa/vitest.config.ts +17 -0
- package/dist/templates/ssg/AGENTS.md +55 -0
- package/dist/templates/ssg/README.md +39 -0
- package/dist/templates/ssg/gitignore.template +17 -0
- package/dist/templates/ssg/index.html +13 -0
- package/dist/templates/ssg/package.json +35 -0
- package/dist/templates/ssg/src/app.tsx +14 -0
- package/dist/templates/ssg/src/components/badge.tsx +3 -0
- package/dist/templates/ssg/src/components/counter.tsx +30 -0
- package/dist/templates/ssg/src/components/site-shell.tsx +111 -0
- package/dist/templates/ssg/src/jsx.d.ts +23 -0
- package/dist/templates/ssg/src/main.tsx +8 -0
- package/dist/templates/ssg/src/pages/about.tsx +82 -0
- package/dist/templates/ssg/src/pages/content.tsx +63 -0
- package/dist/templates/ssg/src/pages/example.tsx +97 -0
- package/dist/templates/ssg/src/pages/home.tsx +51 -0
- package/dist/templates/ssg/src/resources/user.ts +15 -0
- package/dist/templates/ssg/src/routes.tsx +15 -0
- package/dist/templates/ssg/src/styles.css +89 -0
- package/dist/templates/ssg/src/vite-env.d.ts +5 -0
- package/dist/templates/ssg/ssg.config.ts +34 -0
- package/dist/templates/ssg/tests/app.test.tsx +19 -0
- package/dist/templates/ssg/tests/components/counter.test.tsx +18 -0
- package/dist/templates/ssg/tests/resources.test.ts +11 -0
- package/dist/templates/ssg/tests/ssg-config.test.ts +11 -0
- package/dist/templates/ssg/tsconfig.json +20 -0
- package/dist/templates/ssg/tsconfig.node.json +10 -0
- package/dist/templates/ssg/vite.config.ts +24 -0
- package/dist/templates/ssg/vitest.config.ts +17 -0
- package/dist/templates/ssr/AGENTS.md +28 -0
- package/dist/templates/ssr/README.md +38 -0
- package/dist/templates/ssr/gitignore.template +16 -0
- package/dist/templates/ssr/index.html +13 -0
- package/dist/templates/ssr/package.json +34 -0
- package/dist/templates/ssr/server.ts +16 -0
- package/dist/templates/ssr/src/app.tsx +21 -0
- package/dist/templates/ssr/src/components/counter.tsx +26 -0
- package/dist/templates/ssr/src/entry-server.tsx +10 -0
- package/dist/templates/ssr/src/main.tsx +11 -0
- package/dist/templates/ssr/src/pages/about.tsx +75 -0
- package/dist/templates/ssr/src/pages/example.tsx +113 -0
- package/dist/templates/ssr/src/pages/home.tsx +56 -0
- package/dist/templates/ssr/src/resources/user.ts +15 -0
- package/dist/templates/ssr/src/routes.tsx +13 -0
- package/dist/templates/ssr/src/styles.css +148 -0
- package/dist/templates/ssr/src/vite-server.d.ts +7 -0
- package/dist/templates/ssr/tests/app.test.tsx +24 -0
- package/dist/templates/ssr/tests/components/counter.test.tsx +13 -0
- package/dist/templates/ssr/tests/resources.test.ts +11 -0
- package/dist/templates/ssr/tsconfig.json +22 -0
- package/dist/templates/ssr/tsconfig.node.json +10 -0
- package/dist/templates/ssr/tsconfig.server.json +15 -0
- package/dist/templates/ssr/vite.config.ts +25 -0
- package/dist/templates/ssr/vitest.config.ts +13 -0
- package/dist/templates/startkit/AGENTS.md +77 -0
- package/dist/templates/startkit/README.md +192 -0
- package/dist/templates/startkit/gitignore.template +16 -0
- package/dist/templates/startkit/index.html +13 -0
- package/dist/templates/startkit/package.json +35 -0
- package/dist/templates/startkit/src/components/app-header.tsx +93 -0
- package/dist/templates/startkit/src/components/app-sidebar.tsx +95 -0
- package/dist/templates/startkit/src/components/data-table.tsx +80 -0
- package/dist/templates/startkit/src/components/empty-state.tsx +13 -0
- package/dist/templates/startkit/src/components/page-header.tsx +23 -0
- package/dist/templates/startkit/src/components/stat-card.tsx +24 -0
- package/dist/templates/startkit/src/features/accounts/account-filters.tsx +61 -0
- package/dist/templates/startkit/src/features/accounts/account-table.tsx +79 -0
- package/dist/templates/startkit/src/lib/format.ts +31 -0
- package/dist/templates/startkit/src/lib/mock-data.ts +441 -0
- package/dist/templates/startkit/src/lib/routes.ts +116 -0
- package/dist/templates/startkit/src/main.tsx +12 -0
- package/dist/templates/startkit/src/pages/_layout.tsx +56 -0
- package/dist/templates/startkit/src/pages/auth/_layout.tsx +7 -0
- package/dist/templates/startkit/src/pages/auth/login.tsx +129 -0
- package/dist/templates/startkit/src/pages/home.tsx +83 -0
- package/dist/templates/startkit/src/pages/not-found.tsx +24 -0
- package/dist/templates/startkit/src/pages/workspace/_layout.tsx +17 -0
- package/dist/templates/startkit/src/pages/workspace/accounts/index.tsx +217 -0
- package/dist/templates/startkit/src/pages/workspace/dashboard.tsx +118 -0
- package/dist/templates/startkit/src/pages/workspace/settings.tsx +218 -0
- package/dist/templates/startkit/src/router.tsx +7 -0
- package/dist/templates/startkit/src/routes/auth-config.ts +38 -0
- package/dist/templates/startkit/src/routes/auth.ts +8 -0
- package/dist/templates/startkit/src/routes/index.ts +28 -0
- package/dist/templates/startkit/src/routes/public.ts +8 -0
- package/dist/templates/startkit/src/routes/workspace/accounts.ts +8 -0
- package/dist/templates/startkit/src/routes/workspace/index.ts +14 -0
- package/dist/templates/startkit/src/styles/components.css +396 -0
- package/dist/templates/startkit/src/styles/layout.css +192 -0
- package/dist/templates/startkit/src/styles/reset.css +38 -0
- package/dist/templates/startkit/src/styles/theme.css +76 -0
- package/dist/templates/startkit/src/styles/tokens.css +67 -0
- package/dist/templates/startkit/src/styles.css +7 -0
- package/dist/templates/startkit/src/toast.ts +55 -0
- package/dist/templates/startkit/src/utils/join-classes.ts +4 -0
- package/dist/templates/startkit/src/vite-env.d.ts +5 -0
- package/dist/templates/startkit/tests/app.test.tsx +32 -0
- package/dist/templates/startkit/tests/preferences.test.ts +43 -0
- package/dist/templates/startkit/tests/resources.test.ts +82 -0
- package/dist/templates/startkit/tsconfig.json +20 -0
- package/dist/templates/startkit/tsconfig.node.json +10 -0
- package/dist/templates/startkit/vite.config.ts +32 -0
- package/dist/templates/startkit/vitest.config.ts +13 -0
- package/dist/update-DyW1na5V.js +1140 -0
- package/dist/update-DyW1na5V.js.map +1 -0
- package/dist/update.js +3 -0
- package/package.json +84 -0
- package/skills/askr-accessibility/SKILL.md +68 -0
- package/skills/askr-accessibility/agents/openai.yaml +4 -0
- package/skills/askr-agent-execution/SKILL.md +85 -0
- package/skills/askr-agent-execution/agents/openai.yaml +4 -0
- package/skills/askr-agent-workflows/SKILL.md +57 -0
- package/skills/askr-agent-workflows/agents/openai.yaml +4 -0
- package/skills/askr-api-integration/SKILL.md +79 -0
- package/skills/askr-api-integration/agents/openai.yaml +4 -0
- package/skills/askr-app-builder/SKILL.md +99 -0
- package/skills/askr-app-builder/agents/openai.yaml +4 -0
- package/skills/askr-auth-access/SKILL.md +74 -0
- package/skills/askr-auth-access/agents/openai.yaml +4 -0
- package/skills/askr-cli-vite/SKILL.md +76 -0
- package/skills/askr-cli-vite/agents/openai.yaml +4 -0
- package/skills/askr-dashboard-charts/SKILL.md +82 -0
- package/skills/askr-dashboard-charts/agents/openai.yaml +4 -0
- package/skills/askr-design-system/SKILL.md +86 -0
- package/skills/askr-design-system/agents/openai.yaml +4 -0
- package/skills/askr-env-config/SKILL.md +74 -0
- package/skills/askr-env-config/agents/openai.yaml +4 -0
- package/skills/askr-error-loading-empty/SKILL.md +89 -0
- package/skills/askr-error-loading-empty/agents/openai.yaml +4 -0
- package/skills/askr-file-upload-artifacts/SKILL.md +77 -0
- package/skills/askr-file-upload-artifacts/agents/openai.yaml +4 -0
- package/skills/askr-forms-tables-crud/SKILL.md +98 -0
- package/skills/askr-forms-tables-crud/agents/openai.yaml +4 -0
- package/skills/askr-mental-model/SKILL.md +109 -0
- package/skills/askr-mental-model/agents/openai.yaml +4 -0
- package/skills/askr-migration-react/SKILL.md +81 -0
- package/skills/askr-migration-react/agents/openai.yaml +4 -0
- package/skills/askr-observability-debugging/SKILL.md +83 -0
- package/skills/askr-observability-debugging/agents/openai.yaml +4 -0
- package/skills/askr-project-structure/SKILL.md +79 -0
- package/skills/askr-project-structure/agents/openai.yaml +4 -0
- package/skills/askr-query-mutation/SKILL.md +115 -0
- package/skills/askr-query-mutation/agents/openai.yaml +4 -0
- package/skills/askr-realtime-streaming/SKILL.md +76 -0
- package/skills/askr-realtime-streaming/agents/openai.yaml +4 -0
- package/skills/askr-resources-data/SKILL.md +100 -0
- package/skills/askr-resources-data/agents/openai.yaml +4 -0
- package/skills/askr-routing-layouts/SKILL.md +107 -0
- package/skills/askr-routing-layouts/agents/openai.yaml +4 -0
- package/skills/askr-runtime-reactivity/SKILL.md +92 -0
- package/skills/askr-runtime-reactivity/agents/openai.yaml +4 -0
- package/skills/askr-ssr-ssg/SKILL.md +76 -0
- package/skills/askr-ssr-ssg/agents/openai.yaml +4 -0
- package/skills/askr-testing-determinism/SKILL.md +75 -0
- package/skills/askr-testing-determinism/agents/openai.yaml +4 -0
- package/skills/askr-theming/SKILL.md +86 -0
- package/skills/askr-theming/agents/openai.yaml +4 -0
- package/skills/askr-ui-composition/SKILL.md +92 -0
- package/skills/askr-ui-composition/agents/openai.yaml +4 -0
- package/templates/full-stack/AGENTS.md +12 -0
- package/templates/full-stack/README.md +18 -0
- package/templates/full-stack/gitignore.template +4 -0
- package/templates/full-stack/index.html +14 -0
- package/templates/full-stack/package.json +37 -0
- package/templates/full-stack/server.ts +13 -0
- package/templates/full-stack/src/action-authorizations.ts +10 -0
- package/templates/full-stack/src/actions/create-message.ts +10 -0
- package/templates/full-stack/src/i18n.ts +8 -0
- package/templates/full-stack/src/main.tsx +12 -0
- package/templates/full-stack/src/pages/home.tsx +25 -0
- package/templates/full-stack/src/pages/layout.tsx +33 -0
- package/templates/full-stack/src/pages/not-found.tsx +4 -0
- package/templates/full-stack/src/routes.tsx +20 -0
- package/templates/full-stack/src/schemas.ts +11 -0
- package/templates/full-stack/src/server/action-registry.ts +12 -0
- package/templates/full-stack/src/server/actions/create-message.ts +14 -0
- package/templates/full-stack/src/server/app.ts +66 -0
- package/templates/full-stack/src/server/dependencies.ts +55 -0
- package/templates/full-stack/src/server/entry-server.ts +8 -0
- package/templates/full-stack/src/telemetry.ts +4 -0
- package/templates/full-stack/src/vite-server.d.ts +6 -0
- package/templates/full-stack/tests/actions/create-message.test.ts +13 -0
- package/templates/full-stack/tsconfig.json +16 -0
- package/templates/full-stack/vite.config.ts +11 -0
- package/templates/spa/AGENTS.md +60 -0
- package/templates/spa/README.md +96 -0
- package/templates/spa/gitignore.template +16 -0
- package/templates/spa/index.html +13 -0
- package/templates/spa/package.json +35 -0
- package/templates/spa/src/adapters/operations-client.ts +90 -0
- package/templates/spa/src/components/shared/metric-card.tsx +27 -0
- package/templates/spa/src/components/shared/status-badge.tsx +24 -0
- package/templates/spa/src/features/operations/operations.query.ts +9 -0
- package/templates/spa/src/main.tsx +10 -0
- package/templates/spa/src/pages/_layout.tsx +9 -0
- package/templates/spa/src/pages/_routes.tsx +27 -0
- package/templates/spa/src/pages/app/_layout.tsx +94 -0
- package/templates/spa/src/pages/app/_routes.tsx +10 -0
- package/templates/spa/src/pages/app/admin-home.tsx +152 -0
- package/templates/spa/src/pages/app/agent-runs.tsx +93 -0
- package/templates/spa/src/pages/app/settings.tsx +91 -0
- package/templates/spa/src/pages/auth/_layout.tsx +38 -0
- package/templates/spa/src/pages/auth/_routes.tsx +6 -0
- package/templates/spa/src/pages/auth/login.tsx +63 -0
- package/templates/spa/src/pages/not-found.tsx +22 -0
- package/templates/spa/src/pages/public/_layout.tsx +47 -0
- package/templates/spa/src/pages/public/_routes.tsx +6 -0
- package/templates/spa/src/pages/public/home.tsx +143 -0
- package/templates/spa/src/shared/format.ts +12 -0
- package/templates/spa/src/shared/navigation.ts +15 -0
- package/templates/spa/src/styles/components.css +49 -0
- package/templates/spa/src/styles/layout.css +192 -0
- package/templates/spa/src/styles/reset.css +44 -0
- package/templates/spa/src/styles/theme.css +57 -0
- package/templates/spa/src/styles/tokens.css +20 -0
- package/templates/spa/src/styles.css +7 -0
- package/templates/spa/src/styles.d.ts +1 -0
- package/templates/spa/tests/app.test.tsx +37 -0
- package/templates/spa/tests/components/shared.test.tsx +12 -0
- package/templates/spa/tests/resources.test.ts +22 -0
- package/templates/spa/tsconfig.json +20 -0
- package/templates/spa/tsconfig.node.json +10 -0
- package/templates/spa/vite.config.ts +24 -0
- package/templates/spa/vitest.config.ts +17 -0
- package/templates/ssg/AGENTS.md +55 -0
- package/templates/ssg/README.md +39 -0
- package/templates/ssg/gitignore.template +17 -0
- package/templates/ssg/index.html +13 -0
- package/templates/ssg/package.json +35 -0
- package/templates/ssg/src/app.tsx +14 -0
- package/templates/ssg/src/components/badge.tsx +3 -0
- package/templates/ssg/src/components/counter.tsx +30 -0
- package/templates/ssg/src/components/site-shell.tsx +111 -0
- package/templates/ssg/src/jsx.d.ts +23 -0
- package/templates/ssg/src/main.tsx +8 -0
- package/templates/ssg/src/pages/about.tsx +82 -0
- package/templates/ssg/src/pages/content.tsx +63 -0
- package/templates/ssg/src/pages/example.tsx +97 -0
- package/templates/ssg/src/pages/home.tsx +51 -0
- package/templates/ssg/src/resources/user.ts +15 -0
- package/templates/ssg/src/routes.tsx +15 -0
- package/templates/ssg/src/styles.css +89 -0
- package/templates/ssg/src/vite-env.d.ts +5 -0
- package/templates/ssg/ssg.config.ts +34 -0
- package/templates/ssg/tests/app.test.tsx +19 -0
- package/templates/ssg/tests/components/counter.test.tsx +18 -0
- package/templates/ssg/tests/resources.test.ts +11 -0
- package/templates/ssg/tests/ssg-config.test.ts +11 -0
- package/templates/ssg/tsconfig.json +20 -0
- package/templates/ssg/tsconfig.node.json +10 -0
- package/templates/ssg/vite.config.ts +24 -0
- package/templates/ssg/vitest.config.ts +17 -0
- package/templates/ssr/AGENTS.md +28 -0
- package/templates/ssr/README.md +38 -0
- package/templates/ssr/gitignore.template +16 -0
- package/templates/ssr/index.html +13 -0
- package/templates/ssr/package.json +34 -0
- package/templates/ssr/server.ts +16 -0
- package/templates/ssr/src/app.tsx +21 -0
- package/templates/ssr/src/components/counter.tsx +26 -0
- package/templates/ssr/src/entry-server.tsx +10 -0
- package/templates/ssr/src/main.tsx +11 -0
- package/templates/ssr/src/pages/about.tsx +75 -0
- package/templates/ssr/src/pages/example.tsx +113 -0
- package/templates/ssr/src/pages/home.tsx +56 -0
- package/templates/ssr/src/resources/user.ts +15 -0
- package/templates/ssr/src/routes.tsx +13 -0
- package/templates/ssr/src/styles.css +148 -0
- package/templates/ssr/src/vite-server.d.ts +7 -0
- package/templates/ssr/tests/app.test.tsx +24 -0
- package/templates/ssr/tests/components/counter.test.tsx +13 -0
- package/templates/ssr/tests/resources.test.ts +11 -0
- package/templates/ssr/tsconfig.json +22 -0
- package/templates/ssr/tsconfig.node.json +10 -0
- package/templates/ssr/tsconfig.server.json +15 -0
- package/templates/ssr/vite.config.ts +25 -0
- package/templates/ssr/vitest.config.ts +13 -0
- package/templates/startkit/AGENTS.md +77 -0
- package/templates/startkit/README.md +192 -0
- package/templates/startkit/gitignore.template +16 -0
- package/templates/startkit/index.html +13 -0
- package/templates/startkit/package.json +35 -0
- package/templates/startkit/src/components/app-header.tsx +93 -0
- package/templates/startkit/src/components/app-sidebar.tsx +95 -0
- package/templates/startkit/src/components/data-table.tsx +80 -0
- package/templates/startkit/src/components/empty-state.tsx +13 -0
- package/templates/startkit/src/components/page-header.tsx +23 -0
- package/templates/startkit/src/components/stat-card.tsx +24 -0
- package/templates/startkit/src/features/accounts/account-filters.tsx +61 -0
- package/templates/startkit/src/features/accounts/account-table.tsx +79 -0
- package/templates/startkit/src/lib/format.ts +31 -0
- package/templates/startkit/src/lib/mock-data.ts +441 -0
- package/templates/startkit/src/lib/routes.ts +116 -0
- package/templates/startkit/src/main.tsx +12 -0
- package/templates/startkit/src/pages/_layout.tsx +56 -0
- package/templates/startkit/src/pages/auth/_layout.tsx +7 -0
- package/templates/startkit/src/pages/auth/login.tsx +129 -0
- package/templates/startkit/src/pages/home.tsx +83 -0
- package/templates/startkit/src/pages/not-found.tsx +24 -0
- package/templates/startkit/src/pages/workspace/_layout.tsx +17 -0
- package/templates/startkit/src/pages/workspace/accounts/index.tsx +217 -0
- package/templates/startkit/src/pages/workspace/dashboard.tsx +118 -0
- package/templates/startkit/src/pages/workspace/settings.tsx +218 -0
- package/templates/startkit/src/router.tsx +7 -0
- package/templates/startkit/src/routes/auth-config.ts +38 -0
- package/templates/startkit/src/routes/auth.ts +8 -0
- package/templates/startkit/src/routes/index.ts +28 -0
- package/templates/startkit/src/routes/public.ts +8 -0
- package/templates/startkit/src/routes/workspace/accounts.ts +8 -0
- package/templates/startkit/src/routes/workspace/index.ts +14 -0
- package/templates/startkit/src/styles/components.css +396 -0
- package/templates/startkit/src/styles/layout.css +192 -0
- package/templates/startkit/src/styles/reset.css +38 -0
- package/templates/startkit/src/styles/theme.css +76 -0
- package/templates/startkit/src/styles/tokens.css +67 -0
- package/templates/startkit/src/styles.css +7 -0
- package/templates/startkit/src/toast.ts +55 -0
- package/templates/startkit/src/utils/join-classes.ts +4 -0
- package/templates/startkit/src/vite-env.d.ts +5 -0
- package/templates/startkit/tests/app.test.tsx +32 -0
- package/templates/startkit/tests/preferences.test.ts +43 -0
- package/templates/startkit/tests/resources.test.ts +82 -0
- package/templates/startkit/tsconfig.json +20 -0
- package/templates/startkit/tsconfig.node.json +10 -0
- package/templates/startkit/vite.config.ts +32 -0
- package/templates/startkit/vitest.config.ts +13 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
@layer tokens {
|
|
2
|
+
:root {
|
|
3
|
+
--ak-color-primary: #2166ee;
|
|
4
|
+
--ak-color-primary-hover: #154fbf;
|
|
5
|
+
--ak-color-bg: #f7f8fa;
|
|
6
|
+
--ak-color-fg: #0f1728;
|
|
7
|
+
--ak-color-surface: #ffffff;
|
|
8
|
+
--ak-color-surface-muted: #f1f3f7;
|
|
9
|
+
--ak-color-border: #dde2ea;
|
|
10
|
+
--ak-color-muted: #5a6578;
|
|
11
|
+
--ak-color-danger: #b03a3a;
|
|
12
|
+
--ak-color-focus-ring: rgba(33, 102, 238, 0.24);
|
|
13
|
+
|
|
14
|
+
--ak-space-2xs: 0.25rem;
|
|
15
|
+
--ak-space-lg-plus: 1.25rem;
|
|
16
|
+
--ak-space-2xl: 2rem;
|
|
17
|
+
|
|
18
|
+
--ak-font-size-xs: 0.75rem;
|
|
19
|
+
--ak-font-size-xl: 1.25rem;
|
|
20
|
+
--ak-font-size-2xl: 2rem;
|
|
21
|
+
|
|
22
|
+
--starter-color-success: #1f7a43;
|
|
23
|
+
--starter-content-max-ch: 74ch;
|
|
24
|
+
--starter-shadow-soft: 0 10px 30px rgba(13, 24, 43, 0.08);
|
|
25
|
+
--starter-shadow-press: 0 4px 14px rgba(13, 24, 43, 0.1);
|
|
26
|
+
--starter-surface-glass: color-mix(
|
|
27
|
+
in srgb,
|
|
28
|
+
var(--ak-color-surface) 88%,
|
|
29
|
+
transparent
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:root[data-sk-appearance='harbor'] {
|
|
34
|
+
--ak-color-primary: #0f7b8f;
|
|
35
|
+
--ak-color-primary-hover: #0d6171;
|
|
36
|
+
--ak-color-bg: #eff5f8;
|
|
37
|
+
--ak-color-fg: #102736;
|
|
38
|
+
--ak-color-surface: #f9fcfe;
|
|
39
|
+
--ak-color-surface-muted: #e8f0f5;
|
|
40
|
+
--ak-color-border: #cedce8;
|
|
41
|
+
--ak-color-muted: #4f6879;
|
|
42
|
+
--ak-color-focus-ring: rgba(15, 123, 143, 0.24);
|
|
43
|
+
--starter-color-success: #0f7a4b;
|
|
44
|
+
--starter-shadow-soft: 0 10px 30px rgba(8, 34, 45, 0.08);
|
|
45
|
+
--starter-shadow-press: 0 4px 14px rgba(8, 34, 45, 0.1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
:root[data-sk-appearance='ink'] {
|
|
49
|
+
--ak-color-primary: #6fa6ff;
|
|
50
|
+
--ak-color-primary-hover: #4a89ee;
|
|
51
|
+
--ak-color-bg: #151a22;
|
|
52
|
+
--ak-color-fg: #e7eefc;
|
|
53
|
+
--ak-color-surface: #1c2230;
|
|
54
|
+
--ak-color-surface-muted: #252e41;
|
|
55
|
+
--ak-color-border: #334055;
|
|
56
|
+
--ak-color-muted: #aeb9d2;
|
|
57
|
+
--ak-color-focus-ring: rgba(111, 166, 255, 0.3);
|
|
58
|
+
--starter-color-success: #58c38a;
|
|
59
|
+
--starter-shadow-soft: 0 12px 32px rgba(0, 0, 0, 0.3);
|
|
60
|
+
--starter-shadow-press: 0 5px 16px rgba(0, 0, 0, 0.34);
|
|
61
|
+
--starter-surface-glass: color-mix(
|
|
62
|
+
in srgb,
|
|
63
|
+
var(--ak-color-surface) 78%,
|
|
64
|
+
transparent
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type AppToast = {
|
|
2
|
+
title: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
type ToastBindings = {
|
|
7
|
+
setMessage: (message: AppToast | null) => void;
|
|
8
|
+
setOpen: (open: boolean) => void;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
let toastMessageValue: AppToast | null = null;
|
|
12
|
+
let toastOpenValue = false;
|
|
13
|
+
let toastBindings: ToastBindings | null = null;
|
|
14
|
+
|
|
15
|
+
export function bindToast(bindings: ToastBindings) {
|
|
16
|
+
toastBindings = bindings;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function toastMessage() {
|
|
20
|
+
return toastMessageValue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function toastOpen() {
|
|
24
|
+
return toastOpenValue;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function syncToastBindings() {
|
|
28
|
+
if (!toastBindings) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
toastBindings.setMessage(toastMessageValue);
|
|
33
|
+
toastBindings.setOpen(toastOpenValue);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function setToastMessage(message: AppToast | null) {
|
|
37
|
+
toastMessageValue = message;
|
|
38
|
+
syncToastBindings();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function setToastOpen(open: boolean) {
|
|
42
|
+
toastOpenValue = open;
|
|
43
|
+
syncToastBindings();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function showToast(message: AppToast) {
|
|
47
|
+
setToastMessage(message);
|
|
48
|
+
setToastOpen(false);
|
|
49
|
+
queueMicrotask(() => setToastOpen(true));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function clearToast() {
|
|
53
|
+
setToastOpen(false);
|
|
54
|
+
setToastMessage(null);
|
|
55
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vite-plus/test';
|
|
2
|
+
|
|
3
|
+
describe('App Component', () => {
|
|
4
|
+
it('exposes the current starter route set', () => {
|
|
5
|
+
const routes = [
|
|
6
|
+
'/',
|
|
7
|
+
'/login',
|
|
8
|
+
'/dashboard',
|
|
9
|
+
'/accounts',
|
|
10
|
+
'/settings',
|
|
11
|
+
'/*',
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
expect(routes).toContain('/settings');
|
|
15
|
+
expect(routes).toContain('/accounts');
|
|
16
|
+
expect(routes).toContain('/login');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('uses the updated primary nav labels', () => {
|
|
20
|
+
const navLabels = ['Dashboard', 'Accounts', 'Settings'];
|
|
21
|
+
|
|
22
|
+
expect(navLabels).toContain('Accounts');
|
|
23
|
+
expect(navLabels).toContain('Settings');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('documents the starter appearance presets', () => {
|
|
27
|
+
const appearanceModes = ['Default', 'Harbor', 'Ink'];
|
|
28
|
+
|
|
29
|
+
expect(appearanceModes).toContain('Harbor');
|
|
30
|
+
expect(appearanceModes).toContain('Ink');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vite-plus/test';
|
|
2
|
+
import {
|
|
3
|
+
appearanceMode,
|
|
4
|
+
initializeAppSession,
|
|
5
|
+
nextAppearance,
|
|
6
|
+
resetAppearancePreference,
|
|
7
|
+
setAppearance,
|
|
8
|
+
} from '../src/lib/mock-data';
|
|
9
|
+
|
|
10
|
+
describe('appearance preferences', () => {
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
const values = new Map<string, string>();
|
|
13
|
+
Object.defineProperty(window, 'localStorage', {
|
|
14
|
+
configurable: true,
|
|
15
|
+
value: {
|
|
16
|
+
clear: () => values.clear(),
|
|
17
|
+
getItem: (key: string) => values.get(key) ?? null,
|
|
18
|
+
key: (index: number) => [...values.keys()][index] ?? null,
|
|
19
|
+
get length() {
|
|
20
|
+
return values.size;
|
|
21
|
+
},
|
|
22
|
+
removeItem: (key: string) => values.delete(key),
|
|
23
|
+
setItem: (key: string, value: string) => values.set(key, value),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
resetAppearancePreference();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should persist and apply selected appearance', () => {
|
|
30
|
+
setAppearance('harbor');
|
|
31
|
+
initializeAppSession();
|
|
32
|
+
|
|
33
|
+
expect(appearanceMode()).toBe('harbor');
|
|
34
|
+
expect(document.documentElement.dataset.skAppearance).toBe('harbor');
|
|
35
|
+
expect(window.localStorage.getItem('startkit:appearance')).toBe('harbor');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('should cycle appearance modes in stable order', () => {
|
|
39
|
+
expect(nextAppearance('default')).toBe('harbor');
|
|
40
|
+
expect(nextAppearance('harbor')).toBe('ink');
|
|
41
|
+
expect(nextAppearance('ink')).toBe('default');
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vite-plus/test';
|
|
2
|
+
import {
|
|
3
|
+
archiveAccounts,
|
|
4
|
+
getDashboardData,
|
|
5
|
+
isAuthenticated,
|
|
6
|
+
listAccounts,
|
|
7
|
+
resetMockData,
|
|
8
|
+
signIn,
|
|
9
|
+
signOut,
|
|
10
|
+
} from '../src/lib/mock-data';
|
|
11
|
+
|
|
12
|
+
describe('lib mock data', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
resetMockData();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('should return dashboard stats and activities', async () => {
|
|
18
|
+
const result = await getDashboardData({
|
|
19
|
+
signal: new AbortController().signal,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
expect(result.stats.length).toBeGreaterThan(0);
|
|
23
|
+
expect(result.activities.length).toBeGreaterThan(0);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should filter and paginate accounts', async () => {
|
|
27
|
+
const result = await listAccounts({
|
|
28
|
+
signal: new AbortController().signal,
|
|
29
|
+
query: 'northwind',
|
|
30
|
+
status: 'all',
|
|
31
|
+
page: 1,
|
|
32
|
+
pageSize: 5,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
expect(result.items.length).toBeGreaterThan(0);
|
|
36
|
+
expect(result.items[0]?.name.toLowerCase()).toContain('northwind');
|
|
37
|
+
expect(result.totalPages).toBeGreaterThanOrEqual(1);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should archive selected accounts', async () => {
|
|
41
|
+
const before = await listAccounts({
|
|
42
|
+
signal: new AbortController().signal,
|
|
43
|
+
query: '',
|
|
44
|
+
status: 'active',
|
|
45
|
+
page: 1,
|
|
46
|
+
pageSize: 20,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const ids = before.items.slice(0, 2).map((item) => item.id);
|
|
50
|
+
const archiveResult = await archiveAccounts({
|
|
51
|
+
ids,
|
|
52
|
+
signal: new AbortController().signal,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
expect(archiveResult.archived).toBe(2);
|
|
56
|
+
|
|
57
|
+
const after = await listAccounts({
|
|
58
|
+
signal: new AbortController().signal,
|
|
59
|
+
query: '',
|
|
60
|
+
status: 'archived',
|
|
61
|
+
page: 1,
|
|
62
|
+
pageSize: 20,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
expect(after.items.some((item) => ids.includes(item.id))).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('should sign in and sign out session state', async () => {
|
|
69
|
+
expect(isAuthenticated()).toBe(false);
|
|
70
|
+
|
|
71
|
+
await signIn({
|
|
72
|
+
email: 'alex@example.com',
|
|
73
|
+
password: 'askr1234',
|
|
74
|
+
signal: new AbortController().signal,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
expect(isAuthenticated()).toBe(true);
|
|
78
|
+
|
|
79
|
+
signOut();
|
|
80
|
+
expect(isAuthenticated()).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"moduleResolution": "bundler",
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"allowSyntheticDefaultImports": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"noEmit": true,
|
|
15
|
+
"jsx": "preserve",
|
|
16
|
+
"jsxImportSource": "@askrjs/askr"
|
|
17
|
+
},
|
|
18
|
+
"include": ["src"],
|
|
19
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
20
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { defineConfig } from 'vite-plus';
|
|
2
|
+
import { askr } from '@askrjs/vite';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
plugins: [askr()],
|
|
6
|
+
lint: {
|
|
7
|
+
ignorePatterns: ['dist/**', 'node_modules/**', 'coverage/**'],
|
|
8
|
+
},
|
|
9
|
+
fmt: {
|
|
10
|
+
semi: true,
|
|
11
|
+
singleQuote: true,
|
|
12
|
+
trailingComma: 'es5',
|
|
13
|
+
printWidth: 80,
|
|
14
|
+
tabWidth: 2,
|
|
15
|
+
},
|
|
16
|
+
server: {
|
|
17
|
+
host: '127.0.0.1',
|
|
18
|
+
port: 5173,
|
|
19
|
+
strictPort: true,
|
|
20
|
+
open: true,
|
|
21
|
+
hmr: {
|
|
22
|
+
host: '127.0.0.1',
|
|
23
|
+
port: 5173,
|
|
24
|
+
clientPort: 5173,
|
|
25
|
+
protocol: 'ws',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
build: {
|
|
29
|
+
outDir: 'dist',
|
|
30
|
+
sourcemap: true,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from 'vite-plus';
|
|
2
|
+
import { askr } from '@askrjs/vite';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
plugins: [askr()],
|
|
6
|
+
test: {
|
|
7
|
+
environment: 'jsdom',
|
|
8
|
+
globals: true,
|
|
9
|
+
coverage: {
|
|
10
|
+
reporter: ['text', 'json', 'html'],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
});
|