@jmruthers/pace-core 0.6.6 → 0.6.7

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 (246) hide show
  1. package/{scripts/audit/audit-dependencies.cjs → audit-tool/00-dependencies.cjs} +12 -13
  2. package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
  3. package/audit-tool/audits/02-project-structure.cjs +255 -0
  4. package/audit-tool/audits/03-architecture.cjs +196 -0
  5. package/audit-tool/audits/04-code-quality.cjs +149 -0
  6. package/audit-tool/audits/05-styling.cjs +224 -0
  7. package/audit-tool/audits/06-security-rbac.cjs +544 -0
  8. package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
  9. package/audit-tool/audits/08-testing-documentation.cjs +202 -0
  10. package/audit-tool/audits/09-operations.cjs +208 -0
  11. package/audit-tool/index.cjs +291 -0
  12. package/audit-tool/utils/code-utils.cjs +218 -0
  13. package/audit-tool/utils/file-utils.cjs +230 -0
  14. package/audit-tool/utils/report-utils.cjs +241 -0
  15. package/cursor-rules/00-standards-overview.mdc +156 -0
  16. package/cursor-rules/{00-pace-core-compliance.mdc → 01-pace-core-compliance.mdc} +187 -34
  17. package/cursor-rules/02-project-structure.mdc +37 -5
  18. package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +125 -11
  19. package/cursor-rules/04-code-quality.mdc +419 -0
  20. package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +55 -10
  21. package/cursor-rules/{09-rbac-compliance.mdc → 06-security-rbac.mdc} +62 -6
  22. package/cursor-rules/07-api-tech-stack.mdc +377 -0
  23. package/cursor-rules/08-testing-documentation.mdc +324 -0
  24. package/cursor-rules/09-operations.mdc +365 -0
  25. package/dist/DataTable-7PMH7XN7.js +15 -0
  26. package/dist/{DataTable-2N_tqbfq.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
  27. package/dist/{PublicPageProvider-BBH6Vqg7.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +26 -16
  28. package/dist/{chunk-FENMYN2U.js → chunk-5X4QLXRG.js} +1 -3
  29. package/dist/{chunk-4T7OBVTU.js → chunk-6F3IILHI.js} +1 -1
  30. package/dist/{chunk-SD6WQY43.js → chunk-7ILTDCL2.js} +9 -1
  31. package/dist/{chunk-3QC3KRHK.js → chunk-A3W6LW53.js} +16 -1
  32. package/dist/{chunk-7TYHROIV.js → chunk-BM4CQ5P3.js} +50 -8
  33. package/dist/{chunk-2HGJFNAH.js → chunk-FEJLJNWA.js} +1 -15
  34. package/dist/{chunk-OHIK3MIO.js → chunk-GHYHJTYV.js} +2 -2
  35. package/dist/{chunk-UIYSCEV7.js → chunk-IUBRCBSY.js} +1 -1
  36. package/dist/{chunk-LAZMKTTF.js → chunk-JGWDVX64.js} +281 -347
  37. package/dist/{chunk-MAGBIDNS.js → chunk-L4XMVJKY.js} +2 -2
  38. package/dist/{chunk-A55DK444.js → chunk-OJ4SKRSV.js} +1 -7
  39. package/dist/{chunk-ZS5VO5JB.js → chunk-Q7Q7V5NV.js} +406 -451
  40. package/dist/{chunk-3O3WHILE.js → chunk-VBCS3DUA.js} +236 -60
  41. package/dist/{chunk-BVP2BCJF.js → chunk-ZKAWKYT4.js} +8 -8
  42. package/dist/components.d.ts +5 -4
  43. package/dist/components.js +27 -32
  44. package/dist/eslint-rules/index.cjs +22 -9
  45. package/{src/eslint-rules/rules/compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +184 -23
  46. package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
  47. package/dist/eslint-rules/rules/05-styling.cjs +61 -0
  48. package/dist/eslint-rules/rules/{rbac.cjs → 06-security-rbac.cjs} +26 -10
  49. package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
  50. package/dist/eslint-rules/rules/08-testing.cjs +94 -0
  51. package/dist/hooks.d.ts +5 -5
  52. package/dist/hooks.js +6 -6
  53. package/dist/index.d.ts +6 -6
  54. package/dist/index.js +18 -17
  55. package/dist/rbac/index.js +6 -6
  56. package/dist/theming/runtime.d.ts +14 -1
  57. package/dist/theming/runtime.js +1 -1
  58. package/dist/{types-B-K_5VnO.d.ts → types-DXstZpNI.d.ts} +0 -17
  59. package/dist/{usePublicRouteParams-COZ28Mvq.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +19 -19
  60. package/dist/utils.d.ts +2 -2
  61. package/dist/utils.js +8 -8
  62. package/docs/README.md +1 -1
  63. package/docs/api/modules.md +47 -31
  64. package/docs/api-reference/components.md +18 -20
  65. package/docs/api-reference/hooks.md +80 -80
  66. package/docs/api-reference/types.md +1 -1
  67. package/docs/api-reference/utilities.md +1 -1
  68. package/docs/architecture/README.md +1 -1
  69. package/docs/core-concepts/events.md +3 -3
  70. package/docs/core-concepts/organisations.md +6 -6
  71. package/docs/core-concepts/permissions.md +6 -6
  72. package/docs/documentation-index.md +12 -18
  73. package/docs/getting-started/documentation-index.md +1 -1
  74. package/docs/getting-started/examples/README.md +4 -4
  75. package/docs/getting-started/examples/full-featured-app.md +1 -1
  76. package/docs/getting-started/faq.md +2 -2
  77. package/docs/getting-started/quick-reference.md +4 -4
  78. package/docs/implementation-guides/authentication.md +15 -15
  79. package/docs/implementation-guides/component-styling.md +1 -1
  80. package/docs/implementation-guides/data-tables.md +126 -33
  81. package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
  82. package/docs/implementation-guides/dynamic-colors.md +3 -3
  83. package/docs/implementation-guides/file-upload-storage.md +2 -2
  84. package/docs/implementation-guides/hierarchical-datatable.md +40 -60
  85. package/docs/implementation-guides/inactivity-tracking.md +3 -3
  86. package/docs/implementation-guides/large-datasets.md +3 -2
  87. package/docs/implementation-guides/organisation-security.md +2 -2
  88. package/docs/implementation-guides/performance.md +2 -2
  89. package/docs/implementation-guides/permission-enforcement.md +1 -1
  90. package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
  91. package/docs/migration/V0.4.0_rbac-migration.md +6 -6
  92. package/docs/rbac/README.md +5 -5
  93. package/docs/rbac/advanced-patterns.md +6 -6
  94. package/docs/rbac/api-reference.md +20 -20
  95. package/docs/rbac/event-based-apps.md +3 -3
  96. package/docs/rbac/examples.md +41 -41
  97. package/docs/rbac/getting-started.md +37 -37
  98. package/docs/rbac/performance.md +1 -1
  99. package/docs/rbac/quick-start.md +52 -52
  100. package/docs/rbac/secure-client-protection.md +1 -1
  101. package/docs/rbac/troubleshooting.md +1 -1
  102. package/docs/security/README.md +5 -5
  103. package/docs/standards/0-standards-overview.md +220 -0
  104. package/docs/standards/{00-pace-core-compliance.md → 1-pace-core-compliance-standards.md} +204 -185
  105. package/docs/standards/{02-project-structure.md → 2-project-structure-standards.md} +11 -47
  106. package/docs/standards/3-architecture-standards.md +606 -0
  107. package/docs/standards/4-code-quality-standards.md +728 -0
  108. package/docs/standards/{08-markup-quality.md → 5-styling-standards.md} +12 -9
  109. package/docs/standards/{09-rbac-compliance.md → 6-security-rbac-standards.md} +126 -18
  110. package/docs/standards/7-api-tech-stack-standards.md +662 -0
  111. package/docs/standards/8-testing-documentation-standards.md +401 -0
  112. package/docs/standards/9-operations-standards.md +1102 -0
  113. package/docs/standards/README.md +203 -104
  114. package/docs/troubleshooting/README.md +4 -4
  115. package/docs/troubleshooting/common-issues.md +2 -2
  116. package/docs/troubleshooting/debugging.md +9 -9
  117. package/docs/troubleshooting/migration.md +4 -4
  118. package/eslint-config-pace-core.cjs +21 -10
  119. package/package.json +6 -5
  120. package/scripts/install-cursor-rules.cjs +11 -243
  121. package/scripts/install-eslint-config.cjs +284 -0
  122. package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +2 -2
  123. package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
  124. package/src/__tests__/helpers/__tests__/test-utils.test.tsx +10 -10
  125. package/src/__tests__/integration/UserProfile.test.tsx +14 -14
  126. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
  127. package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
  128. package/src/__tests__/templates/component.test.template.tsx +18 -15
  129. package/src/components/Calendar/Calendar.tsx +201 -47
  130. package/src/components/ContextSelector/ContextSelector.tsx +137 -153
  131. package/src/components/DataTable/AUDIT_REPORT.md +293 -0
  132. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
  133. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
  134. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
  135. package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
  136. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
  137. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
  138. package/src/components/DataTable/components/DataTableLayout.tsx +5 -16
  139. package/src/components/DataTable/components/EditableRow.tsx +5 -7
  140. package/src/components/DataTable/components/EmptyState.tsx +10 -9
  141. package/src/components/DataTable/components/FilterRow.tsx +2 -4
  142. package/src/components/DataTable/components/ImportModal.tsx +124 -126
  143. package/src/components/DataTable/components/LoadingState.tsx +5 -6
  144. package/src/components/DataTable/components/SortIndicator.tsx +50 -0
  145. package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
  146. package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
  147. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
  148. package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
  149. package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
  150. package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
  151. package/src/components/DataTable/components/index.ts +2 -1
  152. package/src/components/DataTable/types.ts +0 -18
  153. package/src/components/DataTable/utils/a11yUtils.ts +17 -0
  154. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
  155. package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
  156. package/src/components/DateTimeField/DateTimeField.tsx +7 -8
  157. package/src/components/Dialog/Dialog.test.tsx +1 -0
  158. package/src/components/Dialog/Dialog.tsx +25 -8
  159. package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
  160. package/src/components/FileUpload/FileUpload.test.tsx +52 -14
  161. package/src/components/FileUpload/FileUpload.tsx +112 -130
  162. package/src/components/Progress/Progress.tsx +2 -4
  163. package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
  164. package/src/components/Select/Select.tsx +86 -77
  165. package/src/components/Select/types.ts +3 -0
  166. package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
  167. package/src/hooks/__tests__/hooks.integration.test.tsx +49 -49
  168. package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
  169. package/src/hooks/public/usePublicEvent.ts +5 -5
  170. package/src/hooks/public/usePublicEventLogo.ts +5 -5
  171. package/src/hooks/public/usePublicFileDisplay.ts +2 -2
  172. package/src/hooks/public/usePublicRouteParams.ts +5 -5
  173. package/src/hooks/useAppConfig.ts +2 -2
  174. package/src/hooks/useEventTheme.test.ts +7 -7
  175. package/src/hooks/useEventTheme.ts +1 -4
  176. package/src/hooks/useFileDisplay.ts +2 -2
  177. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
  178. package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
  179. package/src/providers/__tests__/EventProvider.test.tsx +61 -61
  180. package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
  181. package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
  182. package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
  183. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
  184. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
  185. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +10 -10
  186. package/src/styles/core.css +7 -0
  187. package/src/theming/__tests__/parseEventColours.test.ts +9 -3
  188. package/src/theming/parseEventColours.ts +22 -10
  189. package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
  190. package/src/utils/storage/README.md +1 -1
  191. package/cursor-rules/01-standards-compliance.mdc +0 -285
  192. package/cursor-rules/04-testing-standards.mdc +0 -270
  193. package/cursor-rules/05-bug-reports-and-features.mdc +0 -248
  194. package/cursor-rules/06-code-quality.mdc +0 -311
  195. package/cursor-rules/07-tech-stack-compliance.mdc +0 -216
  196. package/cursor-rules/10-error-handling-patterns.mdc +0 -179
  197. package/cursor-rules/11-performance-optimization.mdc +0 -169
  198. package/cursor-rules/12-ci-cd-integration.mdc +0 -150
  199. package/dist/DataTable-LRJL4IRV.js +0 -15
  200. package/dist/eslint-rules/rules/compliance.cjs +0 -348
  201. package/dist/eslint-rules/rules/components.cjs +0 -113
  202. package/dist/eslint-rules/rules/imports.cjs +0 -102
  203. package/docs/best-practices/README.md +0 -472
  204. package/docs/best-practices/accessibility.md +0 -604
  205. package/docs/best-practices/common-patterns.md +0 -516
  206. package/docs/best-practices/deployment.md +0 -1103
  207. package/docs/best-practices/performance.md +0 -1328
  208. package/docs/best-practices/security.md +0 -940
  209. package/docs/best-practices/testing.md +0 -1034
  210. package/docs/rbac/compliance/compliance-guide.md +0 -544
  211. package/docs/standards/01-standards-compliance.md +0 -188
  212. package/docs/standards/03-solid-principles.md +0 -39
  213. package/docs/standards/04-testing-standards.md +0 -36
  214. package/docs/standards/05-bug-reports-and-features.md +0 -27
  215. package/docs/standards/06-code-quality.md +0 -34
  216. package/docs/standards/07-tech-stack-compliance.md +0 -30
  217. package/docs/standards/10-error-handling-patterns.md +0 -401
  218. package/docs/standards/11-performance-optimization.md +0 -348
  219. package/docs/standards/12-ci-cd-integration.md +0 -370
  220. package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +0 -192
  221. package/scripts/audit/audit-compliance.cjs +0 -1295
  222. package/scripts/audit/audit-components.cjs +0 -260
  223. package/scripts/audit/audit-rbac.cjs +0 -954
  224. package/scripts/audit/audit-standards.cjs +0 -1268
  225. package/scripts/audit/index.cjs +0 -1927
  226. package/src/components/DataTable/components/DataTableBody.tsx +0 -478
  227. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
  228. package/src/components/DataTable/components/ExpandButton.tsx +0 -113
  229. package/src/components/DataTable/components/GroupHeader.tsx +0 -54
  230. package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
  231. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
  232. package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
  233. package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
  234. package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
  235. package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
  236. package/src/components/DataTable/core/DataTableContext.tsx +0 -216
  237. package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
  238. package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
  239. package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
  240. package/src/components/DataTable/utils/debugTools.ts +0 -514
  241. package/src/eslint-rules/index.cjs +0 -22
  242. package/src/eslint-rules/rules/components.cjs +0 -113
  243. package/src/eslint-rules/rules/imports.cjs +0 -102
  244. package/src/eslint-rules/rules/rbac.cjs +0 -790
  245. package/src/eslint-rules/utils/helpers.cjs +0 -42
  246. package/src/eslint-rules/utils/manifest-loader.cjs +0 -75
@@ -0,0 +1,401 @@
1
+ # Testing & Documentation Standards
2
+
3
+ **🤖 Cursor Rule**: See [08-testing-documentation.mdc](../../cursor-rules/08-testing-documentation.mdc) for AI-optimized directives that automatically enforce testing and documentation standards.
4
+
5
+ ## Purpose
6
+
7
+ This standard defines testing strategies, documentation requirements, and issue reporting templates to ensure consistent quality, maintainability, and effective communication across pace-core and consuming apps.
8
+
9
+ ---
10
+
11
+ ## Testing Strategy
12
+
13
+ ### Test Types
14
+
15
+ **MUST** use this testing strategy:
16
+
17
+ - **Unit tests** - For utils & hooks (≥90% coverage)
18
+ - **Integration tests** - For components (≥70% coverage)
19
+ - **Few meaningful E2E tests** - In consuming apps only (critical user flows)
20
+
21
+ ### Test Structure
22
+
23
+ **MUST** colocate tests with source files:
24
+
25
+ ```
26
+ src/
27
+ ├── components/
28
+ │ └── events/
29
+ │ ├── EventCard.tsx
30
+ │ └── EventCard.test.tsx # ✅ Colocated
31
+
32
+ ├── hooks/
33
+ │ ├── useEventData.ts
34
+ │ └── useEventData.test.ts # ✅ Colocated
35
+
36
+ └── utils/
37
+ ├── formatEvent.ts
38
+ └── formatEvent.test.ts # ✅ Colocated
39
+ ```
40
+
41
+ ### Test File Naming
42
+
43
+ - Unit tests: `*.test.ts` or `*.test.tsx`
44
+ - Integration tests: `*.integration.test.ts`
45
+ - E2E tests: Place in `tests/` directory
46
+
47
+ ### Testing Tools
48
+
49
+ **MUST** use:
50
+
51
+ - **React Testing Library** - For component testing
52
+ - **userEvent** - For user interaction simulation
53
+ - **Vitest** - For test runner
54
+ - **Avoid unnecessary mocks** - Prefer real implementations when possible
55
+
56
+ ### Test Timeouts
57
+
58
+ **MUST** configure timeouts for all test commands to prevent tests from hanging indefinitely.
59
+
60
+ **Recommended Configuration:**
61
+
62
+ **Option 1: Configure in `vitest.config.ts` (Recommended)**
63
+ ```typescript
64
+ // vitest.config.ts
65
+ import { defineConfig } from 'vitest/config';
66
+
67
+ export default defineConfig({
68
+ test: {
69
+ testTimeout: 10000, // 10 seconds per test
70
+ hookTimeout: 10000, // 10 seconds for hooks
71
+ teardownTimeout: 5000, // 5 seconds for cleanup
72
+ },
73
+ });
74
+ ```
75
+
76
+ **Option 2: Configure in `package.json` scripts (Alternative)**
77
+ ```json
78
+ {
79
+ "scripts": {
80
+ "test": "vitest run --test-timeout=10000",
81
+ "test:watch": "vitest --test-timeout=10000",
82
+ "test:coverage": "vitest run --coverage --test-timeout=10000"
83
+ }
84
+ }
85
+ ```
86
+
87
+ **Recommended Timeout Values:**
88
+ - **Unit tests**: 5-10 seconds (most tests should complete in < 1 second)
89
+ - **Integration tests**: 10-15 seconds (may involve async operations)
90
+ - **E2E tests**: 30-60 seconds (may involve network requests)
91
+
92
+ **Why:** Tests in this project have issues with hanging and require manual cancellation without timeouts. Always configure timeouts to prevent CI/CD pipelines from hanging indefinitely.
93
+
94
+ **Example:**
95
+ ```typescript
96
+ // ✅ CORRECT - Test with explicit timeout for slow operations
97
+ import { describe, it, expect, vi } from 'vitest';
98
+
99
+ describe('Slow API call', () => {
100
+ it('should complete within timeout', async () => {
101
+ const result = await slowApiCall();
102
+ expect(result).toBeDefined();
103
+ }, 15000); // 15 second timeout for this specific test
104
+ });
105
+ ```
106
+
107
+ ### Example Test
108
+
109
+ ```typescript
110
+ // src/components/events/EventCard.test.tsx
111
+ import { render, screen } from '@testing-library/react';
112
+ import userEvent from '@testing-library/user-event';
113
+ import { EventCard } from './EventCard';
114
+
115
+ describe('EventCard', () => {
116
+ it('renders event title', () => {
117
+ const event = { id: '1', name: 'Test Event', date: new Date() };
118
+ render(<EventCard event={event} />);
119
+ expect(screen.getByText('Test Event')).toBeInTheDocument();
120
+ });
121
+
122
+ it('handles click interaction', async () => {
123
+ const user = userEvent.setup();
124
+ const handleClick = vi.fn();
125
+ const event = { id: '1', name: 'Test Event', date: new Date() };
126
+
127
+ render(<EventCard event={event} onClick={handleClick} />);
128
+ await user.click(screen.getByRole('button'));
129
+
130
+ expect(handleClick).toHaveBeenCalledTimes(1);
131
+ });
132
+ });
133
+ ```
134
+
135
+ ### Test Coverage Requirements
136
+
137
+ - **Utils & Hooks**: ≥90% coverage
138
+ - **Components**: ≥70% coverage
139
+ - **Critical paths**: 100% coverage (authentication, payments, etc.)
140
+
141
+ ---
142
+
143
+ ## Documentation Requirements
144
+
145
+ ### Purpose
146
+
147
+ Documentation ensures code is maintainable, understandable, and usable. All documentation MUST follow these standards.
148
+
149
+ ### When to Document
150
+
151
+ **MUST document:**
152
+ - New components, hooks, utilities, or APIs
153
+ - Breaking changes to existing APIs
154
+ - Complex business logic or algorithms
155
+ - Non-obvious implementation decisions
156
+ - Configuration requirements
157
+ - Migration paths for breaking changes
158
+
159
+ **SHOULD document:**
160
+ - Public APIs and their usage
161
+ - Component props and behavior
162
+ - Hook return values and dependencies
163
+ - Utility function parameters and return types
164
+ - Error conditions and handling
165
+
166
+ **MAY document:**
167
+ - Internal implementation details (if helpful)
168
+ - Performance considerations
169
+ - Future plans or limitations
170
+
171
+ ### Documentation Structure
172
+
173
+ **Every component/API documentation MUST include:**
174
+
175
+ 1. **Overview** - What it does and when to use it
176
+ 2. **API/Props** - Complete prop/parameter definitions with types
177
+ 3. **Examples** - Real-world usage examples
178
+ 4. **Accessibility (A11y)** - Accessibility considerations and requirements
179
+ 5. **Edge Cases** - Known limitations, error conditions, and special cases
180
+
181
+ **Example Structure:**
182
+
183
+ ```markdown
184
+ # ComponentName
185
+
186
+ ## Overview
187
+ Brief description of what the component does and when to use it.
188
+
189
+ ## API
190
+
191
+ ### Props
192
+ - `propName` (type): Description
193
+ - `optionalProp?` (type): Description (default: value)
194
+
195
+ ## Examples
196
+
197
+ ### Basic Usage
198
+ \`\`\`tsx
199
+ <ComponentName prop="value" />
200
+ \`\`\`
201
+
202
+ ### Advanced Usage
203
+ \`\`\`tsx
204
+ <ComponentName prop="value" optionalProp="optional" />
205
+ \`\`\`
206
+
207
+ ## Accessibility
208
+ - Keyboard navigation: Supported
209
+ - Screen readers: Announced as...
210
+ - Focus management: ...
211
+
212
+ ## Edge Cases
213
+ - Handles null/undefined: Yes/No
214
+ - Error conditions: ...
215
+ - Performance considerations: ...
216
+ ```
217
+
218
+ ### Documentation Formats
219
+
220
+ **Component Documentation:**
221
+ - Location: `packages/core/docs/api-reference/components.md` or component-specific README
222
+ - Format: Markdown with code examples
223
+ - Must include: Overview, Props, Examples, A11y, Edge Cases
224
+
225
+ **API Documentation:**
226
+ - Location: `packages/core/docs/api-reference/`
227
+ - Format: TypeScript types + Markdown descriptions
228
+ - Must include: Function signatures, Parameters, Return types, Examples
229
+
230
+ **Implementation Guides:**
231
+ - Location: `packages/core/docs/implementation-guides/`
232
+ - Format: Step-by-step guides with examples
233
+ - Must include: Overview, Step-by-step instructions, Code examples, Troubleshooting
234
+
235
+ **Standards Documentation:**
236
+ - Location: `packages/core/docs/standards/`
237
+ - Format: Markdown with examples and checklists
238
+ - Must include: Purpose, Requirements, Examples, Checklists
239
+
240
+ ### Documentation Maintenance
241
+
242
+ **MUST update documentation when:**
243
+ - Adding new props/parameters
244
+ - Changing behavior (breaking or non-breaking)
245
+ - Fixing bugs that change user-facing behavior
246
+ - Deprecating features
247
+
248
+ **SHOULD update documentation when:**
249
+ - Improving examples
250
+ - Adding new use cases
251
+ - Clarifying edge cases
252
+
253
+ **Update Process:**
254
+ 1. Update code and tests first
255
+ 2. Update documentation to match
256
+ 3. Verify examples still work
257
+ 4. Update related documentation if needed
258
+
259
+ ### Documentation Quality Checklist
260
+
261
+ Before committing documentation, verify:
262
+
263
+ - [ ] Overview clearly explains purpose and usage
264
+ - [ ] All props/parameters documented with types
265
+ - [ ] Examples are complete and working
266
+ - [ ] Accessibility considerations documented
267
+ - [ ] Edge cases and limitations documented
268
+ - [ ] Code examples are syntax-highlighted
269
+ - [ ] Links to related documentation included
270
+ - [ ] Breaking changes have migration guides
271
+ - [ ] Documentation matches actual implementation
272
+
273
+ ---
274
+
275
+ ## Bug Reports
276
+
277
+ ### Bug Report Template
278
+
279
+ **MUST** use this template when reporting bugs:
280
+
281
+ ```markdown
282
+ ## Description
283
+ Clear description of the bug and expected vs actual behavior.
284
+
285
+ ## Steps to Reproduce
286
+ 1. Step one
287
+ 2. Step two
288
+ 3. Step three
289
+
290
+ ## Minimal Reproduction
291
+ Link to CodeSandbox/StackBlitz or minimal code snippet that reproduces the issue.
292
+
293
+ ## Environment
294
+ - pace-core version: X.X.X
295
+ - React version: X.X.X
296
+ - Node version: X.X.X
297
+ - Browser: Chrome/Firefox/Safari X.X
298
+ - OS: macOS/Windows/Linux
299
+
300
+ ## Error Messages/Logs
301
+ ```
302
+ Paste error messages or logs here
303
+ ```
304
+
305
+ ## Additional Context
306
+ Screenshots, videos, or other context that helps understand the issue.
307
+ ```
308
+
309
+ ### Bug Report Checklist
310
+
311
+ Before submitting a bug report, verify:
312
+
313
+ - [ ] Description clearly explains the issue
314
+ - [ ] Steps to reproduce are minimal and ordered
315
+ - [ ] Minimal reproduction provided (link or code)
316
+ - [ ] Environment information complete
317
+ - [ ] Error messages/logs included
318
+ - [ ] Additional context provided if helpful
319
+
320
+ ---
321
+
322
+ ## Feature Requests
323
+
324
+ ### Feature Request Template
325
+
326
+ **MUST** use this template when requesting features:
327
+
328
+ ```markdown
329
+ ## Feature Description
330
+ Clear description of the feature and the problem it solves.
331
+
332
+ ## Proposed Solution/API
333
+ Description of how the feature should work, including API design if applicable.
334
+
335
+ ## Use Case
336
+ Real-world scenario where this feature would be useful.
337
+
338
+ ## Alternatives Considered
339
+ Other approaches you've considered and why they don't work.
340
+
341
+ ## Example Code
342
+ \`\`\`tsx
343
+ // Example of how the feature would be used
344
+ <NewComponent prop="value" />
345
+ \`\`\`
346
+
347
+ ## Additional Context
348
+ Mockups, diagrams, or other context that helps understand the feature.
349
+ ```
350
+
351
+ ### Feature Request Checklist
352
+
353
+ Before submitting a feature request, verify:
354
+
355
+ - [ ] Feature description is clear
356
+ - [ ] Problem statement is well-defined
357
+ - [ ] Proposed solution/API is described
358
+ - [ ] Use case with real scenario provided
359
+ - [ ] Alternatives considered and documented
360
+ - [ ] Example code snippet included
361
+ - [ ] Additional context provided if helpful
362
+
363
+ ---
364
+
365
+ ## Testing Checklist
366
+
367
+ Before committing code with tests, verify:
368
+
369
+ - [ ] Tests colocated with source files
370
+ - [ ] React Testing Library + userEvent used
371
+ - [ ] Unnecessary mocks avoided
372
+ - [ ] Coverage requirements met (≥90% utils/hooks, ≥70% components)
373
+ - [ ] Critical paths have 100% coverage
374
+ - [ ] Tests are meaningful and test behavior, not implementation
375
+
376
+ ---
377
+
378
+ ## Documentation Checklist
379
+
380
+ Before committing code with documentation, verify:
381
+
382
+ - [ ] New components/APIs documented
383
+ - [ ] Breaking changes have migration guides
384
+ - [ ] Examples are complete and working
385
+ - [ ] Accessibility considerations documented
386
+ - [ ] Edge cases documented
387
+ - [ ] Documentation matches implementation
388
+
389
+ ---
390
+
391
+ ## Related Documentation
392
+
393
+ - [Standards Overview](./0-standards-overview.md) - Standards system overview
394
+ - [Code Quality](./4-code-quality-standards.md) - Code patterns and TypeScript
395
+ - [Architecture](./3-architecture-standards.md) - Component design principles
396
+
397
+ ---
398
+
399
+ **Last Updated:** 2025-01-28
400
+ **Version:** 2.0.0
401
+ **Applies to:** All pace-core and consuming apps