@react-spa-scaffold/mcp 2.0.0 → 2.1.1
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/README.md +3 -4
- package/dist/features/definitions/api.d.ts.map +1 -1
- package/dist/features/definitions/api.js +1 -10
- package/dist/features/definitions/api.js.map +1 -1
- package/dist/features/definitions/ci.d.ts.map +1 -1
- package/dist/features/definitions/ci.js +0 -10
- package/dist/features/definitions/ci.js.map +1 -1
- package/dist/features/definitions/core.d.ts.map +1 -1
- package/dist/features/definitions/core.js +2 -14
- package/dist/features/definitions/core.js.map +1 -1
- package/dist/features/definitions/devtools.d.ts.map +1 -1
- package/dist/features/definitions/devtools.js +1 -14
- package/dist/features/definitions/devtools.js.map +1 -1
- package/dist/features/definitions/forms.d.ts.map +1 -1
- package/dist/features/definitions/forms.js +1 -9
- package/dist/features/definitions/forms.js.map +1 -1
- package/dist/features/definitions/i18n.d.ts.map +1 -1
- package/dist/features/definitions/i18n.js +2 -14
- package/dist/features/definitions/i18n.js.map +1 -1
- package/dist/features/definitions/mobile.d.ts.map +1 -1
- package/dist/features/definitions/mobile.js +0 -9
- package/dist/features/definitions/mobile.js.map +1 -1
- package/dist/features/definitions/observability.d.ts.map +1 -1
- package/dist/features/definitions/observability.js +2 -12
- package/dist/features/definitions/observability.js.map +1 -1
- package/dist/features/definitions/performance.d.ts.map +1 -1
- package/dist/features/definitions/performance.js +2 -13
- package/dist/features/definitions/performance.js.map +1 -1
- package/dist/features/definitions/routing.d.ts.map +1 -1
- package/dist/features/definitions/routing.js +1 -9
- package/dist/features/definitions/routing.js.map +1 -1
- package/dist/features/definitions/state.d.ts.map +1 -1
- package/dist/features/definitions/state.js +1 -11
- package/dist/features/definitions/state.js.map +1 -1
- package/dist/features/definitions/testing.d.ts.map +1 -1
- package/dist/features/definitions/testing.js +1 -14
- package/dist/features/definitions/testing.js.map +1 -1
- package/dist/features/definitions/theming.d.ts.map +1 -1
- package/dist/features/definitions/theming.js +0 -8
- package/dist/features/definitions/theming.js.map +1 -1
- package/dist/features/definitions/ui.d.ts.map +1 -1
- package/dist/features/definitions/ui.js +2 -15
- package/dist/features/definitions/ui.js.map +1 -1
- package/dist/features/types.d.ts +2 -3
- package/dist/features/types.d.ts.map +1 -1
- package/dist/tools/add-features.d.ts +44 -0
- package/dist/tools/add-features.d.ts.map +1 -0
- package/dist/tools/add-features.js +157 -0
- package/dist/tools/add-features.js.map +1 -0
- package/dist/tools/add-features.test.d.ts +5 -0
- package/dist/tools/add-features.test.d.ts.map +1 -0
- package/dist/tools/add-features.test.js +170 -0
- package/dist/tools/add-features.test.js.map +1 -0
- package/dist/tools/get-features.d.ts +1 -2
- package/dist/tools/get-features.d.ts.map +1 -1
- package/dist/tools/get-features.js +1 -2
- package/dist/tools/get-features.js.map +1 -1
- package/dist/tools/get-features.test.js +6 -2
- package/dist/tools/get-features.test.js.map +1 -1
- package/dist/tools/get-scaffold.d.ts.map +1 -1
- package/dist/tools/get-scaffold.js +52 -13
- package/dist/tools/get-scaffold.js.map +1 -1
- package/dist/tools/get-scaffold.test.js +19 -5
- package/dist/tools/get-scaffold.test.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +8 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/utils/scaffold/compute.d.ts.map +1 -1
- package/dist/utils/scaffold/compute.js +3 -1
- package/dist/utils/scaffold/compute.js.map +1 -1
- package/dist/utils/scaffold/dependencies.d.ts +15 -2
- package/dist/utils/scaffold/dependencies.d.ts.map +1 -1
- package/dist/utils/scaffold/dependencies.js +15 -8
- package/dist/utils/scaffold/dependencies.js.map +1 -1
- package/dist/utils/scaffold/file-structure.d.ts +12 -0
- package/dist/utils/scaffold/file-structure.d.ts.map +1 -1
- package/dist/utils/scaffold/file-structure.js +23 -0
- package/dist/utils/scaffold/file-structure.js.map +1 -1
- package/dist/utils/scaffold/generators.d.ts.map +1 -1
- package/dist/utils/scaffold/generators.js +10 -0
- package/dist/utils/scaffold/generators.js.map +1 -1
- package/dist/utils/scaffold/index.d.ts +3 -2
- package/dist/utils/scaffold/index.d.ts.map +1 -1
- package/dist/utils/scaffold/index.js +1 -1
- package/dist/utils/scaffold/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/e2e/tests/language.spec.ts +2 -1
- package/templates/src/contexts/queryContext.tsx +1 -2
- package/templates/src/lib/storage.ts +1 -1
package/README.md
CHANGED
|
@@ -130,7 +130,7 @@ List all available feature modules.
|
|
|
130
130
|
|
|
131
131
|
```typescript
|
|
132
132
|
const result = await client.callTool('get_features', {});
|
|
133
|
-
// Returns: { id, name, description, required
|
|
133
|
+
// Returns: { id, name, description, required }[]
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
### `get_scaffold`
|
|
@@ -311,9 +311,8 @@ export const myFeature: Feature = {
|
|
|
311
311
|
name: 'My Feature',
|
|
312
312
|
description: 'Description shown to users',
|
|
313
313
|
required: false,
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
devDependencyNames: ['some-dev-package'],
|
|
314
|
+
dependencies: ['some-package'],
|
|
315
|
+
devDependencies: ['some-dev-package'],
|
|
317
316
|
files: ['src/lib/myFeature.ts'],
|
|
318
317
|
scripts: { 'my-script': 'some-command' },
|
|
319
318
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,GAAG,EAAE,OAQjB,CAAC"}
|
|
@@ -2,16 +2,7 @@ export const api = {
|
|
|
2
2
|
name: 'API',
|
|
3
3
|
description: 'TanStack Query + typed API client',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'TanStack Query v5',
|
|
7
|
-
'QueryProvider with optimized defaults (staleTime, gcTime, retry)',
|
|
8
|
-
'Typed API client with methods (get/post/put/patch/delete)',
|
|
9
|
-
'ApiClientError class with status and code',
|
|
10
|
-
'Request timeout handling',
|
|
11
|
-
'Example useExampleQuery hook',
|
|
12
|
-
'API types (Todo, PaginatedResponse, etc.)',
|
|
13
|
-
],
|
|
14
|
-
dependencyNames: ['@tanstack/react-query'],
|
|
5
|
+
dependencies: ['@tanstack/react-query'],
|
|
15
6
|
files: ['src/lib/api.ts', 'src/contexts/queryContext.tsx', 'src/hooks/useExampleQuery.ts', 'src/types/api.ts'],
|
|
16
7
|
testFiles: ['src/lib/api.test.ts', 'src/hooks/useExampleQuery.test.tsx'],
|
|
17
8
|
scripts: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/features/definitions/api.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,uBAAuB,CAAC;IACvC,KAAK,EAAE,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,kBAAkB,CAAC;IAC9G,SAAS,EAAE,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;IACxE,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,OAYhB,CAAC"}
|
|
@@ -2,16 +2,6 @@ export const ci = {
|
|
|
2
2
|
name: 'CI/CD',
|
|
3
3
|
description: 'GitHub Actions + Performance Testing + Dependabot',
|
|
4
4
|
required: false,
|
|
5
|
-
includes: [
|
|
6
|
-
'GitHub Actions CI workflow',
|
|
7
|
-
'Parallel jobs: lint, typecheck, security audit, build, unit tests, e2e tests, performance tests',
|
|
8
|
-
'Performance testing with react-performance-tracking (React Profiler, Lighthouse, Web Vitals)',
|
|
9
|
-
'Dependabot with grouped updates by category',
|
|
10
|
-
'PR template',
|
|
11
|
-
'Artifact uploads (dist, coverage, performance reports)',
|
|
12
|
-
'Dependency caching for faster builds',
|
|
13
|
-
'Custom setup-node-deps action',
|
|
14
|
-
],
|
|
15
5
|
files: [
|
|
16
6
|
'.github/workflows/ci.yml',
|
|
17
7
|
'.github/actions/setup-node-deps/action.yml',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/features/definitions/ci.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE;QACL,0BAA0B;QAC1B,4CAA4C;QAC5C,wBAAwB;QACxB,kCAAkC;KACnC;IACD,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OA6DlB,CAAC"}
|
|
@@ -2,20 +2,8 @@ export const core = {
|
|
|
2
2
|
name: 'Core',
|
|
3
3
|
description: 'React 19 + TypeScript + Vite 7 + Tailwind CSS v4',
|
|
4
4
|
required: true,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'Vite 7 build system',
|
|
8
|
-
'Tailwind CSS v4 with Vite plugin',
|
|
9
|
-
'Inter variable font (@fontsource-variable/inter)',
|
|
10
|
-
'Environment validation with Zod (src/lib/env.ts)',
|
|
11
|
-
'cn() class merge utility (clsx + tailwind-merge)',
|
|
12
|
-
'Basic SEO component (React 19 native head hoisting)',
|
|
13
|
-
'App configuration (src/lib/config.ts)',
|
|
14
|
-
'Type definitions',
|
|
15
|
-
'ErrorBoundary component with reset functionality',
|
|
16
|
-
],
|
|
17
|
-
dependencyNames: ['@fontsource-variable/inter', 'clsx', 'react', 'react-dom', 'tailwind-merge', 'zod'],
|
|
18
|
-
devDependencyNames: [
|
|
5
|
+
dependencies: ['@fontsource-variable/inter', 'clsx', 'react', 'react-dom', 'tailwind-merge', 'zod'],
|
|
6
|
+
devDependencies: [
|
|
19
7
|
'@tailwindcss/vite',
|
|
20
8
|
'@types/node',
|
|
21
9
|
'@types/react',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,IAAI;IACd,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/features/definitions/core.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,CAAC,4BAA4B,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC;IACnG,eAAe,EAAE;QACf,mBAAmB;QACnB,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,sBAAsB;QACtB,8BAA8B;QAC9B,aAAa;QACb,YAAY;QACZ,MAAM;KACP;IACD,KAAK,EAAE;QACL,cAAc;QACd,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;QACpB,mCAAmC;QACnC,oCAAoC;QACpC,uDAAuD;QACvD,8CAA8C;QAC9C,gCAAgC;QAChC,YAAY;QACZ,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,cAAc;QACd,YAAY;QACZ,oBAAoB;KACrB;IACD,SAAS,EAAE;QACT,uBAAuB;QACvB,wCAAwC;QACxC,4DAA4D;QAC5D,wBAAwB;KACzB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,cAAc;KAC1B;IACD,WAAW,EAAE;QACX,gBAAgB;QAChB,eAAe;QACf,mBAAmB;QACnB,oBAAoB;QACpB,YAAY;QACZ,eAAe;KAChB;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,OAqCtB,CAAC"}
|
|
@@ -2,20 +2,7 @@ export const devtools = {
|
|
|
2
2
|
name: 'Developer Tooling',
|
|
3
3
|
description: 'ESLint + Prettier + Husky + Commitlint (using @react-spa-scaffold shared configs)',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'@react-spa-scaffold/eslint-config (React + TypeScript + LinguiJS)',
|
|
7
|
-
'@react-spa-scaffold/prettier-config (with Tailwind plugin)',
|
|
8
|
-
'ESLint with TypeScript and React Hooks plugins',
|
|
9
|
-
'eslint-plugin-react-refresh for HMR',
|
|
10
|
-
'Prettier with Tailwind CSS plugin',
|
|
11
|
-
'Husky for git hooks',
|
|
12
|
-
'lint-staged for pre-commit linting',
|
|
13
|
-
'Commitlint for conventional commits',
|
|
14
|
-
'.nvmrc for Node.js version (22)',
|
|
15
|
-
'Pre-commit hook: typecheck + lint-staged',
|
|
16
|
-
'Commit-msg hook: commitlint',
|
|
17
|
-
],
|
|
18
|
-
devDependencyNames: [
|
|
5
|
+
devDependencies: [
|
|
19
6
|
'@commitlint/config-conventional',
|
|
20
7
|
'@eslint/js',
|
|
21
8
|
'@react-spa-scaffold/eslint-config',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mFAAmF;IAChG,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../src/features/definitions/devtools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mFAAmF;IAChG,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE;QACf,iCAAiC;QACjC,YAAY;QACZ,mCAAmC;QACnC,qCAAqC;QACrC,YAAY;QACZ,QAAQ;QACR,wBAAwB;QACxB,sBAAsB;QACtB,2BAA2B;QAC3B,6BAA6B;QAC7B,OAAO;QACP,aAAa;QACb,UAAU;QACV,6BAA6B;QAC7B,mBAAmB;KACpB;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,mBAAmB;QACnB,mBAAmB;QACnB,QAAQ;KACT;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,oBAAoB;QAC5B,cAAc,EAAE,oBAAoB;QACpC,OAAO,EAAE,OAAO;KACjB;IACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;CAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,OAqBnB,CAAC"}
|
|
@@ -2,15 +2,7 @@ export const forms = {
|
|
|
2
2
|
name: 'Form Handling',
|
|
3
3
|
description: 'React Hook Form + Zod validation + working demo form',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'React Hook Form with Zod validation',
|
|
7
|
-
'@hookform/resolvers for schema integration',
|
|
8
|
-
'RegisterForm component with validation demo (displayed on HomePage)',
|
|
9
|
-
'Form error components (FieldErrorMessage, FormErrorSummary, RootFormError)',
|
|
10
|
-
'useRegisterForm custom hook pattern',
|
|
11
|
-
'Zod schema with refine() for cross-field validation',
|
|
12
|
-
],
|
|
13
|
-
dependencyNames: ['@hookform/resolvers', 'react-hook-form'],
|
|
5
|
+
dependencies: ['@hookform/resolvers', 'react-hook-form'],
|
|
14
6
|
files: [
|
|
15
7
|
'src/lib/validations.ts',
|
|
16
8
|
'src/hooks/useRegisterForm.ts',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/features/definitions/forms.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;IACxD,KAAK,EAAE;QACL,wBAAwB;QACxB,8BAA8B;QAC9B,kCAAkC;QAClC,6BAA6B;QAC7B,6BAA6B;QAC7B,4BAA4B;QAC5B,qDAAqD;QACrD,6CAA6C;KAC9C;IACD,SAAS,EAAE;QACT,6BAA6B;QAC7B,oCAAoC;QACpC,0DAA0D;KAC3D;IACD,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,EAAE,OAmClB,CAAC"}
|
|
@@ -2,20 +2,8 @@ export const i18n = {
|
|
|
2
2
|
name: 'Internationalization',
|
|
3
3
|
description: 'LinguiJS with dynamic loading and language detection',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'Trans component for JSX text',
|
|
8
|
-
't() function for programmatic text',
|
|
9
|
-
'Dynamic catalog loading (code splitting per locale)',
|
|
10
|
-
'Browser language detection',
|
|
11
|
-
'Language switcher component',
|
|
12
|
-
'ESLint rule for translator comments (enforced)',
|
|
13
|
-
'Locale files (.po format) for en, es, de',
|
|
14
|
-
'Vite plugin for compilation',
|
|
15
|
-
'useLanguage hook',
|
|
16
|
-
],
|
|
17
|
-
dependencyNames: ['@lingui/core', '@lingui/react'],
|
|
18
|
-
devDependencyNames: [
|
|
5
|
+
dependencies: ['@lingui/core', '@lingui/react'],
|
|
6
|
+
devDependencies: [
|
|
19
7
|
'@lingui/babel-plugin-lingui-macro',
|
|
20
8
|
'@lingui/cli',
|
|
21
9
|
'@lingui/vite-plugin',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/features/definitions/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;IAC/C,eAAe,EAAE;QACf,mCAAmC;QACnC,aAAa;QACb,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;KACvB;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,4BAA4B;QAC5B,yBAAyB;QACzB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB;QACnB,0BAA0B;QAC1B,6DAA6D;QAC7D,iDAAiD;QACjD,kBAAkB;KACnB;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,8BAA8B;QAC9B,gCAAgC;QAChC,kEAAkE;QAClE,4BAA4B;KAC7B;IACD,OAAO,EAAE;QACP,cAAc,EAAE,gBAAgB;KACjC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,MAAM,EAAE,OAOpB,CAAC"}
|
|
@@ -2,15 +2,6 @@ export const mobile = {
|
|
|
2
2
|
name: 'Mobile Support',
|
|
3
3
|
description: 'Responsive design utilities with viewport detection, breakpoints, and touch-aware sizing',
|
|
4
4
|
required: false,
|
|
5
|
-
includes: [
|
|
6
|
-
'MobileProvider context for viewport detection',
|
|
7
|
-
'useMobileContext hook (isMobile, isTablet, isDesktop, width)',
|
|
8
|
-
'useMediaQuery hook with BREAKPOINTS constants (sm, md, lg, xl)',
|
|
9
|
-
'useIsMobile and useIsDesktop convenience hooks',
|
|
10
|
-
'useTouchSizes hook for touch-aware component sizing',
|
|
11
|
-
'requestAnimationFrame-debounced resize handling',
|
|
12
|
-
'SSR-safe viewport detection with fallbacks',
|
|
13
|
-
],
|
|
14
5
|
files: ['src/contexts/mobileContext.tsx', 'src/hooks/useMediaQuery.ts', 'src/hooks/useTouchSizes.ts'],
|
|
15
6
|
testFiles: ['src/contexts/mobileContext.test.tsx', 'src/hooks/useMediaQuery.test.ts'],
|
|
16
7
|
scripts: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0FAA0F;IACvG,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../../src/features/definitions/mobile.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0FAA0F;IACvG,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,CAAC,gCAAgC,EAAE,4BAA4B,EAAE,4BAA4B,CAAC;IACrG,SAAS,EAAE,CAAC,qCAAqC,EAAE,iCAAiC,CAAC;IACrF,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,OAQ3B,CAAC"}
|
|
@@ -2,18 +2,8 @@ export const observability = {
|
|
|
2
2
|
name: 'Observability',
|
|
3
3
|
description: 'Sentry error tracking with source maps (opt-out via VITE_SENTRY_ENABLED=false)',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'Lazy-loaded Sentry initialization (non-blocking)',
|
|
8
|
-
'Browser tracing integration',
|
|
9
|
-
'Global error handlers (window.onerror, unhandledrejection)',
|
|
10
|
-
'ErrorBoundary integration with Sentry reporting',
|
|
11
|
-
'Source map upload via Vite plugin (CI/CD)',
|
|
12
|
-
'VITE_SENTRY_ENABLED flag for opt-out',
|
|
13
|
-
'SENTRY_CONFIG in lib/config.ts',
|
|
14
|
-
],
|
|
15
|
-
dependencyNames: ['@sentry/react'],
|
|
16
|
-
devDependencyNames: ['@sentry/vite-plugin'],
|
|
5
|
+
dependencies: ['@sentry/react'],
|
|
6
|
+
devDependencies: ['@sentry/vite-plugin'],
|
|
17
7
|
files: ['src/lib/config.ts'],
|
|
18
8
|
scripts: {},
|
|
19
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/features/definitions/observability.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,gFAAgF;IAC7F,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,eAAe,CAAC;IAC/B,eAAe,EAAE,CAAC,qBAAqB,CAAC;IACxC,KAAK,EAAE,CAAC,mBAAmB,CAAC;IAC5B,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,OAczB,CAAC"}
|
|
@@ -2,19 +2,8 @@ export const performance = {
|
|
|
2
2
|
name: 'Performance Testing',
|
|
3
3
|
description: 'React Profiler + Lighthouse + Web Vitals via react-performance-tracking',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
'React Profiler metrics (render duration, re-renders)',
|
|
8
|
-
'Lighthouse audits (performance, accessibility, best practices)',
|
|
9
|
-
'Core Web Vitals (LCP, INP, CLS)',
|
|
10
|
-
'FPS monitoring (Chromium only)',
|
|
11
|
-
'PerformanceProviderWrapper with lazy loading (zero prod overhead)',
|
|
12
|
-
'Safe usePerformance hook (never throws)',
|
|
13
|
-
'Separate Playwright project for performance tests',
|
|
14
|
-
'CI-optimized Chrome flags (--no-sandbox)',
|
|
15
|
-
],
|
|
16
|
-
dependencyNames: ['react-performance-tracking'],
|
|
17
|
-
devDependencyNames: ['chrome-launcher', 'lighthouse'],
|
|
5
|
+
dependencies: ['react-performance-tracking'],
|
|
6
|
+
devDependencies: ['chrome-launcher', 'lighthouse'],
|
|
18
7
|
files: ['src/contexts/performanceContext.tsx', 'e2e/performance/setup.ts'],
|
|
19
8
|
testFiles: ['e2e/performance/home.spec.ts', 'src/contexts/performanceContext.test.tsx'],
|
|
20
9
|
scripts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;IACtF,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../src/features/definitions/performance.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;IACtF,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,4BAA4B,CAAC;IAC5C,eAAe,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;IAClD,KAAK,EAAE,CAAC,qCAAqC,EAAE,0BAA0B,CAAC;IAC1E,SAAS,EAAE,CAAC,8BAA8B,EAAE,0CAA0C,CAAC;IACvF,OAAO,EAAE;QACP,UAAU,EAAE,sDAAsD;QAClE,aAAa,EAAE,2DAA2D;QAC1E,SAAS,EAAE,gCAAgC;KAC5C;IACD,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAcrB,CAAC"}
|
|
@@ -2,15 +2,7 @@ export const routing = {
|
|
|
2
2
|
name: 'Routing',
|
|
3
3
|
description: 'React Router 7 with lazy loading and route constants',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'React Router 7',
|
|
7
|
-
'Lazy-loaded pages with React.lazy()',
|
|
8
|
-
'Route constants with TypeScript types (generated based on features)',
|
|
9
|
-
'404 Not Found page',
|
|
10
|
-
'App.tsx with Suspense fallback',
|
|
11
|
-
'PageLoading component for transitions',
|
|
12
|
-
],
|
|
13
|
-
dependencyNames: ['react-router'],
|
|
5
|
+
dependencies: ['react-router'],
|
|
14
6
|
files: [
|
|
15
7
|
'src/pages/Home.tsx',
|
|
16
8
|
'src/pages/NotFound.tsx',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/features/definitions/routing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,sDAAsD;IACnE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE;QACL,oBAAoB;QACpB,wBAAwB;QACxB,oBAAoB;QACpB,+BAA+B;QAC/B,uCAAuC;KACxC;IACD,SAAS,EAAE,CAAC,8BAA8B,CAAC;IAC3C,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,KAAK,EAAE,OAcnB,CAAC"}
|
|
@@ -2,17 +2,7 @@ export const state = {
|
|
|
2
2
|
name: 'State Management',
|
|
3
3
|
description: 'Zustand with persistence, devtools, and multi-tab sync',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'Zustand store',
|
|
7
|
-
'Persist middleware (localStorage)',
|
|
8
|
-
'Devtools middleware',
|
|
9
|
-
'Multi-tab sync utility (initPreferencesSync)',
|
|
10
|
-
'Storage utilities (get/set/remove/clear)',
|
|
11
|
-
'Prefixed storage keys',
|
|
12
|
-
'Example preferences store (theme)',
|
|
13
|
-
'Type-safe store selectors',
|
|
14
|
-
],
|
|
15
|
-
dependencyNames: ['zustand'],
|
|
5
|
+
dependencies: ['zustand'],
|
|
16
6
|
files: [
|
|
17
7
|
'src/stores/preferencesStore.ts',
|
|
18
8
|
'src/stores/index.ts',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/features/definitions/state.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,wDAAwD;IACrE,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/features/definitions/state.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,wDAAwD;IACrE,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,KAAK,EAAE;QACL,gCAAgC;QAChC,qBAAqB;QACrB,oBAAoB;QACpB,wBAAwB;QACxB,0BAA0B;KAC3B;IACD,SAAS,EAAE,CAAC,yBAAyB,EAAE,qCAAqC,CAAC;IAC7E,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAsCrB,CAAC"}
|
|
@@ -2,20 +2,7 @@ export const testing = {
|
|
|
2
2
|
name: 'Testing',
|
|
3
3
|
description: 'Vitest + Testing Library + Playwright + MSW',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'Vitest for unit testing',
|
|
7
|
-
'React Testing Library',
|
|
8
|
-
'@testing-library/user-event for interactions',
|
|
9
|
-
'Playwright for E2E testing (Chromium)',
|
|
10
|
-
'MSW (Mock Service Worker) for API mocking',
|
|
11
|
-
'Test utilities (render, providers, mocks)',
|
|
12
|
-
'80% coverage threshold (lines, functions, statements, branches)',
|
|
13
|
-
'jsdom environment',
|
|
14
|
-
'Example tests for components, hooks, stores, utilities',
|
|
15
|
-
'MSW handlers for API endpoints',
|
|
16
|
-
'Test fixtures for mock data',
|
|
17
|
-
],
|
|
18
|
-
devDependencyNames: [
|
|
5
|
+
devDependencies: [
|
|
19
6
|
'@playwright/test',
|
|
20
7
|
'@testing-library/jest-dom',
|
|
21
8
|
'@testing-library/react',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/features/definitions/testing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,6CAA6C;IAC1D,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../src/features/definitions/testing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,6CAA6C;IAC1D,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE;QACf,kBAAkB;QAClB,2BAA2B;QAC3B,wBAAwB;QACxB,6BAA6B;QAC7B,qBAAqB;QACrB,OAAO;QACP,KAAK;QACL,QAAQ;KACT;IACD,KAAK,EAAE;QACL,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,mBAAmB;QACnB,6BAA6B;QAC7B,6BAA6B;QAC7B,6BAA6B;QAC7B,6BAA6B;QAC7B,mBAAmB;QACnB,oBAAoB;QACpB,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,sBAAsB;KACvB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,QAAQ;QACtB,eAAe,EAAE,uBAAuB;QACxC,GAAG,EAAE,sCAAsC;QAC3C,QAAQ,EAAE,2CAA2C;KACtD;IACD,WAAW,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;CAC/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theming.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/theming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"theming.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/theming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,OAAO,EAAE,OAgBrB,CAAC"}
|
|
@@ -3,14 +3,6 @@ export const theming = {
|
|
|
3
3
|
description: 'Light/dark/system theme toggle with CSS variables',
|
|
4
4
|
required: false,
|
|
5
5
|
requires: ['state'], // Needs Zustand for persistence
|
|
6
|
-
includes: [
|
|
7
|
-
'Light/dark/system theme modes',
|
|
8
|
-
'useThemeEffect hook (applies .dark class to document)',
|
|
9
|
-
'ThemeToggle component',
|
|
10
|
-
'System preference detection (prefers-color-scheme)',
|
|
11
|
-
'Zustand persistence via preferencesStore',
|
|
12
|
-
'Multi-tab sync via storage events',
|
|
13
|
-
],
|
|
14
6
|
files: [
|
|
15
7
|
'src/hooks/useThemeEffect.ts',
|
|
16
8
|
'src/components/shared/ThemeToggle/ThemeToggle.tsx',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theming.js","sourceRoot":"","sources":["../../../src/features/definitions/theming.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,gCAAgC;IACrD,
|
|
1
|
+
{"version":3,"file":"theming.js","sourceRoot":"","sources":["../../../src/features/definitions/theming.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,gCAAgC;IACrD,KAAK,EAAE;QACL,6BAA6B;QAC7B,mDAAmD;QACnD,4CAA4C;KAC7C;IACD,SAAS,EAAE;QACT,kCAAkC;QAClC,wDAAwD;QACxD,yBAAyB;KAC1B;IACD,OAAO,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,OA4BhB,CAAC"}
|
|
@@ -2,20 +2,7 @@ export const ui = {
|
|
|
2
2
|
name: 'UI Components',
|
|
3
3
|
description: 'Shadcn/UI + icons + animations + toasts',
|
|
4
4
|
required: false,
|
|
5
|
-
|
|
6
|
-
'Shadcn/UI component system (radix-nova style)',
|
|
7
|
-
'Radix UI primitives',
|
|
8
|
-
'CVA (class-variance-authority) for variants',
|
|
9
|
-
'Lucide React icons',
|
|
10
|
-
'tw-animate-css for animations',
|
|
11
|
-
'Sonner toast notifications',
|
|
12
|
-
'Button with variants (default, destructive, outline, etc.)',
|
|
13
|
-
'DropdownMenu component',
|
|
14
|
-
'Loading, Skeleton, Spinner components',
|
|
15
|
-
'VisuallyHidden and SkipLink (accessibility)',
|
|
16
|
-
'components.json for shadcn CLI',
|
|
17
|
-
],
|
|
18
|
-
dependencyNames: [
|
|
5
|
+
dependencies: [
|
|
19
6
|
'@radix-ui/react-slot',
|
|
20
7
|
'class-variance-authority',
|
|
21
8
|
'lucide-react',
|
|
@@ -23,7 +10,7 @@ export const ui = {
|
|
|
23
10
|
'sonner',
|
|
24
11
|
'tw-animate-css',
|
|
25
12
|
],
|
|
26
|
-
|
|
13
|
+
devDependencies: ['shadcn'],
|
|
27
14
|
files: [
|
|
28
15
|
'src/components/ui/button.tsx',
|
|
29
16
|
'src/components/ui/dropdown-menu.tsx',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/features/definitions/ui.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,yCAAyC;IACtD,QAAQ,EAAE,KAAK;IACf,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/features/definitions/ui.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAY;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,yCAAyC;IACtD,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE;QACZ,sBAAsB;QACtB,0BAA0B;QAC1B,cAAc;QACd,UAAU;QACV,QAAQ;QACR,gBAAgB;KACjB;IACD,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,KAAK,EAAE;QACL,8BAA8B;QAC9B,qCAAqC;QACrC,+BAA+B;QAC/B,gCAAgC;QAChC,+BAA+B;QAC/B,8BAA8B;QAC9B,uCAAuC;QACvC,kCAAkC;QAClC,gCAAgC;QAChC,iBAAiB;KAClB;IACD,SAAS,EAAE,CAAC,oCAAoC,EAAE,uCAAuC,CAAC;IAC1F,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,CAAC,iBAAiB,CAAC;CACjC,CAAC"}
|
package/dist/features/types.d.ts
CHANGED
|
@@ -12,12 +12,11 @@ export interface Feature {
|
|
|
12
12
|
name: string;
|
|
13
13
|
description: string;
|
|
14
14
|
required: boolean;
|
|
15
|
-
includes: string[];
|
|
16
15
|
/** Other features this feature depends on (auto-included when this feature is selected). */
|
|
17
16
|
requires?: FeatureId[];
|
|
18
17
|
/** Dependency package names - versions resolved from package.json at runtime. */
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
dependencies?: string[];
|
|
19
|
+
devDependencies?: string[];
|
|
21
20
|
files: string[];
|
|
22
21
|
/** Test files - only included when 'testing' feature is also selected. */
|
|
23
22
|
testFiles?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/features/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,WAAW,EAA6B,SAAS,SAAS,EAAE,CAAC;AAE1E,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAE/D,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/features/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,WAAW,EAA6B,SAAS,SAAS,EAAE,CAAC;AAE1E,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAE/D,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;IACF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wDAAwD;IACxD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* add_features tool
|
|
3
|
+
*
|
|
4
|
+
* Get files and dependencies for adding features to an existing project.
|
|
5
|
+
* Unlike get_scaffold, this tool does NOT auto-include the `core` feature,
|
|
6
|
+
* as it assumes the project already has core scaffolded.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import type { FeatureId } from '../features/types.js';
|
|
10
|
+
import type { ToolDefinition } from './types.js';
|
|
11
|
+
/** Zod schema for add_features input */
|
|
12
|
+
export declare const addFeaturesSchema: z.ZodObject<{
|
|
13
|
+
features: z.ZodArray<z.ZodString>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export type AddFeaturesInput = z.infer<typeof addFeaturesSchema>;
|
|
16
|
+
/** Handler function */
|
|
17
|
+
export declare function addFeatures(input: AddFeaturesInput): Promise<{
|
|
18
|
+
selectedFeatures: string[];
|
|
19
|
+
resolvedFeatures: FeatureId[];
|
|
20
|
+
featureDetails: {
|
|
21
|
+
id: FeatureId;
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
wasExplicitlySelected: boolean;
|
|
25
|
+
wasAutoIncluded: boolean;
|
|
26
|
+
}[];
|
|
27
|
+
dependencies: Record<string, string>;
|
|
28
|
+
devDependencies: Record<string, string>;
|
|
29
|
+
scripts: Record<string, string>;
|
|
30
|
+
files: string[];
|
|
31
|
+
testFiles: string[];
|
|
32
|
+
configFiles: string[];
|
|
33
|
+
docs: string[];
|
|
34
|
+
regenerated: {
|
|
35
|
+
routesTs?: string;
|
|
36
|
+
envTs?: string;
|
|
37
|
+
viteEnvDts?: string;
|
|
38
|
+
};
|
|
39
|
+
warnings: string[];
|
|
40
|
+
instructions: string;
|
|
41
|
+
}>;
|
|
42
|
+
/** Tool definition */
|
|
43
|
+
export declare const addFeaturesToolDefinition: ToolDefinition;
|
|
44
|
+
//# sourceMappingURL=add-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-features.d.ts","sourceRoot":"","sources":["../../src/tools/add-features.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wCAAwC;AACxC,eAAO,MAAM,iBAAiB;;iBAiB5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,uBAAuB;AACvB,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;mBAwB1C,MAAM;gBACT,MAAM;qBACD,MAAM;;;;GAyDtB;AA8BD,sBAAsB;AACtB,eAAO,MAAM,yBAAyB,EAAE,cAmCvC,CAAC"}
|