@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
@@ -77,21 +77,21 @@ const DebouncedSearch = () => {
77
77
  }, [debouncedSearchTerm]);
78
78
 
79
79
  return (
80
- <div>
80
+ <section>
81
81
  <Input
82
82
  data-testid="search-input"
83
83
  value={searchTerm}
84
84
  onChange={(e) => setSearchTerm(e.target.value)}
85
85
  placeholder="Search..."
86
86
  />
87
- <div data-testid="search-term">Current: {searchTerm}</div>
88
- <div data-testid="debounced-term">Debounced: {debouncedSearchTerm}</div>
89
- <div data-testid="results">
87
+ <p data-testid="search-term">Current: {searchTerm}</p>
88
+ <p data-testid="debounced-term">Debounced: {debouncedSearchTerm}</p>
89
+ <section data-testid="results">
90
90
  {searchResults.map((result, index) => (
91
- <div key={index} data-testid={`result-${index}`}>{result}</div>
91
+ <p key={index} data-testid={`result-${index}`}>{result}</p>
92
92
  ))}
93
- </div>
94
- </div>
93
+ </section>
94
+ </section>
95
95
  );
96
96
  };
97
97
 
@@ -100,17 +100,17 @@ const ResponsiveComponent = () => {
100
100
  const isMobile = useIsMobile();
101
101
 
102
102
  return (
103
- <div>
104
- <div data-testid="device-type">
103
+ <section>
104
+ <p data-testid="device-type">
105
105
  {isMobile ? 'Mobile' : 'Desktop'}
106
- </div>
106
+ </p>
107
107
  <Button
108
108
  data-testid="responsive-button"
109
109
  className={isMobile ? 'mobile-button' : 'desktop-button'}
110
110
  >
111
111
  {isMobile ? 'Mobile Action' : 'Desktop Action'}
112
112
  </Button>
113
- </div>
113
+ </section>
114
114
  );
115
115
  };
116
116
 
@@ -138,7 +138,7 @@ const ValidatedForm = ({ onSubmit }: ValidatedFormProps = {}) => {
138
138
  onSubmit={handleSubmit}
139
139
  >
140
140
  {(methods) => (
141
- <ValidatedFormFields methods={methods} />
141
+ <ValidatedFormFields methods={methods as any} />
142
142
  )}
143
143
  </Form>
144
144
  );
@@ -151,27 +151,27 @@ const ValidatedFormFields = ({ methods }: { methods: ReturnType<typeof useForm>
151
151
 
152
152
  return (
153
153
  <>
154
- <div>
154
+ <section>
155
155
  <Input
156
156
  {...methods.register('name')}
157
157
  data-testid="name-input"
158
158
  placeholder="Name"
159
159
  />
160
160
  {errors.name && (
161
- <div data-testid="name-error">{errors.name.message}</div>
161
+ <p data-testid="name-error">{String(errors.name.message)}</p>
162
162
  )}
163
- </div>
164
- <div>
163
+ </section>
164
+ <section>
165
165
  <Input
166
166
  {...methods.register('email')}
167
167
  data-testid="email-input"
168
168
  placeholder="Email"
169
169
  />
170
170
  {errors.email && (
171
- <div data-testid="email-error">{errors.email.message}</div>
171
+ <p data-testid="email-error">{String(errors.email.message)}</p>
172
172
  )}
173
- </div>
174
- <div>
173
+ </section>
174
+ <section>
175
175
  <Input
176
176
  {...methods.register('age', { valueAsNumber: true })}
177
177
  data-testid="age-input"
@@ -179,9 +179,9 @@ const ValidatedFormFields = ({ methods }: { methods: ReturnType<typeof useForm>
179
179
  placeholder="Age"
180
180
  />
181
181
  {errors.age && (
182
- <div data-testid="age-error">{errors.age.message}</div>
182
+ <p data-testid="age-error">{String(errors.age.message)}</p>
183
183
  )}
184
- </div>
184
+ </section>
185
185
  <Button type="submit" data-testid="submit-button">
186
186
  Submit
187
187
  </Button>
@@ -211,20 +211,20 @@ const KeyboardShortcutsComponent = () => {
211
211
  useKeyboardShortcuts(shortcuts);
212
212
 
213
213
  return (
214
- <div>
214
+ <section>
215
215
  <Button onClick={() => setIsModalOpen(true)} data-testid="open-modal">
216
216
  Open Modal
217
217
  </Button>
218
218
  {isModalOpen && (
219
- <div data-testid="modal">
220
- <div>Modal Content</div>
219
+ <section data-testid="modal">
220
+ <p>Modal Content</p>
221
221
  <Button onClick={() => setIsModalOpen(false)} data-testid="close-modal">
222
222
  Close
223
223
  </Button>
224
- </div>
224
+ </section>
225
225
  )}
226
- <div data-testid="saved-status">{savedData}</div>
227
- </div>
226
+ <p data-testid="saved-status">{savedData}</p>
227
+ </section>
228
228
  );
229
229
  };
230
230
 
@@ -238,13 +238,13 @@ const FocusManagementComponent = () => {
238
238
  });
239
239
 
240
240
  return (
241
- <div ref={focusManager.containerRef}>
241
+ <section ref={focusManager.containerRef}>
242
242
  <Button data-testid="first-button">First Button</Button>
243
243
  <Input data-testid="first-input" placeholder="First Input" />
244
244
  <Button data-testid="second-button">Second Button</Button>
245
245
  <Input data-testid="second-input" placeholder="Second Input" />
246
246
  <Button data-testid="last-button">Last Button</Button>
247
- </div>
247
+ </section>
248
248
  );
249
249
  };
250
250
 
@@ -257,10 +257,10 @@ const PerformanceTestComponent = () => {
257
257
  });
258
258
 
259
259
  return (
260
- <div data-testid="performance-component">
260
+ <section data-testid="performance-component">
261
261
  <h1>Performance Test Component</h1>
262
262
  <p>This component is being monitored for performance.</p>
263
- </div>
263
+ </section>
264
264
  );
265
265
  };
266
266
 
@@ -269,19 +269,19 @@ const DataTableStateComponent = () => {
269
269
  const tableState = useDataTableState({ initialPageSize: 10, data: [] });
270
270
 
271
271
  return (
272
- <div>
273
- <div data-testid="sorting-state">
272
+ <section>
273
+ <p data-testid="sorting-state">
274
274
  Sorting: {JSON.stringify(tableState.state.sorting)}
275
- </div>
276
- <div data-testid="filters-state">
275
+ </p>
276
+ <p data-testid="filters-state">
277
277
  Filters: {JSON.stringify(tableState.state.columnFilters)}
278
- </div>
279
- <div data-testid="page-state">
278
+ </p>
279
+ <p data-testid="page-state">
280
280
  Page: {tableState.state.pageIndex + 1} of {Math.ceil(100 / tableState.state.pageSize)}
281
- </div>
282
- <div data-testid="selected-rows">
281
+ </p>
282
+ <p data-testid="selected-rows">
283
283
  Selected: {tableState.state.selectedRows.length} rows
284
- </div>
284
+ </p>
285
285
  <Button
286
286
  onClick={() => tableState.actions.setSorting([{ id: 'name', desc: false }])}
287
287
  data-testid="sort-name"
@@ -294,7 +294,7 @@ const DataTableStateComponent = () => {
294
294
  >
295
295
  Filter Active
296
296
  </Button>
297
- </div>
297
+ </section>
298
298
  );
299
299
  };
300
300
 
@@ -332,7 +332,7 @@ describe('Hooks Integration', () => {
332
332
  await user.type(searchInput, 'abc');
333
333
 
334
334
  // Should not show results immediately
335
- expect(screen.queryByTestId('result-0')).not.toBeInTheDocument();
335
+ expect(screen.queryByTestId('result-0')).toBeNull();
336
336
 
337
337
  // Wait for final debounced value
338
338
  await waitFor(() => {
@@ -402,11 +402,11 @@ describe('Hooks Integration', () => {
402
402
  const emailError = screen.queryByTestId('email-error');
403
403
  const ageError = screen.queryByTestId('age-error');
404
404
 
405
- expect(nameError).toBeInTheDocument();
405
+ expect(nameError).toBeDefined();
406
406
  expect(nameError).toHaveTextContent('Name must be at least 2 characters');
407
- expect(emailError).toBeInTheDocument();
407
+ expect(emailError).toBeDefined();
408
408
  expect(emailError).toHaveTextContent('Invalid email address');
409
- expect(ageError).toBeInTheDocument();
409
+ expect(ageError).toBeDefined();
410
410
  expect(ageError).toHaveTextContent('Must be at least 18 years old');
411
411
  }, { timeout: 5000 });
412
412
  });
@@ -451,13 +451,13 @@ describe('Hooks Integration', () => {
451
451
  const openButton = screen.getByTestId('open-modal');
452
452
  fireEvent.click(openButton);
453
453
 
454
- expect(screen.getByTestId('modal')).toBeInTheDocument();
454
+ expect(screen.getByTestId('modal')).toBeDefined();
455
455
 
456
456
  // Test Escape key
457
457
  fireEvent.keyDown(document, { key: 'Escape' });
458
458
 
459
459
  await waitFor(() => {
460
- expect(screen.queryByTestId('modal')).not.toBeInTheDocument();
460
+ expect(screen.queryByTestId('modal')).toBeNull();
461
461
  });
462
462
  });
463
463
 
@@ -512,7 +512,7 @@ describe('Hooks Integration', () => {
512
512
 
513
513
  renderWithProviders(<PerformanceTestComponent />);
514
514
 
515
- expect(screen.getByTestId('performance-component')).toBeInTheDocument();
515
+ expect(screen.getByTestId('performance-component')).toBeDefined();
516
516
 
517
517
  // Simulate slow render
518
518
  mockPerformance.now.mockReturnValueOnce(0);
@@ -529,7 +529,7 @@ describe('Hooks Integration', () => {
529
529
  // Note: This test may need to be updated based on how useComponentPerformance is used
530
530
  // The Logger mock should be checked if logging is enabled
531
531
  // For now, we verify the component renders without errors
532
- expect(screen.getByTestId('performance-component')).toBeInTheDocument();
532
+ expect(screen.getByTestId('performance-component')).toBeDefined();
533
533
  });
534
534
  });
535
535