@react-spa-scaffold/mcp 1.2.1 → 2.0.0

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.
Files changed (130) hide show
  1. package/README.md +36 -123
  2. package/dist/features/definitions/api.d.ts.map +1 -1
  3. package/dist/features/definitions/api.js +0 -1
  4. package/dist/features/definitions/api.js.map +1 -1
  5. package/dist/features/definitions/ci.d.ts.map +1 -1
  6. package/dist/features/definitions/ci.js +0 -1
  7. package/dist/features/definitions/ci.js.map +1 -1
  8. package/dist/features/definitions/core.d.ts.map +1 -1
  9. package/dist/features/definitions/core.js +0 -1
  10. package/dist/features/definitions/core.js.map +1 -1
  11. package/dist/features/definitions/devtools.d.ts.map +1 -1
  12. package/dist/features/definitions/devtools.js +0 -1
  13. package/dist/features/definitions/devtools.js.map +1 -1
  14. package/dist/features/definitions/forms.d.ts.map +1 -1
  15. package/dist/features/definitions/forms.js +0 -1
  16. package/dist/features/definitions/forms.js.map +1 -1
  17. package/dist/features/definitions/i18n.d.ts.map +1 -1
  18. package/dist/features/definitions/i18n.js +0 -1
  19. package/dist/features/definitions/i18n.js.map +1 -1
  20. package/dist/features/definitions/mobile.d.ts.map +1 -1
  21. package/dist/features/definitions/mobile.js +0 -1
  22. package/dist/features/definitions/mobile.js.map +1 -1
  23. package/dist/features/definitions/observability.d.ts.map +1 -1
  24. package/dist/features/definitions/observability.js +0 -1
  25. package/dist/features/definitions/observability.js.map +1 -1
  26. package/dist/features/definitions/performance.d.ts.map +1 -1
  27. package/dist/features/definitions/performance.js +0 -1
  28. package/dist/features/definitions/performance.js.map +1 -1
  29. package/dist/features/definitions/routing.d.ts.map +1 -1
  30. package/dist/features/definitions/routing.js +0 -1
  31. package/dist/features/definitions/routing.js.map +1 -1
  32. package/dist/features/definitions/state.d.ts.map +1 -1
  33. package/dist/features/definitions/state.js +0 -1
  34. package/dist/features/definitions/state.js.map +1 -1
  35. package/dist/features/definitions/testing.d.ts.map +1 -1
  36. package/dist/features/definitions/testing.js +0 -3
  37. package/dist/features/definitions/testing.js.map +1 -1
  38. package/dist/features/definitions/theming.d.ts.map +1 -1
  39. package/dist/features/definitions/theming.js +0 -1
  40. package/dist/features/definitions/theming.js.map +1 -1
  41. package/dist/features/definitions/ui.d.ts.map +1 -1
  42. package/dist/features/definitions/ui.js +0 -1
  43. package/dist/features/definitions/ui.js.map +1 -1
  44. package/dist/features/types.d.ts +0 -1
  45. package/dist/features/types.d.ts.map +1 -1
  46. package/dist/server.js +6 -6
  47. package/dist/tools/get-file.d.ts +1 -1
  48. package/dist/tools/get-file.d.ts.map +1 -1
  49. package/dist/tools/get-file.js +12 -8
  50. package/dist/tools/get-file.js.map +1 -1
  51. package/dist/tools/get-scaffold.d.ts +3 -4
  52. package/dist/tools/get-scaffold.d.ts.map +1 -1
  53. package/dist/tools/get-scaffold.js +19 -26
  54. package/dist/tools/get-scaffold.js.map +1 -1
  55. package/dist/tools/get-scaffold.test.js +11 -7
  56. package/dist/tools/get-scaffold.test.js.map +1 -1
  57. package/dist/tools/index.d.ts +1 -1
  58. package/dist/tools/index.d.ts.map +1 -1
  59. package/dist/tools/index.js +1 -1
  60. package/dist/tools/index.js.map +1 -1
  61. package/dist/tools/registry.d.ts.map +1 -1
  62. package/dist/tools/registry.js +0 -8
  63. package/dist/tools/registry.js.map +1 -1
  64. package/dist/utils/index.d.ts +0 -1
  65. package/dist/utils/index.d.ts.map +1 -1
  66. package/dist/utils/index.js +0 -1
  67. package/dist/utils/index.js.map +1 -1
  68. package/dist/utils/scaffold/compute.js +1 -1
  69. package/dist/utils/scaffold/compute.js.map +1 -1
  70. package/package.json +1 -1
  71. package/dist/tools/get-example.d.ts +0 -38
  72. package/dist/tools/get-example.d.ts.map +0 -1
  73. package/dist/tools/get-example.js +0 -83
  74. package/dist/tools/get-example.js.map +0 -1
  75. package/dist/tools/get-example.test.d.ts +0 -5
  76. package/dist/tools/get-example.test.d.ts.map +0 -1
  77. package/dist/tools/get-example.test.js +0 -63
  78. package/dist/tools/get-example.test.js.map +0 -1
  79. package/dist/utils/examples/api-patterns.d.ts +0 -3
  80. package/dist/utils/examples/api-patterns.d.ts.map +0 -1
  81. package/dist/utils/examples/api-patterns.js +0 -19
  82. package/dist/utils/examples/api-patterns.js.map +0 -1
  83. package/dist/utils/examples/component-patterns.d.ts +0 -3
  84. package/dist/utils/examples/component-patterns.d.ts.map +0 -1
  85. package/dist/utils/examples/component-patterns.js +0 -71
  86. package/dist/utils/examples/component-patterns.js.map +0 -1
  87. package/dist/utils/examples/context-patterns.d.ts +0 -3
  88. package/dist/utils/examples/context-patterns.d.ts.map +0 -1
  89. package/dist/utils/examples/context-patterns.js +0 -32
  90. package/dist/utils/examples/context-patterns.js.map +0 -1
  91. package/dist/utils/examples/hook-patterns.d.ts +0 -3
  92. package/dist/utils/examples/hook-patterns.d.ts.map +0 -1
  93. package/dist/utils/examples/hook-patterns.js +0 -55
  94. package/dist/utils/examples/hook-patterns.js.map +0 -1
  95. package/dist/utils/examples/i18n-patterns.d.ts +0 -3
  96. package/dist/utils/examples/i18n-patterns.d.ts.map +0 -1
  97. package/dist/utils/examples/i18n-patterns.js +0 -43
  98. package/dist/utils/examples/i18n-patterns.js.map +0 -1
  99. package/dist/utils/examples/index.d.ts +0 -12
  100. package/dist/utils/examples/index.d.ts.map +0 -1
  101. package/dist/utils/examples/index.js +0 -65
  102. package/dist/utils/examples/index.js.map +0 -1
  103. package/dist/utils/examples/mobile-patterns.d.ts +0 -3
  104. package/dist/utils/examples/mobile-patterns.d.ts.map +0 -1
  105. package/dist/utils/examples/mobile-patterns.js +0 -38
  106. package/dist/utils/examples/mobile-patterns.js.map +0 -1
  107. package/dist/utils/examples/page-patterns.d.ts +0 -3
  108. package/dist/utils/examples/page-patterns.d.ts.map +0 -1
  109. package/dist/utils/examples/page-patterns.js +0 -34
  110. package/dist/utils/examples/page-patterns.js.map +0 -1
  111. package/dist/utils/examples/patterns.test.d.ts +0 -6
  112. package/dist/utils/examples/patterns.test.d.ts.map +0 -1
  113. package/dist/utils/examples/patterns.test.js +0 -75
  114. package/dist/utils/examples/patterns.test.js.map +0 -1
  115. package/dist/utils/examples/store-patterns.d.ts +0 -3
  116. package/dist/utils/examples/store-patterns.d.ts.map +0 -1
  117. package/dist/utils/examples/store-patterns.js +0 -40
  118. package/dist/utils/examples/store-patterns.js.map +0 -1
  119. package/dist/utils/examples/test-patterns.d.ts +0 -3
  120. package/dist/utils/examples/test-patterns.d.ts.map +0 -1
  121. package/dist/utils/examples/test-patterns.js +0 -58
  122. package/dist/utils/examples/test-patterns.js.map +0 -1
  123. package/dist/utils/examples/types.d.ts +0 -17
  124. package/dist/utils/examples/types.d.ts.map +0 -1
  125. package/dist/utils/examples/types.js +0 -2
  126. package/dist/utils/examples/types.js.map +0 -1
  127. package/dist/utils/examples/utility-patterns.d.ts +0 -3
  128. package/dist/utils/examples/utility-patterns.d.ts.map +0 -1
  129. package/dist/utils/examples/utility-patterns.js +0 -77
  130. package/dist/utils/examples/utility-patterns.js.map +0 -1
@@ -1,63 +0,0 @@
1
- /**
2
- * Tests for get_example tool
3
- */
4
- import { describe, it, expect } from 'vitest';
5
- import { getExample, getExampleSchema } from './get-example.js';
6
- describe('get_example tool', () => {
7
- it('rejects unknown pattern via schema', () => {
8
- const result = getExampleSchema.safeParse({ pattern: 'unknown-pattern' });
9
- expect(result.success).toBe(false);
10
- if (!result.success) {
11
- expect(result.error.message).toContain('Invalid pattern');
12
- }
13
- });
14
- it('returns code for valid pattern', async () => {
15
- const result = await getExample({ pattern: 'zustand-store' });
16
- expect(result).not.toHaveProperty('error');
17
- expect(result).toHaveProperty('code');
18
- expect(result).toHaveProperty('filePath');
19
- expect(result).toHaveProperty('description');
20
- expect(result).toHaveProperty('keyPoints');
21
- });
22
- it('returns usage hint', async () => {
23
- const result = await getExample({ pattern: 'zustand-store' });
24
- expect(result).toHaveProperty('usage');
25
- expect(typeof result.usage).toBe('string');
26
- });
27
- it('returns actual code content', async () => {
28
- const result = await getExample({ pattern: 'hook-state' });
29
- expect(result.code).toBeTruthy();
30
- expect(result.code?.length).toBeGreaterThan(50);
31
- });
32
- it('works for component patterns', async () => {
33
- const result = await getExample({ pattern: 'component-ui' });
34
- expect(result).not.toHaveProperty('error');
35
- expect(result.code).toContain('export');
36
- });
37
- it('works for test patterns', async () => {
38
- const result = await getExample({ pattern: 'test-component' });
39
- expect(result).not.toHaveProperty('error');
40
- expect(result.code).toContain('describe');
41
- });
42
- it('works for mobile-context pattern', async () => {
43
- const result = await getExample({ pattern: 'mobile-context' });
44
- expect(result).not.toHaveProperty('error');
45
- expect(result.code).toContain('MobileProvider');
46
- expect(result.code).toContain('useMobileContext');
47
- expect(result.filePath).toBe('src/contexts/mobileContext.tsx');
48
- });
49
- it('works for use-media-query pattern', async () => {
50
- const result = await getExample({ pattern: 'use-media-query' });
51
- expect(result).not.toHaveProperty('error');
52
- expect(result.code).toContain('BREAKPOINTS');
53
- expect(result.code).toContain('useMediaQuery');
54
- expect(result.filePath).toBe('src/hooks/useMediaQuery.ts');
55
- });
56
- it('works for use-touch-sizes pattern', async () => {
57
- const result = await getExample({ pattern: 'use-touch-sizes' });
58
- expect(result).not.toHaveProperty('error');
59
- expect(result.code).toContain('useTouchSizes');
60
- expect(result.filePath).toBe('src/hooks/useTouchSizes.ts');
61
- });
62
- });
63
- //# sourceMappingURL=get-example.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-example.test.js","sourceRoot":"","sources":["../../src/tools/get-example.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const apiPatterns: PatternMap;
3
- //# sourceMappingURL=api-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/api-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,UAiBzB,CAAC"}
@@ -1,19 +0,0 @@
1
- export const apiPatterns = {
2
- 'api-client': {
3
- file: 'src/lib/api.ts',
4
- description: 'Typed API client with error handling',
5
- keyPoints: [
6
- 'Custom ApiClientError class',
7
- 'Generic request function',
8
- 'AbortController for timeout',
9
- 'Error parsing from response JSON',
10
- 'Methods object (get, post, put, patch, delete)',
11
- ],
12
- },
13
- 'use-query-hook': {
14
- file: 'src/hooks/useExampleQuery.ts',
15
- description: 'TanStack Query data fetching hook',
16
- keyPoints: ['useQuery with typed response', 'queryKey for cache management', 'Separate fetch function'],
17
- },
18
- };
19
- //# sourceMappingURL=api-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/api-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sCAAsC;QACnD,SAAS,EAAE;YACT,6BAA6B;YAC7B,0BAA0B;YAC1B,6BAA6B;YAC7B,kCAAkC;YAClC,gDAAgD;SACjD;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,mCAAmC;QAChD,SAAS,EAAE,CAAC,8BAA8B,EAAE,+BAA+B,EAAE,yBAAyB,CAAC;KACxG;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const componentPatterns: PatternMap;
3
- //# sourceMappingURL=component-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/component-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,iBAAiB,EAAE,UAqE/B,CAAC"}
@@ -1,71 +0,0 @@
1
- export const componentPatterns = {
2
- 'component-ui': {
3
- file: 'src/components/ui/button.tsx',
4
- description: 'Shadcn/UI component with CVA variants and forwardRef',
5
- keyPoints: [
6
- 'Uses forwardRef for ref forwarding',
7
- 'CVA (class-variance-authority) for style variants',
8
- 'cn() utility for class merging',
9
- 'Named export (not default)',
10
- 'Props interface extends HTML attributes + VariantProps',
11
- 'Radix Slot for polymorphic "asChild" prop',
12
- ],
13
- },
14
- 'component-shared': {
15
- file: 'src/components/shared/ThemeToggle/ThemeToggle.tsx',
16
- description: 'Shared feature component with store integration',
17
- keyPoints: [
18
- 'Named function export',
19
- 'Located in subdirectory with index.ts barrel',
20
- 'Uses Zustand store with selectors',
21
- 'Integrates with Lingui i18n (t() function)',
22
- 'Composes UI components (Button, icons)',
23
- ],
24
- },
25
- 'component-layout': {
26
- file: 'src/components/layout/Header.tsx',
27
- description: 'Layout component for page structure',
28
- keyPoints: [
29
- 'Named function export',
30
- 'Uses Tailwind container pattern',
31
- 'Composes shared components',
32
- 'Trans component for i18n text',
33
- 'No props (stateless layout)',
34
- ],
35
- },
36
- 'button-variants': {
37
- file: 'src/components/ui/button.tsx',
38
- description: 'Button with CVA variants',
39
- keyPoints: [
40
- 'variant: default, destructive, outline, secondary, ghost, link',
41
- 'size: default, sm, lg, icon',
42
- 'asChild prop for polymorphic rendering',
43
- ],
44
- },
45
- 'forward-ref-component': {
46
- file: 'src/components/ui/button.tsx',
47
- description: 'forwardRef component pattern',
48
- keyPoints: ['React.forwardRef<HTMLElement, Props>', 'ref passed to inner element', 'displayName set for DevTools'],
49
- },
50
- 'error-boundary': {
51
- file: 'src/components/shared/ErrorBoundary/ErrorBoundary.tsx',
52
- description: 'Error boundary with reset functionality',
53
- keyPoints: [
54
- 'Class component with getDerivedStateFromError',
55
- 'componentDidCatch for logging',
56
- 'Reset button to recover',
57
- ],
58
- },
59
- 'seo-component': {
60
- file: 'src/components/shared/SEO/SEO.tsx',
61
- description: 'SEO meta tags component (React 19)',
62
- keyPoints: [
63
- 'React 19 native head hoisting',
64
- 'title, meta, link in JSX',
65
- 'Open Graph tags',
66
- 'Twitter Card tags',
67
- 'Conditional rendering for optional tags',
68
- ],
69
- },
70
- };
71
- //# sourceMappingURL=component-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/component-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,cAAc,EAAE;QACd,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE;YACT,oCAAoC;YACpC,mDAAmD;YACnD,gCAAgC;YAChC,4BAA4B;YAC5B,wDAAwD;YACxD,2CAA2C;SAC5C;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,iDAAiD;QAC9D,SAAS,EAAE;YACT,uBAAuB;YACvB,8CAA8C;YAC9C,mCAAmC;YACnC,4CAA4C;YAC5C,wCAAwC;SACzC;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE;YACT,uBAAuB;YACvB,iCAAiC;YACjC,4BAA4B;YAC5B,+BAA+B;YAC/B,6BAA6B;SAC9B;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE;YACT,gEAAgE;YAChE,6BAA6B;YAC7B,wCAAwC;SACzC;KACF;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,CAAC,sCAAsC,EAAE,6BAA6B,EAAE,8BAA8B,CAAC;KACnH;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,uDAAuD;QAC7D,WAAW,EAAE,yCAAyC;QACtD,SAAS,EAAE;YACT,+CAA+C;YAC/C,+BAA+B;YAC/B,yBAAyB;SAC1B;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE;YACT,+BAA+B;YAC/B,0BAA0B;YAC1B,iBAAiB;YACjB,mBAAmB;YACnB,yCAAyC;SAC1C;KACF;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const contextPatterns: PatternMap;
3
- //# sourceMappingURL=context-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/context-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,eAAe,EAAE,UA8B7B,CAAC"}
@@ -1,32 +0,0 @@
1
- export const contextPatterns = {
2
- 'context-provider': {
3
- file: 'src/contexts/mobileContext.tsx',
4
- description: 'React Context with provider and hook',
5
- keyPoints: [
6
- 'Separate Context and Provider',
7
- 'useMemo for context value',
8
- 'Custom hook with error if outside provider',
9
- 'useEffect with resize listener',
10
- 'requestAnimationFrame for debouncing',
11
- ],
12
- },
13
- 'query-provider': {
14
- file: 'src/contexts/queryContext.tsx',
15
- description: 'TanStack Query provider setup',
16
- keyPoints: [
17
- 'QueryClient with default options',
18
- 'staleTime, gcTime, retry configuration',
19
- 'QueryClientProvider wrapper',
20
- ],
21
- },
22
- 'performance-context': {
23
- file: 'src/contexts/performanceContext.tsx',
24
- description: 'Performance monitoring context',
25
- keyPoints: [
26
- 'Lazy loading for zero prod overhead',
27
- 'usePerformance hook never throws',
28
- 'React Profiler integration',
29
- ],
30
- },
31
- };
32
- //# sourceMappingURL=context-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/context-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,kBAAkB,EAAE;QAClB,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,sCAAsC;QACnD,SAAS,EAAE;YACT,+BAA+B;YAC/B,2BAA2B;YAC3B,4CAA4C;YAC5C,gCAAgC;YAChC,sCAAsC;SACvC;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE;YACT,kCAAkC;YAClC,wCAAwC;YACxC,6BAA6B;SAC9B;KACF;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,gCAAgC;QAC7C,SAAS,EAAE;YACT,qCAAqC;YACrC,kCAAkC;YAClC,4BAA4B;SAC7B;KACF;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const hookPatterns: PatternMap;
3
- //# sourceMappingURL=hook-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/hook-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAqD1B,CAAC"}
@@ -1,55 +0,0 @@
1
- export const hookPatterns = {
2
- 'hook-state': {
3
- file: 'src/hooks/useMediaQuery.ts',
4
- description: 'State hook with browser API and cleanup',
5
- keyPoints: [
6
- 'useRef for persistent MediaQueryList',
7
- 'useState with SSR-safe initialization',
8
- 'useEffect with cleanup function',
9
- 'Exports constants alongside hook (BREAKPOINTS)',
10
- 'Convenience wrapper hooks (useIsMobile, useIsDesktop)',
11
- ],
12
- },
13
- 'hook-query': {
14
- file: 'src/hooks/useExampleQuery.ts',
15
- description: 'TanStack Query hook for data fetching',
16
- keyPoints: [
17
- 'Separate async fetchFn outside hook',
18
- 'Typed with generics (useQuery<Todo[]>)',
19
- 'Namespaced queryKey array',
20
- 'Uses centralized API client',
21
- ],
22
- },
23
- 'hook-form': {
24
- file: 'src/hooks/useRegisterForm.ts',
25
- description: 'React Hook Form + Zod validation hook',
26
- keyPoints: [
27
- 'zodResolver for Zod integration',
28
- 'Type-safe with inferred RegisterFormData',
29
- 'Returns form object + handlers + reset',
30
- 'Extracts commonly used state (isSubmitting, errors)',
31
- 'Uses schema with refine() for cross-field validation',
32
- ],
33
- },
34
- 'hook-effect': {
35
- file: 'src/hooks/useThemeEffect.ts',
36
- description: 'Effect-only hook with no return value',
37
- keyPoints: [
38
- 'useEffect with conditional listener',
39
- 'Zustand store subscription',
40
- 'Cleanup function for event listener',
41
- 'DOM manipulation (classList)',
42
- ],
43
- },
44
- 'use-language-hook': {
45
- file: 'src/hooks/useLanguage.ts',
46
- description: 'Hook for language/locale management',
47
- keyPoints: [
48
- 'Integrates with Lingui i18n',
49
- 'useCallback for memoized async function',
50
- 'Persists to localStorage',
51
- 'Returns object with state + action',
52
- ],
53
- },
54
- };
55
- //# sourceMappingURL=hook-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/hook-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,YAAY,EAAE;QACZ,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,yCAAyC;QACtD,SAAS,EAAE;YACT,sCAAsC;YACtC,uCAAuC;YACvC,iCAAiC;YACjC,gDAAgD;YAChD,uDAAuD;SACxD;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,uCAAuC;QACpD,SAAS,EAAE;YACT,qCAAqC;YACrC,wCAAwC;YACxC,2BAA2B;YAC3B,6BAA6B;SAC9B;KACF;IACD,WAAW,EAAE;QACX,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,uCAAuC;QACpD,SAAS,EAAE;YACT,iCAAiC;YACjC,0CAA0C;YAC1C,wCAAwC;YACxC,qDAAqD;YACrD,sDAAsD;SACvD;KACF;IACD,aAAa,EAAE;QACb,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,uCAAuC;QACpD,SAAS,EAAE;YACT,qCAAqC;YACrC,4BAA4B;YAC5B,qCAAqC;YACrC,8BAA8B;SAC/B;KACF;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE;YACT,6BAA6B;YAC7B,yCAAyC;YACzC,0BAA0B;YAC1B,oCAAoC;SACrC;KACF;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const i18nPatterns: PatternMap;
3
- //# sourceMappingURL=i18n-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/i18n-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAyC1B,CAAC"}
@@ -1,43 +0,0 @@
1
- export const i18nPatterns = {
2
- 'i18n-index': {
3
- file: 'src/i18n/index.ts',
4
- description: 'i18n barrel export with initialization functions',
5
- keyPoints: [
6
- 'Re-exports i18n instance from @lingui/core',
7
- 'initI18n() async function for app initialization',
8
- 'getLocale() returns current active locale',
9
- 'Re-exports config, detectLanguage, and dynamicActivate',
10
- ],
11
- },
12
- 'trans-component': {
13
- file: 'src/components/layout/Header.tsx',
14
- description: 'Trans component usage for JSX text',
15
- keyPoints: [
16
- 'Import from @lingui/react/macro',
17
- 'comment prop is REQUIRED (ESLint enforced)',
18
- 'Wraps user-visible text',
19
- 'Can contain JSX children',
20
- ],
21
- },
22
- 't-function': {
23
- file: 'src/components/shared/ThemeToggle/ThemeToggle.tsx',
24
- description: 't() function for programmatic text',
25
- keyPoints: [
26
- 'useLingui() hook for t function',
27
- 'Object syntax: t({ message, comment })',
28
- 'comment is REQUIRED',
29
- 'Use for dynamic text, attributes',
30
- ],
31
- },
32
- 'language-switcher': {
33
- file: 'src/components/shared/LanguageSwitcher/LanguageSwitcher.tsx',
34
- description: 'Language selection component',
35
- keyPoints: [
36
- 'useLanguage() hook',
37
- 'DropdownMenu for selection',
38
- 'supportedLocales array',
39
- 'changeLanguage async function',
40
- ],
41
- },
42
- };
43
- //# sourceMappingURL=i18n-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/i18n-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,YAAY,EAAE;QACZ,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kDAAkD;QAC/D,SAAS,EAAE;YACT,4CAA4C;YAC5C,kDAAkD;YAClD,2CAA2C;YAC3C,wDAAwD;SACzD;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE;YACT,iCAAiC;YACjC,4CAA4C;YAC5C,yBAAyB;YACzB,0BAA0B;SAC3B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE;YACT,iCAAiC;YACjC,wCAAwC;YACxC,qBAAqB;YACrB,kCAAkC;SACnC;KACF;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,6DAA6D;QACnE,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE;YACT,oBAAoB;YACpB,4BAA4B;YAC5B,wBAAwB;YACxB,+BAA+B;SAChC;KACF;CACF,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Code examples - provides real code patterns from the react-spa-scaffold repository.
3
- */
4
- import type { CodeExample } from './types.js';
5
- export type { CodeExample } from './types.js';
6
- /** Get all available pattern names. */
7
- export declare function getAvailablePatterns(): string[];
8
- /** Get code example for a pattern. */
9
- export declare function getCodeExample(pattern: string): Promise<CodeExample | null>;
10
- /** Get all examples for a list of patterns (parallel). */
11
- export declare function getFeatureExamples(patterns: string[]): Promise<CodeExample[]>;
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAY1D,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAkB9C,uCAAuC;AACvC,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED,sCAAsC;AACtC,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwBjF;AAED,0DAA0D;AAC1D,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGnF"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Code examples - provides real code patterns from the react-spa-scaffold repository.
3
- */
4
- import { readFile } from 'fs/promises';
5
- import { resolveTemplatePath } from '../paths.js';
6
- import { componentPatterns } from './component-patterns.js';
7
- import { hookPatterns } from './hook-patterns.js';
8
- import { mobilePatterns } from './mobile-patterns.js';
9
- import { storePatterns } from './store-patterns.js';
10
- import { pagePatterns } from './page-patterns.js';
11
- import { contextPatterns } from './context-patterns.js';
12
- import { apiPatterns } from './api-patterns.js';
13
- import { testPatterns } from './test-patterns.js';
14
- import { i18nPatterns } from './i18n-patterns.js';
15
- import { utilityPatterns } from './utility-patterns.js';
16
- /** All pattern definitions merged at startup. */
17
- const PATTERN_MAP = {
18
- ...componentPatterns,
19
- ...hookPatterns,
20
- ...mobilePatterns,
21
- ...storePatterns,
22
- ...pagePatterns,
23
- ...contextPatterns,
24
- ...apiPatterns,
25
- ...testPatterns,
26
- ...i18nPatterns,
27
- ...utilityPatterns,
28
- };
29
- const PATTERN_NAMES = Object.keys(PATTERN_MAP).sort();
30
- /** Get all available pattern names. */
31
- export function getAvailablePatterns() {
32
- return PATTERN_NAMES;
33
- }
34
- /** Get code example for a pattern. */
35
- export async function getCodeExample(pattern) {
36
- const mapping = PATTERN_MAP[pattern];
37
- if (!mapping)
38
- return null;
39
- const fullPath = resolveTemplatePath(mapping.file);
40
- try {
41
- const code = await readFile(fullPath, 'utf-8');
42
- return {
43
- pattern,
44
- description: mapping.description,
45
- filePath: mapping.file,
46
- code,
47
- keyPoints: mapping.keyPoints,
48
- };
49
- }
50
- catch {
51
- return {
52
- pattern,
53
- description: mapping.description,
54
- filePath: mapping.file,
55
- code: `// File not found: ${mapping.file}\n// Run MCP server from within react-spa-scaffold repository`,
56
- keyPoints: mapping.keyPoints,
57
- };
58
- }
59
- }
60
- /** Get all examples for a list of patterns (parallel). */
61
- export async function getFeatureExamples(patterns) {
62
- const examples = await Promise.all(patterns.map(getCodeExample));
63
- return examples.filter((e) => e !== null);
64
- }
65
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/examples/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,iDAAiD;AACjD,MAAM,WAAW,GAAe;IAC9B,GAAG,iBAAiB;IACpB,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,YAAY;IACf,GAAG,eAAe;IAClB,GAAG,WAAW;IACd,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,eAAe;CACnB,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AAEtD,uCAAuC;AACvC,MAAM,UAAU,oBAAoB;IAClC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO;YACL,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,IAAI,EAAE,sBAAsB,OAAO,CAAC,IAAI,+DAA+D;YACvG,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAkB;IACzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const mobilePatterns: PatternMap;
3
- //# sourceMappingURL=mobile-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mobile-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/mobile-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,cAAc,EAAE,UAoC5B,CAAC"}
@@ -1,38 +0,0 @@
1
- export const mobilePatterns = {
2
- 'mobile-context': {
3
- file: 'src/contexts/mobileContext.tsx',
4
- description: 'Mobile viewport detection context with optimized resize handling',
5
- keyPoints: [
6
- 'MobileProvider tracks viewport width via window.innerWidth',
7
- 'useMobileContext hook returns isMobile, isTablet, isDesktop, width',
8
- 'requestAnimationFrame debouncing for performance',
9
- 'Only re-renders when width actually changes',
10
- 'SSR-safe with BREAKPOINTS.lg fallback',
11
- 'Throws error when used outside provider',
12
- ],
13
- },
14
- 'use-media-query': {
15
- file: 'src/hooks/useMediaQuery.ts',
16
- description: 'Media query hook with breakpoint constants',
17
- keyPoints: [
18
- 'BREAKPOINTS: sm (640), md (768), lg (1024), xl (1280)',
19
- 'useMediaQuery(query) for custom media queries',
20
- 'useIsMobile() returns true if width < md breakpoint',
21
- 'useIsDesktop() returns true if width >= lg breakpoint',
22
- 'Uses useRef to persist MediaQueryList object',
23
- 'SSR-safe initialization',
24
- ],
25
- },
26
- 'use-touch-sizes': {
27
- file: 'src/hooks/useTouchSizes.ts',
28
- description: 'Touch-aware component sizing hook',
29
- keyPoints: [
30
- 'Returns size variants based on device type (mobile vs desktop)',
31
- 'Integrates with MobileProvider via useMobileContext',
32
- 'Provides: button, buttonSm, iconButton, iconButtonLg, input, select, toggle, textarea',
33
- 'Mobile uses "touch" variants for larger tap targets',
34
- 'Desktop uses "default" or smaller variants',
35
- ],
36
- },
37
- };
38
- //# sourceMappingURL=mobile-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mobile-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/mobile-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,gBAAgB,EAAE;QAChB,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,kEAAkE;QAC/E,SAAS,EAAE;YACT,4DAA4D;YAC5D,oEAAoE;YACpE,kDAAkD;YAClD,6CAA6C;YAC7C,uCAAuC;YACvC,yCAAyC;SAC1C;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,4CAA4C;QACzD,SAAS,EAAE;YACT,uDAAuD;YACvD,+CAA+C;YAC/C,qDAAqD;YACrD,uDAAuD;YACvD,8CAA8C;YAC9C,yBAAyB;SAC1B;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,mCAAmC;QAChD,SAAS,EAAE;YACT,gEAAgE;YAChE,qDAAqD;YACrD,uFAAuF;YACvF,qDAAqD;YACrD,4CAA4C;SAC7C;KACF;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PatternMap } from './types.js';
2
- export declare const pagePatterns: PatternMap;
3
- //# sourceMappingURL=page-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/page-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAgC1B,CAAC"}
@@ -1,34 +0,0 @@
1
- export const pagePatterns = {
2
- 'page-component': {
3
- file: 'src/pages/Home.tsx',
4
- description: 'Page component with i18n and SEO',
5
- keyPoints: [
6
- 'Named export (PageNamePage convention)',
7
- 'SEO component for page-specific meta tags',
8
- 'Trans component for all user text',
9
- 'Container layout classes',
10
- 'Minimal logic (pages are thin)',
11
- ],
12
- },
13
- 'lazy-page': {
14
- file: 'src/App.tsx',
15
- description: 'Lazy loading pattern for pages with default SEO',
16
- keyPoints: [
17
- 'React.lazy() with dynamic import',
18
- 'Transform named to default: .then(m => ({ default: m.PageName }))',
19
- 'Suspense boundary with fallback',
20
- 'Route constants from lib/routes.ts',
21
- 'Default SEO component for site-wide meta tags',
22
- ],
23
- },
24
- 'route-constants': {
25
- file: 'src/lib/routes.ts',
26
- description: 'Typed route constants',
27
- keyPoints: [
28
- 'ROUTES object with as const',
29
- 'AppRoute type for type-safe navigation',
30
- 'Centralized route definitions',
31
- ],
32
- },
33
- };
34
- //# sourceMappingURL=page-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/page-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,gBAAgB,EAAE;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,kCAAkC;QAC/C,SAAS,EAAE;YACT,wCAAwC;YACxC,2CAA2C;YAC3C,mCAAmC;YACnC,0BAA0B;YAC1B,gCAAgC;SACjC;KACF;IACD,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iDAAiD;QAC9D,SAAS,EAAE;YACT,kCAAkC;YAClC,mEAAmE;YACnE,iCAAiC;YACjC,oCAAoC;YACpC,+CAA+C;SAChD;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,uBAAuB;QACpC,SAAS,EAAE;YACT,6BAA6B;YAC7B,wCAAwC;YACxC,+BAA+B;SAChC;KACF;CACF,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Pattern definition validation tests.
3
- * Ensures all pattern file paths exist and definitions are complete.
4
- */
5
- export {};
6
- //# sourceMappingURL=patterns.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.test.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/patterns.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}