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,12 +1,14 @@
1
1
  # ScrollContainer
2
2
 
3
3
  **Category:** layout
4
+ **Kind:** layout
4
5
 
5
6
  > A scroll region with the kit's thin scrollbar that shrinks correctly inside flex and grid parents.
6
7
 
7
8
  ## When to use
8
9
  - A list, feed or panel body with a fixed height that must scroll on its own.
9
10
  - A horizontal strip of chips or filters that may overflow the row (`axis="horizontal"`).
11
+ - A row whose overflow must be hinted without a scrollbar (`fade`, `scrollbar="hidden"`): tab rows, segment rows, chip strips.
10
12
  - A custom panel or page column that needs the same scrollbar and overscroll rules as the kit's own overlays.
11
13
 
12
14
  ## When not to use
@@ -19,19 +21,27 @@
19
21
  import { ScrollContainer } from "prime-ui-kit";
20
22
  ```
21
23
 
24
+ ## Anatomy
25
+ ```
26
+ ScrollContainer <div> (or the `as` tag); thin scrollbar, optional edge fade
27
+ └─ children the scrolling content
28
+ ```
29
+
22
30
  ## API
23
31
 
32
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
33
+
24
34
  ### ScrollContainer
25
- `forwardRef` to the root `HTMLElement`. No `asChild`.
35
+ `ref` → `HTMLElement`. A scroll region with the kit's thin scrollbar that shrinks inside flex and grid parents; no padding of its own.
26
36
 
27
37
  | Prop | Type | Default | Description |
28
38
  |---|---|---|---|
29
- | `as` | `"div" \| "main" \| "aside" \| "section" \| "nav" \| "article"` | `"div"` | Root element. |
30
- | `axis` | `"vertical" \| "horizontal" \| "both"` | `"vertical"` | Scroll axis; the other axis is hidden (except `both`). |
39
+ | `axis` | `"vertical" \| "horizontal" \| "both"` | `"vertical"` | Scroll axis; the other axis is clipped (except `both`). |
40
+ | `fade` | `boolean` | `false` | Fades the edge where more content is hidden (`--prime-space-8` mask): horizontal for `axis="horizontal"`, vertical otherwise. Follows scroll and size changes. |
41
+ | `scrollbar` | `"thin" \| "hidden"` | `"thin"` | `thin` — the kit's quiet scrollbar; `hidden` — no scrollbar, only together with `fade` so the overflow stays visible. |
31
42
  | `overscrollBehavior` | `"auto" \| "contain" \| "none"` | `"contain"` | CSS `overscroll-behavior`; `contain` stops scroll chaining into the page. |
32
- | `className` | `string` | — | Extra class on the root (height, padding of the host). |
33
-
34
- + native `HTMLAttributes<HTMLElement>` (including `children`, `aria-*`, `tabIndex`, event handlers).
43
+ | `as` | `"div" \| "main" \| "aside" \| "section" \| "nav" \| "article"` | `"div"` | Root element; a landmark tag when the region is one. |
44
+ | `…rest` | `HTMLAttributes<HTMLElement>` | — | `children`, `className` (height, padding), `aria-label`, `tabIndex`, `role`, event handlers and the other attributes. |
35
45
 
36
46
  ## Variants
37
47
 
@@ -47,44 +57,62 @@ import { ScrollContainer } from "prime-ui-kit";
47
57
  |---|---|---|---|
48
58
  | `contain` | Reaching the end does not scroll the page behind | Nested panels, lists inside a page | yes |
49
59
  | `auto` | Browser default: scroll chains to the parent | The region is the page's main scroller and should hand off | |
50
- | `none` | No chaining and no overscroll glow/bounce | Full-screen app regions | |
60
+ | `none` | No chaining and no overscroll glow / bounce | Full-screen app regions | |
61
+
62
+ ### scrollbar
63
+ | Value | Looks like | Use when | Default |
64
+ |---|---|---|---|
65
+ | `thin` | quiet `fill-strong` thumb on a transparent track | most regions | yes |
66
+ | `hidden` | no scrollbar; content still scrolls by wheel, touch and keyboard focus | together with `fade`, where a scrollbar would cut a compact row | |
67
+
68
+ ### Flags
69
+ | Value | Looks like | Use when | Default |
70
+ |---|---|---|---|
71
+ | `fade` | the hidden edge dissolves into the surface; appears and disappears with the scroll position, without animation | strips and lists whose overflow must be hinted | off |
51
72
 
52
- **Combinations** — `axis="horizontal"` with `overscrollBehavior="contain"` (default) for strips; `as="main"` only for the one main column of a page.
73
+ `scrollbar="hidden"` without `fade` makes the overflow invisible — avoid it. `as="main"` only for the one main column of a page.
53
74
 
54
75
  ## States
55
- No interactive states and no `data-*` attributes. The scrollbar thumb uses `fill-strong`, darkening to `fill-strong-hover` on hover (WebKit); the track is transparent.
76
+ | State | Driven by | DOM |
77
+ |---|---|---|
78
+ | fade on | `fade` | `data-fade="vertical" \| "horizontal"` |
79
+ | content hidden before / after | scroll position (with `fade`), re-measured on resize and when children are added; logical in RTL | `data-overflow-start="true"`, `data-overflow-end="true"` |
80
+
81
+ The scrollbar thumb uses `fill-strong`, darkening to `fill-strong-hover` on hover (WebKit). The fade mask follows the scroll at once: scrolling is high-frequency, so nothing animates.
56
82
 
57
83
  ## Layout & spacing
58
84
  - Sets `min-width: 0` and `min-height: 0`, so it shrinks inside a flex or grid parent; give the parent (or the container) a height.
59
- - Has **no padding of its own** (foundation §7): the host either pads the scrolling element by at least `--prime-focus-space` so focus rings are not clipped, or keeps content full-bleed and uses inset focus rings. Put side padding on the scrolling element itself (e.g. through `className`), never on an outer wrapper.
85
+ - Has **no padding of its own** (foundation §7): the host either pads the scrolling element by at least `--prime-focus-space` so focus rings are not clipped, or keeps content full-bleed and uses inset focus rings. Put side padding on the scrolling element itself (through `className`), never on an outer wrapper.
60
86
 
61
87
  ## Accessibility
62
- - Renders a plain element; add `aria-label` and `tabIndex={0}` when the region has no focusable content but must be scrollable from the keyboard.
88
+
89
+ ### Keyboard
90
+ No keyboard interaction.
91
+
92
+ ### ARIA
93
+ - Renders a plain element; add `tabIndex={0}` and `aria-label` when the region has no focusable content but must scroll from the keyboard.
63
94
  - Choose a semantic `as` (`main`, `nav`, `aside`) when the region is a landmark.
64
- - No `labels`.
95
+ - `fade` is only a mask: content under it stays reachable and scrolls by wheel, touch and focus.
65
96
 
66
- ## Examples
67
- | File | Scenario | When to use this pattern |
68
- |---|---|---|
69
- | [list.tsx](examples/list.tsx) | Vertical list in a fixed-height card and a horizontal badge strip | A region inside a card or panel scrolls on its own |
70
- | [both-axes.tsx](examples/both-axes.tsx) | `axis="both"` wide grid with padding on the scroller; `overscrollBehavior="auto"` list | Wide canvases / schedules; handing scroll to the page |
97
+ ### Labels
98
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
71
99
 
72
- ```tsx
73
- import { ScrollContainer } from "prime-ui-kit";
100
+ No `labels`.
74
101
 
75
- export function Example() {
76
- return (
77
- <ScrollContainer aria-label="Журнал событий" className="eventLog">
78
- <p>Длинный текст…</p>
79
- </ScrollContainer>
80
- );
81
- }
82
- ```
102
+ ## Examples
103
+ | Example | Shows |
104
+ |---|---|
105
+ | [overview.tsx](examples/overview.tsx) | A feed that scrolls on its own inside a fixed-height card, with the kit's thin scrollbar. |
106
+ | [variants.tsx](examples/variants.tsx) | A strip that scrolls sideways and a wide schedule that scrolls both ways — `axis`. |
107
+ | [edge-fade.tsx](examples/edge-fade.tsx) | Edges fade where more content is hidden; the horizontal strip also hides its scrollbar — `fade`, `scrollbar`. |
108
+ | [overscroll.tsx](examples/overscroll.tsx) | At the end of the list the scroll passes on to the page instead of stopping — `overscrollBehavior`. |
83
109
 
84
110
  ## Mistakes
85
111
  - `overflow: auto` on a plain `div` inside a flex column that never shrinks → use ScrollContainer (it sets `min-height: 0`).
86
112
  - Padding on a wrapper around the scroller → put the padding on the ScrollContainer itself.
113
+ - A hand-made edge-fade mask or hidden scrollbar → `fade` and `scrollbar="hidden"`.
87
114
  - Wrapping a Modal body or Dropdown panel in another ScrollContainer → they already scroll.
88
115
 
89
116
  ## Related
90
- [AppShell](../../layout/app-shell/COMPONENT.md) · [Modal](../modal/COMPONENT.md) · [DataTable](../data-table/COMPONENT.md)
117
+ - **Built from:** —
118
+ - **See also:** [AppShell](../../layout/app-shell/COMPONENT.md), [Tabs](../tabs/COMPONENT.md), [SegmentedControl](../segmented-control/COMPONENT.md), [DataTable](../data-table/COMPONENT.md)
@@ -0,0 +1,53 @@
1
+ /** Edges fade where more content is hidden; the horizontal strip also hides its scrollbar — `fade`, `scrollbar`. */
2
+ import { Badge, Card, ScrollContainer, Typography } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ const EVENTS = [
7
+ "Заказ № 1040 оплачен",
8
+ "Счёт № 318 выставлен",
9
+ "Заказ № 1041 передан в доставку",
10
+ "Возврат по заказу № 1032 одобрен",
11
+ "Заказ № 1042 оплачен",
12
+ "Акт № 77 подписан",
13
+ "Заказ № 1043 отменён клиентом",
14
+ "Счёт № 319 оплачен",
15
+ "Заказ № 1044 собран на складе",
16
+ "Заказ № 1045 оплачен",
17
+ ];
18
+ const TAGS = ["Новые", "В работе", "Ждут оплаты", "Отгружены", "Возвраты", "Архив", "Черновики"];
19
+
20
+ export default function ScrollContainerEdgeFadeExample() {
21
+ return (
22
+ <div className={styles.layout}>
23
+ <Card.Root role="region" className={styles.card} aria-label="Лента событий">
24
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
25
+ Лента событий
26
+ </Typography>
27
+ <ScrollContainer fade>
28
+ <ul className={styles.list}>
29
+ {EVENTS.map((event) => (
30
+ <li key={event}>
31
+ <Typography as="span" variant="body-m" tone="secondary">
32
+ {event}
33
+ </Typography>
34
+ </li>
35
+ ))}
36
+ </ul>
37
+ </ScrollContainer>
38
+ </Card.Root>
39
+ <Card.Root role="region" className={styles.card} aria-label="Фильтры">
40
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
41
+ Фильтры
42
+ </Typography>
43
+ <ScrollContainer axis="horizontal" fade scrollbar="hidden">
44
+ <div className={styles.strip}>
45
+ {TAGS.map((tag) => (
46
+ <Badge.Root key={tag}>{tag}</Badge.Root>
47
+ ))}
48
+ </div>
49
+ </ScrollContainer>
50
+ </Card.Root>
51
+ </div>
52
+ );
53
+ }
@@ -1,4 +1,4 @@
1
- /* Layout for the ScrollContainer examples: layout and card surface only, text goes through Typography. */
1
+ /* Layout of the ScrollContainer scenarios: a fixed-height card that owns the scroll region. */
2
2
 
3
3
  .layout {
4
4
  display: grid;
@@ -7,14 +7,14 @@
7
7
  width: 100%;
8
8
  }
9
9
 
10
+ /* The Card's size: a fixed height, so the region inside scrolls. */
10
11
  .card {
11
- display: flex;
12
- flex-direction: column;
12
+ width: min(100%, calc(var(--prime-space-24) * 4));
13
13
  height: calc(var(--prime-space-24) * 2.5);
14
- overflow: hidden;
15
- border-radius: var(--prime-card-radius);
16
- background: var(--prime-color-card-bg);
17
- box-shadow: var(--prime-card-shadow);
14
+ }
15
+
16
+ .layout > .card {
17
+ width: auto;
18
18
  }
19
19
 
20
20
  .cardTitle {
@@ -0,0 +1,27 @@
1
+ /** At the end of the list the scroll passes on to the page instead of stopping — `overscrollBehavior`. */
2
+ import { Card, ScrollContainer, Typography } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ const HOURS = Array.from({ length: 12 }, (_, index) => `${String(9 + index).padStart(2, "0")}:00`);
7
+
8
+ export default function ScrollContainerOverscrollExample() {
9
+ return (
10
+ <Card.Root role="region" className={styles.card} aria-label="Журнал">
11
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
12
+ Журнал выгрузок
13
+ </Typography>
14
+ <ScrollContainer overscrollBehavior="auto" tabIndex={0} aria-label="Журнал выгрузок">
15
+ <ul className={styles.list}>
16
+ {HOURS.map((hour) => (
17
+ <li key={hour}>
18
+ <Typography as="span" variant="body-m" tone="secondary">
19
+ {hour} — отчёт выгружен
20
+ </Typography>
21
+ </li>
22
+ ))}
23
+ </ul>
24
+ </ScrollContainer>
25
+ </Card.Root>
26
+ );
27
+ }
@@ -0,0 +1,27 @@
1
+ /** A feed that scrolls on its own inside a fixed-height card, with the kit's thin scrollbar. */
2
+ import { Card, ScrollContainer, Typography } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ const EVENTS = Array.from({ length: 16 }, (_, index) => `Заказ № ${1040 + index} оплачен`);
7
+
8
+ export default function ScrollContainerOverviewExample() {
9
+ return (
10
+ <Card.Root role="region" className={styles.card} aria-label="Лента событий">
11
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
12
+ Лента событий
13
+ </Typography>
14
+ <ScrollContainer>
15
+ <ul className={styles.list}>
16
+ {EVENTS.map((event) => (
17
+ <li key={event}>
18
+ <Typography as="span" variant="body-m" tone="secondary">
19
+ {event}
20
+ </Typography>
21
+ </li>
22
+ ))}
23
+ </ul>
24
+ </ScrollContainer>
25
+ </Card.Root>
26
+ );
27
+ }
@@ -0,0 +1,54 @@
1
+ /** A strip that scrolls sideways and a wide schedule that scrolls both ways — `axis`. */
2
+ import { Badge, Card, ScrollContainer, Typography } from "prime-ui-kit";
3
+
4
+ import styles from "./examples.module.css";
5
+
6
+ const TAGS = ["Новые", "В работе", "Ждут оплаты", "Отгружены", "Возвраты", "Архив", "Черновики"];
7
+ const HOURS = Array.from({ length: 12 }, (_, index) => `${String(9 + index).padStart(2, "0")}:00`);
8
+ const ROOMS = Array.from({ length: 16 }, (_, index) => `Зал ${index + 1}`);
9
+
10
+ export default function ScrollContainerVariantsExample() {
11
+ return (
12
+ <div className={styles.layout}>
13
+ <Card.Root role="region" className={styles.card} aria-label="Фильтры">
14
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
15
+ horizontal
16
+ </Typography>
17
+ <ScrollContainer axis="horizontal">
18
+ <div className={styles.strip}>
19
+ {TAGS.map((tag) => (
20
+ <Badge.Root key={tag}>{tag}</Badge.Root>
21
+ ))}
22
+ </div>
23
+ </ScrollContainer>
24
+ </Card.Root>
25
+ <Card.Root role="region" className={styles.card} aria-label="Расписание залов">
26
+ <Typography as="h3" variant="title-s" className={styles.cardTitle}>
27
+ both
28
+ </Typography>
29
+ <ScrollContainer
30
+ axis="both"
31
+ tabIndex={0}
32
+ aria-label="Сетка расписания"
33
+ className={styles.canvas}
34
+ >
35
+ <div className={styles.grid}>
36
+ {ROOMS.flatMap((room) =>
37
+ HOURS.map((hour) => (
38
+ <Typography
39
+ key={`${room}-${hour}`}
40
+ as="div"
41
+ variant="caption"
42
+ tone="secondary"
43
+ className={styles.cell}
44
+ >
45
+ {room} · {hour}
46
+ </Typography>
47
+ )),
48
+ )}
49
+ </div>
50
+ </ScrollContainer>
51
+ </Card.Root>
52
+ </div>
53
+ );
54
+ }
@@ -1,20 +1,21 @@
1
1
  # SegmentedControl
2
2
 
3
3
  **Category:** selection
4
+ **Kind:** control
4
5
 
5
6
  > A switch between 2–5 mutually exclusive options or modes that takes effect immediately.
6
7
 
7
8
  ## When to use
8
- - Choosing one value or view mode with an instant effect: report period, list/board/calendar view, theme.
9
+ - Choosing one value or view mode with an instant effect: report period, list / board / calendar view, theme.
9
10
  - A compact one-of-many choice inside a toolbar, next to inputs and buttons of the same size.
10
11
  - A status picker where each option has its own palette hue (`color` on the item).
11
12
  - A status overview where each option carries a metric (two-line segments with `Count` and `Description`).
12
13
 
13
14
  ## When not to use
14
- - Switching between panels of content (navigation) → use [Tabs](../tabs/COMPONENT.md) instead.
15
- - One choice with descriptions in a form, or more than 5 options → use [Radio](../radio/COMPONENT.md) or [Select](../select/COMPONENT.md) instead.
16
- - A single on/off setting → use [Switch](../switch/COMPONENT.md) instead.
17
- - Several actions in a row (not a selection) → use [ButtonGroup](../button-group/COMPONENT.md) instead.
15
+ - Switching between panels of content (navigation) → use [Tabs](../tabs/COMPONENT.md).
16
+ - One choice with descriptions in a form, or more than 5 options → use [Radio](../radio/COMPONENT.md) or [Select](../select/COMPONENT.md).
17
+ - A single on/off setting → use [Switch](../switch/COMPONENT.md).
18
+ - Several actions in a row (not a selection) → use [ButtonGroup](../button-group/COMPONENT.md).
18
19
 
19
20
  ## Import
20
21
  ```tsx
@@ -23,102 +24,95 @@ import { SegmentedControl } from "prime-ui-kit";
23
24
 
24
25
  ## Anatomy
25
26
  ```
26
- SegmentedControl.Root role="radiogroup"; track + sliding thumb, keyboard handling
27
+ SegmentedControl.Root role="radiogroup"; track + sliding thumb, scrolling row, keyboard
27
28
  └─ SegmentedControl.Item role="radio" button, one option
28
29
  ├─ SegmentedControl.Icon icon slot (optional; icon-only → square segment)
29
30
  ├─ SegmentedControl.Label title, truncates (optional; plain text is wrapped automatically)
30
- ├─ SegmentedControl.Count counter badge after the label (optional)
31
+ ├─ SegmentedControl.Count counter Badge after the label (optional)
31
32
  └─ SegmentedControl.Description second line; makes the segment two-line (optional)
32
33
  ```
33
34
 
34
35
  ## API
35
36
 
37
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
38
+
36
39
  ### SegmentedControl.Root
40
+ `ref` → `HTMLDivElement`. `<div role="radiogroup">`: the track with the sliding thumb, keyboard handling and a horizontally scrolling `ScrollContainer` row.
41
+
37
42
  | Prop | Type | Default | Description |
38
43
  |---|---|---|---|
39
- | `value` | `string` | — | Controlled selected value; use with `onValueChange`. |
40
- | `defaultValue` | `string` | `""` | Initial value in uncontrolled mode; `""` = nothing selected. |
41
- | `onValueChange` | `(value: string) => void` | — | Called when the selection changes (click or keyboard). |
44
+ | `value` | `string` | — | Selected value (controlled). |
45
+ | `defaultValue` | `string` | `""` | Initial value (uncontrolled); `""` — nothing selected. |
46
+ | `onValueChange` | `(value: string) => void` | — | Called with the new value on click or arrow keys. |
42
47
  | `disabled` | `boolean` | `false` | Disables the whole group. |
43
- | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `"m"` | Size tier; outer height equals the control height of the tier. |
44
- | `fullWidth` | `boolean` | `false` | Stretch to the container; single-line segments share the width equally and truncate. |
45
- | `aria-label` | `string` | — | Accessible name of the radiogroup. |
46
- | `aria-labelledby` | `string` | — | Id of the element that names the group. |
47
- | `children` | `ReactNode` | — (required) | `SegmentedControl.Item` elements (may be wrapped, e.g. in `Tooltip.Trigger`). |
48
- | `className` | `string` | — | Class on the root `div`. |
49
-
50
- No other native props, no ref forwarding.
48
+ | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `host tier, else "m"` | Control tier; the outer height equals the control height 28 · 32 · 36 · 40 · 48. Without it the tier of its host (a toolbar, a panel with a size), else `m`. |
49
+ | `fullWidth` | `boolean` | `false` | Fills the container; single-line segments share the width equally and truncate. |
50
+ | `children` | `ReactNode` | — | `SegmentedControl.Item`s (may be wrapped, e.g. in `Tooltip.Trigger`). |
51
+ | `…rest` | `Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" \| "onChange">` | — | `aria-label` / `aria-labelledby` (name the group), `className` and the other div attributes. |
51
52
 
52
53
  ### SegmentedControl.Item
54
+ `ref` → `HTMLButtonElement`. One option, a `<button role="radio">` with roving `tabIndex`; plain text is wrapped to truncate.
55
+
53
56
  | Prop | Type | Default | Description |
54
57
  |---|---|---|---|
55
58
  | `value` | `string` | — (required) | Option value compared with the root value. |
56
- | `disabled` | `boolean` | `false` | Disables this option; skipped by arrow keys. |
57
- | `color` | `"gray" \| "blue" \| "green" \| "orange" \| "red" \| "yellow" \| "purple" \| "sky" \| "pink" \| "teal"` | — | Palette hue: a dot before the content; when selected the thumb takes a soft fill of the hue with a ring of it. |
58
- | `children` | `ReactNode` | — (required) | Text, `Icon`, `Label`, `Count`, `Description`. |
59
- | `className` | `string` | — | Class on the `<button>`. |
60
-
61
- + native `<button>` props except `value`, `children`, `type`, `role` (`aria-label`, `onClick`, …; `onClick` runs first and can `preventDefault()` the selection).
62
- Ref: `forwardRef` → `HTMLButtonElement`.
59
+ | `disabled` | `boolean` | `false` | Disables this option; arrow keys skip it. |
60
+ | `color` | `"gray" \| "blue" \| "green" \| "orange" \| "red" \| "yellow" \| "purple" \| "sky" \| "pink" \| "teal"` | — | Palette hue: a dot before the content; while selected the thumb takes a soft fill of the hue with a ring of it. |
61
+ | `children` | `ReactNode` | — (required) | Text, `Icon`, `Label`, `Count`, `Description`. Only an icon → square segment; give it `aria-label`. |
62
+ | `…rest` | `Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" \| "type" \| "role">` | — | `aria-label`, `onClick` (runs first and can `preventDefault()` the selection), `className` and the other button attributes. |
63
63
 
64
64
  ### SegmentedControl.Icon
65
+ `ref` → `HTMLSpanElement`. Decorative icon (`aria-hidden`) sized to the tier.
66
+
65
67
  | Prop | Type | Default | Description |
66
68
  |---|---|---|---|
67
- | `children` | `ReactNode` | — (required) | The icon; sized to the tier icon size, `aria-hidden`. |
68
- | `className` | `string` | — | Class on the `<span>`. |
69
-
70
- + native `<span>` props except `children`.
69
+ | `children` | `ReactNode` | — (required) | The icon, e.g. `<Icon name="theme.light" />`. |
70
+ | `…rest` | `Omit<HTMLAttributes<HTMLSpanElement>, "children">` | — | `className` and the other span attributes. |
71
71
 
72
72
  ### SegmentedControl.Label
73
+ `ref` → `HTMLSpanElement`. Segment title; truncates with an ellipsis. Plain text is wrapped automatically.
74
+
73
75
  | Prop | Type | Default | Description |
74
76
  |---|---|---|---|
75
- | `children` | `ReactNode` | — (required) | Segment title; truncates with an ellipsis. |
76
- | `className` | `string` | — | Class on the `<span>`. |
77
-
78
- + native `<span>` props except `children`.
77
+ | `children` | `ReactNode` | — (required) | Title text. |
78
+ | `…rest` | `Omit<HTMLAttributes<HTMLSpanElement>, "children">` | — | `className` and the other span attributes. |
79
79
 
80
80
  ### SegmentedControl.Count
81
+ `ref` → `HTMLSpanElement`. Counter `Badge` after the label, one tier below the control, tabular numbers.
82
+
81
83
  | Prop | Type | Default | Description |
82
84
  |---|---|---|---|
83
85
  | `color` | `"gray" \| "blue" \| "green" \| "orange" \| "red" \| "yellow" \| "purple" \| "sky" \| "pink" \| "teal"` | `"gray"` | Badge hue. |
84
- | `children` | `ReactNode` | — (required) | The number (tabular nums). |
85
- | `className` | `string` | — | Class on the badge. |
86
-
87
- Renders a soft `Badge` one tier below the control (`m` → `s`). No other props.
86
+ | `children` | `ReactNode` | — (required) | The number. |
87
+ | `…rest` | `Omit<HTMLAttributes<HTMLSpanElement>, "children">` | — | `className` and the other span attributes. |
88
88
 
89
89
  ### SegmentedControl.Description
90
+ `ref` → `HTMLSpanElement`. Muted second line; makes the segment two-line and becomes its `aria-describedby`.
91
+
90
92
  | Prop | Type | Default | Description |
91
93
  |---|---|---|---|
92
- | `children` | `ReactNode` | — (required) | Muted second line; wrap the key value in `<strong>` to emphasize it. |
93
- | `className` | `string` | — | Class on the `<span>`. |
94
-
95
- + native `<span>` props except `children`.
94
+ | `children` | `ReactNode` | — (required) | Second-line text; wrap a key value in `<strong>`. |
95
+ | `…rest` | `Omit<HTMLAttributes<HTMLSpanElement>, "children">` | — | `className` and the other span attributes. |
96
96
 
97
97
  ## Variants
98
- No `variant`/`tone`. Axes: `size` (Root), `fullWidth` (Root), `color` (Item, Count), structural content (icon-only, two-line).
98
+ No `variant` / `tone`. Axes: `size` and `fullWidth` (Root), `color` (Item, Count), structural content (icon-only, two-line).
99
99
 
100
100
  ### size
101
101
  | Value | Looks like | Use when | Default |
102
102
  |---|---|---|---|
103
- | `xs` | 28px track, 4px padding, track radius 8, 12/16 text | dense table toolbars next to `xs` controls | |
103
+ | `xs` | 28px track, radius 8, 12/16 text | dense table toolbars next to `xs` controls | |
104
104
  | `s` | 32px track, radius 10, 13/20 text | compact toolbars and filters | |
105
105
  | `m` | 36px track, radius 12, 14/20 text | default toolbars and page headers | yes |
106
106
  | `l` | 40px track, radius 12, 16/24 text | spacious headers next to `l` controls | |
107
107
  | `xl` | 48px track, radius 16, 16/24 text | touch-first screens, hero filters | |
108
108
 
109
- Track is `fill-muted` with a faint 1px ring; the selected segment is a floating thumb (`control-selected`, faint ring, `shadow-raised`); segment radius = track radius − 4px.
110
-
111
- ### fullWidth
112
- | Value | Looks like | Use when | Default |
113
- |---|---|---|---|
114
- | `false` | group as wide as its segments; in a narrow container it scrolls horizontally with edge fades | toolbars, inline filters | yes |
115
- | `true` | group fills the container; single-line segments are equal and truncate, two-line segments grow from their content | modals, mobile panels, overview strips | |
109
+ Track is `fill-muted` with a faint 1px ring; the selected segment is a floating thumb (`control-selected`, faint ring, `shadow-raised`); segment radius = track radius − padding. A single-line group is as tall as Button, Input, Select and Datepicker trigger of the same size.
116
110
 
117
111
  ### color (Item)
118
112
  | Value | Looks like | Use when | Default |
119
113
  |---|---|---|---|
120
114
  | none | no dot; selected thumb is neutral | ordinary modes and periods | yes |
121
- | `gray` · `blue` · `green` · `orange` · `red` · `yellow` · `purple` · `sky` · `pink` · `teal` | dot of the hue before the content; selected thumb gets the hue's soft fill and a ring of the hue text | statuses where each value has a meaning (ok/attention/broken) | |
115
+ | `gray` · `blue` · `green` · `orange` · `red` · `yellow` · `purple` · `sky` · `pink` · `teal` | dot of the hue before the content; selected thumb gets the hue's soft fill and a ring of the hue text | statuses where each value has a meaning | |
122
116
 
123
117
  ### color (Count)
124
118
  | Value | Looks like | Use when | Default |
@@ -126,76 +120,67 @@ Track is `fill-muted` with a faint 1px ring; the selected segment is a floating
126
120
  | `gray` | neutral soft badge (text wash so it reads on track and thumb) | plain counters | yes |
127
121
  | other palette hues | soft badge of the hue | the count has a status meaning | |
128
122
 
129
- ### Structural content
123
+ ### Flags
130
124
  | Value | Looks like | Use when | Default |
131
125
  |---|---|---|---|
132
- | text / icon + text | single-line segment, tier height minus padding | most cases | yes |
133
- | icon only | square segment (`data-icon-only`) | toolbar view toggles; add `aria-label` and a Tooltip | |
134
- | two-line (`Description`) | label (+count) on line 1, muted description on line 2; track grows to content (`data-two-line`) | overview strips with metrics | |
135
-
136
- **Combinations**
137
- - Item `color` + Count `color` of the same hue → redundant; use one.
138
- - Item `color` mixing coloured and plain items in one group → avoid; colour all or none.
139
- - Icon-only without `aria-label` → forbidden (no accessible name).
140
- - `fullWidth` with many long single-line labels → labels truncate; prefer content width or two-line segments.
141
-
142
- **Sizes** — single-line group height = `--prime-control-<tier>-height` (28 · 32 · 36 · 40 · 48), so it lines up with Button, Input, Select and Datepicker trigger of the same size in one row.
126
+ | `fullWidth` | fills the container; single-line segments are equal and truncate, two-line segments grow from their content | modals, mobile panels, overview strips | off |
127
+ | `disabled` | every segment disabled, thumb `fill-muted-hover` without shadow | the choice is temporarily unavailable | off |
128
+ | icon-only (only `SegmentedControl.Icon`) | square segment (`data-icon-only`) | toolbar view toggles; needs `aria-label` | — |
143
129
 
144
- **Hierarchy** — one segmented control per decision; in a toolbar keep all controls at one size (see [toolbar.tsx](examples/toolbar.tsx)).
130
+ Colour all items or none; do not give an item and its Count the same hue; prefer content width or two-line segments over `fullWidth` with many long labels.
145
131
 
146
132
  ## States
147
- | State | Driven by | DOM | Looks like |
148
- |---|---|---|---|
149
- | selected | root `value` = item `value` | `aria-checked="true"`, `data-state="checked"` | thumb under the segment, text `text-primary` |
150
- | unselected | — | `aria-checked="false"`, `data-state="unchecked"` | text `text-secondary`; hover → `text-primary` (no fill) |
151
- | no selection | `value` / `defaultValue` = `""` | thumb hidden | first enabled segment takes Tab focus |
152
- | item disabled | item `disabled` | `data-disabled="true"`, native `disabled` | text `text-disabled`, skipped by arrows |
153
- | group disabled | root `disabled` | root `data-disabled="true"`, `aria-disabled` | all segments disabled, thumb `fill-muted-hover` without shadow |
154
- | focus-visible | keyboard | — | focus ring on the segment |
133
+ | State | Driven by | DOM |
134
+ |---|---|---|
135
+ | selected | root `value` = item `value` | `aria-checked="true"`, `data-state="checked"`; thumb under the segment, `text-primary` |
136
+ | unselected | — | `aria-checked="false"`, `data-state="unchecked"`; `text-secondary`, hover → `text-primary` (no fill) |
137
+ | no selection | `value` / `defaultValue` = `""` | thumb hidden; the first enabled segment takes Tab focus |
138
+ | item disabled | item `disabled` | `data-disabled="true"`, native `disabled`, `text-disabled`, skipped by arrows |
139
+ | group disabled | root `disabled` | root `data-disabled="true"`, `aria-disabled`; every segment disabled |
140
+ | focus-visible | keyboard | focus ring inside the segment |
141
+ | overflow | row wider than the container | root `data-overflow-start` / `data-overflow-end`: edge fades in the track color |
155
142
 
156
- Root DOM: `data-size`, `data-disabled`, `data-full-width`; scroller `data-overflow-start` / `data-overflow-end` (edge fades). Item DOM: `data-state`, `data-disabled`, `data-icon-only`, `data-two-line`, `data-value`, `data-color`. The thumb slides only after a user change (`data-animate`), and not under `prefers-reduced-motion`.
157
- Controlled: `value` + `onValueChange`. Uncontrolled: `defaultValue`.
143
+ Item DOM: `data-state`, `data-disabled`, `data-icon-only`, `data-two-line`, `data-value`, `data-color`. The thumb glides (`emphasized` + `base`, `data-animate`) only into a user's choice (click, arrows); a value set from outside and layout changes snap it; it stays still under `prefers-reduced-motion`. It sits inside the segment track, which clips it, so moving the selection never changes the row's scroll area; when the row scrolls, the chosen segment is scrolled into view.
158
144
 
159
145
  ## Layout & spacing
160
146
  - Width is content-based by default; segments never wrap. In a narrow container the row scrolls horizontally with fading edges.
161
- - In a toolbar: gap `--prime-space-3` between controls; wrap the toolbar (`flex-wrap`) on narrow screens.
147
+ - In a toolbar: gap `--prime-space-3` between controls; keep every control at one size.
162
148
  - Caption under a group: gap `--prime-space-2`.
163
149
  - `fullWidth` inside modals and mobile sheets.
164
150
 
165
151
  ## Accessibility
166
- - Root `role="radiogroup"` (always name it with `aria-label` / `aria-labelledby`), `aria-disabled` when disabled.
167
- - Items are `<button role="radio" aria-checked>` with roving `tabIndex`: Tab focuses the selected item (or the first enabled one).
168
- - Keyboard: ←/↑ previous, →/↓ next (wraps, skips disabled), Home / End first / last; moving focus also selects and scrolls the item into view.
152
+
153
+ ### Keyboard
154
+ | Key | Action |
155
+ |---|---|
156
+ | `ArrowRight` · `ArrowDown` | Next option, wrapping and skipping disabled ones; focus and selection move together. |
157
+ | `ArrowLeft` · `ArrowUp` | Previous option. |
158
+ | `Home` · `End` | First and last enabled option. |
159
+ | `Tab` | Enters the group on the selected option (or the first enabled one) and leaves it. |
160
+
161
+ ### ARIA
162
+ - Root `role="radiogroup"` — always name it with `aria-label` / `aria-labelledby`; `aria-disabled` when disabled.
163
+ - Items are `<button role="radio" aria-checked>` with roving `tabIndex`.
169
164
  - Two-line items: `aria-labelledby` = label (+ count), `aria-describedby` = description.
170
- - Icons are `aria-hidden`; icon-only items need `aria-label`.
171
- - No `labels` keys.
165
+ - Icons are `aria-hidden`; icon-only items need `aria-label` (and a Tooltip for sighted users).
172
166
 
173
- ## Examples
174
- | File | Scenario | When to use this pattern |
175
- |---|---|---|
176
- | [sizes.tsx](examples/sizes.tsx) | All tiers in a row with Input and Button | Aligning with other controls |
177
- | [item-content.tsx](examples/item-content.tsx) | Icon + text, icon-only with Tooltip, Count | Choosing segment content |
178
- | [two-line.tsx](examples/two-line.tsx) | `fullWidth` two-line segments with Label, Count (colours), Description | Status overview with metrics |
179
- | [full-width.tsx](examples/full-width.tsx) | Content width vs `fullWidth` vs scrolling in a narrow container | Deciding how the group fills its container |
180
- | [surfaces.tsx](examples/surfaces.tsx) | Canvas, card, nested card, modal | Checking contrast on any host |
181
- | [colors.tsx](examples/colors.tsx) | Item `color` with tinted thumb | Status picker |
182
- | [states.tsx](examples/states.tsx) | Selected, no selection, disabled item, disabled group | Reference for every state |
183
- | [controlled.tsx](examples/controlled.tsx) | `value` + `onValueChange` | Selection drives other content |
184
- | [toolbar.tsx](examples/toolbar.tsx) | Search, view and period switches, export button at size `m` | Toolbars |
167
+ ### Labels
168
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
185
169
 
186
- ```tsx
187
- import { SegmentedControl } from "prime-ui-kit";
170
+ No `labels`.
188
171
 
189
- export function PeriodSwitch() {
190
- return (
191
- <SegmentedControl.Root defaultValue="week" aria-label="Период">
192
- <SegmentedControl.Item value="day">День</SegmentedControl.Item>
193
- <SegmentedControl.Item value="week">Неделя</SegmentedControl.Item>
194
- <SegmentedControl.Item value="month">Месяц</SegmentedControl.Item>
195
- </SegmentedControl.Root>
196
- );
197
- }
198
- ```
172
+ ## Examples
173
+ | Example | Shows |
174
+ |---|---|
175
+ | [overview.tsx](examples/overview.tsx) | One value out of a few, with a sliding thumb on the chosen segment — `defaultValue`, `aria-label`. |
176
+ | [sizes.tsx](examples/sizes.tsx) | Every size tier; the outer height equals the control height of the same tier — `size`. |
177
+ | [states.tsx](examples/states.tsx) | No selection yet, a disabled segment and a disabled group next to the default — `disabled`. |
178
+ | [with-icon.tsx](examples/with-icon.tsx) | An icon before the label and square icon-only segments named for screen readers — `SegmentedControl.Icon`, `aria-label`. |
179
+ | [colors.tsx](examples/colors.tsx) | A status per option: a dot of its hue before the label and a tinted thumb when chosen — `color`. |
180
+ | [full-width.tsx](examples/full-width.tsx) | The group fills its column; segments share the width equally and truncate long labels — `fullWidth`. |
181
+ | [scroll.tsx](examples/scroll.tsx) | Segments never wrap: in a column narrower than the row it scrolls with edge fades and brings the chosen segment into view. |
182
+ | [two-line.tsx](examples/two-line.tsx) | A label and a counter on the first line, a metric on the second — `SegmentedControl.Label`, `SegmentedControl.Count`, `SegmentedControl.Description`. |
183
+ | [controlled.tsx](examples/controlled.tsx) | The parent owns the choice and updates other content from it — `value`, `onValueChange`. |
199
184
 
200
185
  ## Mistakes
201
186
  - Using it as tabs that show different panels → use `Tabs`.
@@ -206,4 +191,5 @@ export function PeriodSwitch() {
206
191
  - Expecting segments to wrap on narrow screens → they scroll; use `fullWidth` or fewer options.
207
192
 
208
193
  ## Related
209
- [Tabs](../tabs/COMPONENT.md) · [Radio](../radio/COMPONENT.md) · [Switch](../switch/COMPONENT.md) · [Badge](../badge/COMPONENT.md) · [Tooltip](../tooltip/COMPONENT.md)
194
+ - **Built from:** [ScrollContainer](../scroll-container/COMPONENT.md), [Badge](../badge/COMPONENT.md)
195
+ - **See also:** [Tabs](../tabs/COMPONENT.md), [Radio](../radio/COMPONENT.md), [Switch](../switch/COMPONENT.md), [ButtonGroup](../button-group/COMPONENT.md), [Tooltip](../tooltip/COMPONENT.md)