prime-ui-kit 0.9.0 → 0.9.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.
Files changed (942) hide show
  1. package/README.md +41 -41
  2. package/dist/chunks/chunk-DB2Y3XXA.js +12437 -0
  3. package/dist/chunks/chunk-KCQFOORX.js +379 -0
  4. package/dist/chunks/chunk-NHOWNIAR.js +3239 -0
  5. package/dist/color-picker.d.ts +7 -0
  6. package/dist/color-picker.js +9 -0
  7. package/dist/components/accordion/Accordion.d.ts +44 -32
  8. package/dist/components/avatar/Avatar.d.ts +36 -53
  9. package/dist/components/badge/Badge.d.ts +50 -13
  10. package/dist/components/badge/edgeIcons.d.ts +13 -0
  11. package/dist/components/badge/tier.d.ts +0 -1
  12. package/dist/components/banner/Banner.d.ts +29 -60
  13. package/dist/components/breadcrumb/Breadcrumb.d.ts +11 -23
  14. package/dist/components/button/Button.d.ts +22 -36
  15. package/dist/components/button-group/ButtonGroup.d.ts +17 -17
  16. package/dist/components/card/Card.d.ts +75 -202
  17. package/dist/components/checkbox/Checkbox.d.ts +37 -38
  18. package/dist/components/code-block/CodeBlock.d.ts +5 -13
  19. package/dist/components/color-picker/ColorPicker.d.ts +76 -52
  20. package/dist/components/color-picker/ColorPresets.d.ts +18 -30
  21. package/dist/components/color-swatches/ColorSwatches.d.ts +40 -0
  22. package/dist/components/command-menu/CommandMenu.d.ts +138 -78
  23. package/dist/components/crossfade/Crossfade.d.ts +14 -0
  24. package/dist/components/data-table/DataTable.d.ts +30 -81
  25. package/dist/components/data-table/Footer.d.ts +16 -0
  26. package/dist/components/data-table/Head.d.ts +21 -0
  27. package/dist/components/data-table/Row.d.ts +56 -0
  28. package/dist/components/data-table/StateRows.d.ts +18 -0
  29. package/dist/components/data-table/rows.d.ts +60 -0
  30. package/dist/components/data-table/types.d.ts +35 -0
  31. package/dist/components/data-table/useColumnHover.d.ts +9 -0
  32. package/dist/components/data-table/useFrozenColumns.d.ts +16 -0
  33. package/dist/components/data-table/useInfiniteRows.d.ts +24 -0
  34. package/dist/components/data-table/useRowSelection.d.ts +35 -0
  35. package/dist/components/datepicker/Datepicker.d.ts +9 -126
  36. package/dist/components/datepicker/DatepickerPanel.d.ts +113 -0
  37. package/dist/components/datepicker/datepickerModel.d.ts +16 -22
  38. package/dist/components/datepicker/panelLayout.d.ts +50 -0
  39. package/dist/components/digit-input/DigitInput.d.ts +24 -19
  40. package/dist/components/divider/Divider.d.ts +7 -15
  41. package/dist/components/dnd/Dnd.d.ts +135 -0
  42. package/dist/components/dnd/DragOverlay.d.ts +6 -0
  43. package/dist/components/dnd/autoScroll.d.ts +5 -0
  44. package/dist/components/dnd/context.d.ts +5 -0
  45. package/dist/components/dnd/dragSession.d.ts +93 -0
  46. package/dist/components/dnd/geometry.d.ts +30 -0
  47. package/dist/components/dnd/labels.d.ts +18 -0
  48. package/dist/components/dnd/store.d.ts +9 -0
  49. package/dist/components/dnd/useDragSource.d.ts +36 -0
  50. package/dist/components/dnd/useDropTarget.d.ts +39 -0
  51. package/dist/components/dnd/useFlipList.d.ts +11 -0
  52. package/dist/components/dnd/useSortableList.d.ts +62 -0
  53. package/dist/components/drawer/Drawer.d.ts +8 -19
  54. package/dist/components/dropdown/Dropdown.d.ts +63 -86
  55. package/dist/components/empty-page/EmptyPage.d.ts +48 -48
  56. package/dist/components/example-frame/ExampleFrame.d.ts +20 -27
  57. package/dist/components/file-upload/FileUpload.d.ts +79 -134
  58. package/dist/components/hint/Hint.d.ts +10 -11
  59. package/dist/components/index.d.ts +54 -42
  60. package/dist/components/input/Input.d.ts +35 -37
  61. package/dist/components/kbd/Kbd.d.ts +6 -12
  62. package/dist/components/label/Label.d.ts +18 -15
  63. package/dist/components/link-button/LinkButton.d.ts +14 -15
  64. package/dist/components/login-form/LoginForm.d.ts +115 -0
  65. package/dist/components/modal/DialogParts.d.ts +57 -16
  66. package/dist/components/modal/Modal.d.ts +7 -21
  67. package/dist/components/native-select/NativeSelect.d.ts +28 -0
  68. package/dist/components/notification/Notification.d.ts +50 -16
  69. package/dist/components/notification/NotificationStore.d.ts +2 -6
  70. package/dist/components/page-content/PageContent.d.ts +43 -52
  71. package/dist/components/pagination/Pagination.d.ts +11 -23
  72. package/dist/components/popover/Popover.d.ts +62 -26
  73. package/dist/components/progress-bar/ProgressBar.d.ts +17 -13
  74. package/dist/components/progress-circle/ProgressCircle.d.ts +14 -15
  75. package/dist/components/radio/Radio.d.ts +46 -54
  76. package/dist/components/scroll-container/ScrollContainer.d.ts +10 -13
  77. package/dist/components/segmented-control/SegmentedControl.d.ts +15 -27
  78. package/dist/components/select/Select.d.ts +54 -135
  79. package/dist/components/select/SelectItem.d.ts +68 -0
  80. package/dist/components/select/selectContext.d.ts +61 -0
  81. package/dist/components/skeleton/Skeleton.d.ts +22 -0
  82. package/dist/components/slider/Slider.d.ts +24 -16
  83. package/dist/components/smart-filter/SmartFilter.d.ts +105 -0
  84. package/dist/components/smart-filter/model.d.ts +33 -0
  85. package/dist/components/spinner/Spinner.d.ts +22 -0
  86. package/dist/components/stepper/Stepper.d.ts +32 -42
  87. package/dist/components/switch/Switch.d.ts +19 -37
  88. package/dist/components/tabs/Tabs.d.ts +62 -38
  89. package/dist/components/tag-select/TagOptionMenu.d.ts +29 -0
  90. package/dist/components/tag-select/TagSelect.d.ts +15 -16
  91. package/dist/components/tag-select/useChipOverflow.d.ts +19 -0
  92. package/dist/components/textarea/Textarea.d.ts +16 -31
  93. package/dist/components/thumbnail/Thumbnail.d.ts +41 -0
  94. package/dist/components/timeline/Timeline.d.ts +46 -61
  95. package/dist/components/tooltip/Tooltip.d.ts +21 -17
  96. package/dist/components/typography/Typography.d.ts +5 -21
  97. package/dist/hooks/useControllableState.d.ts +0 -1
  98. package/dist/hooks/useEnterConfirm.d.ts +15 -0
  99. package/dist/hooks/useImageStatus.d.ts +19 -0
  100. package/dist/hooks/useInertSiblings.d.ts +9 -0
  101. package/dist/hooks/useMergedRefs.d.ts +6 -2
  102. package/dist/hooks/useModalLayer.d.ts +22 -0
  103. package/dist/hooks/usePosition.d.ts +46 -40
  104. package/dist/hooks/usePresence.d.ts +0 -1
  105. package/dist/hooks/useScrollLock.d.ts +3 -5
  106. package/dist/hooks/useStateSwap.d.ts +8 -0
  107. package/dist/icons/Icon.d.ts +24 -7
  108. package/dist/icons/index.d.ts +2 -44
  109. package/dist/icons/registry.d.ts +85 -0
  110. package/dist/index.css +5990 -6891
  111. package/dist/index.d.ts +0 -1
  112. package/dist/index.js +98 -13830
  113. package/dist/internal/AnchorRectContext.d.ts +12 -0
  114. package/dist/internal/ChoiceField.d.ts +34 -0
  115. package/dist/internal/ControlSizeContext.d.ts +6 -2
  116. package/dist/internal/FieldFrame.d.ts +47 -8
  117. package/dist/internal/HighlightMatch.d.ts +13 -0
  118. package/dist/internal/MenuGroup.d.ts +8 -0
  119. package/dist/internal/Portal.d.ts +0 -1
  120. package/dist/internal/VisuallyHidden.d.ts +11 -0
  121. package/dist/internal/context.d.ts +0 -1
  122. package/dist/internal/cx.d.ts +0 -1
  123. package/dist/internal/data-attributes.d.ts +0 -1
  124. package/dist/internal/fieldClasses.d.ts +9 -0
  125. package/dist/internal/formatLabel.d.ts +6 -0
  126. package/dist/internal/highlightTsxHtml.d.ts +1 -2
  127. package/dist/internal/iconBox.d.ts +9 -0
  128. package/dist/internal/iconLayout.d.ts +15 -0
  129. package/dist/internal/imageSlot.d.ts +29 -0
  130. package/dist/internal/layoutPxFromPrimitives.d.ts +2 -3
  131. package/dist/internal/listbox.d.ts +40 -0
  132. package/dist/internal/mergeRefs.d.ts +4 -2
  133. package/dist/internal/overlay/FloatingPanel.d.ts +34 -0
  134. package/dist/internal/overlay/focus.d.ts +14 -0
  135. package/dist/internal/overlay/layerStack.d.ts +41 -0
  136. package/dist/internal/overlay/useFloatingLayer.d.ts +60 -0
  137. package/dist/internal/polymorphic.d.ts +9 -0
  138. package/dist/internal/progressSegments.d.ts +63 -0
  139. package/dist/internal/rovingFocus.d.ts +18 -0
  140. package/dist/internal/scrollAncestors.d.ts +1 -2
  141. package/dist/internal/slot.d.ts +11 -5
  142. package/dist/internal/states.d.ts +3 -2
  143. package/dist/internal/swatch.d.ts +56 -0
  144. package/dist/layout/app-shell/AppShell.d.ts +41 -21
  145. package/dist/layout/index.d.ts +1 -2
  146. package/dist/layout/sidebar/Sidebar.d.ts +206 -35
  147. package/dist/theme/applyTheme.d.ts +0 -1
  148. package/dist/tokens/naming.d.ts +6 -0
  149. package/dist/tokens/primitives.d.ts +22 -80
  150. package/dist/tokens/semantic.d.ts +66 -25
  151. package/dist/tokens/themes/dark.d.ts +3 -1
  152. package/package.json +29 -24
  153. package/src/components/accordion/COMPONENT.md +90 -100
  154. package/src/components/accordion/examples/collapsible.tsx +27 -0
  155. package/src/components/accordion/examples/controlled.tsx +36 -0
  156. package/src/components/accordion/examples/examples.module.css +6 -39
  157. package/src/components/accordion/examples/multiple.tsx +31 -0
  158. package/src/components/accordion/examples/overview.tsx +39 -0
  159. package/src/components/accordion/examples/sizes.tsx +14 -25
  160. package/src/components/accordion/examples/states.tsx +23 -48
  161. package/src/components/accordion/examples/variants.tsx +35 -0
  162. package/src/components/accordion/examples/with-icon.tsx +47 -0
  163. package/src/components/avatar/COMPONENT.md +88 -153
  164. package/src/components/avatar/examples/examples.module.css +6 -44
  165. package/src/components/avatar/examples/overview.tsx +18 -0
  166. package/src/components/avatar/examples/presence.tsx +20 -17
  167. package/src/components/avatar/examples/sizes.tsx +8 -10
  168. package/src/components/avatar/examples/src-from-state.tsx +4 -5
  169. package/src/components/avatar/examples/states.tsx +17 -27
  170. package/src/components/avatar/examples/team-group.tsx +21 -0
  171. package/src/components/avatar/examples/variants.tsx +40 -0
  172. package/src/components/badge/COMPONENT.md +113 -122
  173. package/src/components/{tag → badge}/examples/applied-filters.tsx +10 -11
  174. package/src/components/badge/examples/examples.module.css +14 -59
  175. package/src/components/badge/examples/filter-values.tsx +39 -0
  176. package/src/components/badge/examples/in-controls.tsx +14 -26
  177. package/src/components/badge/examples/overview.tsx +13 -0
  178. package/src/components/badge/examples/sizes.tsx +8 -10
  179. package/src/components/badge/examples/states.tsx +35 -29
  180. package/src/components/badge/examples/variants.tsx +27 -36
  181. package/src/components/badge/examples/with-icon.tsx +50 -0
  182. package/src/components/banner/COMPONENT.md +88 -93
  183. package/src/components/banner/examples/dismissible.tsx +38 -0
  184. package/src/components/banner/examples/examples.module.css +6 -22
  185. package/src/components/banner/examples/narrow.tsx +23 -0
  186. package/src/components/banner/examples/overview.tsx +18 -0
  187. package/src/components/banner/examples/page-strip.tsx +53 -0
  188. package/src/components/banner/examples/sizes.tsx +22 -21
  189. package/src/components/banner/examples/structure.tsx +45 -0
  190. package/src/components/banner/examples/variants.tsx +28 -55
  191. package/src/components/breadcrumb/COMPONENT.md +55 -59
  192. package/src/components/breadcrumb/examples/ellipsis.tsx +12 -0
  193. package/src/components/breadcrumb/examples/examples.module.css +3 -52
  194. package/src/components/breadcrumb/examples/overflow.tsx +26 -0
  195. package/src/components/breadcrumb/examples/overview.tsx +12 -0
  196. package/src/components/breadcrumb/examples/sizes.tsx +11 -14
  197. package/src/components/breadcrumb/examples/with-icon.tsx +14 -0
  198. package/src/components/button/COMPONENT.md +65 -66
  199. package/src/components/button/examples/as-child.tsx +8 -32
  200. package/src/components/button/examples/examples.module.css +18 -76
  201. package/src/components/button/examples/in-form.tsx +20 -14
  202. package/src/components/button/examples/on-colored-host.tsx +29 -0
  203. package/src/components/button/examples/overview.tsx +13 -0
  204. package/src/components/button/examples/sizes.tsx +7 -9
  205. package/src/components/button/examples/states.tsx +18 -28
  206. package/src/components/button/examples/variants.tsx +31 -0
  207. package/src/components/button/examples/with-icon.tsx +35 -23
  208. package/src/components/button-group/COMPONENT.md +64 -55
  209. package/src/components/button-group/examples/controlled.tsx +3 -3
  210. package/src/components/button-group/examples/examples.module.css +4 -39
  211. package/src/components/button-group/examples/full-width.tsx +10 -14
  212. package/src/components/button-group/examples/in-form.tsx +3 -3
  213. package/src/components/button-group/examples/orientation.tsx +6 -8
  214. package/src/components/button-group/examples/overview.tsx +12 -0
  215. package/src/components/button-group/examples/sizes.tsx +8 -10
  216. package/src/components/button-group/examples/states.tsx +28 -7
  217. package/src/components/button-group/examples/with-icon.tsx +45 -0
  218. package/src/components/card/COMPONENT.md +99 -298
  219. package/src/components/card/examples/{content.tsx → content-templates.tsx} +23 -29
  220. package/src/components/card/examples/examples.module.css +0 -8
  221. package/src/components/card/examples/flat.tsx +9 -14
  222. package/src/components/card/examples/kpi-media.tsx +42 -0
  223. package/src/components/card/examples/narrow.tsx +47 -0
  224. package/src/components/card/examples/{settings.tsx → overview.tsx} +7 -8
  225. package/src/components/card/examples/panel-chart.tsx +26 -34
  226. package/src/components/card/examples/{metrics.tsx → variants.tsx} +12 -18
  227. package/src/components/checkbox/COMPONENT.md +92 -96
  228. package/src/components/checkbox/examples/controlled.tsx +41 -0
  229. package/src/components/checkbox/examples/examples.module.css +45 -43
  230. package/src/components/checkbox/examples/in-form.tsx +34 -0
  231. package/src/components/checkbox/examples/indicator.tsx +54 -0
  232. package/src/components/checkbox/examples/overview.tsx +10 -0
  233. package/src/components/checkbox/examples/sizes.tsx +5 -10
  234. package/src/components/checkbox/examples/states.tsx +42 -23
  235. package/src/components/checkbox/examples/without-label.tsx +3 -7
  236. package/src/components/code-block/COMPONENT.md +55 -57
  237. package/src/components/code-block/examples/color-scheme.tsx +4 -15
  238. package/src/components/code-block/examples/examples.module.css +9 -40
  239. package/src/components/code-block/examples/{long-lines.tsx → narrow.tsx} +3 -4
  240. package/src/components/code-block/examples/overview.tsx +19 -0
  241. package/src/components/code-block/examples/variants.tsx +12 -21
  242. package/src/components/color-picker/COMPONENT.md +196 -165
  243. package/src/components/color-picker/examples/controlled.tsx +37 -0
  244. package/src/components/color-picker/examples/examples.module.css +19 -88
  245. package/src/components/color-picker/examples/formats.tsx +13 -18
  246. package/src/components/color-picker/examples/in-form.tsx +44 -0
  247. package/src/components/color-picker/examples/overview.tsx +37 -0
  248. package/src/components/color-picker/examples/panel.tsx +12 -13
  249. package/src/components/color-picker/examples/presets-sizes.tsx +15 -20
  250. package/src/components/color-picker/examples/presets.tsx +33 -0
  251. package/src/components/color-picker/examples/sizes.tsx +26 -0
  252. package/src/components/color-picker/examples/states.tsx +4 -14
  253. package/src/components/color-picker/examples/validation.tsx +18 -0
  254. package/src/components/color-swatches/COMPONENT.md +145 -0
  255. package/src/components/color-swatches/examples/controlled.tsx +22 -0
  256. package/src/components/color-swatches/examples/examples.module.css +19 -0
  257. package/src/components/color-swatches/examples/in-form.tsx +35 -0
  258. package/src/components/color-swatches/examples/overview.tsx +6 -0
  259. package/src/components/color-swatches/examples/sizes.tsx +19 -0
  260. package/src/components/color-swatches/examples/states.tsx +20 -0
  261. package/src/components/color-swatches/examples/wrapping.tsx +12 -0
  262. package/src/components/command-menu/COMPONENT.md +117 -180
  263. package/src/components/command-menu/examples/controlled-open.tsx +29 -0
  264. package/src/components/command-menu/examples/controlled.tsx +19 -26
  265. package/src/components/command-menu/examples/dismiss.tsx +39 -0
  266. package/src/components/command-menu/examples/overview.tsx +61 -0
  267. package/src/components/command-menu/examples/sizes.tsx +30 -51
  268. package/src/components/command-menu/examples/states.tsx +6 -16
  269. package/src/components/command-menu/examples/structure.tsx +54 -0
  270. package/src/components/crossfade/COMPONENT.md +104 -0
  271. package/src/components/crossfade/examples/examples.module.css +65 -0
  272. package/src/components/crossfade/examples/overview.tsx +102 -0
  273. package/src/components/crossfade/examples/record-switch.tsx +67 -0
  274. package/src/components/data-table/COMPONENT.md +171 -185
  275. package/src/components/data-table/examples/appearance.tsx +31 -34
  276. package/src/components/data-table/examples/content-width.tsx +46 -26
  277. package/src/components/data-table/examples/controlled.tsx +56 -0
  278. package/src/components/data-table/examples/detail-panel.tsx +23 -28
  279. package/src/components/data-table/examples/examples.module.css +20 -91
  280. package/src/components/data-table/examples/infinite-scroll.tsx +17 -18
  281. package/src/components/data-table/examples/narrow.tsx +28 -38
  282. package/src/components/data-table/examples/nested-rows.tsx +32 -54
  283. package/src/components/data-table/examples/numeric.tsx +10 -19
  284. package/src/components/data-table/examples/overview.tsx +54 -0
  285. package/src/components/data-table/examples/selection.tsx +11 -15
  286. package/src/components/data-table/examples/sizes.tsx +22 -33
  287. package/src/components/data-table/examples/states.tsx +23 -24
  288. package/src/components/data-table/examples/sticky.tsx +17 -24
  289. package/src/components/data-table/examples/toolbar.tsx +21 -23
  290. package/src/components/datepicker/COMPONENT.md +152 -164
  291. package/src/components/datepicker/examples/controlled-open.tsx +32 -0
  292. package/src/components/datepicker/examples/controlled.tsx +39 -0
  293. package/src/components/datepicker/examples/examples.module.css +9 -23
  294. package/src/components/datepicker/examples/in-form.tsx +32 -45
  295. package/src/components/datepicker/examples/inline-panel.tsx +3 -3
  296. package/src/components/datepicker/examples/narrow.tsx +1 -1
  297. package/src/components/datepicker/examples/overview.tsx +6 -0
  298. package/src/components/datepicker/examples/range-presets.tsx +6 -5
  299. package/src/components/datepicker/examples/sizes.tsx +7 -10
  300. package/src/components/datepicker/examples/states.tsx +9 -30
  301. package/src/components/datepicker/examples/validation.tsx +26 -0
  302. package/src/components/datepicker/examples/yearless.tsx +9 -8
  303. package/src/components/digit-input/COMPONENT.md +91 -53
  304. package/src/components/digit-input/examples/controlled.tsx +6 -15
  305. package/src/components/digit-input/examples/examples.module.css +9 -42
  306. package/src/components/digit-input/examples/full-width.tsx +13 -0
  307. package/src/components/digit-input/examples/grouped.tsx +11 -0
  308. package/src/components/digit-input/examples/in-form.tsx +35 -0
  309. package/src/components/digit-input/examples/on-complete.tsx +20 -0
  310. package/src/components/digit-input/examples/overview.tsx +6 -0
  311. package/src/components/digit-input/examples/sizes.tsx +5 -17
  312. package/src/components/digit-input/examples/states.tsx +6 -50
  313. package/src/components/digit-input/examples/validation.tsx +17 -0
  314. package/src/components/divider/COMPONENT.md +61 -52
  315. package/src/components/divider/examples/align.tsx +14 -0
  316. package/src/components/divider/examples/examples.module.css +6 -20
  317. package/src/components/divider/examples/or-separator.tsx +19 -0
  318. package/src/components/divider/examples/overview.tsx +30 -0
  319. package/src/components/divider/examples/sizes.tsx +11 -10
  320. package/src/components/divider/examples/vertical.tsx +21 -0
  321. package/src/components/divider/examples/with-icon.tsx +26 -0
  322. package/src/components/dnd/COMPONENT.md +197 -0
  323. package/src/components/dnd/examples/board.tsx +83 -0
  324. package/src/components/dnd/examples/drop-zones.tsx +82 -0
  325. package/src/components/dnd/examples/examples.module.css +89 -0
  326. package/src/components/dnd/examples/handle.tsx +53 -0
  327. package/src/components/dnd/examples/narrow.tsx +42 -0
  328. package/src/components/dnd/examples/overview.tsx +45 -0
  329. package/src/components/drawer/COMPONENT.md +103 -102
  330. package/src/components/drawer/examples/controlled-open.tsx +33 -0
  331. package/src/components/drawer/examples/dismiss.tsx +55 -0
  332. package/src/components/drawer/examples/examples.module.css +3 -24
  333. package/src/components/drawer/examples/in-form.tsx +82 -0
  334. package/src/components/drawer/examples/long-content.tsx +40 -0
  335. package/src/components/drawer/examples/overview.tsx +48 -0
  336. package/src/components/drawer/examples/{variants-sides.tsx → placement.tsx} +10 -13
  337. package/src/components/drawer/examples/sizes.tsx +9 -15
  338. package/src/components/drawer/examples/structure.tsx +35 -0
  339. package/src/components/dropdown/COMPONENT.md +109 -152
  340. package/src/components/dropdown/examples/controlled-open.tsx +32 -0
  341. package/src/components/dropdown/examples/dismiss.tsx +17 -0
  342. package/src/components/dropdown/examples/examples.module.css +11 -45
  343. package/src/components/dropdown/examples/long-list.tsx +42 -0
  344. package/src/components/dropdown/examples/{full-width.tsx → match-trigger-width.tsx} +5 -4
  345. package/src/components/dropdown/examples/overview.tsx +41 -0
  346. package/src/components/dropdown/examples/placement.tsx +16 -13
  347. package/src/components/dropdown/examples/sizes.tsx +18 -15
  348. package/src/components/dropdown/examples/states.tsx +21 -29
  349. package/src/components/dropdown/examples/structure.tsx +56 -0
  350. package/src/components/empty-page/COMPONENT.md +71 -75
  351. package/src/components/empty-page/examples/compact.tsx +23 -0
  352. package/src/components/empty-page/examples/data-region.tsx +8 -11
  353. package/src/components/empty-page/examples/examples.module.css +22 -25
  354. package/src/components/empty-page/examples/icon-tones.tsx +5 -6
  355. package/src/components/empty-page/examples/narrow.tsx +26 -0
  356. package/src/components/empty-page/examples/{no-results.tsx → overview.tsx} +4 -5
  357. package/src/components/empty-page/examples/sizes.tsx +14 -20
  358. package/src/components/example-frame/COMPONENT.md +64 -66
  359. package/src/components/example-frame/examples/controlled.tsx +42 -0
  360. package/src/components/example-frame/examples/overview.tsx +16 -0
  361. package/src/components/file-upload/COMPONENT.md +128 -186
  362. package/src/components/file-upload/examples/avatar-upload.tsx +7 -12
  363. package/src/components/file-upload/examples/custom-body.tsx +44 -0
  364. package/src/components/file-upload/examples/examples.module.css +46 -64
  365. package/src/components/file-upload/examples/in-form.tsx +76 -0
  366. package/src/components/file-upload/examples/narrow.tsx +17 -0
  367. package/src/components/file-upload/examples/overview.tsx +52 -0
  368. package/src/components/file-upload/examples/sizes.tsx +16 -37
  369. package/src/components/file-upload/examples/states.tsx +6 -98
  370. package/src/components/file-upload/examples/upload-progress.tsx +39 -0
  371. package/src/components/file-upload/examples/validation.tsx +19 -0
  372. package/src/components/file-upload/examples/variants.tsx +5 -18
  373. package/src/components/hint/COMPONENT.md +42 -48
  374. package/src/components/hint/examples/examples.module.css +3 -45
  375. package/src/components/hint/examples/hint-or-error.tsx +5 -5
  376. package/src/components/hint/examples/overview.tsx +34 -0
  377. package/src/components/hint/examples/sizes.tsx +8 -10
  378. package/src/components/hint/examples/states.tsx +21 -14
  379. package/src/components/hint/examples/with-icon.tsx +31 -0
  380. package/src/components/input/COMPONENT.md +70 -88
  381. package/src/components/input/examples/affixes.tsx +22 -0
  382. package/src/components/input/examples/controlled.tsx +9 -10
  383. package/src/components/input/examples/examples.module.css +3 -116
  384. package/src/components/input/examples/in-form.tsx +35 -14
  385. package/src/components/input/examples/overview.tsx +12 -0
  386. package/src/components/input/examples/sizes.tsx +6 -11
  387. package/src/components/input/examples/states.tsx +6 -23
  388. package/src/components/input/examples/validation.tsx +35 -0
  389. package/src/components/input/examples/with-icon.tsx +25 -0
  390. package/src/components/input/examples/{search-without-focus-ring.tsx → without-focus-ring.tsx} +5 -5
  391. package/src/components/kbd/COMPONENT.md +50 -65
  392. package/src/components/kbd/examples/examples.module.css +11 -41
  393. package/src/components/kbd/examples/in-controls.tsx +25 -31
  394. package/src/components/kbd/examples/overview.tsx +24 -0
  395. package/src/components/kbd/examples/shortcut-list.tsx +12 -12
  396. package/src/components/kbd/examples/sizes.tsx +8 -13
  397. package/src/components/label/COMPONENT.md +45 -44
  398. package/src/components/label/examples/examples.module.css +8 -29
  399. package/src/components/label/examples/overview.tsx +17 -0
  400. package/src/components/label/examples/sizes.tsx +9 -13
  401. package/src/components/label/examples/states.tsx +17 -14
  402. package/src/components/label/examples/structure.tsx +32 -0
  403. package/src/components/label/examples/with-icon.tsx +25 -17
  404. package/src/components/link-button/COMPONENT.md +56 -39
  405. package/src/components/link-button/examples/as-child.tsx +18 -0
  406. package/src/components/link-button/examples/external-link.tsx +6 -6
  407. package/src/components/link-button/examples/overview.tsx +11 -0
  408. package/src/components/link-button/examples/sizes.tsx +9 -11
  409. package/src/components/link-button/examples/states.tsx +25 -12
  410. package/src/components/link-button/examples/variants.tsx +21 -0
  411. package/src/components/link-button/examples/with-icon.tsx +21 -13
  412. package/src/components/login-form/COMPONENT.md +162 -0
  413. package/src/components/login-form/examples/examples.module.css +39 -0
  414. package/src/components/login-form/examples/forgot-password.tsx +39 -0
  415. package/src/components/login-form/examples/narrow.tsx +32 -0
  416. package/src/components/login-form/examples/overview.tsx +58 -0
  417. package/src/components/login-form/examples/register.tsx +85 -0
  418. package/src/components/login-form/examples/reset-password.tsx +60 -0
  419. package/src/components/login-form/examples/sizes.tsx +38 -0
  420. package/src/components/login-form/examples/states.tsx +75 -0
  421. package/src/components/login-form/examples/structure.tsx +28 -0
  422. package/src/components/login-form/examples/verification-code.tsx +57 -0
  423. package/src/components/modal/COMPONENT.md +64 -84
  424. package/src/components/modal/examples/{controlled.tsx → controlled-open.tsx} +6 -12
  425. package/src/components/modal/examples/custom-container.tsx +29 -0
  426. package/src/components/modal/examples/dismiss.tsx +54 -0
  427. package/src/components/modal/examples/examples.module.css +4 -20
  428. package/src/components/modal/examples/in-form.tsx +78 -0
  429. package/src/components/modal/examples/long-content.tsx +52 -0
  430. package/src/components/modal/examples/overview.tsx +35 -0
  431. package/src/components/modal/examples/sizes.tsx +7 -9
  432. package/src/components/modal/examples/structure.tsx +53 -0
  433. package/src/components/native-select/COMPONENT.md +132 -0
  434. package/src/components/native-select/examples/controlled.tsx +26 -0
  435. package/src/components/native-select/examples/examples.module.css +14 -0
  436. package/src/components/native-select/examples/in-form.tsx +43 -0
  437. package/src/components/native-select/examples/option-groups.tsx +17 -0
  438. package/src/components/native-select/examples/overview.tsx +16 -0
  439. package/src/components/native-select/examples/sizes.tsx +18 -0
  440. package/src/components/native-select/examples/states.tsx +21 -0
  441. package/src/components/native-select/examples/validation.tsx +26 -0
  442. package/src/components/notification/COMPONENT.md +107 -121
  443. package/src/components/notification/examples/dismiss.tsx +50 -0
  444. package/src/components/notification/examples/examples.module.css +10 -23
  445. package/src/components/notification/examples/in-form.tsx +64 -0
  446. package/src/components/notification/examples/overview.tsx +24 -0
  447. package/src/components/notification/examples/placement.tsx +66 -0
  448. package/src/components/notification/examples/sizes.tsx +11 -18
  449. package/src/components/notification/examples/stacking.tsx +45 -0
  450. package/src/components/notification/examples/structure.tsx +20 -0
  451. package/src/components/notification/examples/tones.tsx +14 -26
  452. package/src/components/page-content/COMPONENT.md +49 -74
  453. package/src/components/page-content/examples/examples.module.css +4 -8
  454. package/src/components/page-content/examples/narrow.tsx +25 -0
  455. package/src/components/page-content/examples/overview.tsx +41 -0
  456. package/src/components/page-content/examples/variants.tsx +39 -0
  457. package/src/components/pagination/COMPONENT.md +73 -64
  458. package/src/components/pagination/examples/controlled.tsx +51 -0
  459. package/src/components/pagination/examples/examples.module.css +6 -55
  460. package/src/components/pagination/examples/narrow.tsx +25 -0
  461. package/src/components/pagination/examples/overflow.tsx +23 -0
  462. package/src/components/pagination/examples/overview.tsx +6 -0
  463. package/src/components/pagination/examples/sizes.tsx +10 -18
  464. package/src/components/popover/COMPONENT.md +88 -99
  465. package/src/components/popover/examples/controlled-open.tsx +32 -0
  466. package/src/components/popover/examples/dismiss.tsx +49 -0
  467. package/src/components/popover/examples/examples.module.css +21 -41
  468. package/src/components/popover/examples/flush.tsx +47 -0
  469. package/src/components/popover/examples/in-form.tsx +54 -0
  470. package/src/components/popover/examples/{full-width.tsx → match-trigger-width.tsx} +7 -7
  471. package/src/components/popover/examples/overview.tsx +43 -0
  472. package/src/components/popover/examples/placement.tsx +17 -15
  473. package/src/components/popover/examples/sizes.tsx +12 -9
  474. package/src/components/popover/examples/structure.tsx +50 -0
  475. package/src/components/progress-bar/COMPONENT.md +102 -61
  476. package/src/components/progress-bar/examples/custom-max.tsx +12 -0
  477. package/src/components/progress-bar/examples/examples.module.css +4 -34
  478. package/src/components/progress-bar/examples/overview.tsx +12 -0
  479. package/src/components/progress-bar/examples/segments.tsx +32 -0
  480. package/src/components/progress-bar/examples/sizes.tsx +11 -8
  481. package/src/components/progress-bar/examples/variants.tsx +34 -0
  482. package/src/components/progress-circle/COMPONENT.md +101 -60
  483. package/src/components/progress-circle/examples/examples.module.css +2 -39
  484. package/src/components/progress-circle/examples/inner-content.tsx +35 -0
  485. package/src/components/progress-circle/examples/overview.tsx +10 -0
  486. package/src/components/progress-circle/examples/segments.tsx +64 -0
  487. package/src/components/progress-circle/examples/sizes.tsx +10 -12
  488. package/src/components/progress-circle/examples/variants.tsx +28 -0
  489. package/src/components/radio/COMPONENT.md +93 -114
  490. package/src/components/radio/examples/controlled.tsx +30 -0
  491. package/src/components/radio/examples/group.tsx +23 -0
  492. package/src/components/radio/examples/orientation.tsx +34 -0
  493. package/src/components/radio/examples/overview.tsx +18 -0
  494. package/src/components/radio/examples/sizes.tsx +7 -12
  495. package/src/components/radio/examples/states.tsx +42 -30
  496. package/src/components/scroll-container/COMPONENT.md +56 -28
  497. package/src/components/scroll-container/examples/edge-fade.tsx +53 -0
  498. package/src/components/scroll-container/examples/examples.module.css +7 -7
  499. package/src/components/scroll-container/examples/overscroll.tsx +27 -0
  500. package/src/components/scroll-container/examples/overview.tsx +27 -0
  501. package/src/components/scroll-container/examples/variants.tsx +54 -0
  502. package/src/components/segmented-control/COMPONENT.md +91 -105
  503. package/src/components/segmented-control/examples/colors.tsx +8 -13
  504. package/src/components/segmented-control/examples/controlled.tsx +10 -6
  505. package/src/components/segmented-control/examples/examples.module.css +2 -88
  506. package/src/components/segmented-control/examples/full-width.tsx +7 -44
  507. package/src/components/segmented-control/examples/overview.tsx +12 -0
  508. package/src/components/segmented-control/examples/scroll.tsx +16 -0
  509. package/src/components/segmented-control/examples/sizes.tsx +8 -20
  510. package/src/components/segmented-control/examples/states.tsx +28 -34
  511. package/src/components/segmented-control/examples/two-line.tsx +17 -104
  512. package/src/components/segmented-control/examples/with-icon.tsx +52 -0
  513. package/src/components/select/COMPONENT.md +154 -208
  514. package/src/components/select/examples/clearable.tsx +23 -0
  515. package/src/components/select/examples/controlled-open.tsx +30 -0
  516. package/src/components/select/examples/controlled.tsx +17 -10
  517. package/src/components/select/examples/examples.module.css +18 -38
  518. package/src/components/select/examples/in-form.tsx +59 -70
  519. package/src/components/select/examples/multiple.tsx +21 -33
  520. package/src/components/select/examples/overview.tsx +17 -0
  521. package/src/components/select/examples/rich-options.tsx +43 -69
  522. package/src/components/select/examples/searchable.tsx +42 -0
  523. package/src/components/select/examples/sizes.tsx +13 -17
  524. package/src/components/select/examples/states.tsx +34 -48
  525. package/src/components/select/examples/validation.tsx +41 -0
  526. package/src/components/select/examples/with-icon.tsx +35 -0
  527. package/src/components/skeleton/COMPONENT.md +104 -0
  528. package/src/components/skeleton/examples/examples.module.css +89 -0
  529. package/src/components/skeleton/examples/form.tsx +20 -0
  530. package/src/components/skeleton/examples/overview.tsx +21 -0
  531. package/src/components/skeleton/examples/sizes.tsx +24 -0
  532. package/src/components/skeleton/examples/with-crossfade.tsx +68 -0
  533. package/src/components/slider/COMPONENT.md +105 -68
  534. package/src/components/slider/examples/controlled.tsx +26 -30
  535. package/src/components/slider/examples/examples.module.css +8 -32
  536. package/src/components/slider/examples/hint-and-error.tsx +33 -0
  537. package/src/components/slider/examples/overview.tsx +6 -0
  538. package/src/components/slider/examples/range-step.tsx +7 -17
  539. package/src/components/slider/examples/sizes.tsx +8 -6
  540. package/src/components/slider/examples/states.tsx +11 -8
  541. package/src/components/slider/examples/value-format.tsx +13 -25
  542. package/src/components/slider/examples/variants.tsx +23 -0
  543. package/src/components/smart-filter/COMPONENT.md +182 -0
  544. package/src/components/smart-filter/examples/controlled.tsx +48 -0
  545. package/src/components/smart-filter/examples/examples.module.css +56 -0
  546. package/src/components/smart-filter/examples/many-values.tsx +53 -0
  547. package/src/components/smart-filter/examples/narrow.tsx +38 -0
  548. package/src/components/smart-filter/examples/overview.tsx +109 -0
  549. package/src/components/smart-filter/examples/sizes.tsx +33 -0
  550. package/src/components/spinner/COMPONENT.md +112 -0
  551. package/src/components/spinner/examples/examples.module.css +20 -0
  552. package/src/components/spinner/examples/loading-region.tsx +22 -0
  553. package/src/components/spinner/examples/overview.tsx +15 -0
  554. package/src/components/spinner/examples/sizes.tsx +19 -0
  555. package/src/components/spinner/examples/variants.tsx +19 -0
  556. package/src/components/stepper/COMPONENT.md +83 -78
  557. package/src/components/stepper/examples/controlled.tsx +46 -0
  558. package/src/components/stepper/examples/examples.module.css +9 -40
  559. package/src/components/stepper/examples/narrow.tsx +11 -19
  560. package/src/components/stepper/examples/orientation.tsx +21 -59
  561. package/src/components/stepper/examples/overview.tsx +28 -0
  562. package/src/components/stepper/examples/sizes.tsx +19 -28
  563. package/src/components/stepper/examples/states.tsx +20 -21
  564. package/src/components/stepper/examples/with-icon.tsx +29 -0
  565. package/src/components/switch/COMPONENT.md +75 -94
  566. package/src/components/switch/examples/controlled.tsx +8 -6
  567. package/src/components/switch/examples/examples.module.css +13 -45
  568. package/src/components/switch/examples/in-form.tsx +20 -24
  569. package/src/components/switch/examples/overview.tsx +10 -0
  570. package/src/components/switch/examples/settings-row.tsx +14 -22
  571. package/src/components/switch/examples/sizes.tsx +5 -10
  572. package/src/components/switch/examples/states.tsx +37 -25
  573. package/src/components/tabs/COMPONENT.md +153 -86
  574. package/src/components/tabs/examples/closable.tsx +48 -0
  575. package/src/components/tabs/examples/controlled.tsx +14 -20
  576. package/src/components/tabs/examples/examples.module.css +13 -93
  577. package/src/components/tabs/examples/orientation.tsx +40 -0
  578. package/src/components/tabs/examples/overflow.tsx +60 -0
  579. package/src/components/tabs/examples/overview.tsx +30 -0
  580. package/src/components/tabs/examples/sizes.tsx +19 -19
  581. package/src/components/tabs/examples/states.tsx +20 -55
  582. package/src/components/tabs/examples/two-line.tsx +22 -29
  583. package/src/components/tabs/examples/variants.tsx +40 -0
  584. package/src/components/tabs/examples/with-icon.tsx +44 -0
  585. package/src/components/tag-select/COMPONENT.md +119 -122
  586. package/src/components/tag-select/examples/controlled-open.tsx +29 -0
  587. package/src/components/tag-select/examples/controlled.tsx +26 -0
  588. package/src/components/tag-select/examples/creatable.tsx +28 -0
  589. package/src/components/tag-select/examples/examples.module.css +3 -22
  590. package/src/components/tag-select/examples/in-form.tsx +44 -41
  591. package/src/components/tag-select/examples/manage-tags.tsx +20 -39
  592. package/src/components/tag-select/examples/many-tags.tsx +20 -0
  593. package/src/components/tag-select/examples/overview.tsx +21 -0
  594. package/src/components/tag-select/examples/sizes.tsx +7 -10
  595. package/src/components/tag-select/examples/states.tsx +11 -36
  596. package/src/components/tag-select/examples/validation.tsx +35 -0
  597. package/src/components/textarea/COMPONENT.md +50 -50
  598. package/src/components/textarea/examples/auto-resize.tsx +21 -0
  599. package/src/components/textarea/examples/controlled.tsx +12 -16
  600. package/src/components/textarea/examples/examples.module.css +15 -48
  601. package/src/components/textarea/examples/in-form.tsx +52 -48
  602. package/src/components/textarea/examples/overview.tsx +12 -0
  603. package/src/components/textarea/examples/sizes.tsx +6 -7
  604. package/src/components/textarea/examples/states.tsx +9 -13
  605. package/src/components/textarea/examples/validation.tsx +34 -0
  606. package/src/components/textarea/examples/without-focus-ring.tsx +12 -0
  607. package/src/components/thumbnail/COMPONENT.md +150 -0
  608. package/src/components/thumbnail/examples/examples.module.css +45 -0
  609. package/src/components/thumbnail/examples/full-width.tsx +48 -0
  610. package/src/components/thumbnail/examples/overview.tsx +31 -0
  611. package/src/components/thumbnail/examples/ratios.tsx +25 -0
  612. package/src/components/thumbnail/examples/ring.tsx +29 -0
  613. package/src/components/thumbnail/examples/sizes.tsx +23 -0
  614. package/src/components/thumbnail/examples/states.tsx +38 -0
  615. package/src/components/thumbnail/examples/variants.tsx +28 -0
  616. package/src/components/timeline/COMPONENT.md +92 -203
  617. package/src/components/timeline/examples/examples.module.css +5 -20
  618. package/src/components/timeline/examples/links.tsx +28 -0
  619. package/src/components/timeline/examples/narrow.tsx +30 -38
  620. package/src/components/timeline/examples/{activity-feed.tsx → overview.tsx} +9 -17
  621. package/src/components/timeline/examples/sizes.tsx +22 -28
  622. package/src/components/timeline/examples/{service-history.tsx → structure.tsx} +10 -8
  623. package/src/components/timeline/examples/{colors-and-tones.tsx → variants.tsx} +11 -16
  624. package/src/components/tooltip/COMPONENT.md +74 -62
  625. package/src/components/tooltip/examples/{controlled.tsx → controlled-open.tsx} +5 -7
  626. package/src/components/tooltip/examples/delay.tsx +19 -28
  627. package/src/components/tooltip/examples/disabled-trigger.tsx +18 -0
  628. package/src/components/tooltip/examples/examples.module.css +3 -33
  629. package/src/components/tooltip/examples/long-content.tsx +12 -15
  630. package/src/components/tooltip/examples/overview.tsx +17 -0
  631. package/src/components/tooltip/examples/placement.tsx +30 -0
  632. package/src/components/tooltip/examples/sizes.tsx +12 -15
  633. package/src/components/tooltip/examples/toolbar.tsx +35 -0
  634. package/src/components/typography/COMPONENT.md +68 -99
  635. package/src/components/typography/examples/article.tsx +23 -36
  636. package/src/components/typography/examples/examples.module.css +20 -54
  637. package/src/components/typography/examples/inline-emphasis.tsx +20 -0
  638. package/src/components/typography/examples/overview.tsx +20 -0
  639. package/src/components/typography/examples/semantic-tag.tsx +17 -0
  640. package/src/components/typography/examples/truncate.tsx +7 -7
  641. package/src/components/typography/examples/variants.tsx +43 -42
  642. package/src/components/typography/examples/weights.tsx +31 -0
  643. package/src/layout/app-shell/COMPONENT.md +48 -54
  644. package/src/layout/app-shell/examples/contained.tsx +5 -5
  645. package/src/layout/app-shell/examples/examples.module.css +9 -0
  646. package/src/layout/app-shell/examples/overview.tsx +72 -0
  647. package/src/layout/app-shell/examples/template.tsx +54 -0
  648. package/src/layout/sidebar/COMPONENT.md +302 -110
  649. package/src/layout/sidebar/examples/account.tsx +88 -0
  650. package/src/layout/sidebar/examples/brand-header.tsx +45 -0
  651. package/src/layout/sidebar/examples/collapsible-groups.tsx +77 -0
  652. package/src/layout/sidebar/examples/controlled-open.tsx +55 -0
  653. package/src/layout/sidebar/examples/controlled.tsx +68 -0
  654. package/src/layout/sidebar/examples/examples.module.css +17 -3
  655. package/src/layout/sidebar/examples/nested-items.tsx +74 -0
  656. package/src/layout/sidebar/examples/overview.tsx +126 -0
  657. package/src/layout/sidebar/examples/router.tsx +19 -13
  658. package/src/layout/sidebar/examples/sizes.tsx +17 -12
  659. package/src/layout/sidebar/examples/structure.tsx +81 -0
  660. package/src/styles/fonts.css +4 -0
  661. package/src/styles/globals.css +18 -29
  662. package/src/styles/reset.css +2 -0
  663. package/src/styles/theme-dark.css +3 -0
  664. package/src/styles/theme-light.css +34 -23
  665. package/src/styles/tokens.css +9 -77
  666. package/dist/components/accordion/Accordion.d.ts.map +0 -1
  667. package/dist/components/avatar/Avatar.d.ts.map +0 -1
  668. package/dist/components/badge/Badge.d.ts.map +0 -1
  669. package/dist/components/badge/tier.d.ts.map +0 -1
  670. package/dist/components/banner/Banner.d.ts.map +0 -1
  671. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +0 -1
  672. package/dist/components/button/Button.d.ts.map +0 -1
  673. package/dist/components/button-group/ButtonGroup.d.ts.map +0 -1
  674. package/dist/components/card/Card.d.ts.map +0 -1
  675. package/dist/components/checkbox/Checkbox.d.ts.map +0 -1
  676. package/dist/components/code-block/CodeBlock.d.ts.map +0 -1
  677. package/dist/components/color-picker/ColorPicker.d.ts.map +0 -1
  678. package/dist/components/color-picker/ColorPresets.d.ts.map +0 -1
  679. package/dist/components/command-menu/CommandMenu.d.ts.map +0 -1
  680. package/dist/components/data-table/DataTable.d.ts.map +0 -1
  681. package/dist/components/datepicker/Datepicker.d.ts.map +0 -1
  682. package/dist/components/datepicker/datepickerModel.d.ts.map +0 -1
  683. package/dist/components/digit-input/DigitInput.d.ts.map +0 -1
  684. package/dist/components/divider/Divider.d.ts.map +0 -1
  685. package/dist/components/drawer/Drawer.d.ts.map +0 -1
  686. package/dist/components/dropdown/Dropdown.d.ts.map +0 -1
  687. package/dist/components/dropdown/dropdownGeometry.d.ts +0 -10
  688. package/dist/components/dropdown/dropdownGeometry.d.ts.map +0 -1
  689. package/dist/components/dropdown/menuKeyboard.d.ts +0 -4
  690. package/dist/components/dropdown/menuKeyboard.d.ts.map +0 -1
  691. package/dist/components/dropdown/useDropdownPosition.d.ts +0 -18
  692. package/dist/components/dropdown/useDropdownPosition.d.ts.map +0 -1
  693. package/dist/components/empty-page/EmptyPage.d.ts.map +0 -1
  694. package/dist/components/example-frame/ExampleFrame.d.ts.map +0 -1
  695. package/dist/components/file-upload/FileUpload.d.ts.map +0 -1
  696. package/dist/components/hint/Hint.d.ts.map +0 -1
  697. package/dist/components/index.css +0 -11181
  698. package/dist/components/index.css.map +0 -7
  699. package/dist/components/index.d.ts.map +0 -1
  700. package/dist/components/index.js +0 -13833
  701. package/dist/components/index.js.map +0 -7
  702. package/dist/components/input/Input.d.ts.map +0 -1
  703. package/dist/components/kbd/Kbd.d.ts.map +0 -1
  704. package/dist/components/label/Label.d.ts.map +0 -1
  705. package/dist/components/link-button/LinkButton.d.ts.map +0 -1
  706. package/dist/components/modal/DialogParts.d.ts.map +0 -1
  707. package/dist/components/modal/Modal.d.ts.map +0 -1
  708. package/dist/components/modal/useInertSiblings.d.ts +0 -7
  709. package/dist/components/modal/useInertSiblings.d.ts.map +0 -1
  710. package/dist/components/notification/Notification.d.ts.map +0 -1
  711. package/dist/components/notification/NotificationStore.d.ts.map +0 -1
  712. package/dist/components/page-content/PageContent.d.ts.map +0 -1
  713. package/dist/components/pagination/Pagination.d.ts.map +0 -1
  714. package/dist/components/popover/Popover.d.ts.map +0 -1
  715. package/dist/components/popover/popoverGeometry.d.ts +0 -6
  716. package/dist/components/popover/popoverGeometry.d.ts.map +0 -1
  717. package/dist/components/popover/usePopoverPosition.d.ts +0 -18
  718. package/dist/components/popover/usePopoverPosition.d.ts.map +0 -1
  719. package/dist/components/progress-bar/ProgressBar.d.ts.map +0 -1
  720. package/dist/components/progress-circle/ProgressCircle.d.ts.map +0 -1
  721. package/dist/components/radio/Radio.d.ts.map +0 -1
  722. package/dist/components/scroll-container/ScrollContainer.d.ts.map +0 -1
  723. package/dist/components/segmented-control/SegmentedControl.d.ts.map +0 -1
  724. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +0 -29
  725. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts.map +0 -1
  726. package/dist/components/select/Select.d.ts.map +0 -1
  727. package/dist/components/select/selectIcons.d.ts +0 -15
  728. package/dist/components/select/selectIcons.d.ts.map +0 -1
  729. package/dist/components/select/selectListbox.d.ts +0 -13
  730. package/dist/components/select/selectListbox.d.ts.map +0 -1
  731. package/dist/components/slider/Slider.d.ts.map +0 -1
  732. package/dist/components/stepper/Stepper.d.ts.map +0 -1
  733. package/dist/components/switch/Switch.d.ts.map +0 -1
  734. package/dist/components/tabs/Tabs.d.ts.map +0 -1
  735. package/dist/components/tag/Tag.d.ts +0 -47
  736. package/dist/components/tag/Tag.d.ts.map +0 -1
  737. package/dist/components/tag-select/TagSelect.d.ts.map +0 -1
  738. package/dist/components/textarea/Textarea.d.ts.map +0 -1
  739. package/dist/components/timeline/Timeline.d.ts.map +0 -1
  740. package/dist/components/tooltip/Tooltip.d.ts.map +0 -1
  741. package/dist/components/typography/Typography.d.ts.map +0 -1
  742. package/dist/hooks/useControllableState.d.ts.map +0 -1
  743. package/dist/hooks/useEscapeKey.d.ts +0 -7
  744. package/dist/hooks/useEscapeKey.d.ts.map +0 -1
  745. package/dist/hooks/useFieldIds.d.ts +0 -17
  746. package/dist/hooks/useFieldIds.d.ts.map +0 -1
  747. package/dist/hooks/useFocusTrap.d.ts +0 -20
  748. package/dist/hooks/useFocusTrap.d.ts.map +0 -1
  749. package/dist/hooks/useMergedRefs.d.ts.map +0 -1
  750. package/dist/hooks/useModalKeyboard.d.ts +0 -14
  751. package/dist/hooks/useModalKeyboard.d.ts.map +0 -1
  752. package/dist/hooks/useOutsideClick.d.ts +0 -26
  753. package/dist/hooks/useOutsideClick.d.ts.map +0 -1
  754. package/dist/hooks/useOverlayModal.d.ts +0 -7
  755. package/dist/hooks/useOverlayModal.d.ts.map +0 -1
  756. package/dist/hooks/usePosition.d.ts.map +0 -1
  757. package/dist/hooks/usePresence.d.ts.map +0 -1
  758. package/dist/hooks/useResponsiveMonths.d.ts +0 -18
  759. package/dist/hooks/useResponsiveMonths.d.ts.map +0 -1
  760. package/dist/hooks/useScrollLock.d.ts.map +0 -1
  761. package/dist/icons/Icon.d.ts.map +0 -1
  762. package/dist/icons/index.d.ts.map +0 -1
  763. package/dist/index.css.map +0 -7
  764. package/dist/index.d.ts.map +0 -1
  765. package/dist/index.js.map +0 -7
  766. package/dist/internal/ControlSizeContext.d.ts.map +0 -1
  767. package/dist/internal/DividerContentContext.d.ts +0 -4
  768. package/dist/internal/DividerContentContext.d.ts.map +0 -1
  769. package/dist/internal/FieldFrame.d.ts.map +0 -1
  770. package/dist/internal/OverlayPortalLayerContext.d.ts +0 -13
  771. package/dist/internal/OverlayPortalLayerContext.d.ts.map +0 -1
  772. package/dist/internal/Portal.d.ts.map +0 -1
  773. package/dist/internal/context.d.ts.map +0 -1
  774. package/dist/internal/cx.d.ts.map +0 -1
  775. package/dist/internal/data-attributes.d.ts.map +0 -1
  776. package/dist/internal/highlightTsxHtml.d.ts.map +0 -1
  777. package/dist/internal/layoutPxFromPrimitives.d.ts.map +0 -1
  778. package/dist/internal/mergeRefs.d.ts.map +0 -1
  779. package/dist/internal/runtimeUnits.d.ts +0 -3
  780. package/dist/internal/runtimeUnits.d.ts.map +0 -1
  781. package/dist/internal/scrollAncestors.d.ts.map +0 -1
  782. package/dist/internal/slot.d.ts.map +0 -1
  783. package/dist/internal/states.d.ts.map +0 -1
  784. package/dist/internal/useFieldDescriptions.d.ts +0 -18
  785. package/dist/internal/useFieldDescriptions.d.ts.map +0 -1
  786. package/dist/layout/app-shell/AppShell.d.ts.map +0 -1
  787. package/dist/layout/index.d.ts.map +0 -1
  788. package/dist/layout/sidebar/Sidebar.d.ts.map +0 -1
  789. package/dist/theme/applyTheme.d.ts.map +0 -1
  790. package/dist/tokens/primitives.d.ts.map +0 -1
  791. package/dist/tokens/semantic.d.ts.map +0 -1
  792. package/dist/tokens/themes/dark.d.ts.map +0 -1
  793. package/dist/tokens/themes/light.d.ts +0 -3
  794. package/dist/tokens/themes/light.d.ts.map +0 -1
  795. package/src/components/accordion/examples/checkout.tsx +0 -73
  796. package/src/components/accordion/examples/layouts.tsx +0 -58
  797. package/src/components/avatar/examples/colors.tsx +0 -29
  798. package/src/components/avatar/examples/group.tsx +0 -35
  799. package/src/components/avatar/examples/team-card.tsx +0 -70
  800. package/src/components/badge/examples/icons.tsx +0 -37
  801. package/src/components/badge/examples/order-list.tsx +0 -48
  802. package/src/components/badge/examples/palette.tsx +0 -44
  803. package/src/components/badge/examples/surfaces.tsx +0 -21
  804. package/src/components/banner/examples/dismiss.tsx +0 -48
  805. package/src/components/banner/examples/placement.tsx +0 -92
  806. package/src/components/breadcrumb/examples/collapse.tsx +0 -56
  807. package/src/components/breadcrumb/examples/page-header.tsx +0 -31
  808. package/src/components/button/examples/composition.tsx +0 -46
  809. package/src/components/button/examples/controlled.tsx +0 -18
  810. package/src/components/button/examples/full-width.tsx +0 -15
  811. package/src/components/button/examples/icon-only.tsx +0 -42
  812. package/src/components/button/examples/surfaces.tsx +0 -18
  813. package/src/components/button/examples/variants-tones.tsx +0 -39
  814. package/src/components/button-group/examples/composition.tsx +0 -99
  815. package/src/components/card/examples/mini-media.tsx +0 -55
  816. package/src/components/card/examples/responsive.tsx +0 -72
  817. package/src/components/checkbox/examples/hint-error.tsx +0 -22
  818. package/src/components/checkbox/examples/select-all.tsx +0 -40
  819. package/src/components/checkbox/examples/settings-card.tsx +0 -76
  820. package/src/components/code-block/examples/api-docs.tsx +0 -31
  821. package/src/components/code-block/examples/controlled.tsx +0 -38
  822. package/src/components/code-block/examples/surfaces.tsx +0 -7
  823. package/src/components/color-picker/examples/brand-color.tsx +0 -73
  824. package/src/components/color-picker/examples/hex-input-sizes.tsx +0 -54
  825. package/src/components/color-picker/examples/presets-quick.tsx +0 -57
  826. package/src/components/color-picker/examples/presets-tags.tsx +0 -52
  827. package/src/components/command-menu/examples/composition.tsx +0 -91
  828. package/src/components/command-menu/examples/examples.module.css +0 -9
  829. package/src/components/command-menu/examples/keyboard-search.tsx +0 -94
  830. package/src/components/data-table/examples/dashboard.tsx +0 -205
  831. package/src/components/data-table/examples/sorting-pagination.tsx +0 -66
  832. package/src/components/datepicker/examples/badge.tsx +0 -19
  833. package/src/components/datepicker/examples/single.tsx +0 -16
  834. package/src/components/digit-input/examples/length-and-complete.tsx +0 -30
  835. package/src/components/digit-input/examples/surfaces.tsx +0 -6
  836. package/src/components/digit-input/examples/verification-step.tsx +0 -62
  837. package/src/components/divider/examples/composition.tsx +0 -49
  838. package/src/components/divider/examples/variants.tsx +0 -62
  839. package/src/components/drawer/examples/composition.tsx +0 -94
  840. package/src/components/drawer/examples/controlled.tsx +0 -42
  841. package/src/components/drawer/examples/features.tsx +0 -48
  842. package/src/components/drawer/examples/states.tsx +0 -54
  843. package/src/components/dropdown/examples/as-child.tsx +0 -23
  844. package/src/components/dropdown/examples/composition.tsx +0 -91
  845. package/src/components/dropdown/examples/controlled.tsx +0 -32
  846. package/src/components/dropdown/examples/row-actions.tsx +0 -56
  847. package/src/components/dropdown/examples/variants.tsx +0 -52
  848. package/src/components/example-frame/examples/basic.tsx +0 -18
  849. package/src/components/file-upload/examples/file-list.tsx +0 -67
  850. package/src/components/file-upload/examples/in-card.tsx +0 -84
  851. package/src/components/hint/examples/field-states.tsx +0 -60
  852. package/src/components/hint/examples/in-form.tsx +0 -45
  853. package/src/components/input/examples/anatomy.tsx +0 -70
  854. package/src/components/input/examples/control-alignment.tsx +0 -57
  855. package/src/components/input/examples/full-width.tsx +0 -23
  856. package/src/components/input/examples/icons-and-affixes.tsx +0 -32
  857. package/src/components/input/examples/reserved-support-row.tsx +0 -33
  858. package/src/components/input/examples/surfaces.tsx +0 -12
  859. package/src/components/input/examples/with-badge.tsx +0 -40
  860. package/src/components/kbd/examples/modifier-keys.tsx +0 -24
  861. package/src/components/label/examples/in-form.tsx +0 -39
  862. package/src/components/label/examples/markers.tsx +0 -27
  863. package/src/components/link-button/examples/composition.tsx +0 -30
  864. package/src/components/link-button/examples/examples.module.css +0 -46
  865. package/src/components/link-button/examples/tones.tsx +0 -15
  866. package/src/components/modal/examples/composition.tsx +0 -87
  867. package/src/components/modal/examples/features.tsx +0 -68
  868. package/src/components/modal/examples/link.tsx +0 -79
  869. package/src/components/modal/examples/states.tsx +0 -73
  870. package/src/components/notification/examples/features.tsx +0 -42
  871. package/src/components/notification/examples/live.tsx +0 -128
  872. package/src/components/notification/examples/save-form.tsx +0 -59
  873. package/src/components/page-content/examples/readable.tsx +0 -24
  874. package/src/components/page-content/examples/settings-page.tsx +0 -49
  875. package/src/components/page-content/examples/widths.tsx +0 -39
  876. package/src/components/pagination/examples/compact.tsx +0 -36
  877. package/src/components/pagination/examples/list-footer.tsx +0 -50
  878. package/src/components/pagination/examples/states.tsx +0 -44
  879. package/src/components/popover/examples/as-child.tsx +0 -29
  880. package/src/components/popover/examples/composition.tsx +0 -45
  881. package/src/components/popover/examples/controlled.tsx +0 -39
  882. package/src/components/popover/examples/features.tsx +0 -56
  883. package/src/components/popover/examples/inset-variants.tsx +0 -58
  884. package/src/components/popover/examples/states.tsx +0 -48
  885. package/src/components/progress-bar/examples/file-upload.tsx +0 -52
  886. package/src/components/progress-bar/examples/values-and-tones.tsx +0 -17
  887. package/src/components/progress-circle/examples/goals-card.tsx +0 -37
  888. package/src/components/progress-circle/examples/values-and-tones.tsx +0 -56
  889. package/src/components/radio/examples/examples.module.css +0 -43
  890. package/src/components/radio/examples/hint-error.tsx +0 -28
  891. package/src/components/radio/examples/horizontal.tsx +0 -33
  892. package/src/components/radio/examples/plan-picker.tsx +0 -55
  893. package/src/components/scroll-container/examples/both-axes.tsx +0 -57
  894. package/src/components/scroll-container/examples/list.tsx +0 -44
  895. package/src/components/segmented-control/examples/item-content.tsx +0 -78
  896. package/src/components/segmented-control/examples/surfaces.tsx +0 -82
  897. package/src/components/segmented-control/examples/toolbar.tsx +0 -56
  898. package/src/components/segmented-progress-bar/COMPONENT.md +0 -128
  899. package/src/components/segmented-progress-bar/examples/examples.module.css +0 -68
  900. package/src/components/segmented-progress-bar/examples/segment-gap.tsx +0 -24
  901. package/src/components/segmented-progress-bar/examples/sizes.tsx +0 -31
  902. package/src/components/segmented-progress-bar/examples/storage-distribution.tsx +0 -41
  903. package/src/components/select/examples/native.tsx +0 -21
  904. package/src/components/select/examples/search-groups.tsx +0 -61
  905. package/src/components/select/examples/with-badge.tsx +0 -47
  906. package/src/components/slider/examples/basic.tsx +0 -6
  907. package/src/components/slider/examples/display-settings.tsx +0 -41
  908. package/src/components/stepper/examples/wizard.tsx +0 -62
  909. package/src/components/switch/examples/notification-settings.tsx +0 -37
  910. package/src/components/switch/examples/on-off.tsx +0 -15
  911. package/src/components/switch/examples/validation.tsx +0 -19
  912. package/src/components/tabs/examples/horizontal.tsx +0 -30
  913. package/src/components/tabs/examples/vertical.tsx +0 -101
  914. package/src/components/tag/COMPONENT.md +0 -179
  915. package/src/components/tag/examples/colors.tsx +0 -49
  916. package/src/components/tag/examples/examples.module.css +0 -47
  917. package/src/components/tag/examples/sizes.tsx +0 -23
  918. package/src/components/tag/examples/states.tsx +0 -19
  919. package/src/components/tag/examples/surfaces.tsx +0 -16
  920. package/src/components/tag/examples/with-icon.tsx +0 -29
  921. package/src/components/textarea/examples/height-and-limits.tsx +0 -45
  922. package/src/components/textarea/examples/hint-and-error.tsx +0 -21
  923. package/src/components/textarea/examples/reserved-support-row.tsx +0 -37
  924. package/src/components/textarea/examples/surfaces.tsx +0 -11
  925. package/src/components/textarea/examples/with-label.tsx +0 -22
  926. package/src/components/timeline/examples/hover-highlight.tsx +0 -48
  927. package/src/components/timeline/examples/in-card.tsx +0 -48
  928. package/src/components/timeline/examples/selectable.tsx +0 -58
  929. package/src/components/tooltip/examples/composition.tsx +0 -37
  930. package/src/components/tooltip/examples/side.tsx +0 -29
  931. package/src/components/tooltip/examples/states.tsx +0 -45
  932. package/src/components/typography/examples/as-prop.tsx +0 -25
  933. package/src/components/typography/examples/composition.tsx +0 -23
  934. package/src/components/typography/examples/full-width.tsx +0 -29
  935. package/src/components/typography/examples/reading-and-form.tsx +0 -35
  936. package/src/components/typography/examples/states.tsx +0 -23
  937. package/src/components/typography/examples/tones.tsx +0 -34
  938. package/src/components/typography/examples/variant-catalog.tsx +0 -41
  939. package/src/layout/app-shell/examples/with-sidebar.tsx +0 -63
  940. package/src/layout/sidebar/examples/modes.tsx +0 -55
  941. package/src/layout/sidebar/examples/responsive.tsx +0 -44
  942. package/src/layout/sidebar/examples/states.tsx +0 -34
@@ -1,259 +1,245 @@
1
1
  # DataTable
2
2
 
3
3
  **Category:** data-display
4
+ **Kind:** composite
4
5
 
5
- > A data table with sorting, pagination or infinite scroll, row selection, nested rows and loading / empty / error states.
6
+ > A data table with sorting, pages or infinite scroll, row selection, nested rows and loading / empty / error states.
6
7
 
7
8
  ## When to use
8
9
  - Lists of records with several attributes to compare: orders, invoices, users, campaigns.
9
10
  - Data that needs sorting, paging, bulk selection or a filter toolbar.
10
11
  - Hierarchical rows (`getRowChildren`) or rows with a detail panel (`renderExpanded`).
11
- - Wide numeric reports with a sticky header and first column.
12
+ - Wide numeric reports with a sticky head and first column.
12
13
 
13
14
  ## When not to use
14
- - One or two KPIs → use [Card](../card/COMPONENT.md) (`mini`, `stat-trend`).
15
- - A short list of events without columns → use `Card variant="list"` or [Timeline](../timeline/COMPONENT.md).
16
- - A page with nothing to show yet (first-run, no permissions) → use [EmptyPage](../empty-page/COMPONENT.md); inside a table pass it to `empty`.
17
- - Page navigation on its own (outside a table) → use [Pagination](../pagination/COMPONENT.md).
15
+ - One or two KPIs → use [Card](../card/COMPONENT.md).
16
+ - A short list of events without columns → use [Timeline](../timeline/COMPONENT.md).
17
+ - A page with nothing to show yet (first run, no permissions) → use [EmptyPage](../empty-page/COMPONENT.md); inside a table pass it to `empty`.
18
+ - Page navigation outside a table → use [Pagination](../pagination/COMPONENT.md).
18
19
  - Picking values from a list → use [Select](../select/COMPONENT.md) or [TagSelect](../tag-select/COMPONENT.md).
19
20
 
20
21
  ## Import
21
22
  ```tsx
22
23
  import { DataTable, type DataTableColumn } from "prime-ui-kit";
23
24
  ```
24
- Exported types: `DataTableColumn<Row>`, `DataTableRootProps<Row>`, `DataTableSortState`, `DataTableOrder`, `DataTableLabels`.
25
+ Exported types: `DataTableColumn<Row>`, `DataTableProps<Row>`, `DataTableSortState`, `DataTableOrder`, `DataTableLabels`.
25
26
 
26
27
  ## Anatomy
27
28
  ```
28
- DataTable.Root card-fill block, radius 12, clips its content
29
- ├── toolbar optional slot above the table (search, filters, bulk actions)
30
- ├── scroll viewport (ScrollContainer, both axes)
29
+ DataTable card-fill block, radius 12, clips its content
30
+ ├── toolbar optional panel above the table (search, filters, bulk actions)
31
+ ├── scroll viewport ScrollContainer, both axes
31
32
  │ └── table
32
- │ ├── thead head cells; sortable headers are buttons
33
- │ │ └── [select-all] [toggle] column headers…
33
+ │ ├── thead [select all] [toggle] head cells; sortable heads hold a button
34
34
  │ └── tbody rows · sub-rows · detail rows · skeleton / empty / error row
35
35
  └── footer range «Показано 1–5 из 23» · Pagination · infinite-scroll status
36
36
  ```
37
- DataTable is a single configurable component: columns are data (`DataTableColumn<Row>[]`), not child parts.
37
+ DataTable is a single component: columns are data (`DataTableColumn<Row>[]`), not child parts.
38
38
 
39
39
  ## API
40
40
 
41
- ### DataTable.Root
42
- Generic over `Row`. No ref forwarding, no `asChild`, no native prop spreading (only `className`). Sizes nested controls through the control-size context.
41
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
42
+
43
+ ### DataTable
44
+ Generic over `Row`; `ref` → `HTMLDivElement`. A card-fill block with an optional toolbar, a scrolling `<table>` and a footer (range, Pagination, infinite-scroll status); passes its tier to the controls inside.
43
45
 
44
46
  | Prop | Type | Default | Description |
45
47
  |---|---|---|---|
46
- | `columns` | `DataTableColumn<Row>[]` | — (required) | Column definitions, see below. |
48
+ | `columns` | `DataTableColumn<Row>[]` | — (required) | Column definitions, see `DataTableColumn<Row>`. |
47
49
  | `rows` | `Row[]` | — (required) | Data; sorted in memory when a sort is set. |
48
- | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `"m"` | Density and control tier; passed to checkboxes, toggles, pagination and nested controls. |
49
- | `className` | `string` | — | Class on the root. |
50
- | `toolbar` | `ReactNode` | — | Slot above the table; wraps / stacks below 30rem table width. |
51
- | `showHeader` | `boolean` | `true` | Render `<thead>`. |
52
- | `stickyHeader` | `boolean` | `false` | Header sticks while the body scrolls. |
53
- | `stickyFirstColumn` | `boolean` | `false` | First column (with selection / toggle columns) sticks while scrolling horizontally. |
54
- | `getRowKey` | `(row: Row, index: number) => React.Key` | position | Stable row id; selection and expansion are keyed by it. Pass it whenever sorting, selection or expansion is used. |
55
- | `getRowLabel` | `(row: Row) => string` | — | Human row name for checkbox / toggle `aria-label`s. |
56
- | `onRowClick` | `(row: Row, index: number, event: React.MouseEvent<HTMLTableRowElement>) => void` | — | Row click; rows get a pointer cursor. |
50
+ | `getRowKey` | `(row: Row, index: number) => Key` | — | Stable row id (position by default); selection, expansion and the enter animation of new rows are keyed by it. Pass it whenever sorting, selection or expansion is used. |
51
+ | `getRowLabel` | `(row: Row) => string` | — | Human row name for the checkbox and toggle names (`{label}` in `labels`). |
52
+ | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `"m"` | Density and control tier: rows from 36 · 36 · 44 · 52 · 52 px; passed to checkboxes, toggles, Pagination and nested controls. |
53
+ | `paging` | `"pages" \| "infinite" \| "none"` | `"pages"` | `pages` — Pagination in the footer when there is more than one page; `infinite` — rows are revealed while scrolling; `none` — every row at once. |
54
+ | `pageSize` | `number` | `10` | Rows per page; also the first batch with `paging="infinite"`. |
55
+ | `page` | `number` | — | Current page (1-based), controlled. |
56
+ | `defaultPage` | `number` | `1` | Initial page, uncontrolled. |
57
+ | `onPageChange` | `(page: number) => void` | — | Page change from the pager; a sort change also returns to page 1. |
58
+ | `sort` | `DataTableSortState` | — | Current sort, controlled: `{ columnId, order: "asc" \| "desc" }` or `null`. |
59
+ | `defaultSort` | `DataTableSortState` | `null` | Initial sort, uncontrolled. |
60
+ | `onSortChange` | `(sort: DataTableSortState) => void` | — | A head click cycles asc → desc → none. |
57
61
  | `loading` | `boolean` | `false` | Skeleton rows while there are no rows; with rows only `aria-busy`. |
58
62
  | `loadingRows` | `number` | `min(pageSize, 5)` | Number of skeleton rows. |
59
- | `empty` | `ReactNode` | `labels.empty` | Empty-state content (text or EmptyPage). |
60
- | `error` | `ReactNode` | — | Replaces the body with a message in `role="alert"`. |
61
- | `labels` | `Partial<DataTableLabels>` | see Accessibility | Built-in strings. |
62
- | `dividerStyle` | `"standard" \| "dashed" \| "dotted" \| "none"` | `"standard"` | Row divider line. |
63
- | `columnDividers` | `boolean` | `false` | Vertical lines between columns. |
64
- | `striped` | `boolean` | `false` | Zebra rows. |
65
- | `highlightRowOnHover` | `boolean` | `true` | Row wash on hover (and pressed wash on clickable rows). |
66
- | `highlightColumnOnHover` | `boolean` | `false` | Column wash under the pointer (head + cells). |
67
- | `fillWidth` | `boolean` | `true` | Table spans the container; `false` sizes it by content. |
68
- | `sort` | `DataTableSortState` | — | Controlled sort `{ columnId, order: "asc" \| "desc" } \| null`. |
69
- | `defaultSort` | `DataTableSortState` | `null` | Initial sort (uncontrolled). |
70
- | `onSortChange` | `(sort: DataTableSortState) => void` | — | Header click cycles asc → desc → none; the page resets to 1. |
71
- | `page` | `number` | — | Controlled page (from 1). |
72
- | `defaultPage` | `number` | `1` | Initial page (uncontrolled). |
73
- | `onPageChange` | `(page: number) => void` | — | Page change. |
74
- | `pageSize` | `number` | `10` | Rows per page (also the first batch in infinite scroll). |
75
- | `showPagination` | `boolean` | `true` | Show Pagination in the footer when there is more than one page. |
76
- | `siblingCount` | `number` | `1` | Pagination siblings around the current page. |
77
- | `paginationSize` | `ControlSize` | `size` | Pagination size independent of the table. |
78
- | `infiniteScroll` | `boolean` | `false` | Reveal rows while scrolling instead of pages. |
79
- | `initialVisibleRows` | `number` | `pageSize` | Rows shown first in infinite scroll. |
80
- | `infiniteBatchSize` | `number` | `20` | Rows revealed per scroll step. |
81
- | `hasMore` | `boolean` | `false` | More rows can be loaded from the server. |
82
- | `loadingMore` | `boolean` | `false` | A server batch is loading (footer status, `aria-busy`). |
83
- | `onLoadMore` | `() => void \| Promise<void>` | — | Called at the end when all loaded rows are shown and `hasMore`. |
84
- | `scrollHeight` | `number \| string` | `360` with `infiniteScroll`, else — | Max height of the scroll viewport (number = px). |
85
- | `selectable` | `boolean` | `false` | Leading checkbox column with select-all, Shift range, drag and Space. |
86
- | `selected` | `React.Key[]` | — | Controlled selected ids. |
87
- | `defaultSelected` | `React.Key[]` | `[]` | Initially selected ids (uncontrolled). |
88
- | `onSelectedChange` | `(selected: React.Key[]) => void` | — | Selection change. |
63
+ | `empty` | `ReactNode` | `labels.empty` | Empty-state content: a string goes into a compact EmptyPage, a node (e.g. a full `EmptyPage`) is rendered as is. |
64
+ | `error` | `ReactNode` | — | Load error: replaces the body with the message in `role="alert"`. |
65
+ | `toolbar` | `ReactNode` | — | Panel above the table (search, filters, bulk actions); stacks below 30rem of table width. |
66
+ | `selectable` | `boolean` | `false` | Leading checkbox column with «select all», Shift range, press-and-drag and Space. |
67
+ | `selected` | `Key[]` | — | Selected row ids, controlled. |
68
+ | `defaultSelected` | `Key[]` | `[]` | Initially selected ids, uncontrolled. |
69
+ | `onSelectedChange` | `(selected: Key[]) => void` | — | Selection change. |
89
70
  | `getRowChildren` | `(row: Row) => Row[] \| undefined` | — | Sub-rows rendered under the parent with the same columns, indented by depth. |
90
71
  | `renderExpanded` | `(row: Row) => ReactNode` | — | Full-width detail row under an expanded row. |
91
- | `isRowExpandable` | `(row: Row) => boolean` | has sub-rows or `renderExpanded` set | Which rows get an expand toggle. |
92
- | `expanded` | `React.Key[]` | — | Controlled expanded ids. |
93
- | `defaultExpanded` | `React.Key[]` | `[]` | Initially expanded ids (uncontrolled). |
94
- | `onExpandedChange` | `(expanded: React.Key[]) => void` | — | Expansion change. |
72
+ | `isRowExpandable` | `(row: Row) => boolean` | — | Which rows get an expand toggle; by default rows with sub-rows, or every row with `renderExpanded`. |
73
+ | `expanded` | `Key[]` | — | Expanded row ids, controlled. |
74
+ | `defaultExpanded` | `Key[]` | `[]` | Initially expanded ids, uncontrolled. |
75
+ | `onExpandedChange` | `(expanded: Key[]) => void` | — | Expansion change. |
76
+ | `infiniteBatchSize` | `number` | `20` | Rows revealed per scroll step. |
77
+ | `hasMore` | `boolean` | `false` | More rows can be loaded from the server. |
78
+ | `loadingMore` | `boolean` | `false` | A server batch is loading: footer status, `aria-busy`. |
79
+ | `onLoadMore` | `() => void \| Promise<void>` | — | Called at the end when every loaded row is shown and `hasMore` is set. |
80
+ | `scrollHeight` | `number \| string` | `360 with paging="infinite"` | Max height of the scroll viewport (number = px). |
81
+ | `stickyHeader` | `boolean` | `false` | The head sticks while the body scrolls. |
82
+ | `stickyFirstColumn` | `boolean` | `false` | The first column (with the selection and toggle columns) sticks while scrolling sideways. |
83
+ | `showHeader` | `boolean` | `true` | Render `<thead>`. |
84
+ | `fullWidth` | `boolean` | `true` | The table spans its container; `false` sizes it by its content. |
85
+ | `rowDividers` | `boolean` | `true` | Hairlines between rows. |
86
+ | `columnDividers` | `boolean` | `true` | Hairlines between content columns. |
87
+ | `striped` | `boolean` | `false` | Every second row one opaque step off the table fill. |
88
+ | `highlightRowOnHover` | `boolean` | `true` | Row wash on hover (and a pressed wash on clickable rows). |
89
+ | `highlightColumnOnHover` | `boolean` | `false` | Column wash under the pointer (head and cells). |
90
+ | `onRowClick` | `(row: Row, index: number, event: MouseEvent<HTMLTableRowElement>) => void` | — | Row click; rows get a pointer cursor. |
91
+ | `labels` | `Partial<DataTableLabels>` | — | Built-in strings, see Labels. |
92
+ | `…rest` | `Omit<HTMLAttributes<HTMLDivElement>, "children">` | — | `className` and the other attributes of the root `<div>`. |
93
+
94
+ ### DataTableColumn<Row>
95
+ One column of `columns`: data, not a part.
95
96
 
96
- ### DataTableColumn&lt;Row&gt;
97
97
  | Prop | Type | Default | Description |
98
98
  |---|---|---|---|
99
99
  | `id` | `string` | — (required) | Unique column id (sort state, `data-column-id`). |
100
- | `header` | `ReactNode` | — (required) | Header content. |
101
- | `accessor` | `keyof Row \| ((row: Row) => unknown)` | — | Cell value (rendered as text, `—` for null) and default sort value. |
102
- | `cell` | `(row: Row) => ReactNode` | — | Custom cell rendering. |
103
- | `sortable` | `boolean` | — | Header becomes a sort button with `aria-sort`. |
104
- | `sortAccessor` | `(row: Row) => unknown` | — | Value used for sorting instead of `accessor`. |
100
+ | `header` | `ReactNode` | — (required) | Head content. |
101
+ | `accessor` | `keyof Row \| ((row: Row) => unknown)` | — | Cell value (rendered as text, `—` for empty) and the default sort value. |
102
+ | `cell` | `(row: Row) => ReactNode` | — | Custom cell content. |
103
+ | `sortable` | `boolean` | — | The head becomes a sort button with `aria-sort`. |
104
+ | `sortAccessor` | `(row: Row) => unknown` | — | Value to sort by instead of `accessor`. |
105
105
  | `sortComparator` | `(a: Row, b: Row, order: DataTableOrder) => number` | — | Custom comparison. |
106
- | `align` | `"start" \| "center" \| "end"` | `"start"` (`"end"` when `numeric`) | Cell and header alignment. |
107
- | `numeric` | `boolean` | — | `tabular-nums`, no wrapping, end alignment unless `align` is set. |
108
- | `truncate` | `boolean` | — | One line with ellipsis; width from `maxWidth` (or `width`); string values get a `title`. |
109
- | `width` | `string` | — | CSS width of the column. |
110
- | `minWidth` | `string` | — | CSS min width. |
111
- | `maxWidth` | `string` | — | CSS max width. |
112
- | `onHeaderClick` | `(event: React.MouseEvent<HTMLTableCellElement>) => void` | — | Header cell click (before sorting). |
113
- | `onCellClick` | `(row: Row, event: React.MouseEvent<HTMLTableCellElement> \| React.KeyboardEvent<HTMLTableCellElement>) => void` | — | Makes the cell a `role="button"` with `tabIndex=0`; Enter / Space trigger it. |
106
+ | `align` | `"start" \| "center" \| "end"` | `"start" ("end" with numeric)` | Cell alignment; heads do not follow it. |
107
+ | `headerAlign` | `"start" \| "center" \| "end"` | `"start"` | Head alignment; the sort icon stays at the end edge. |
108
+ | `numeric` | `boolean` | — | Tabular figures, no wrapping, end alignment unless `align` is set. |
109
+ | `truncate` | `boolean` | — | One line with an ellipsis; width from `maxWidth` (or `width`); string values get a `title`. |
110
+ | `grow` | `boolean` | — | Takes the free width and wraps its text; the table then fills its container. With `minWidth` it never gets narrower: below that the table scrolls instead of cells overlapping. |
111
+ | `width · minWidth · maxWidth` | `string` | — | CSS sizes of the column (`"14rem"`). |
114
112
 
115
113
  ## Variants
116
114
 
117
115
  ### size (density)
118
116
  | Value | Looks like | Use when | Default |
119
117
  |---|---|---|---|
120
- | `xs` | Rows 36, head 28, text 12/16, cell padding 8 | Very dense admin grids | |
121
- | `s` | Rows 36, head 32, text 13/20 | Dense back-office lists, narrow containers | |
122
- | `m` | Rows 44, head 36 (13/20 head text), cells 14/20, padding 12 | Most tables | yes |
123
- | `l` | Rows 52, head 40, text 16/24 | Spacious lists with avatars and two-line cells | |
124
- | `xl` | Rows 52, head 48, text 16/24, padding 16 | Large touch-friendly tables | |
118
+ | `xs` | rows from 36, head 28, text 12/16, cell padding 8 | very dense admin grids | |
119
+ | `s` | rows from 36, head 32, text 13/20 | dense back-office lists, narrow containers | |
120
+ | `m` | rows from 44, head 36 (13/20 head text), cells 14/20 | most tables | yes |
121
+ | `l` | rows from 52, head 40, text 16/24 | spacious lists, large avatars | |
122
+ | `xl` | rows from 52, head 48, text 16/24, cell padding 16 | large touch-friendly tables | |
123
+
124
+ Row height is a minimum: cells pad vertically by (row height − control one tier down) / 2, so one text line or a control one tier down keeps the tier height and taller content grows the row. Checkboxes use the table tier; expand toggles are square ghost Buttons one tier down (`xs` for xs–m, `s` for l–xl).
125
125
 
126
- The head is the control height of the tier with text one step smaller (muted, weight 500). Checkboxes use the table tier; expand toggles are square ghost buttons one tier down (`xs` for xs–m, `s` for l–xl). Toolbar controls should use `s` in an `m` table.
126
+ Column widths come from the content and then hold still: once rows are laid out the widths are frozen, so searching, filtering, paging and opening sub-rows do not move the columns. A column widens when new content no longer fits, never narrows; widths are measured again when the column set or the container width changes. `grow` columns keep taking the free width.
127
127
 
128
- ### dividerStyle
128
+ ### paging
129
129
  | Value | Looks like | Use when | Default |
130
130
  |---|---|---|---|
131
- | `standard` | 1px solid `border-subtle` between rows | Normal tables | yes |
132
- | `dashed` | Dashed hairline | Lighter separation in comparison tables | |
133
- | `dotted` | Dotted hairline | Very light separation, print-like reports | |
134
- | `none` | No row lines | Together with `striped`, or short tables | |
131
+ | `pages` | `pageSize` rows, footer range and Pagination (compact on narrow widths) | tables people return to and reference | yes |
132
+ | `infinite` | rows revealed while scrolling in a `scrollHeight` window, footer status | logs and feeds | |
133
+ | `none` | every row, no footer | short lists, reports in a scroll window | |
135
134
 
136
- ### Column `align`
135
+ ### column `align`
137
136
  | Value | Looks like | Use when | Default |
138
137
  |---|---|---|---|
139
- | `start` | Text at the start | Text columns | yes (non-numeric) |
140
- | `center` | Centered | Short symmetric values (icons, flags, hours) | |
141
- | `end` | At the end | Numbers, money (set automatically by `numeric`) | yes (`numeric`) |
138
+ | `start` | text at the start | text columns | yes (non-numeric) |
139
+ | `center` | centered | short symmetric values | |
140
+ | `end` | at the end | numbers, money (set by `numeric`) | yes (`numeric`) |
141
+
142
+ Heads keep `start` whatever the cell alignment, with the sort icon at the end edge; set `headerAlign` only for a deliberate exception.
142
143
 
143
- ### Visual flags
144
+ ### Flags
144
145
  | Flag | Looks like when on | Use when | Default |
145
146
  |---|---|---|---|
146
- | `striped` | Every second row one opaque step off the table fill | Long numeric grids | `false` |
147
- | `columnDividers` | 1px vertical lines between columns | Many numeric columns | `false` |
148
- | `highlightRowOnHover` | `fill-subtle` wash on the hovered row | Interactive lists | `true` |
149
- | `highlightColumnOnHover` | `fill-subtle` wash on the hovered column | Comparison tables | `false` |
150
- | `stickyHeader` / `stickyFirstColumn` | Opaque sticky head / first column with a hairline edge | Long / wide tables in a `scrollHeight` window | `false` |
151
- | `showHeader` | Head row shown | Turn off only for self-explanatory key/value tables | `true` |
152
- | `fillWidth` | Table spans the container; `false` = content width | `false` for short lookup tables in wide layouts | `true` |
153
- | column `numeric` | Tabular figures, end-aligned, no wrap | Numbers, money, dates as numbers | — |
154
- | column `truncate` | Single line with ellipsis and `title` | Long names in narrow columns | — |
155
-
156
- **Combinations**
157
- - Recommended: `numeric` for every number column; `striped` + `dividerStyle="none"`; `selectable` + bulk actions in `toolbar`; `stickyHeader` + `scrollHeight` for long tables.
158
- - Allowed but rare: `highlightColumnOnHover` with `columnDividers`; `showHeader={false}` for key/value lists.
159
- - Avoid: `striped` with `columnDividers` and dashed lines at once (noise); `selectable` / expansion / sorting without `getRowKey` (ids shift when sorting); `infiniteScroll` together with pagination expectations (pagination is hidden in infinite mode).
160
-
161
- **Sizes**
162
- Default `m` (44px rows) lines up with `m` buttons and inputs on the page; toolbar controls inside use `s`. `size` also drives the pagination unless `paginationSize` is set.
163
-
164
- **Hierarchy**
165
- One primary action per toolbar (`soft` / `solid`), others `outline` or `ghost`; destructive bulk action `variant="soft" tone="danger"`.
147
+ | `rowDividers` | hairlines between rows | default; off together with `striped` | `true` |
148
+ | `columnDividers` | hairlines between content columns (none inside the lead columns) | default; off for 2–3 column key/value lists | `true` |
149
+ | `striped` | every second row one opaque step off the fill | long numeric grids | `false` |
150
+ | `highlightRowOnHover` | `fill-subtle` wash on the hovered row | interactive lists | `true` |
151
+ | `highlightColumnOnHover` | `fill-subtle` wash on the hovered column | comparison tables | `false` |
152
+ | `stickyHeader` · `stickyFirstColumn` | opaque sticky head / first column with a hairline edge | long / wide tables in a `scrollHeight` window | `false` |
153
+ | `showHeader` | head row shown | off only for self-explanatory key/value tables | `true` |
154
+ | `fullWidth` | spans the container; `false` = content width | `false` for short lookup tables in wide layouts | `true` |
155
+ | column `numeric` | tabular figures, end-aligned, no wrap | numbers, money | — |
156
+ | column `truncate` | one line with an ellipsis and a `title` | long names in narrow columns | — |
166
157
 
167
158
  ## States
168
159
  | State | Driven by | DOM |
169
160
  |---|---|---|
170
- | loading (no rows) | `loading` | Skeleton rows (`data-skeleton`), `role="status"` with `labels.loading`, `aria-busy` on the table, `data-loading` on the root |
171
- | loading (with rows) / loading more | `loading`, `loadingMore` | `aria-busy`; footer `labels.loadingMore` |
172
- | empty | no rows and not loading | Centered muted body-s text (`empty` or `labels.empty`) |
173
- | error | `error` | Body replaced by `role="alert"` message in `danger-text`; range and infinite-scroll status hidden, Pagination still shows when `rows` exceed `pageSize` |
174
- | sorted | `sort` / `defaultSort` | `aria-sort` on the header, `data-sortable`, `data-sorted`; accent sort icon |
175
- | selected | `selected` / `defaultSelected` | `aria-selected` on rows, `accent-soft` fill; polite «Выбрано: N» |
176
- | expanded | `expanded` / `defaultExpanded` | `data-expanded` on the parent row (one step darker, first cell weight 500); toggle `aria-expanded` |
177
- | hover | pointer | Row / column wash per highlight flags |
178
-
179
- Root data attributes: `data-size`, `data-divider`, `data-column-dividers`, `data-show-header`, `data-sticky-header`, `data-sticky-first-column`, `data-table-width="fill" | "auto"`, `data-highlight-row`, `data-highlight-column`, `data-striped`, `data-loading`, `data-selectable`, `data-expandable`, `data-dragging` (while drag-selecting).
180
- Cell / row attributes: `data-align`, `data-numeric`, `data-first-column`, `data-column-id`, `data-column-hovered`, `data-stripe="alt"`, `data-clickable`, `data-depth`, `data-animate` (rows mounted by the latest expand), `data-select-index`.
181
-
182
- Controlled vs uncontrolled: `sort`, `page`, `selected`, `expanded` are controlled with their `on…Change`; `defaultSort`, `defaultPage`, `defaultSelected`, `defaultExpanded` are the uncontrolled starting values.
161
+ | loading (no rows) | `loading` | skeleton rows (`data-skeleton`), `role="status"` with `labels.loading`, `aria-busy` on the table, `data-loading` on the root |
162
+ | loading more | `loading` with rows, `loadingMore` | `aria-busy`; footer `labels.loadingMore` |
163
+ | empty | no rows and not loading | compact EmptyPage with `empty` or `labels.empty` (`role="status"`), or the `empty` node |
164
+ | error | `error` | body replaced by a `role="alert"` message in `danger-text`; range and infinite status hidden |
165
+ | sorted | `sort` / `defaultSort` | `aria-sort` and `data-sorted` on the head; the sort icon: unsorted `text-disabled`, hover `text-muted`, sorted `text-secondary` — never accent |
166
+ | selected | `selected` / `defaultSelected` | `aria-selected` rows with `accent-soft` fill; polite `labels.selectedCount` |
167
+ | expanded | `expanded` / `defaultExpanded` | `data-expanded` on the parent row (one step darker); toggle `aria-expanded`, chevron turns 90° |
168
+ | new rows | rows mounted by an expand or new in `rows` (by `getRowKey`) | `data-animate`: cells drop in from above (`enterMotion`); detail panels open and close through `grid-template-rows` (`data-state` on the detail row; it unmounts after the close) |
169
+ | state swap | the body moves between loading, rows, empty and error | the body fades in over `base` (opacity only, the same swap motion as [Crossfade](../crossfade/COMPONENT.md)); the head stays still; nothing moves on the first render |
170
+
171
+ Root attributes: `data-size`, `data-row-dividers`, `data-column-dividers`, `data-sticky-header`, `data-sticky-first-column`, `data-table-width` (`fill` · `auto` · `grow`), `data-highlight-row`, `data-highlight-column`, `data-striped`, `data-loading`, `data-selectable`, `data-expandable`, `data-dragging` (while drag-selecting). Sorting and paging swap rows instantly; everything is still under `prefers-reduced-motion`.
183
172
 
184
173
  ## Layout & spacing
185
- - The root fills its container (`width: 100%`) on `--prime-color-card-bg`, radius 12, and clips full-bleed head and rows; on a card or modal it becomes a sunken block.
186
- - Toolbar padding `--prime-space-3` × cell padding; items `gap: var(--prime-space-2)`; below 30rem table width toolbar and footer stack.
187
- - The footer has a hairline on top, range text left, Pagination right (compact on narrow widths).
188
- - Columns scroll horizontally inside the table; use `stickyFirstColumn` for the identifying column. Works from 320px.
189
- - Column widths: pass `width` / `minWidth` / `maxWidth` strings (e.g. `"14rem"`); do not size cells with custom CSS.
174
+ - The root fills its container on `--prime-color-card-bg`, radius 12, and clips full-bleed head and rows; on a card or a modal it becomes a sunken block — never wrap it in a Card.
175
+ - Toolbar padding `--prime-space-3` × cell padding, items `gap: --prime-space-2`; below 30rem of table width toolbar and footer stack.
176
+ - The footer has a hairline on top: range on the left, Pagination on the right. The range shows only with more than one page or with infinite scroll.
177
+ - Columns scroll sideways inside the table; pin the identifying column with `stickyFirstColumn`. Works from 320 px.
178
+ - Cell content: text, two-line text (title + `caption`), an Avatar with text, a Badge, or a control one tier down (`s` in an `m` table). Toolbar controls use `s` in an `m` table.
179
+ - Column widths: `width` / `minWidth` / `maxWidth` strings; never size cells with custom CSS.
190
180
  - Sub-rows indent by `--dt-indent` per level (avatar of the tier + gap); override it on the root for other leading content.
191
181
 
192
182
  ## Accessibility
193
- - Native `<table>` semantics; header cells are `scope="col"`. Sortable headers contain a `<button>` and expose `aria-sort`. The whole head cell shows the inset focus ring.
194
- - Selection: the header checkbox (`labels.selectAll`, indeterminate when partial), row checkboxes (`labels.selectRow(getRowLabel(row))`), Space toggles, Shift+click / Shift+Space selects a range, press-and-drag sets the same state on passed rows; a polite live region announces `labels.selectedCount(n)`.
195
- - Expansion: the toggle is a button with `aria-expanded`, `aria-controls` (detail row / sub-rows) and `labels.expand` / `labels.collapse`.
196
- - `onCellClick` cells are `role="button"`, focusable, Enter / Space; inset focus ring.
197
- - Pass `getRowLabel` so checkbox and toggle names are unique.
198
- - `labels` (`DataTableLabels`):
199
- - `loading` — `"Загрузка данных…"`
200
- - `empty` — `"Нет данных для отображения."`
201
- - `range(from, to, total)` — `` `Показано ${from}–${to} из ${total}` ``
202
- - `loadingMore` — `"Догружаем строки…"`
203
- - `scrollForMore` — `"Прокрутите вниз для загрузки"`
204
- - `selectAll` — `"Выбрать все строки"`
205
- - `selectRow(label?)` — `` `Выбрать: ${label}` `` or `"Выбрать строку"`
206
- - `selectedCount(count)` — `` `Выбрано: ${count}` ``
207
- - `expand(label?)` — `` `Развернуть: ${label}` `` or `"Развернуть строку"`
208
- - `collapse(label?)` — `` `Свернуть: ${label}` `` or `"Свернуть строку"`
209
183
 
210
- ## Examples
211
- | File | Scenario | When to use this pattern |
184
+ ### Keyboard
185
+ | Key | Action |
186
+ |---|---|
187
+ | `Tab` | Moves through sort buttons, checkboxes and expand toggles. |
188
+ | `Enter` · `Space` | Sorts by the column or toggles the row. |
189
+ | `Space` | Toggles the focused row checkbox. |
190
+ | `Shift + Space` | Selects the range from the last toggled row. |
191
+
192
+ ### ARIA
193
+ - Native `<table>` semantics; head cells are `scope="col"`; sortable heads hold a `<button>` and expose `aria-sort`; the whole head cell shows the inset focus ring.
194
+ - Row checkboxes are named by `labels.selectRow` with `{label}` from `getRowLabel` (pass it so the names are unique); the head checkbox by `labels.selectAll`, `indeterminate` on a partial selection.
195
+ - After a selection change a polite live region announces `labels.selectedCount`; selected rows carry `aria-selected`.
196
+ - The expand toggle is a button with `aria-expanded`, `aria-controls` (detail row or sub-rows) and `labels.expand` / `labels.collapse`.
197
+ - Loading sets `aria-busy` and a `labels.loading` status; the error is `role="alert"`; the default empty state is `role="status"`.
198
+
199
+ ### Labels
200
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
201
+
202
+ | Key | Default | Used for |
212
203
  |---|---|---|
213
- | [dashboard.tsx](examples/dashboard.tsx) | KPI cards + recent orders with avatar, badge, `numeric` | Overview screens |
214
- | [sizes.tsx](examples/sizes.tsx) | Densities xs–xl | Choosing density |
215
- | [numeric.tsx](examples/numeric.tsx) | `numeric`, `truncate` + `maxWidth`, `columnDividers` | Inventories and reports |
216
- | [sorting-pagination.tsx](examples/sorting-pagination.tsx) | Controlled `sort` and `page` | Sorting / paging in URL or store |
217
- | [selection.tsx](examples/selection.tsx) | `selectable` with bulk actions in `toolbar` | Bulk operations |
218
- | [nested-rows.tsx](examples/nested-rows.tsx) | `getRowChildren`, controlled `expanded`, with selection | Hierarchical data |
219
- | [detail-panel.tsx](examples/detail-panel.tsx) | `renderExpanded` + `stickyFirstColumn` | Details without leaving the list |
220
- | [toolbar.tsx](examples/toolbar.tsx) | Search, SegmentedControl filter, export; `empty` on no match | Filterable lists |
221
- | [states.tsx](examples/states.tsx) | `loading` + `loadingRows`, `empty`, `error` with retry | Tables backed by requests |
222
- | [sticky.tsx](examples/sticky.tsx) | `stickyHeader` + `stickyFirstColumn` in a `scrollHeight` window (`infiniteScroll` with `initialVisibleRows={rows.length}`, so all rows render without pagination) | Wide reports |
223
- | [infinite-scroll.tsx](examples/infinite-scroll.tsx) | `infiniteScroll`, `hasMore`, `loadingMore`, `onLoadMore` | Logs and feeds |
224
- | [appearance.tsx](examples/appearance.tsx) | `striped`, `dividerStyle` none / dashed / dotted, `highlightColumnOnHover`, `columnDividers`, no header | Row styling |
225
- | [content-width.tsx](examples/content-width.tsx) | `fillWidth` vs `fillWidth={false}`, `align="center"` | Short lookup tables |
226
- | [narrow.tsx](examples/narrow.tsx) | 320px container, `size="s"`, sticky first column, compact pagination | Mobile layouts |
204
+ | `loading` | `"Загрузка данных…"` | Screen-reader status while skeleton rows are shown. |
205
+ | `empty` | `"Нет данных для отображения."` | Default empty-state text. |
206
+ | `range` | `"Показано {from}–{to} из {total}"` | Footer range line; `{from}`, `{to}`, `{total}` are replaced. |
207
+ | `loadingMore` | `"Догружаем строки…"` | Footer status while `loadingMore`. |
208
+ | `scrollForMore` | `"Прокрутите вниз для загрузки"` | Footer hint when more rows can appear by scrolling. |
209
+ | `selectAll` | `"Выбрать все строки"` | Name of the head «select all» checkbox. |
210
+ | `selectRow` | `"Выбрать строку {label}"` | Name of a row checkbox; `{label}` is `getRowLabel(row)`, empty without it. |
211
+ | `selectedCount` | `"Выбрано: {count}"` | Polite announcement after the selection changes. |
212
+ | `expand` | `"Развернуть строку {label}"` | Name of the toggle of a collapsed row. |
213
+ | `collapse` | `"Свернуть строку {label}"` | Name of the toggle of an expanded row. |
227
214
 
228
- ```tsx
229
- import { DataTable, type DataTableColumn } from "prime-ui-kit";
230
-
231
- type Invoice = { id: string; client: string; amount: number };
232
-
233
- const columns: DataTableColumn<Invoice>[] = [
234
- { id: "id", header: "Счёт", accessor: "id" },
235
- { id: "client", header: "Клиент", accessor: "client", sortable: true },
236
- { id: "amount", header: "Сумма, ₽", accessor: "amount", numeric: true, sortable: true },
237
- ];
238
-
239
- export function InvoiceTable({ rows }: { rows: Invoice[] }) {
240
- return <DataTable.Root columns={columns} rows={rows} getRowKey={(row) => row.id} />;
241
- }
242
- ```
215
+ ## Examples
216
+ | Example | Shows |
217
+ |---|---|
218
+ | [overview.tsx](examples/overview.tsx) | Recent orders: sortable columns, a status Badge, numeric sums and five rows per page — `columns`, `getRowKey`, `pageSize`. |
219
+ | [sizes.tsx](examples/sizes.tsx) | Every density: rows from 36 to 52 px, the head at the control height of the tier — `size`. |
220
+ | [numeric.tsx](examples/numeric.tsx) | An inventory report: number columns align to the end in tabular figures, a long name stays on one line with a title — `numeric`, `truncate`, `maxWidth`. |
221
+ | [content-width.tsx](examples/content-width.tsx) | A short lookup table sized by its content with a centered column, and a `grow` column that takes the free width and wraps — `fullWidth`, `align`, `grow`. |
222
+ | [appearance.tsx](examples/appearance.tsx) | Row styling: zebra rows without lines, a column wash under the pointer, a headless key/value list — `striped`, `rowDividers`, `highlightColumnOnHover`, `columnDividers`, `showHeader`. |
223
+ | [toolbar.tsx](examples/toolbar.tsx) | A campaign list with search, a status filter and export above the table; the empty text when nothing matches — `toolbar`, `empty`. |
224
+ | [selection.tsx](examples/selection.tsx) | Team members with checkboxes: Shift+click range, press-and-drag, «select all» and bulk actions in the toolbar — `selectable`, `selected`, `onSelectedChange`, `getRowLabel`. |
225
+ | [nested-rows.tsx](examples/nested-rows.tsx) | Partners with their expense lines: sub-rows indented under the parent's name, a chevron toggle, together with selection and sorting — `getRowChildren`, `expanded`, `onExpandedChange`. |
226
+ | [detail-panel.tsx](examples/detail-panel.tsx) | Order details in a full-width row under an expanded order, aligned with the first content column — `renderExpanded`, `defaultExpanded`. |
227
+ | [sticky.tsx](examples/sticky.tsx) | Monthly sales by region in a 280 px window: the head and the region column stay while scrolling both ways — `stickyHeader`, `stickyFirstColumn`, `scrollHeight`. |
228
+ | [infinite-scroll.tsx](examples/infinite-scroll.tsx) | An audit log that reveals loaded rows in batches and then asks the server for more — `paging`, `infiniteBatchSize`, `hasMore`, `loadingMore`, `onLoadMore`. |
229
+ | [states.tsx](examples/states.tsx) | Loading skeleton, an empty period and a load error with a retry: the head stays, only the body changes — `loading`, `loadingRows`, `empty`, `error`. |
230
+ | [controlled.tsx](examples/controlled.tsx) | Sort and page owned by the parent (a URL or a store): a header click goes asc → desc → none, a new sort returns to page 1 — `sort`, `onSortChange`, `page`, `onPageChange`. |
231
+ | [narrow.tsx](examples/narrow.tsx) | A 320 px support queue: columns scroll inside the table with the first one pinned, the toolbar and footer reflow and the pager turns compact — `stickyFirstColumn`, `size`. |
243
232
 
244
233
  ## Mistakes
245
- - No `getRowKey` with `selectable` or sorting → selection follows positions, not records; always pass it.
234
+ - No `getRowKey` with `selectable`, expansion or sorting → selection follows positions, not records.
246
235
  - Numbers in a plain column → set `numeric` (alignment and tabular figures).
247
236
  - A custom «Ничего не найдено» row inside `rows` → use `empty`.
248
- - Rendering a spinner instead of rows → use `loading` (skeleton keeps the header and layout).
249
- - Wrapping the table in a Card for a border → the table is already a bounded block with its own fill.
250
- - Custom checkbox column → use `selectable` (range, drag, announcements built in).
251
- - `scrollHeight` without `stickyHeader` on long tables → the header scrolls away.
237
+ - A spinner instead of rows → use `loading` (the skeleton keeps the head and the layout).
238
+ - Wrapping the table in a Card for a border → the table is already a bounded block.
239
+ - A custom checkbox column → use `selectable` (range, drag and announcements built in).
240
+ - A long table in a `scrollHeight` window without `stickyHeader` → the head scrolls away.
241
+ - `paging="none"` for hundreds of rows → use `pages` or `infinite`.
252
242
 
253
243
  ## Related
254
- - [Pagination](../pagination/COMPONENT.md) — used in the footer.
255
- - [Checkbox](../checkbox/COMPONENT.md) — selection column.
256
- - [ScrollContainer](../scroll-container/COMPONENT.md) — the scroll viewport.
257
- - [EmptyPage](../empty-page/COMPONENT.md) — rich empty state via `empty`.
258
- - [Badge](../badge/COMPONENT.md), [Avatar](../avatar/COMPONENT.md) — typical cell content.
259
- - [Card](../card/COMPONENT.md) — KPIs above a table.
244
+ - **Built from:** [Checkbox](../checkbox/COMPONENT.md), [Button](../button/COMPONENT.md), [Pagination](../pagination/COMPONENT.md), [ScrollContainer](../scroll-container/COMPONENT.md), [EmptyPage](../empty-page/COMPONENT.md), [Skeleton](../skeleton/COMPONENT.md) (loading rows, in the table tier)
245
+ - **See also:** [SmartFilter](../smart-filter/COMPONENT.md), [Badge](../badge/COMPONENT.md), [Avatar](../avatar/COMPONENT.md), [Card](../card/COMPONENT.md)
@@ -1,19 +1,18 @@
1
- /** Row styling: `striped` without dividers, `dividerStyle="dashed"` with `highlightColumnOnHover`, `columnDividers` without a header. Use striped rows for long numeric grids, column highlight for comparison tables. */
2
-
1
+ /** Row styling: zebra rows without lines, a column wash under the pointer, a headless key/value list — `striped`, `rowDividers`, `highlightColumnOnHover`, `columnDividers`, `showHeader`. */
3
2
  import { DataTable, type DataTableColumn, Typography } from "prime-ui-kit";
4
3
 
5
4
  import styles from "./examples.module.css";
6
5
 
7
6
  type Shift = { day: string; morning: number; evening: number; night: number };
8
7
 
9
- const rows: Shift[] = [
8
+ const SHIFTS: Shift[] = [
10
9
  { day: "Понедельник", morning: 12, evening: 9, night: 4 },
11
10
  { day: "Вторник", morning: 11, evening: 10, night: 4 },
12
11
  { day: "Среда", morning: 13, evening: 8, night: 3 },
13
12
  { day: "Четверг", morning: 12, evening: 9, night: 5 },
14
13
  ];
15
14
 
16
- const columns: DataTableColumn<Shift>[] = [
15
+ const COLUMNS: DataTableColumn<Shift>[] = [
17
16
  { id: "day", header: "День", accessor: "day" },
18
17
  { id: "morning", header: "Утро", accessor: "morning", numeric: true },
19
18
  { id: "evening", header: "Вечер", accessor: "evening", numeric: true },
@@ -22,44 +21,42 @@ const columns: DataTableColumn<Shift>[] = [
22
21
 
23
22
  export default function DataTableAppearanceExample() {
24
23
  return (
25
- <div className={styles.statesGrid}>
26
- <div className={styles.group}>
27
- <Typography.Root variant="code" tone="muted">
28
- striped + dividerStyle="none"
29
- </Typography.Root>
30
- <DataTable.Root
31
- columns={columns}
32
- rows={rows}
33
- getRowKey={(r) => r.day}
24
+ <>
25
+ <div className={styles.specimen}>
26
+ <DataTable
27
+ columns={COLUMNS}
28
+ rows={SHIFTS}
29
+ getRowKey={(row) => row.day}
34
30
  striped
35
- dividerStyle="none"
31
+ rowDividers={false}
36
32
  />
33
+ <Typography as="span" variant="caption" tone="muted">
34
+ striped · rowDividers=&#123;false&#125;
35
+ </Typography>
37
36
  </div>
38
- <div className={styles.group}>
39
- <Typography.Root variant="code" tone="muted">
40
- dividerStyle="dashed" + highlightColumnOnHover
41
- </Typography.Root>
42
- <DataTable.Root
43
- columns={columns}
44
- rows={rows}
45
- getRowKey={(r) => r.day}
46
- dividerStyle="dashed"
37
+ <div className={styles.specimen}>
38
+ <DataTable
39
+ columns={COLUMNS}
40
+ rows={SHIFTS}
41
+ getRowKey={(row) => row.day}
47
42
  highlightColumnOnHover
48
43
  />
44
+ <Typography as="span" variant="caption" tone="muted">
45
+ highlightColumnOnHover
46
+ </Typography>
49
47
  </div>
50
- <div className={styles.group}>
51
- <Typography.Root variant="code" tone="muted">
52
- dividerStyle="dotted" + columnDividers + showHeader=&#123;false&#125;
53
- </Typography.Root>
54
- <DataTable.Root
55
- columns={columns}
56
- rows={rows}
57
- getRowKey={(r) => r.day}
58
- dividerStyle="dotted"
59
- columnDividers
48
+ <div className={styles.specimen}>
49
+ <DataTable
50
+ columns={COLUMNS}
51
+ rows={SHIFTS}
52
+ getRowKey={(row) => row.day}
53
+ columnDividers={false}
60
54
  showHeader={false}
61
55
  />
56
+ <Typography as="span" variant="caption" tone="muted">
57
+ columnDividers=&#123;false&#125; · showHeader=&#123;false&#125;
58
+ </Typography>
62
59
  </div>
63
- </div>
60
+ </>
64
61
  );
65
62
  }