prime-ui-kit 0.9.0 → 0.9.2

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 (982) hide show
  1. package/README.md +61 -47
  2. package/dist/chunks/chunk-IQELQNMR.js +379 -0
  3. package/dist/chunks/chunk-LXGRKN34.js +13260 -0
  4. package/dist/chunks/chunk-ZEFCDEEQ.js +3493 -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 +35 -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 +40 -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 +102 -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 +44 -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 +13 -21
  54. package/dist/components/dropdown/Dropdown.d.ts +78 -84
  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 +58 -42
  60. package/dist/components/input/Input.d.ts +35 -37
  61. package/dist/components/kanban/Kanban.d.ts +129 -0
  62. package/dist/components/kbd/Kbd.d.ts +6 -12
  63. package/dist/components/label/Label.d.ts +18 -15
  64. package/dist/components/link-button/LinkButton.d.ts +14 -15
  65. package/dist/components/login-form/LoginForm.d.ts +115 -0
  66. package/dist/components/modal/DialogParts.d.ts +57 -16
  67. package/dist/components/modal/Modal.d.ts +9 -20
  68. package/dist/components/native-select/NativeSelect.d.ts +28 -0
  69. package/dist/components/notification/Notification.d.ts +50 -16
  70. package/dist/components/notification/NotificationStore.d.ts +2 -6
  71. package/dist/components/page-content/PageContent.d.ts +43 -52
  72. package/dist/components/page-toolbar/PageToolbar.d.ts +53 -0
  73. package/dist/components/pagination/Pagination.d.ts +11 -23
  74. package/dist/components/popover/Popover.d.ts +62 -26
  75. package/dist/components/progress-bar/ProgressBar.d.ts +17 -13
  76. package/dist/components/progress-circle/ProgressCircle.d.ts +14 -15
  77. package/dist/components/radio/Radio.d.ts +46 -54
  78. package/dist/components/scroll-container/ScrollContainer.d.ts +10 -13
  79. package/dist/components/segmented-control/SegmentedControl.d.ts +20 -29
  80. package/dist/components/select/Select.d.ts +54 -135
  81. package/dist/components/select/SelectItem.d.ts +68 -0
  82. package/dist/components/select/selectContext.d.ts +61 -0
  83. package/dist/components/skeleton/Skeleton.d.ts +22 -0
  84. package/dist/components/slider/Slider.d.ts +24 -16
  85. package/dist/components/smart-filter/SmartFilter.d.ts +105 -0
  86. package/dist/components/smart-filter/model.d.ts +33 -0
  87. package/dist/components/spinner/Spinner.d.ts +22 -0
  88. package/dist/components/stepper/Stepper.d.ts +32 -42
  89. package/dist/components/switch/Switch.d.ts +19 -37
  90. package/dist/components/tabs/Tabs.d.ts +65 -38
  91. package/dist/components/tag-select/TagOptionMenu.d.ts +29 -0
  92. package/dist/components/tag-select/TagSelect.d.ts +15 -16
  93. package/dist/components/tag-select/useChipOverflow.d.ts +19 -0
  94. package/dist/components/textarea/Textarea.d.ts +16 -31
  95. package/dist/components/thumbnail/Thumbnail.d.ts +41 -0
  96. package/dist/components/timeline/Timeline.d.ts +46 -61
  97. package/dist/components/tooltip/Tooltip.d.ts +21 -17
  98. package/dist/components/typography/Typography.d.ts +5 -21
  99. package/dist/hooks/useControllableState.d.ts +0 -1
  100. package/dist/hooks/useEdgeOverflow.d.ts +12 -0
  101. package/dist/hooks/useEnterConfirm.d.ts +15 -0
  102. package/dist/hooks/useImageStatus.d.ts +19 -0
  103. package/dist/hooks/useInertSiblings.d.ts +9 -0
  104. package/dist/hooks/useMediaQuery.d.ts +7 -0
  105. package/dist/hooks/useMergedRefs.d.ts +6 -2
  106. package/dist/hooks/useModalLayer.d.ts +22 -0
  107. package/dist/hooks/usePosition.d.ts +46 -40
  108. package/dist/hooks/usePresence.d.ts +0 -1
  109. package/dist/hooks/useScrollLock.d.ts +3 -5
  110. package/dist/hooks/useStateSwap.d.ts +8 -0
  111. package/dist/hooks/useSwipeDismiss.d.ts +34 -0
  112. package/dist/icons/Icon.d.ts +24 -7
  113. package/dist/icons/index.d.ts +2 -44
  114. package/dist/icons/registry.d.ts +85 -0
  115. package/dist/index.css +7053 -6846
  116. package/dist/index.d.ts +0 -1
  117. package/dist/index.js +106 -13830
  118. package/dist/internal/AnchorRectContext.d.ts +12 -0
  119. package/dist/internal/ChoiceField.d.ts +34 -0
  120. package/dist/internal/ControlSizeContext.d.ts +6 -2
  121. package/dist/internal/FieldFrame.d.ts +47 -8
  122. package/dist/internal/HighlightMatch.d.ts +13 -0
  123. package/dist/internal/MenuGroup.d.ts +8 -0
  124. package/dist/internal/Portal.d.ts +0 -1
  125. package/dist/internal/VisuallyHidden.d.ts +11 -0
  126. package/dist/internal/context.d.ts +0 -1
  127. package/dist/internal/cx.d.ts +0 -1
  128. package/dist/internal/data-attributes.d.ts +0 -1
  129. package/dist/internal/fieldClasses.d.ts +9 -0
  130. package/dist/internal/formatLabel.d.ts +6 -0
  131. package/dist/internal/highlightTsxHtml.d.ts +1 -2
  132. package/dist/internal/iconBox.d.ts +9 -0
  133. package/dist/internal/iconLayout.d.ts +15 -0
  134. package/dist/internal/imageSlot.d.ts +29 -0
  135. package/dist/internal/layoutPxFromPrimitives.d.ts +2 -3
  136. package/dist/internal/listbox.d.ts +40 -0
  137. package/dist/internal/mergeRefs.d.ts +4 -2
  138. package/dist/internal/overlay/FloatingPanel.d.ts +36 -0
  139. package/dist/internal/overlay/focus.d.ts +14 -0
  140. package/dist/internal/overlay/layerStack.d.ts +41 -0
  141. package/dist/internal/overlay/useFloatingLayer.d.ts +70 -0
  142. package/dist/internal/polymorphic.d.ts +9 -0
  143. package/dist/internal/progressSegments.d.ts +63 -0
  144. package/dist/internal/rovingFocus.d.ts +18 -0
  145. package/dist/internal/scrollAncestors.d.ts +1 -2
  146. package/dist/internal/slot.d.ts +11 -5
  147. package/dist/internal/states.d.ts +3 -2
  148. package/dist/internal/swatch.d.ts +56 -0
  149. package/dist/internal/touchTarget.d.ts +4 -0
  150. package/dist/layout/app-header/AppHeader.d.ts +110 -0
  151. package/dist/layout/app-shell/AppShell.d.ts +47 -22
  152. package/dist/layout/bottom-nav/BottomNav.d.ts +80 -0
  153. package/dist/layout/index.d.ts +6 -3
  154. package/dist/layout/sidebar/Sidebar.d.ts +206 -35
  155. package/dist/theme/applyTheme.d.ts +0 -1
  156. package/dist/tokens/naming.d.ts +6 -0
  157. package/dist/tokens/primitives.d.ts +26 -80
  158. package/dist/tokens/semantic.d.ts +122 -25
  159. package/dist/tokens/themes/dark.d.ts +7 -1
  160. package/package.json +30 -24
  161. package/src/components/accordion/COMPONENT.md +91 -101
  162. package/src/components/accordion/examples/collapsible.tsx +27 -0
  163. package/src/components/accordion/examples/controlled.tsx +36 -0
  164. package/src/components/accordion/examples/examples.module.css +6 -39
  165. package/src/components/accordion/examples/multiple.tsx +31 -0
  166. package/src/components/accordion/examples/overview.tsx +39 -0
  167. package/src/components/accordion/examples/sizes.tsx +14 -25
  168. package/src/components/accordion/examples/states.tsx +23 -48
  169. package/src/components/accordion/examples/variants.tsx +35 -0
  170. package/src/components/accordion/examples/with-icon.tsx +47 -0
  171. package/src/components/avatar/COMPONENT.md +88 -153
  172. package/src/components/avatar/examples/examples.module.css +6 -44
  173. package/src/components/avatar/examples/overview.tsx +18 -0
  174. package/src/components/avatar/examples/presence.tsx +20 -17
  175. package/src/components/avatar/examples/sizes.tsx +8 -10
  176. package/src/components/avatar/examples/src-from-state.tsx +4 -5
  177. package/src/components/avatar/examples/states.tsx +17 -27
  178. package/src/components/avatar/examples/team-group.tsx +21 -0
  179. package/src/components/avatar/examples/variants.tsx +40 -0
  180. package/src/components/badge/COMPONENT.md +113 -122
  181. package/src/components/{tag → badge}/examples/applied-filters.tsx +10 -11
  182. package/src/components/badge/examples/examples.module.css +14 -59
  183. package/src/components/badge/examples/filter-values.tsx +39 -0
  184. package/src/components/badge/examples/in-controls.tsx +14 -26
  185. package/src/components/badge/examples/overview.tsx +13 -0
  186. package/src/components/badge/examples/sizes.tsx +8 -10
  187. package/src/components/badge/examples/states.tsx +35 -29
  188. package/src/components/badge/examples/variants.tsx +27 -36
  189. package/src/components/badge/examples/with-icon.tsx +50 -0
  190. package/src/components/banner/COMPONENT.md +89 -94
  191. package/src/components/banner/examples/dismissible.tsx +38 -0
  192. package/src/components/banner/examples/examples.module.css +6 -22
  193. package/src/components/banner/examples/narrow.tsx +23 -0
  194. package/src/components/banner/examples/overview.tsx +18 -0
  195. package/src/components/banner/examples/page-strip.tsx +53 -0
  196. package/src/components/banner/examples/sizes.tsx +22 -21
  197. package/src/components/banner/examples/structure.tsx +45 -0
  198. package/src/components/banner/examples/variants.tsx +28 -55
  199. package/src/components/breadcrumb/COMPONENT.md +55 -59
  200. package/src/components/breadcrumb/examples/ellipsis.tsx +12 -0
  201. package/src/components/breadcrumb/examples/examples.module.css +3 -52
  202. package/src/components/breadcrumb/examples/overflow.tsx +26 -0
  203. package/src/components/breadcrumb/examples/overview.tsx +12 -0
  204. package/src/components/breadcrumb/examples/sizes.tsx +11 -14
  205. package/src/components/breadcrumb/examples/with-icon.tsx +14 -0
  206. package/src/components/button/COMPONENT.md +65 -66
  207. package/src/components/button/examples/as-child.tsx +8 -32
  208. package/src/components/button/examples/examples.module.css +18 -76
  209. package/src/components/button/examples/in-form.tsx +20 -14
  210. package/src/components/button/examples/on-colored-host.tsx +29 -0
  211. package/src/components/button/examples/overview.tsx +13 -0
  212. package/src/components/button/examples/sizes.tsx +7 -9
  213. package/src/components/button/examples/states.tsx +18 -28
  214. package/src/components/button/examples/variants.tsx +31 -0
  215. package/src/components/button/examples/with-icon.tsx +35 -23
  216. package/src/components/button-group/COMPONENT.md +64 -55
  217. package/src/components/button-group/examples/controlled.tsx +3 -3
  218. package/src/components/button-group/examples/examples.module.css +4 -39
  219. package/src/components/button-group/examples/full-width.tsx +10 -14
  220. package/src/components/button-group/examples/in-form.tsx +3 -3
  221. package/src/components/button-group/examples/orientation.tsx +6 -8
  222. package/src/components/button-group/examples/overview.tsx +12 -0
  223. package/src/components/button-group/examples/sizes.tsx +8 -10
  224. package/src/components/button-group/examples/states.tsx +28 -7
  225. package/src/components/button-group/examples/with-icon.tsx +45 -0
  226. package/src/components/card/COMPONENT.md +99 -298
  227. package/src/components/card/examples/{content.tsx → content-templates.tsx} +23 -29
  228. package/src/components/card/examples/examples.module.css +0 -8
  229. package/src/components/card/examples/flat.tsx +9 -14
  230. package/src/components/card/examples/kpi-media.tsx +42 -0
  231. package/src/components/card/examples/narrow.tsx +47 -0
  232. package/src/components/card/examples/{settings.tsx → overview.tsx} +7 -8
  233. package/src/components/card/examples/panel-chart.tsx +26 -34
  234. package/src/components/card/examples/{metrics.tsx → variants.tsx} +12 -18
  235. package/src/components/checkbox/COMPONENT.md +92 -96
  236. package/src/components/checkbox/examples/controlled.tsx +41 -0
  237. package/src/components/checkbox/examples/examples.module.css +47 -43
  238. package/src/components/checkbox/examples/in-form.tsx +34 -0
  239. package/src/components/checkbox/examples/indicator.tsx +54 -0
  240. package/src/components/checkbox/examples/overview.tsx +10 -0
  241. package/src/components/checkbox/examples/sizes.tsx +5 -10
  242. package/src/components/checkbox/examples/states.tsx +42 -23
  243. package/src/components/checkbox/examples/without-label.tsx +3 -7
  244. package/src/components/code-block/COMPONENT.md +55 -57
  245. package/src/components/code-block/examples/color-scheme.tsx +4 -15
  246. package/src/components/code-block/examples/examples.module.css +9 -40
  247. package/src/components/code-block/examples/{long-lines.tsx → narrow.tsx} +3 -4
  248. package/src/components/code-block/examples/overview.tsx +19 -0
  249. package/src/components/code-block/examples/variants.tsx +12 -21
  250. package/src/components/color-picker/COMPONENT.md +196 -165
  251. package/src/components/color-picker/examples/controlled.tsx +37 -0
  252. package/src/components/color-picker/examples/examples.module.css +19 -88
  253. package/src/components/color-picker/examples/formats.tsx +13 -18
  254. package/src/components/color-picker/examples/in-form.tsx +44 -0
  255. package/src/components/color-picker/examples/overview.tsx +37 -0
  256. package/src/components/color-picker/examples/panel.tsx +12 -13
  257. package/src/components/color-picker/examples/presets-sizes.tsx +15 -20
  258. package/src/components/color-picker/examples/presets.tsx +33 -0
  259. package/src/components/color-picker/examples/sizes.tsx +26 -0
  260. package/src/components/color-picker/examples/states.tsx +4 -14
  261. package/src/components/color-picker/examples/validation.tsx +18 -0
  262. package/src/components/color-swatches/COMPONENT.md +145 -0
  263. package/src/components/color-swatches/examples/controlled.tsx +22 -0
  264. package/src/components/color-swatches/examples/examples.module.css +19 -0
  265. package/src/components/color-swatches/examples/in-form.tsx +35 -0
  266. package/src/components/color-swatches/examples/overview.tsx +6 -0
  267. package/src/components/color-swatches/examples/sizes.tsx +19 -0
  268. package/src/components/color-swatches/examples/states.tsx +20 -0
  269. package/src/components/color-swatches/examples/wrapping.tsx +12 -0
  270. package/src/components/command-menu/COMPONENT.md +117 -180
  271. package/src/components/command-menu/examples/controlled-open.tsx +29 -0
  272. package/src/components/command-menu/examples/controlled.tsx +19 -26
  273. package/src/components/command-menu/examples/dismiss.tsx +39 -0
  274. package/src/components/command-menu/examples/overview.tsx +61 -0
  275. package/src/components/command-menu/examples/sizes.tsx +30 -51
  276. package/src/components/command-menu/examples/states.tsx +6 -16
  277. package/src/components/command-menu/examples/structure.tsx +54 -0
  278. package/src/components/crossfade/COMPONENT.md +104 -0
  279. package/src/components/crossfade/examples/examples.module.css +65 -0
  280. package/src/components/crossfade/examples/overview.tsx +102 -0
  281. package/src/components/crossfade/examples/record-switch.tsx +67 -0
  282. package/src/components/data-table/COMPONENT.md +181 -182
  283. package/src/components/data-table/examples/appearance.tsx +31 -34
  284. package/src/components/data-table/examples/columns-visibility.tsx +167 -0
  285. package/src/components/data-table/examples/content-width.tsx +46 -26
  286. package/src/components/data-table/examples/controlled.tsx +56 -0
  287. package/src/components/data-table/examples/detail-panel.tsx +23 -28
  288. package/src/components/data-table/examples/examples.module.css +20 -91
  289. package/src/components/data-table/examples/infinite-scroll.tsx +17 -18
  290. package/src/components/data-table/examples/narrow.tsx +28 -38
  291. package/src/components/data-table/examples/nested-rows.tsx +32 -54
  292. package/src/components/data-table/examples/numeric.tsx +10 -19
  293. package/src/components/data-table/examples/overview.tsx +54 -0
  294. package/src/components/data-table/examples/selection.tsx +11 -15
  295. package/src/components/data-table/examples/sizes.tsx +22 -33
  296. package/src/components/data-table/examples/states.tsx +23 -24
  297. package/src/components/data-table/examples/sticky.tsx +17 -24
  298. package/src/components/data-table/examples/toolbar.tsx +21 -23
  299. package/src/components/datepicker/COMPONENT.md +152 -164
  300. package/src/components/datepicker/examples/controlled-open.tsx +32 -0
  301. package/src/components/datepicker/examples/controlled.tsx +39 -0
  302. package/src/components/datepicker/examples/examples.module.css +9 -23
  303. package/src/components/datepicker/examples/in-form.tsx +32 -45
  304. package/src/components/datepicker/examples/inline-panel.tsx +3 -3
  305. package/src/components/datepicker/examples/narrow.tsx +1 -1
  306. package/src/components/datepicker/examples/overview.tsx +6 -0
  307. package/src/components/datepicker/examples/range-presets.tsx +6 -5
  308. package/src/components/datepicker/examples/sizes.tsx +7 -10
  309. package/src/components/datepicker/examples/states.tsx +9 -30
  310. package/src/components/datepicker/examples/validation.tsx +26 -0
  311. package/src/components/datepicker/examples/yearless.tsx +9 -8
  312. package/src/components/digit-input/COMPONENT.md +96 -58
  313. package/src/components/digit-input/examples/controlled.tsx +6 -15
  314. package/src/components/digit-input/examples/examples.module.css +13 -38
  315. package/src/components/digit-input/examples/full-width.tsx +13 -0
  316. package/src/components/digit-input/examples/grouped.tsx +11 -0
  317. package/src/components/digit-input/examples/in-form.tsx +32 -0
  318. package/src/components/digit-input/examples/on-complete.tsx +20 -0
  319. package/src/components/digit-input/examples/overview.tsx +6 -0
  320. package/src/components/digit-input/examples/sizes.tsx +5 -17
  321. package/src/components/digit-input/examples/states.tsx +6 -50
  322. package/src/components/digit-input/examples/validation.tsx +17 -0
  323. package/src/components/divider/COMPONENT.md +62 -53
  324. package/src/components/divider/examples/align.tsx +14 -0
  325. package/src/components/divider/examples/examples.module.css +6 -20
  326. package/src/components/divider/examples/or-separator.tsx +19 -0
  327. package/src/components/divider/examples/overview.tsx +30 -0
  328. package/src/components/divider/examples/sizes.tsx +11 -10
  329. package/src/components/divider/examples/vertical.tsx +21 -0
  330. package/src/components/divider/examples/with-icon.tsx +26 -0
  331. package/src/components/dnd/COMPONENT.md +197 -0
  332. package/src/components/dnd/examples/board.tsx +83 -0
  333. package/src/components/dnd/examples/drop-zones.tsx +82 -0
  334. package/src/components/dnd/examples/examples.module.css +89 -0
  335. package/src/components/dnd/examples/handle.tsx +53 -0
  336. package/src/components/dnd/examples/narrow.tsx +42 -0
  337. package/src/components/dnd/examples/overview.tsx +45 -0
  338. package/src/components/drawer/COMPONENT.md +114 -105
  339. package/src/components/drawer/examples/controlled-open.tsx +33 -0
  340. package/src/components/drawer/examples/date-sheet.tsx +41 -0
  341. package/src/components/drawer/examples/dismiss.tsx +55 -0
  342. package/src/components/drawer/examples/examples.module.css +8 -24
  343. package/src/components/drawer/examples/in-form.tsx +82 -0
  344. package/src/components/drawer/examples/long-content.tsx +40 -0
  345. package/src/components/drawer/examples/overview.tsx +48 -0
  346. package/src/components/drawer/examples/{variants-sides.tsx → placement.tsx} +13 -14
  347. package/src/components/drawer/examples/sizes.tsx +9 -15
  348. package/src/components/drawer/examples/structure.tsx +35 -0
  349. package/src/components/dropdown/COMPONENT.md +119 -148
  350. package/src/components/dropdown/examples/checkbox-items.tsx +48 -0
  351. package/src/components/dropdown/examples/controlled-open.tsx +32 -0
  352. package/src/components/dropdown/examples/dismiss.tsx +17 -0
  353. package/src/components/dropdown/examples/examples.module.css +11 -45
  354. package/src/components/dropdown/examples/long-list.tsx +42 -0
  355. package/src/components/dropdown/examples/{full-width.tsx → match-trigger-width.tsx} +5 -4
  356. package/src/components/dropdown/examples/overview.tsx +41 -0
  357. package/src/components/dropdown/examples/placement.tsx +16 -13
  358. package/src/components/dropdown/examples/sizes.tsx +18 -15
  359. package/src/components/dropdown/examples/states.tsx +21 -29
  360. package/src/components/dropdown/examples/structure.tsx +56 -0
  361. package/src/components/empty-page/COMPONENT.md +72 -76
  362. package/src/components/empty-page/examples/compact.tsx +23 -0
  363. package/src/components/empty-page/examples/data-region.tsx +8 -11
  364. package/src/components/empty-page/examples/examples.module.css +22 -25
  365. package/src/components/empty-page/examples/icon-tones.tsx +5 -6
  366. package/src/components/empty-page/examples/narrow.tsx +26 -0
  367. package/src/components/empty-page/examples/{no-results.tsx → overview.tsx} +4 -5
  368. package/src/components/empty-page/examples/sizes.tsx +14 -20
  369. package/src/components/example-frame/COMPONENT.md +64 -66
  370. package/src/components/example-frame/examples/controlled.tsx +42 -0
  371. package/src/components/example-frame/examples/overview.tsx +16 -0
  372. package/src/components/file-upload/COMPONENT.md +128 -186
  373. package/src/components/file-upload/examples/avatar-upload.tsx +7 -12
  374. package/src/components/file-upload/examples/custom-body.tsx +44 -0
  375. package/src/components/file-upload/examples/examples.module.css +46 -64
  376. package/src/components/file-upload/examples/in-form.tsx +76 -0
  377. package/src/components/file-upload/examples/narrow.tsx +17 -0
  378. package/src/components/file-upload/examples/overview.tsx +52 -0
  379. package/src/components/file-upload/examples/sizes.tsx +16 -37
  380. package/src/components/file-upload/examples/states.tsx +6 -98
  381. package/src/components/file-upload/examples/upload-progress.tsx +39 -0
  382. package/src/components/file-upload/examples/validation.tsx +19 -0
  383. package/src/components/file-upload/examples/variants.tsx +5 -18
  384. package/src/components/hint/COMPONENT.md +42 -48
  385. package/src/components/hint/examples/examples.module.css +3 -45
  386. package/src/components/hint/examples/hint-or-error.tsx +5 -5
  387. package/src/components/hint/examples/overview.tsx +34 -0
  388. package/src/components/hint/examples/sizes.tsx +8 -10
  389. package/src/components/hint/examples/states.tsx +21 -14
  390. package/src/components/hint/examples/with-icon.tsx +31 -0
  391. package/src/components/input/COMPONENT.md +70 -88
  392. package/src/components/input/examples/affixes.tsx +22 -0
  393. package/src/components/input/examples/controlled.tsx +9 -10
  394. package/src/components/input/examples/examples.module.css +3 -116
  395. package/src/components/input/examples/in-form.tsx +35 -14
  396. package/src/components/input/examples/overview.tsx +12 -0
  397. package/src/components/input/examples/sizes.tsx +6 -11
  398. package/src/components/input/examples/states.tsx +6 -23
  399. package/src/components/input/examples/validation.tsx +35 -0
  400. package/src/components/input/examples/with-icon.tsx +25 -0
  401. package/src/components/input/examples/{search-without-focus-ring.tsx → without-focus-ring.tsx} +5 -5
  402. package/src/components/kanban/COMPONENT.md +181 -0
  403. package/src/components/kanban/examples/controlled.tsx +78 -0
  404. package/src/components/kanban/examples/examples.module.css +31 -0
  405. package/src/components/kanban/examples/limits.tsx +58 -0
  406. package/src/components/kanban/examples/narrow.tsx +76 -0
  407. package/src/components/kanban/examples/overview.tsx +130 -0
  408. package/src/components/kanban/examples/states.tsx +75 -0
  409. package/src/components/kanban/examples/structure.tsx +76 -0
  410. package/src/components/kbd/COMPONENT.md +50 -65
  411. package/src/components/kbd/examples/examples.module.css +11 -41
  412. package/src/components/kbd/examples/in-controls.tsx +25 -31
  413. package/src/components/kbd/examples/overview.tsx +24 -0
  414. package/src/components/kbd/examples/shortcut-list.tsx +12 -12
  415. package/src/components/kbd/examples/sizes.tsx +8 -13
  416. package/src/components/label/COMPONENT.md +45 -44
  417. package/src/components/label/examples/examples.module.css +8 -29
  418. package/src/components/label/examples/overview.tsx +17 -0
  419. package/src/components/label/examples/sizes.tsx +9 -13
  420. package/src/components/label/examples/states.tsx +17 -14
  421. package/src/components/label/examples/structure.tsx +32 -0
  422. package/src/components/label/examples/with-icon.tsx +25 -17
  423. package/src/components/link-button/COMPONENT.md +56 -39
  424. package/src/components/link-button/examples/as-child.tsx +18 -0
  425. package/src/components/link-button/examples/external-link.tsx +6 -6
  426. package/src/components/link-button/examples/overview.tsx +11 -0
  427. package/src/components/link-button/examples/sizes.tsx +9 -11
  428. package/src/components/link-button/examples/states.tsx +25 -12
  429. package/src/components/link-button/examples/variants.tsx +21 -0
  430. package/src/components/link-button/examples/with-icon.tsx +21 -13
  431. package/src/components/login-form/COMPONENT.md +162 -0
  432. package/src/components/login-form/examples/examples.module.css +39 -0
  433. package/src/components/login-form/examples/forgot-password.tsx +39 -0
  434. package/src/components/login-form/examples/narrow.tsx +32 -0
  435. package/src/components/login-form/examples/overview.tsx +58 -0
  436. package/src/components/login-form/examples/register.tsx +85 -0
  437. package/src/components/login-form/examples/reset-password.tsx +60 -0
  438. package/src/components/login-form/examples/sizes.tsx +38 -0
  439. package/src/components/login-form/examples/states.tsx +75 -0
  440. package/src/components/login-form/examples/structure.tsx +28 -0
  441. package/src/components/login-form/examples/verification-code.tsx +57 -0
  442. package/src/components/modal/COMPONENT.md +71 -88
  443. package/src/components/modal/examples/{controlled.tsx → controlled-open.tsx} +6 -12
  444. package/src/components/modal/examples/custom-container.tsx +29 -0
  445. package/src/components/modal/examples/dismiss.tsx +54 -0
  446. package/src/components/modal/examples/examples.module.css +4 -20
  447. package/src/components/modal/examples/in-form.tsx +78 -0
  448. package/src/components/modal/examples/long-content.tsx +52 -0
  449. package/src/components/modal/examples/overview.tsx +35 -0
  450. package/src/components/modal/examples/sizes.tsx +7 -9
  451. package/src/components/modal/examples/structure.tsx +53 -0
  452. package/src/components/native-select/COMPONENT.md +132 -0
  453. package/src/components/native-select/examples/controlled.tsx +26 -0
  454. package/src/components/native-select/examples/examples.module.css +14 -0
  455. package/src/components/native-select/examples/in-form.tsx +43 -0
  456. package/src/components/native-select/examples/option-groups.tsx +17 -0
  457. package/src/components/native-select/examples/overview.tsx +16 -0
  458. package/src/components/native-select/examples/sizes.tsx +18 -0
  459. package/src/components/native-select/examples/states.tsx +21 -0
  460. package/src/components/native-select/examples/validation.tsx +26 -0
  461. package/src/components/notification/COMPONENT.md +108 -122
  462. package/src/components/notification/examples/dismiss.tsx +50 -0
  463. package/src/components/notification/examples/examples.module.css +10 -23
  464. package/src/components/notification/examples/in-form.tsx +64 -0
  465. package/src/components/notification/examples/overview.tsx +24 -0
  466. package/src/components/notification/examples/placement.tsx +66 -0
  467. package/src/components/notification/examples/sizes.tsx +11 -18
  468. package/src/components/notification/examples/stacking.tsx +45 -0
  469. package/src/components/notification/examples/structure.tsx +20 -0
  470. package/src/components/notification/examples/tones.tsx +14 -26
  471. package/src/components/page-content/COMPONENT.md +50 -75
  472. package/src/components/page-content/examples/examples.module.css +4 -8
  473. package/src/components/page-content/examples/narrow.tsx +25 -0
  474. package/src/components/page-content/examples/overview.tsx +41 -0
  475. package/src/components/page-content/examples/variants.tsx +39 -0
  476. package/src/components/page-toolbar/COMPONENT.md +142 -0
  477. package/src/components/page-toolbar/examples/examples.module.css +16 -0
  478. package/src/components/page-toolbar/examples/narrow.tsx +103 -0
  479. package/src/components/page-toolbar/examples/overview.tsx +113 -0
  480. package/src/components/page-toolbar/examples/save-changes.tsx +40 -0
  481. package/src/components/page-toolbar/examples/without-search.tsx +60 -0
  482. package/src/components/pagination/COMPONENT.md +73 -64
  483. package/src/components/pagination/examples/controlled.tsx +51 -0
  484. package/src/components/pagination/examples/examples.module.css +6 -55
  485. package/src/components/pagination/examples/narrow.tsx +25 -0
  486. package/src/components/pagination/examples/overflow.tsx +23 -0
  487. package/src/components/pagination/examples/overview.tsx +6 -0
  488. package/src/components/pagination/examples/sizes.tsx +10 -18
  489. package/src/components/popover/COMPONENT.md +89 -99
  490. package/src/components/popover/examples/controlled-open.tsx +32 -0
  491. package/src/components/popover/examples/dismiss.tsx +49 -0
  492. package/src/components/popover/examples/examples.module.css +21 -41
  493. package/src/components/popover/examples/flush.tsx +47 -0
  494. package/src/components/popover/examples/in-form.tsx +54 -0
  495. package/src/components/popover/examples/{full-width.tsx → match-trigger-width.tsx} +7 -7
  496. package/src/components/popover/examples/overview.tsx +43 -0
  497. package/src/components/popover/examples/placement.tsx +17 -15
  498. package/src/components/popover/examples/sizes.tsx +12 -9
  499. package/src/components/popover/examples/structure.tsx +50 -0
  500. package/src/components/progress-bar/COMPONENT.md +103 -62
  501. package/src/components/progress-bar/examples/custom-max.tsx +12 -0
  502. package/src/components/progress-bar/examples/examples.module.css +4 -34
  503. package/src/components/progress-bar/examples/overview.tsx +12 -0
  504. package/src/components/progress-bar/examples/segments.tsx +32 -0
  505. package/src/components/progress-bar/examples/sizes.tsx +11 -8
  506. package/src/components/progress-bar/examples/variants.tsx +34 -0
  507. package/src/components/progress-circle/COMPONENT.md +102 -61
  508. package/src/components/progress-circle/examples/examples.module.css +2 -39
  509. package/src/components/progress-circle/examples/inner-content.tsx +35 -0
  510. package/src/components/progress-circle/examples/overview.tsx +10 -0
  511. package/src/components/progress-circle/examples/segments.tsx +64 -0
  512. package/src/components/progress-circle/examples/sizes.tsx +10 -12
  513. package/src/components/progress-circle/examples/variants.tsx +28 -0
  514. package/src/components/radio/COMPONENT.md +93 -114
  515. package/src/components/radio/examples/controlled.tsx +30 -0
  516. package/src/components/radio/examples/group.tsx +23 -0
  517. package/src/components/radio/examples/orientation.tsx +34 -0
  518. package/src/components/radio/examples/overview.tsx +18 -0
  519. package/src/components/radio/examples/sizes.tsx +7 -12
  520. package/src/components/radio/examples/states.tsx +42 -30
  521. package/src/components/scroll-container/COMPONENT.md +57 -29
  522. package/src/components/scroll-container/examples/edge-fade.tsx +53 -0
  523. package/src/components/scroll-container/examples/examples.module.css +7 -7
  524. package/src/components/scroll-container/examples/overscroll.tsx +27 -0
  525. package/src/components/scroll-container/examples/overview.tsx +27 -0
  526. package/src/components/scroll-container/examples/variants.tsx +54 -0
  527. package/src/components/segmented-control/COMPONENT.md +93 -107
  528. package/src/components/segmented-control/examples/colors.tsx +8 -13
  529. package/src/components/segmented-control/examples/controlled.tsx +10 -6
  530. package/src/components/segmented-control/examples/examples.module.css +2 -88
  531. package/src/components/segmented-control/examples/full-width.tsx +7 -44
  532. package/src/components/segmented-control/examples/overview.tsx +12 -0
  533. package/src/components/segmented-control/examples/scroll.tsx +16 -0
  534. package/src/components/segmented-control/examples/sizes.tsx +8 -20
  535. package/src/components/segmented-control/examples/states.tsx +28 -34
  536. package/src/components/segmented-control/examples/two-line.tsx +17 -104
  537. package/src/components/segmented-control/examples/with-icon.tsx +52 -0
  538. package/src/components/select/COMPONENT.md +155 -208
  539. package/src/components/select/examples/clearable.tsx +23 -0
  540. package/src/components/select/examples/controlled-open.tsx +30 -0
  541. package/src/components/select/examples/controlled.tsx +17 -10
  542. package/src/components/select/examples/examples.module.css +18 -38
  543. package/src/components/select/examples/in-form.tsx +59 -70
  544. package/src/components/select/examples/multiple.tsx +21 -33
  545. package/src/components/select/examples/overview.tsx +17 -0
  546. package/src/components/select/examples/rich-options.tsx +43 -69
  547. package/src/components/select/examples/searchable.tsx +42 -0
  548. package/src/components/select/examples/sizes.tsx +13 -17
  549. package/src/components/select/examples/states.tsx +34 -48
  550. package/src/components/select/examples/validation.tsx +41 -0
  551. package/src/components/select/examples/with-icon.tsx +35 -0
  552. package/src/components/skeleton/COMPONENT.md +104 -0
  553. package/src/components/skeleton/examples/examples.module.css +89 -0
  554. package/src/components/skeleton/examples/form.tsx +20 -0
  555. package/src/components/skeleton/examples/overview.tsx +21 -0
  556. package/src/components/skeleton/examples/sizes.tsx +24 -0
  557. package/src/components/skeleton/examples/with-crossfade.tsx +68 -0
  558. package/src/components/slider/COMPONENT.md +105 -68
  559. package/src/components/slider/examples/controlled.tsx +26 -30
  560. package/src/components/slider/examples/examples.module.css +8 -32
  561. package/src/components/slider/examples/hint-and-error.tsx +33 -0
  562. package/src/components/slider/examples/overview.tsx +6 -0
  563. package/src/components/slider/examples/range-step.tsx +7 -17
  564. package/src/components/slider/examples/sizes.tsx +8 -6
  565. package/src/components/slider/examples/states.tsx +11 -8
  566. package/src/components/slider/examples/value-format.tsx +13 -25
  567. package/src/components/slider/examples/variants.tsx +23 -0
  568. package/src/components/smart-filter/COMPONENT.md +184 -0
  569. package/src/components/smart-filter/examples/controlled.tsx +48 -0
  570. package/src/components/smart-filter/examples/examples.module.css +56 -0
  571. package/src/components/smart-filter/examples/many-values.tsx +53 -0
  572. package/src/components/smart-filter/examples/narrow.tsx +38 -0
  573. package/src/components/smart-filter/examples/overview.tsx +109 -0
  574. package/src/components/smart-filter/examples/sizes.tsx +33 -0
  575. package/src/components/spinner/COMPONENT.md +112 -0
  576. package/src/components/spinner/examples/examples.module.css +20 -0
  577. package/src/components/spinner/examples/loading-region.tsx +22 -0
  578. package/src/components/spinner/examples/overview.tsx +15 -0
  579. package/src/components/spinner/examples/sizes.tsx +19 -0
  580. package/src/components/spinner/examples/variants.tsx +19 -0
  581. package/src/components/stepper/COMPONENT.md +83 -78
  582. package/src/components/stepper/examples/controlled.tsx +46 -0
  583. package/src/components/stepper/examples/examples.module.css +9 -40
  584. package/src/components/stepper/examples/narrow.tsx +11 -19
  585. package/src/components/stepper/examples/orientation.tsx +21 -59
  586. package/src/components/stepper/examples/overview.tsx +28 -0
  587. package/src/components/stepper/examples/sizes.tsx +19 -28
  588. package/src/components/stepper/examples/states.tsx +20 -21
  589. package/src/components/stepper/examples/with-icon.tsx +29 -0
  590. package/src/components/switch/COMPONENT.md +75 -94
  591. package/src/components/switch/examples/controlled.tsx +8 -6
  592. package/src/components/switch/examples/examples.module.css +13 -45
  593. package/src/components/switch/examples/in-form.tsx +20 -24
  594. package/src/components/switch/examples/overview.tsx +10 -0
  595. package/src/components/switch/examples/settings-row.tsx +14 -22
  596. package/src/components/switch/examples/sizes.tsx +5 -10
  597. package/src/components/switch/examples/states.tsx +37 -25
  598. package/src/components/tabs/COMPONENT.md +156 -86
  599. package/src/components/tabs/examples/closable.tsx +48 -0
  600. package/src/components/tabs/examples/controlled.tsx +14 -20
  601. package/src/components/tabs/examples/examples.module.css +13 -93
  602. package/src/components/tabs/examples/orientation.tsx +40 -0
  603. package/src/components/tabs/examples/overflow.tsx +60 -0
  604. package/src/components/tabs/examples/overview.tsx +30 -0
  605. package/src/components/tabs/examples/sizes.tsx +19 -19
  606. package/src/components/tabs/examples/states.tsx +20 -55
  607. package/src/components/tabs/examples/two-line.tsx +22 -29
  608. package/src/components/tabs/examples/variants.tsx +40 -0
  609. package/src/components/tabs/examples/with-icon.tsx +44 -0
  610. package/src/components/tag-select/COMPONENT.md +119 -122
  611. package/src/components/tag-select/examples/controlled-open.tsx +29 -0
  612. package/src/components/tag-select/examples/controlled.tsx +26 -0
  613. package/src/components/tag-select/examples/creatable.tsx +28 -0
  614. package/src/components/tag-select/examples/examples.module.css +3 -22
  615. package/src/components/tag-select/examples/in-form.tsx +44 -41
  616. package/src/components/tag-select/examples/manage-tags.tsx +20 -39
  617. package/src/components/tag-select/examples/many-tags.tsx +20 -0
  618. package/src/components/tag-select/examples/overview.tsx +21 -0
  619. package/src/components/tag-select/examples/sizes.tsx +7 -10
  620. package/src/components/tag-select/examples/states.tsx +11 -36
  621. package/src/components/tag-select/examples/validation.tsx +35 -0
  622. package/src/components/textarea/COMPONENT.md +50 -50
  623. package/src/components/textarea/examples/auto-resize.tsx +21 -0
  624. package/src/components/textarea/examples/controlled.tsx +12 -16
  625. package/src/components/textarea/examples/examples.module.css +15 -48
  626. package/src/components/textarea/examples/in-form.tsx +52 -48
  627. package/src/components/textarea/examples/overview.tsx +12 -0
  628. package/src/components/textarea/examples/sizes.tsx +6 -7
  629. package/src/components/textarea/examples/states.tsx +9 -13
  630. package/src/components/textarea/examples/validation.tsx +34 -0
  631. package/src/components/textarea/examples/without-focus-ring.tsx +12 -0
  632. package/src/components/thumbnail/COMPONENT.md +150 -0
  633. package/src/components/thumbnail/examples/examples.module.css +45 -0
  634. package/src/components/thumbnail/examples/full-width.tsx +48 -0
  635. package/src/components/thumbnail/examples/overview.tsx +31 -0
  636. package/src/components/thumbnail/examples/ratios.tsx +25 -0
  637. package/src/components/thumbnail/examples/ring.tsx +29 -0
  638. package/src/components/thumbnail/examples/sizes.tsx +23 -0
  639. package/src/components/thumbnail/examples/states.tsx +38 -0
  640. package/src/components/thumbnail/examples/variants.tsx +28 -0
  641. package/src/components/timeline/COMPONENT.md +92 -203
  642. package/src/components/timeline/examples/examples.module.css +5 -20
  643. package/src/components/timeline/examples/links.tsx +28 -0
  644. package/src/components/timeline/examples/narrow.tsx +30 -38
  645. package/src/components/timeline/examples/{activity-feed.tsx → overview.tsx} +9 -17
  646. package/src/components/timeline/examples/sizes.tsx +22 -28
  647. package/src/components/timeline/examples/{service-history.tsx → structure.tsx} +10 -8
  648. package/src/components/timeline/examples/{colors-and-tones.tsx → variants.tsx} +11 -16
  649. package/src/components/tooltip/COMPONENT.md +74 -62
  650. package/src/components/tooltip/examples/{controlled.tsx → controlled-open.tsx} +5 -7
  651. package/src/components/tooltip/examples/delay.tsx +19 -28
  652. package/src/components/tooltip/examples/disabled-trigger.tsx +18 -0
  653. package/src/components/tooltip/examples/examples.module.css +3 -33
  654. package/src/components/tooltip/examples/long-content.tsx +12 -15
  655. package/src/components/tooltip/examples/overview.tsx +17 -0
  656. package/src/components/tooltip/examples/placement.tsx +30 -0
  657. package/src/components/tooltip/examples/sizes.tsx +12 -15
  658. package/src/components/tooltip/examples/toolbar.tsx +35 -0
  659. package/src/components/typography/COMPONENT.md +68 -99
  660. package/src/components/typography/examples/article.tsx +23 -36
  661. package/src/components/typography/examples/examples.module.css +20 -54
  662. package/src/components/typography/examples/inline-emphasis.tsx +20 -0
  663. package/src/components/typography/examples/overview.tsx +20 -0
  664. package/src/components/typography/examples/semantic-tag.tsx +17 -0
  665. package/src/components/typography/examples/truncate.tsx +7 -7
  666. package/src/components/typography/examples/variants.tsx +43 -42
  667. package/src/components/typography/examples/weights.tsx +31 -0
  668. package/src/layout/app-header/COMPONENT.md +178 -0
  669. package/src/layout/app-header/examples/breadcrumbs.tsx +36 -0
  670. package/src/layout/app-header/examples/examples.module.css +47 -0
  671. package/src/layout/app-header/examples/in-app-shell.tsx +70 -0
  672. package/src/layout/app-header/examples/narrow.tsx +29 -0
  673. package/src/layout/app-header/examples/overview.tsx +36 -0
  674. package/src/layout/app-shell/COMPONENT.md +63 -63
  675. package/src/layout/app-shell/examples/contained.tsx +5 -5
  676. package/src/layout/app-shell/examples/examples.module.css +24 -0
  677. package/src/layout/app-shell/examples/footer.tsx +59 -0
  678. package/src/layout/app-shell/examples/overview.tsx +83 -0
  679. package/src/layout/app-shell/examples/template.tsx +54 -0
  680. package/src/layout/bottom-nav/COMPONENT.md +153 -0
  681. package/src/layout/bottom-nav/examples/examples.module.css +39 -0
  682. package/src/layout/bottom-nav/examples/floating.tsx +89 -0
  683. package/src/layout/bottom-nav/examples/icon-only.tsx +41 -0
  684. package/src/layout/bottom-nav/examples/in-app-shell.tsx +64 -0
  685. package/src/layout/bottom-nav/examples/overview.tsx +44 -0
  686. package/src/layout/bottom-nav/examples/router.tsx +31 -0
  687. package/src/layout/bottom-nav/examples/structure.tsx +47 -0
  688. package/src/layout/sidebar/COMPONENT.md +304 -111
  689. package/src/layout/sidebar/examples/account.tsx +88 -0
  690. package/src/layout/sidebar/examples/brand-header.tsx +45 -0
  691. package/src/layout/sidebar/examples/collapsible-groups.tsx +77 -0
  692. package/src/layout/sidebar/examples/controlled-open.tsx +55 -0
  693. package/src/layout/sidebar/examples/controlled.tsx +68 -0
  694. package/src/layout/sidebar/examples/examples.module.css +17 -3
  695. package/src/layout/sidebar/examples/nested-items.tsx +74 -0
  696. package/src/layout/sidebar/examples/overview.tsx +126 -0
  697. package/src/layout/sidebar/examples/router.tsx +19 -13
  698. package/src/layout/sidebar/examples/sizes.tsx +17 -12
  699. package/src/layout/sidebar/examples/structure.tsx +81 -0
  700. package/src/styles/fonts.css +4 -0
  701. package/src/styles/globals.css +18 -29
  702. package/src/styles/reset.css +2 -0
  703. package/src/styles/theme-dark.css +6 -0
  704. package/src/styles/theme-light.css +58 -23
  705. package/src/styles/tokens.css +11 -77
  706. package/dist/components/accordion/Accordion.d.ts.map +0 -1
  707. package/dist/components/avatar/Avatar.d.ts.map +0 -1
  708. package/dist/components/badge/Badge.d.ts.map +0 -1
  709. package/dist/components/badge/tier.d.ts.map +0 -1
  710. package/dist/components/banner/Banner.d.ts.map +0 -1
  711. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +0 -1
  712. package/dist/components/button/Button.d.ts.map +0 -1
  713. package/dist/components/button-group/ButtonGroup.d.ts.map +0 -1
  714. package/dist/components/card/Card.d.ts.map +0 -1
  715. package/dist/components/checkbox/Checkbox.d.ts.map +0 -1
  716. package/dist/components/code-block/CodeBlock.d.ts.map +0 -1
  717. package/dist/components/color-picker/ColorPicker.d.ts.map +0 -1
  718. package/dist/components/color-picker/ColorPresets.d.ts.map +0 -1
  719. package/dist/components/command-menu/CommandMenu.d.ts.map +0 -1
  720. package/dist/components/data-table/DataTable.d.ts.map +0 -1
  721. package/dist/components/datepicker/Datepicker.d.ts.map +0 -1
  722. package/dist/components/datepicker/datepickerModel.d.ts.map +0 -1
  723. package/dist/components/digit-input/DigitInput.d.ts.map +0 -1
  724. package/dist/components/divider/Divider.d.ts.map +0 -1
  725. package/dist/components/drawer/Drawer.d.ts.map +0 -1
  726. package/dist/components/dropdown/Dropdown.d.ts.map +0 -1
  727. package/dist/components/dropdown/dropdownGeometry.d.ts +0 -10
  728. package/dist/components/dropdown/dropdownGeometry.d.ts.map +0 -1
  729. package/dist/components/dropdown/menuKeyboard.d.ts +0 -4
  730. package/dist/components/dropdown/menuKeyboard.d.ts.map +0 -1
  731. package/dist/components/dropdown/useDropdownPosition.d.ts +0 -18
  732. package/dist/components/dropdown/useDropdownPosition.d.ts.map +0 -1
  733. package/dist/components/empty-page/EmptyPage.d.ts.map +0 -1
  734. package/dist/components/example-frame/ExampleFrame.d.ts.map +0 -1
  735. package/dist/components/file-upload/FileUpload.d.ts.map +0 -1
  736. package/dist/components/hint/Hint.d.ts.map +0 -1
  737. package/dist/components/index.css +0 -11181
  738. package/dist/components/index.css.map +0 -7
  739. package/dist/components/index.d.ts.map +0 -1
  740. package/dist/components/index.js +0 -13833
  741. package/dist/components/index.js.map +0 -7
  742. package/dist/components/input/Input.d.ts.map +0 -1
  743. package/dist/components/kbd/Kbd.d.ts.map +0 -1
  744. package/dist/components/label/Label.d.ts.map +0 -1
  745. package/dist/components/link-button/LinkButton.d.ts.map +0 -1
  746. package/dist/components/modal/DialogParts.d.ts.map +0 -1
  747. package/dist/components/modal/Modal.d.ts.map +0 -1
  748. package/dist/components/modal/useInertSiblings.d.ts +0 -7
  749. package/dist/components/modal/useInertSiblings.d.ts.map +0 -1
  750. package/dist/components/notification/Notification.d.ts.map +0 -1
  751. package/dist/components/notification/NotificationStore.d.ts.map +0 -1
  752. package/dist/components/page-content/PageContent.d.ts.map +0 -1
  753. package/dist/components/pagination/Pagination.d.ts.map +0 -1
  754. package/dist/components/popover/Popover.d.ts.map +0 -1
  755. package/dist/components/popover/popoverGeometry.d.ts +0 -6
  756. package/dist/components/popover/popoverGeometry.d.ts.map +0 -1
  757. package/dist/components/popover/usePopoverPosition.d.ts +0 -18
  758. package/dist/components/popover/usePopoverPosition.d.ts.map +0 -1
  759. package/dist/components/progress-bar/ProgressBar.d.ts.map +0 -1
  760. package/dist/components/progress-circle/ProgressCircle.d.ts.map +0 -1
  761. package/dist/components/radio/Radio.d.ts.map +0 -1
  762. package/dist/components/scroll-container/ScrollContainer.d.ts.map +0 -1
  763. package/dist/components/segmented-control/SegmentedControl.d.ts.map +0 -1
  764. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +0 -29
  765. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts.map +0 -1
  766. package/dist/components/select/Select.d.ts.map +0 -1
  767. package/dist/components/select/selectIcons.d.ts +0 -15
  768. package/dist/components/select/selectIcons.d.ts.map +0 -1
  769. package/dist/components/select/selectListbox.d.ts +0 -13
  770. package/dist/components/select/selectListbox.d.ts.map +0 -1
  771. package/dist/components/slider/Slider.d.ts.map +0 -1
  772. package/dist/components/stepper/Stepper.d.ts.map +0 -1
  773. package/dist/components/switch/Switch.d.ts.map +0 -1
  774. package/dist/components/tabs/Tabs.d.ts.map +0 -1
  775. package/dist/components/tag/Tag.d.ts +0 -47
  776. package/dist/components/tag/Tag.d.ts.map +0 -1
  777. package/dist/components/tag-select/TagSelect.d.ts.map +0 -1
  778. package/dist/components/textarea/Textarea.d.ts.map +0 -1
  779. package/dist/components/timeline/Timeline.d.ts.map +0 -1
  780. package/dist/components/tooltip/Tooltip.d.ts.map +0 -1
  781. package/dist/components/typography/Typography.d.ts.map +0 -1
  782. package/dist/hooks/useControllableState.d.ts.map +0 -1
  783. package/dist/hooks/useEscapeKey.d.ts +0 -7
  784. package/dist/hooks/useEscapeKey.d.ts.map +0 -1
  785. package/dist/hooks/useFieldIds.d.ts +0 -17
  786. package/dist/hooks/useFieldIds.d.ts.map +0 -1
  787. package/dist/hooks/useFocusTrap.d.ts +0 -20
  788. package/dist/hooks/useFocusTrap.d.ts.map +0 -1
  789. package/dist/hooks/useMergedRefs.d.ts.map +0 -1
  790. package/dist/hooks/useModalKeyboard.d.ts +0 -14
  791. package/dist/hooks/useModalKeyboard.d.ts.map +0 -1
  792. package/dist/hooks/useOutsideClick.d.ts +0 -26
  793. package/dist/hooks/useOutsideClick.d.ts.map +0 -1
  794. package/dist/hooks/useOverlayModal.d.ts +0 -7
  795. package/dist/hooks/useOverlayModal.d.ts.map +0 -1
  796. package/dist/hooks/usePosition.d.ts.map +0 -1
  797. package/dist/hooks/usePresence.d.ts.map +0 -1
  798. package/dist/hooks/useResponsiveMonths.d.ts +0 -18
  799. package/dist/hooks/useResponsiveMonths.d.ts.map +0 -1
  800. package/dist/hooks/useScrollLock.d.ts.map +0 -1
  801. package/dist/icons/Icon.d.ts.map +0 -1
  802. package/dist/icons/index.d.ts.map +0 -1
  803. package/dist/index.css.map +0 -7
  804. package/dist/index.d.ts.map +0 -1
  805. package/dist/index.js.map +0 -7
  806. package/dist/internal/ControlSizeContext.d.ts.map +0 -1
  807. package/dist/internal/DividerContentContext.d.ts +0 -4
  808. package/dist/internal/DividerContentContext.d.ts.map +0 -1
  809. package/dist/internal/FieldFrame.d.ts.map +0 -1
  810. package/dist/internal/OverlayPortalLayerContext.d.ts +0 -13
  811. package/dist/internal/OverlayPortalLayerContext.d.ts.map +0 -1
  812. package/dist/internal/Portal.d.ts.map +0 -1
  813. package/dist/internal/context.d.ts.map +0 -1
  814. package/dist/internal/cx.d.ts.map +0 -1
  815. package/dist/internal/data-attributes.d.ts.map +0 -1
  816. package/dist/internal/highlightTsxHtml.d.ts.map +0 -1
  817. package/dist/internal/layoutPxFromPrimitives.d.ts.map +0 -1
  818. package/dist/internal/mergeRefs.d.ts.map +0 -1
  819. package/dist/internal/runtimeUnits.d.ts +0 -3
  820. package/dist/internal/runtimeUnits.d.ts.map +0 -1
  821. package/dist/internal/scrollAncestors.d.ts.map +0 -1
  822. package/dist/internal/slot.d.ts.map +0 -1
  823. package/dist/internal/states.d.ts.map +0 -1
  824. package/dist/internal/useFieldDescriptions.d.ts +0 -18
  825. package/dist/internal/useFieldDescriptions.d.ts.map +0 -1
  826. package/dist/layout/app-shell/AppShell.d.ts.map +0 -1
  827. package/dist/layout/index.d.ts.map +0 -1
  828. package/dist/layout/sidebar/Sidebar.d.ts.map +0 -1
  829. package/dist/theme/applyTheme.d.ts.map +0 -1
  830. package/dist/tokens/primitives.d.ts.map +0 -1
  831. package/dist/tokens/semantic.d.ts.map +0 -1
  832. package/dist/tokens/themes/dark.d.ts.map +0 -1
  833. package/dist/tokens/themes/light.d.ts +0 -3
  834. package/dist/tokens/themes/light.d.ts.map +0 -1
  835. package/src/components/accordion/examples/checkout.tsx +0 -73
  836. package/src/components/accordion/examples/layouts.tsx +0 -58
  837. package/src/components/avatar/examples/colors.tsx +0 -29
  838. package/src/components/avatar/examples/group.tsx +0 -35
  839. package/src/components/avatar/examples/team-card.tsx +0 -70
  840. package/src/components/badge/examples/icons.tsx +0 -37
  841. package/src/components/badge/examples/order-list.tsx +0 -48
  842. package/src/components/badge/examples/palette.tsx +0 -44
  843. package/src/components/badge/examples/surfaces.tsx +0 -21
  844. package/src/components/banner/examples/dismiss.tsx +0 -48
  845. package/src/components/banner/examples/placement.tsx +0 -92
  846. package/src/components/breadcrumb/examples/collapse.tsx +0 -56
  847. package/src/components/breadcrumb/examples/page-header.tsx +0 -31
  848. package/src/components/button/examples/composition.tsx +0 -46
  849. package/src/components/button/examples/controlled.tsx +0 -18
  850. package/src/components/button/examples/full-width.tsx +0 -15
  851. package/src/components/button/examples/icon-only.tsx +0 -42
  852. package/src/components/button/examples/surfaces.tsx +0 -18
  853. package/src/components/button/examples/variants-tones.tsx +0 -39
  854. package/src/components/button-group/examples/composition.tsx +0 -99
  855. package/src/components/card/examples/mini-media.tsx +0 -55
  856. package/src/components/card/examples/responsive.tsx +0 -72
  857. package/src/components/checkbox/examples/hint-error.tsx +0 -22
  858. package/src/components/checkbox/examples/select-all.tsx +0 -40
  859. package/src/components/checkbox/examples/settings-card.tsx +0 -76
  860. package/src/components/code-block/examples/api-docs.tsx +0 -31
  861. package/src/components/code-block/examples/controlled.tsx +0 -38
  862. package/src/components/code-block/examples/surfaces.tsx +0 -7
  863. package/src/components/color-picker/examples/brand-color.tsx +0 -73
  864. package/src/components/color-picker/examples/hex-input-sizes.tsx +0 -54
  865. package/src/components/color-picker/examples/presets-quick.tsx +0 -57
  866. package/src/components/color-picker/examples/presets-tags.tsx +0 -52
  867. package/src/components/command-menu/examples/composition.tsx +0 -91
  868. package/src/components/command-menu/examples/examples.module.css +0 -9
  869. package/src/components/command-menu/examples/keyboard-search.tsx +0 -94
  870. package/src/components/data-table/examples/dashboard.tsx +0 -205
  871. package/src/components/data-table/examples/sorting-pagination.tsx +0 -66
  872. package/src/components/datepicker/examples/badge.tsx +0 -19
  873. package/src/components/datepicker/examples/single.tsx +0 -16
  874. package/src/components/digit-input/examples/length-and-complete.tsx +0 -30
  875. package/src/components/digit-input/examples/surfaces.tsx +0 -6
  876. package/src/components/digit-input/examples/verification-step.tsx +0 -62
  877. package/src/components/divider/examples/composition.tsx +0 -49
  878. package/src/components/divider/examples/variants.tsx +0 -62
  879. package/src/components/drawer/examples/composition.tsx +0 -94
  880. package/src/components/drawer/examples/controlled.tsx +0 -42
  881. package/src/components/drawer/examples/features.tsx +0 -48
  882. package/src/components/drawer/examples/states.tsx +0 -54
  883. package/src/components/dropdown/examples/as-child.tsx +0 -23
  884. package/src/components/dropdown/examples/composition.tsx +0 -91
  885. package/src/components/dropdown/examples/controlled.tsx +0 -32
  886. package/src/components/dropdown/examples/row-actions.tsx +0 -56
  887. package/src/components/dropdown/examples/variants.tsx +0 -52
  888. package/src/components/example-frame/examples/basic.tsx +0 -18
  889. package/src/components/file-upload/examples/file-list.tsx +0 -67
  890. package/src/components/file-upload/examples/in-card.tsx +0 -84
  891. package/src/components/hint/examples/field-states.tsx +0 -60
  892. package/src/components/hint/examples/in-form.tsx +0 -45
  893. package/src/components/input/examples/anatomy.tsx +0 -70
  894. package/src/components/input/examples/control-alignment.tsx +0 -57
  895. package/src/components/input/examples/full-width.tsx +0 -23
  896. package/src/components/input/examples/icons-and-affixes.tsx +0 -32
  897. package/src/components/input/examples/reserved-support-row.tsx +0 -33
  898. package/src/components/input/examples/surfaces.tsx +0 -12
  899. package/src/components/input/examples/with-badge.tsx +0 -40
  900. package/src/components/kbd/examples/modifier-keys.tsx +0 -24
  901. package/src/components/label/examples/in-form.tsx +0 -39
  902. package/src/components/label/examples/markers.tsx +0 -27
  903. package/src/components/link-button/examples/composition.tsx +0 -30
  904. package/src/components/link-button/examples/examples.module.css +0 -46
  905. package/src/components/link-button/examples/tones.tsx +0 -15
  906. package/src/components/modal/examples/composition.tsx +0 -87
  907. package/src/components/modal/examples/features.tsx +0 -68
  908. package/src/components/modal/examples/link.tsx +0 -79
  909. package/src/components/modal/examples/states.tsx +0 -73
  910. package/src/components/notification/examples/features.tsx +0 -42
  911. package/src/components/notification/examples/live.tsx +0 -128
  912. package/src/components/notification/examples/save-form.tsx +0 -59
  913. package/src/components/page-content/examples/readable.tsx +0 -24
  914. package/src/components/page-content/examples/settings-page.tsx +0 -49
  915. package/src/components/page-content/examples/widths.tsx +0 -39
  916. package/src/components/pagination/examples/compact.tsx +0 -36
  917. package/src/components/pagination/examples/list-footer.tsx +0 -50
  918. package/src/components/pagination/examples/states.tsx +0 -44
  919. package/src/components/popover/examples/as-child.tsx +0 -29
  920. package/src/components/popover/examples/composition.tsx +0 -45
  921. package/src/components/popover/examples/controlled.tsx +0 -39
  922. package/src/components/popover/examples/features.tsx +0 -56
  923. package/src/components/popover/examples/inset-variants.tsx +0 -58
  924. package/src/components/popover/examples/states.tsx +0 -48
  925. package/src/components/progress-bar/examples/file-upload.tsx +0 -52
  926. package/src/components/progress-bar/examples/values-and-tones.tsx +0 -17
  927. package/src/components/progress-circle/examples/goals-card.tsx +0 -37
  928. package/src/components/progress-circle/examples/values-and-tones.tsx +0 -56
  929. package/src/components/radio/examples/examples.module.css +0 -43
  930. package/src/components/radio/examples/hint-error.tsx +0 -28
  931. package/src/components/radio/examples/horizontal.tsx +0 -33
  932. package/src/components/radio/examples/plan-picker.tsx +0 -55
  933. package/src/components/scroll-container/examples/both-axes.tsx +0 -57
  934. package/src/components/scroll-container/examples/list.tsx +0 -44
  935. package/src/components/segmented-control/examples/item-content.tsx +0 -78
  936. package/src/components/segmented-control/examples/surfaces.tsx +0 -82
  937. package/src/components/segmented-control/examples/toolbar.tsx +0 -56
  938. package/src/components/segmented-progress-bar/COMPONENT.md +0 -128
  939. package/src/components/segmented-progress-bar/examples/examples.module.css +0 -68
  940. package/src/components/segmented-progress-bar/examples/segment-gap.tsx +0 -24
  941. package/src/components/segmented-progress-bar/examples/sizes.tsx +0 -31
  942. package/src/components/segmented-progress-bar/examples/storage-distribution.tsx +0 -41
  943. package/src/components/select/examples/native.tsx +0 -21
  944. package/src/components/select/examples/search-groups.tsx +0 -61
  945. package/src/components/select/examples/with-badge.tsx +0 -47
  946. package/src/components/slider/examples/basic.tsx +0 -6
  947. package/src/components/slider/examples/display-settings.tsx +0 -41
  948. package/src/components/stepper/examples/wizard.tsx +0 -62
  949. package/src/components/switch/examples/notification-settings.tsx +0 -37
  950. package/src/components/switch/examples/on-off.tsx +0 -15
  951. package/src/components/switch/examples/validation.tsx +0 -19
  952. package/src/components/tabs/examples/horizontal.tsx +0 -30
  953. package/src/components/tabs/examples/vertical.tsx +0 -101
  954. package/src/components/tag/COMPONENT.md +0 -179
  955. package/src/components/tag/examples/colors.tsx +0 -49
  956. package/src/components/tag/examples/examples.module.css +0 -47
  957. package/src/components/tag/examples/sizes.tsx +0 -23
  958. package/src/components/tag/examples/states.tsx +0 -19
  959. package/src/components/tag/examples/surfaces.tsx +0 -16
  960. package/src/components/tag/examples/with-icon.tsx +0 -29
  961. package/src/components/textarea/examples/height-and-limits.tsx +0 -45
  962. package/src/components/textarea/examples/hint-and-error.tsx +0 -21
  963. package/src/components/textarea/examples/reserved-support-row.tsx +0 -37
  964. package/src/components/textarea/examples/surfaces.tsx +0 -11
  965. package/src/components/textarea/examples/with-label.tsx +0 -22
  966. package/src/components/timeline/examples/hover-highlight.tsx +0 -48
  967. package/src/components/timeline/examples/in-card.tsx +0 -48
  968. package/src/components/timeline/examples/selectable.tsx +0 -58
  969. package/src/components/tooltip/examples/composition.tsx +0 -37
  970. package/src/components/tooltip/examples/side.tsx +0 -29
  971. package/src/components/tooltip/examples/states.tsx +0 -45
  972. package/src/components/typography/examples/as-prop.tsx +0 -25
  973. package/src/components/typography/examples/composition.tsx +0 -23
  974. package/src/components/typography/examples/full-width.tsx +0 -29
  975. package/src/components/typography/examples/reading-and-form.tsx +0 -35
  976. package/src/components/typography/examples/states.tsx +0 -23
  977. package/src/components/typography/examples/tones.tsx +0 -34
  978. package/src/components/typography/examples/variant-catalog.tsx +0 -41
  979. package/src/layout/app-shell/examples/with-sidebar.tsx +0 -63
  980. package/src/layout/sidebar/examples/modes.tsx +0 -55
  981. package/src/layout/sidebar/examples/responsive.tsx +0 -44
  982. package/src/layout/sidebar/examples/states.tsx +0 -34
@@ -1,36 +1,35 @@
1
- /** `side="left"` and `side="right"`: right (default) for details and forms, left for filters and navigation. */
1
+ /** The panel slides from the right for details, from the left for filters and up from the bottom as a sheet — `side`. */
2
2
  import { Button, Drawer, Typography } from "prime-ui-kit";
3
3
 
4
- import styles from "./examples.module.css";
5
-
6
4
  const SIDES = [
7
- { side: "left", label: "Слева", title: "Фильтры" },
8
- { side: "right", label: "Справа", title: "Детали заказа" },
5
+ { side: "left", title: "Фильтры" },
6
+ { side: "right", title: "Детали заказа" },
7
+ { side: "bottom", title: "Действия с заказом" },
9
8
  ] as const;
10
9
 
11
- export default function DrawerVariantsSidesExample() {
10
+ export default function DrawerPlacementExample() {
12
11
  return (
13
- <div className={styles.row}>
14
- {SIDES.map(({ side, label, title }) => (
12
+ <>
13
+ {SIDES.map(({ side, title }) => (
15
14
  <Drawer.Root key={side}>
16
15
  <Drawer.Trigger>
17
16
  <Button.Root variant="soft" tone="neutral">
18
- {label}
17
+ {side}
19
18
  </Button.Root>
20
19
  </Drawer.Trigger>
21
20
  <Drawer.Content side={side} size="s">
22
21
  <Drawer.Header>
23
22
  <Drawer.Title>{title}</Drawer.Title>
24
- <Drawer.Description>side="{side}"</Drawer.Description>
25
23
  </Drawer.Header>
26
24
  <Drawer.Body>
27
- <Typography.Root variant="body-m" tone="secondary">
28
- Скругление только со стороны страницы, подложка затемняет остальное.
29
- </Typography.Root>
25
+ <Typography variant="body-m" tone="secondary">
26
+ Скругление только со стороны страницы, подложка затемняет остальное. Свайп к краю
27
+ закрывает панель.
28
+ </Typography>
30
29
  </Drawer.Body>
31
30
  </Drawer.Content>
32
31
  </Drawer.Root>
33
32
  ))}
34
- </div>
33
+ </>
35
34
  );
36
35
  }
@@ -1,8 +1,6 @@
1
- /** Drawer.Content widths s · m · l · xl. Below 640px of viewport the panel always takes the full width. */
1
+ /** Every panel width, 360 to 800 px; below 640 px of viewport the panel takes the full width — `size`. */
2
2
  import { Button, Drawer, Typography } from "prime-ui-kit";
3
3
 
4
- import styles from "./examples.module.css";
5
-
6
4
  const SIZES = [
7
5
  { size: "s", width: "360 px" },
8
6
  { size: "m", width: "480 px" },
@@ -12,31 +10,27 @@ const SIZES = [
12
10
 
13
11
  export default function DrawerSizesExample() {
14
12
  return (
15
- <div className={styles.row}>
13
+ <>
16
14
  {SIZES.map(({ size, width }) => (
17
15
  <Drawer.Root key={size}>
18
16
  <Drawer.Trigger>
19
17
  <Button.Root variant="soft" tone="neutral">
20
- Размер {size}
18
+ {size}
21
19
  </Button.Root>
22
20
  </Drawer.Trigger>
23
21
  <Drawer.Content size={size}>
24
22
  <Drawer.Header>
25
- <Drawer.Title>Панель размера {size}</Drawer.Title>
26
- <Drawer.Description>Ширина {width}</Drawer.Description>
23
+ <Drawer.Title>Детали заказа</Drawer.Title>
24
+ <Drawer.Description>Ширина панели {width}</Drawer.Description>
27
25
  </Drawer.Header>
28
26
  <Drawer.Body>
29
- <Typography.Root variant="body-m" tone="secondary">
30
- Ширина берётся из{" "}
31
- <Typography.Root as="span" variant="code" tone="secondary">
32
- --prime-drawer-width-{size}
33
- </Typography.Root>
34
- . На экране уже 640 px панель занимает всю ширину и теряет скругления.
35
- </Typography.Root>
27
+ <Typography variant="body-m" tone="secondary">
28
+ На экране уже 640 px панель занимает всю ширину и теряет скругления.
29
+ </Typography>
36
30
  </Drawer.Body>
37
31
  </Drawer.Content>
38
32
  </Drawer.Root>
39
33
  ))}
40
- </div>
34
+ </>
41
35
  );
42
36
  }
@@ -0,0 +1,35 @@
1
+ /** Optional parts: an icon tile in the header and one full-width action in the footer — `Drawer.Icon`, `Drawer.Footer`, `layout`. */
2
+ import { Button, Drawer, Icon, Typography } from "prime-ui-kit";
3
+
4
+ export default function DrawerStructureExample() {
5
+ return (
6
+ <Drawer.Root>
7
+ <Drawer.Trigger>
8
+ <Button.Root variant="soft" tone="neutral">
9
+ Как считается выручка
10
+ </Button.Root>
11
+ </Drawer.Trigger>
12
+ <Drawer.Content size="s">
13
+ <Drawer.Header>
14
+ <Drawer.Icon tone="info">
15
+ <Icon name="status.info" />
16
+ </Drawer.Icon>
17
+ <Drawer.Title>Выручка</Drawer.Title>
18
+ <Drawer.Description>Справка по отчёту</Drawer.Description>
19
+ </Drawer.Header>
20
+ <Drawer.Body>
21
+ <Typography variant="body-m" tone="secondary">
22
+ В выручку входят оплаченные заказы за период без возвратов и отменённых доставок.
23
+ </Typography>
24
+ </Drawer.Body>
25
+ <Drawer.Footer layout="fill">
26
+ <Drawer.Close>
27
+ <Button.Root variant="outline" tone="neutral">
28
+ Понятно
29
+ </Button.Root>
30
+ </Drawer.Close>
31
+ </Drawer.Footer>
32
+ </Drawer.Content>
33
+ </Drawer.Root>
34
+ );
35
+ }
@@ -1,13 +1,14 @@
1
1
  # Dropdown
2
2
 
3
3
  **Category:** overlays
4
+ **Kind:** overlay
4
5
 
5
- > A menu of actions that opens from a trigger: groups, a profile header and destructive items.
6
+ > A menu of actions that opens from a trigger: picking an item runs it and closes the menu.
6
7
 
7
8
  ## When to use
8
9
  - Secondary actions of a card, row or document behind a «⋯» or labelled button.
9
10
  - An account / user menu in the app header.
10
- - A short list of commands (export formats, sort order) where picking one runs an action.
11
+ - A short list of commands (export formats, move to project) where picking one runs an action.
11
12
 
12
13
  ## When not to use
13
14
  - Choosing and showing a value in a form → use [Select](../select/COMPONENT.md) (or [TagSelect](../tag-select/COMPONENT.md) for several).
@@ -23,224 +24,194 @@ import { Dropdown } from "prime-ui-kit";
23
24
 
24
25
  ## Anatomy
25
26
  ```
26
- Dropdown.Root state (no DOM)
27
- ├── Dropdown.Trigger clones its single child (usually a Button)
28
- └── Dropdown.Content portaled role="menu" panel, scrolls
29
- ├── Dropdown.Block vertical section (header + list)
30
- │ └── Dropdown.Header user / plan header
31
- │ └── Dropdown.HeaderRow
32
- │ ├── Dropdown.HeaderLeading avatar / icon
33
- │ ├── Dropdown.HeaderMain
34
- │ │ ├── Dropdown.HeaderTitle
35
- │ │ └── Dropdown.HeaderDescription
36
- │ └── Dropdown.HeaderTrailing badge / button
37
- ├── Dropdown.Group role="group"
38
- │ ├── Dropdown.GroupLabel
39
- │ └── Dropdown.Item role="menuitem" button
40
- │ ├── Dropdown.ItemIcon
41
- │ ├── label
42
- │ └── Dropdown.ItemShortcut
43
- └── Dropdown.Separator full-bleed hairline
27
+ Dropdown.Root state and dismiss policy (no DOM)
28
+ ├── Dropdown.Trigger clones its child; toggles the menu
29
+ └── Dropdown.Content portaled role="menu" on the floating surface, scrolls
30
+ ├── Dropdown.Header non-interactive row: [avatar] [Title + Description] [badge]
31
+ │ ├── Dropdown.Title
32
+ │ └── Dropdown.Description
33
+ ├── Dropdown.Separator full-bleed Divider
34
+ ├── Dropdown.Group role="group", named by `label`
35
+ │ └── Dropdown.Item <button role="menuitem">
36
+ │ ├── Dropdown.ItemIcon leading glyph (aria-hidden)
37
+ │ └── Dropdown.ItemShortcut Kbd at the end
38
+ ├── Dropdown.CheckboxItem <button role="menuitemcheckbox">: label + check mark at the end while checked; stays open
39
+ └── Dropdown.Item
44
40
  ```
45
41
 
46
42
  ## API
47
43
 
44
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
45
+
48
46
  ### Dropdown.Root
49
- No DOM, no ref.
47
+ No DOM, no ref. Open state and dismiss policy.
50
48
 
51
49
  | Prop | Type | Default | Description |
52
50
  |---|---|---|---|
53
- | `open` | `boolean` | — | Controlled visibility. |
51
+ | `open` | `boolean` | — | Controlled visibility; together with `onOpenChange`. |
54
52
  | `defaultOpen` | `boolean` | `false` | Initial visibility, uncontrolled. |
55
- | `onOpenChange` | `(open: boolean) => void` | — | Called on trigger click, item select, Escape and outside press. |
56
- | `closeOnOutsideClick` | `boolean` | `true` | A pointerdown outside the panel and its trigger closes it. |
53
+ | `onOpenChange` | `(open: boolean) => void` | — | Called on every open and close: trigger, item pick, Escape, outside press, code. |
54
+ | `closeOnOutsideClick` | `boolean` | `true` | A pointerdown outside the menu and its trigger closes it; focus follows the pointer. |
55
+ | `closeOnEscape` | `boolean` | `true` | Escape closes the menu and returns focus to the trigger. |
57
56
  | `children` | `ReactNode` | — (required) | Trigger and Content. |
58
57
 
59
58
  ### Dropdown.Trigger
60
- No DOM of its own: clones the child (`cloneElement`), like `asChild`. Merges the child's `ref`, sets `id`, `aria-expanded`, `aria-haspopup="menu"`, `aria-controls`, `data-state`, chains `onClick` (toggles).
59
+ No DOM: clones the single child, merges `ref` and `onClick` (toggles), sets `aria-haspopup="menu"`, `aria-expanded`, `aria-controls`, `data-state`; the child's own `id` wins. Other props given to it (handlers, ARIA, `ref`) reach the child, so a wrapping `Tooltip.Trigger` keeps working.
61
60
 
62
61
  | Prop | Type | Default | Description |
63
62
  |---|---|---|---|
64
- | `children` | `ReactElement` | — (required) | Exactly one element. |
63
+ | `children` | `ReactElement` | — (required) | One element, usually a Button. |
65
64
 
66
65
  ### Dropdown.Content
67
- No ref. Rendered in a portal while open and during its exit animation. Traps focus while open and returns it to the trigger on close.
66
+ `ref` → `HTMLDivElement`. Portal + `role="menu"` on the floating surface (a ScrollContainer), named by the trigger; renders while open and during its exit animation. Focus moves to the first item; Tab closes the menu and returns focus to the trigger. Below 640px of viewport the menu is a bottom sheet: a scrim, a grab handle, swipe down to close (with `closeOnOutsideClick`), page scroll locked.
68
67
 
69
68
  | Prop | Type | Default | Description |
70
69
  |---|---|---|---|
71
- | `side` | `"bottom" \| "top"` | `"bottom"` | Preferred side; flips when it does not fit. |
72
- | `align` | `"start" \| "center" \| "end"` | `"start"` | Horizontal alignment to the trigger. |
73
- | `sameMinWidthAsTrigger` | `boolean` | `false` | The panel is at least as wide as the trigger. |
74
- | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `"m"` | Item height, text and icon tier; size context for controls inside. |
75
- | `className` | `string` | — | Extra class on the panel. |
76
- | `children` | `ReactNode` | — (required) | Items, groups, blocks, separators. |
70
+ | `side` | `"top" \| "right" \| "bottom" \| "left"` | `"bottom"` | Preferred side; flips to the opposite side when there is no room. |
71
+ | `align` | `"start" \| "center" \| "end"` | `"start"` | Alignment along the trigger; shifts inside the viewport. |
72
+ | `size` | `"xs" \| "s" \| "m" \| "l" \| "xl"` | `"m"` | Row tier: item height, text and icon; key hints one tier down. |
73
+ | `matchTriggerWidth` | `boolean` | `false` | The menu is at least as wide as the trigger. |
74
+ | `…rest` | `Omit<HTMLAttributes<HTMLElement>, "role">` | — | `className`, `onKeyDown` (runs before the arrow-key navigation) and the other attributes of the menu. |
77
75
 
78
76
  ### Dropdown.Item
79
- No ref. Renders `<button type="button" role="menuitem">`. Activating it calls `onSelect` and closes the menu.
77
+ `ref` → `HTMLButtonElement`. A `<button role="menuitem">`; a click, Enter or Space runs `onSelect` and closes the menu. + native button props.
80
78
 
81
79
  | Prop | Type | Default | Description |
82
80
  |---|---|---|---|
83
- | `onSelect` | `() => void` | — | Action on click / Enter / Space. |
84
- | `disabled` | `boolean` | — | `aria-disabled`, `tabIndex={-1}`, skipped by arrow keys, does not close the menu. |
85
- | `tone` | `"neutral" \| "danger"` | `"neutral"` | `danger` for destructive actions (delete, revoke). |
86
- | `className` | `string` | — | Extra class. |
87
- | `children` | `ReactNode` | — (required) | ItemIcon, label, ItemShortcut. |
81
+ | `onSelect` | `() => void` | — | The action of the item. |
82
+ | `disabled` | `boolean` | `false` | Muted, `aria-disabled`, skipped by the arrow keys, does nothing on click. |
83
+ | `tone` | `"neutral" \| "danger"` | `"neutral"` | `danger`: destructive action — danger text, icon and hover fill. |
84
+ | `children` | `ReactNode` | — | `Dropdown.ItemIcon`, the label, `Dropdown.ItemShortcut`. |
88
85
 
89
- ### Dropdown.ItemIcon
90
- `forwardRef` to the rendered element. Polymorphic.
86
+ ### Dropdown.CheckboxItem
87
+ `ref` → `HTMLButtonElement`. A `<button role="menuitemcheckbox">` with `aria-checked`: the label (and an `ItemIcon`) on the left like any item, an accent check mark at the end while checked and nothing while not; a click, Enter or Space toggles it and the menu stays open. + native button props.
91
88
 
92
89
  | Prop | Type | Default | Description |
93
90
  |---|---|---|---|
94
- | `as` | `ElementType` | `"span"` | Icon component (e.g. a lucide icon); receives `size`. |
95
- | `size` | `number` | tier icon (14 · 16 · 16 · 20 · 20) | Icon size in px; by default follows the Content `size`. |
96
- | `aria-hidden` | `boolean` | `true` | Decorative by default. |
97
- | `className` | `string` | — | Extra class. |
98
- | `children` | `ReactNode` | — | Glyph when `as` is a wrapper. |
99
-
100
- + any other props, passed to the `as` element (e.g. `strokeWidth`).
91
+ | `checked` | `boolean` | — | Checked state (controlled). |
92
+ | `defaultChecked` | `boolean` | `false` | Initial state (uncontrolled). |
93
+ | `onCheckedChange` | `(checked: boolean) => void` | — | Called with the new state. |
94
+ | `disabled` | `boolean` | `false` | Muted, `aria-disabled`, skipped by the arrow keys, does not toggle. |
95
+ | `children` | `ReactNode` | — | The label (optionally after a `Dropdown.ItemIcon`). |
101
96
 
102
- ### Dropdown.ItemShortcut
103
- No ref. Renders `<kbd>` at the end of the item. A hint only: bind the key yourself. + native `HTMLAttributes<HTMLElement>`.
97
+ ### Dropdown.ItemIcon · Dropdown.ItemShortcut
98
+ `ref` → `HTMLSpanElement` / `HTMLElement` (the `<kbd>`). An `aria-hidden` `<span>` holding the leading glyph at the menu icon size (a kit `Icon` follows it) / a `Kbd` one tier below the menu, pushed to the end of the item — a hint, not a handler. + native props.
104
99
 
105
100
  ### Dropdown.Group
106
- No ref. `<div role="group">`. + native `<div>` props.
107
-
108
- ### Dropdown.GroupLabel
109
- No ref.
101
+ `ref` → `HTMLDivElement`. `<div role="group">` named by its visible `label`. + native `<div>` props.
110
102
 
111
103
  | Prop | Type | Default | Description |
112
104
  |---|---|---|---|
113
- | `children` | `ReactNode` | — (required) | Group heading. |
114
- | `className` | `string` | — | Extra class. |
105
+ | `label` | `ReactNode` | — | Heading of the group (caption, muted); also its accessible name. |
115
106
 
116
107
  ### Dropdown.Separator
117
- No ref. Renders `<hr>`.
118
-
119
- | Prop | Type | Default | Description |
120
- |---|---|---|---|
121
- | `className` | `string` | — | Extra class. |
122
-
123
- ### Dropdown.Block · Header · HeaderRow · HeaderLeading · HeaderMain · HeaderTitle
124
- No ref. Layout `<div>`s. + native `<div>` props.
125
-
126
- ### Dropdown.HeaderDescription
127
- No ref.
108
+ `ref` → `HTMLDivElement`. A full-bleed Divider between items or groups.
128
109
 
129
110
  | Prop | Type | Default | Description |
130
111
  |---|---|---|---|
131
- | `truncate` | `boolean` | — | One line with an ellipsis (long emails). |
132
-
133
- + native `<div>` props.
112
+ | `…rest` | `Omit<HTMLAttributes<HTMLDivElement>, "children">` | — | `className` and the other attributes of the divider. |
134
113
 
135
- ### Dropdown.HeaderTrailing
136
- No ref.
137
-
138
- | Prop | Type | Default | Description |
139
- |---|---|---|---|
140
- | `alignSelf` | `"start" \| "center"` | `"start"` | Vertical alignment in the header row (`center` for a button). |
141
-
142
- + native `<div>` props.
114
+ ### Dropdown.Header · Dropdown.Title · Dropdown.Description
115
+ `ref` → `HTMLDivElement`. A non-interactive row at the top (who is signed in, the plan): an avatar, Title + Description stacked in one column, a trailing badge or button — in the written order / the medium heading line / the muted line under it; both truncate. + native `<div>` props.
143
116
 
144
117
  ## Variants
145
- The panel has one look: `bg-raised` fill, `--prime-panel-radius` (12), `--prime-panel-padding` (4), `shadow-overlay`; items have radius 8.
118
+ The panel is the shared floating surface: `bg-raised`, `--prime-panel-radius` (12), padding 4, `shadow-overlay`; rows have radius 8 and the tier item height.
146
119
 
147
120
  ### size (Content)
148
121
  | Value | Looks like | Use when | Default |
149
122
  |---|---|---|---|
150
- | `xs` | item 24, text 12/16, icon 14 | xs triggers | |
151
- | `s` | item 28, text 13/20, icon 16 | Dense toolbars, s triggers | |
123
+ | `xs` | item 24, text 12/16, icon 14 | Dense toolbars | |
124
+ | `s` | item 28, text 13/20, icon 16 | Table rows, compact headers | |
152
125
  | `m` | item 32, text 14/20, icon 16 | Most menus | yes |
153
- | `l` | item 36, text 16/24, icon 20 | l triggers | |
154
- | `xl` | item 40, text 16/24, icon 20 | xl triggers | |
126
+ | `l` | item 36, text 16/24, icon 20 | Roomy layouts | |
127
+ | `xl` | item 40, text 16/24, icon 20 | Touch-first screens | |
155
128
 
156
129
  ### tone (Item)
157
130
  | Value | Looks like | Use when | Default |
158
131
  |---|---|---|---|
159
- | `neutral` | Primary text, muted icon, `fill-subtle` on hover / focus | Regular actions | yes |
160
- | `danger` | `danger-text` label and icon, `danger-soft` on hover / focus | Delete, revoke, leave — last in the menu after a Separator | |
132
+ | `neutral` | primary text, muted icon, subtle fill on hover | Regular actions | yes |
133
+ | `danger` | danger text and icon, danger-soft fill on hover | Delete, revoke, leave | |
161
134
 
162
135
  ### side / align (Content)
163
136
  | Value | Looks like | Use when | Default |
164
137
  |---|---|---|---|
165
- | `side="bottom"` | Below the trigger, `--prime-space-1` away | Default | yes |
138
+ | `side="bottom"` | Below the trigger | Default | yes |
166
139
  | `side="top"` | Above the trigger | Triggers near the bottom of the screen | |
140
+ | `side="left"` / `"right"` | Beside the trigger, aligned along its height | Triggers in a side rail (account menu at the bottom of a sidebar) | |
167
141
  | `align="start"` | Start edges aligned | Default | yes |
168
- | `align="center"` | Centred to the trigger | Small centred triggers | |
169
- | `align="end"` | End edges aligned | «⋯» buttons and user menus at the right edge | |
142
+ | `align="center"` | Centred on the trigger | Small triggers | |
143
+ | `align="end"` | End edges aligned | «⋯» buttons at the end of a row | |
170
144
 
171
145
  ### Flags
172
146
  | Value | Looks like | Use when | Default |
173
147
  |---|---|---|---|
174
- | `sameMinWidthAsTrigger` | Panel at least trigger width | Full-width triggers | `false` |
175
- | `disabled` (Item) | `text-disabled`, no hover fill | Unavailable action that should stay visible | — |
176
- | `truncate` (HeaderDescription) | One line with ellipsis | Long emails | — |
177
- | `alignSelf` (HeaderTrailing) `start` · `center` | Trailing slot at the top or centred | Badge (`start`), button (`center`) | `start` |
178
-
179
- **Combinations** — Content `size` = trigger `size`. Destructive item: `tone="danger"` placed last, separated by `Dropdown.Separator`. A disabled danger item looks like any disabled item.
148
+ | `disabled` (Item) | Disabled text, skipped by arrows | Not allowed right now (say why in the label) | `false` |
149
+ | `matchTriggerWidth` | Menu at least as wide as the trigger | Full-width buttons | `false` |
150
+ | `closeOnOutsideClick={false}` · `closeOnEscape={false}` | Stays open until an item is picked | A required choice in an onboarding step | |
180
151
 
181
- **Hierarchy** — keep the primary action outside the menu as a visible button; the menu holds secondary actions. Group long menus with `GroupLabel`; one danger group at the end.
152
+ **Combinations** — menu `size` = trigger `size`. Destructive items go last, after a separator. Key hints only for shortcuts the app really handles.
182
153
 
183
154
  ## States
184
- - Closed / open: uncontrolled by default; `open` + `onOpenChange` for controlled. Selecting an item closes the menu.
185
- - Panel DOM: `data-state="open" | "closed"`, `data-side` (resolved), `data-size`, `data-overlay-portal-layer`.
186
- - Item DOM: `data-tone`, `data-disabled="true"`, `aria-disabled`.
187
- - Trigger DOM: `data-state`, `aria-expanded`.
188
- - Hover and keyboard focus highlight the row with background (`fill-subtle` / `danger-soft`), not a ring; active `fill-subtle-active`.
189
- - No built-in search or empty state.
155
+ | State | Driven by | DOM |
156
+ |---|---|---|
157
+ | open / closed | `open` / `defaultOpen` / `onOpenChange` | `data-state` on the menu (closed while the exit animation plays) and on the trigger, `aria-expanded` on the trigger |
158
+ | side | `side` and the room next to the trigger | `data-side` (resolved) |
159
+ | size | `size` on Content | `data-size` |
160
+ | item hover / focus | a hovering pointer, arrow keys | subtle fill (danger-soft for `danger`), no movement; a tap leaves no hover fill |
161
+ | item disabled | `disabled` | `aria-disabled="true"`, `data-disabled="true"` |
162
+ | item tone | `tone` | `data-tone` |
163
+ | sheet | viewport below 640px | a scrim and a full-width bottom sheet with an `aria-hidden` grab handle around the menu; the sheet carries `data-state`, the menu keeps its role and ref; page scroll locked; a swipe down from the handle closes it (with `closeOnOutsideClick`) |
190
164
 
191
165
  ## Layout & spacing
192
- - Width `max-content` between `--prime-panel-min-width` and twice that; max height `--prime-panel-max-height` or the free space, then the list scrolls.
193
- - Item padding-x `--prime-panel-item-padding-x` (8); icon → label gap is the tier gap; the shortcut is pushed to the end with `--prime-space-4` before it.
194
- - Separators are full-bleed hairlines with `--prime-panel-padding` above and below.
195
- - Kept `--prime-space-2` from viewport edges.
166
+ - Width is `max-content` between `--prime-panel-min-width` and twice that; items never wrap.
167
+ - Max height = min(`--prime-panel-max-height`, the room on the resolved side); the menu scrolls inside.
168
+ - Separators run edge to edge across the panel padding; group labels take `--prime-panel-group-label-height`.
169
+ - Kept `--prime-space-2` from viewport edges; follows the trigger on scroll and resize.
196
170
 
197
171
  ## Accessibility
198
- - Panel `role="menu"` labelled by the trigger; items `role="menuitem"`; groups `role="group"`.
199
- - Keyboard: Arrow Down / Up move between enabled items (wrapping), Home / End jump to the first / last, Enter / Space activate, Tab is kept inside (focus trap), Escape closes and returns focus to the trigger.
200
- - An outside press closes without moving focus back (foundation §8); only the topmost layer reacts.
201
- - Icon-only triggers need `aria-label`. ItemIcon is `aria-hidden` by default.
202
- - No `labels`.
203
172
 
204
- ## Examples
205
- | File | Scenario | When to use this pattern |
206
- |---|---|---|
207
- | [sizes.tsx](examples/sizes.tsx) | `size` xs → xl with icons, shortcuts, danger item | Matching the menu to the trigger |
208
- | [variants.tsx](examples/variants.tsx) | Item kinds, groups, disabled and `tone="danger"` | Document actions menu |
209
- | [states.tsx](examples/states.tsx) | Long scrolling list with groups and a disabled row | Many items |
210
- | [row-actions.tsx](examples/row-actions.tsx) | Card toolbar with a visible primary action and «⋯» menu | Secondary actions of a card / row |
211
- | [composition.tsx](examples/composition.tsx) | Account menu with header, avatar, badge and plan block | User menu |
212
- | [placement.tsx](examples/placement.tsx) | `align` × `side` | Placing near edges |
213
- | [full-width.tsx](examples/full-width.tsx) | `sameMinWidthAsTrigger` | Full-width triggers |
214
- | [controlled.tsx](examples/controlled.tsx) | `open` + `onOpenChange` in parent state | Syncing with other UI |
215
- | [as-child.tsx](examples/as-child.tsx) | Text-link button as the trigger | Inline switches |
173
+ ### Keyboard
174
+ | Key | Action |
175
+ |---|---|
176
+ | `Enter` · `Space` | On the trigger opens the menu (focus on the first item); on an item runs it and returns focus to the trigger; on a checkbox item toggles it and the menu stays open. |
177
+ | `ArrowDown` · `ArrowUp` | Move focus to the next / previous enabled item, wrapping. |
178
+ | `Home` · `End` | First / last enabled item. |
179
+ | `Escape` | Closes the menu (`closeOnEscape`); focus returns to the trigger. |
180
+ | `Tab` · `Shift+Tab` | Closes the menu; focus returns to the trigger (Tab then goes on to the next stop). |
216
181
 
217
- ```tsx
218
- import { Button, Dropdown } from "prime-ui-kit";
219
-
220
- export function Example() {
221
- return (
222
- <Dropdown.Root>
223
- <Dropdown.Trigger>
224
- <Button.Root variant="soft" tone="neutral">
225
- Действия
226
- </Button.Root>
227
- </Dropdown.Trigger>
228
- <Dropdown.Content>
229
- <Dropdown.Item onSelect={() => {}}>Переименовать</Dropdown.Item>
230
- <Dropdown.Separator />
231
- <Dropdown.Item tone="danger">Удалить</Dropdown.Item>
232
- </Dropdown.Content>
233
- </Dropdown.Root>
234
- );
235
- }
236
- ```
182
+ ### ARIA
183
+ - The menu is `role="menu"` named by the trigger; items are `role="menuitem"`, checkbox items `role="menuitemcheckbox"` with `aria-checked`, disabled ones `aria-disabled`.
184
+ - The trigger gets `aria-haspopup="menu"`, `aria-expanded` and `aria-controls`.
185
+ - `Dropdown.Group` is `role="group"` named by its `label`.
186
+ - `Dropdown.ItemIcon` is hidden from screen readers; a key hint is text only — the app handles the shortcut.
187
+ - An outside press closes the menu without moving focus back to the trigger: focus follows the pointer (foundation §8).
188
+
189
+ ### Labels
190
+ <!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
191
+
192
+ No `labels`.
193
+
194
+ ## Examples
195
+ | Example | Shows |
196
+ |---|---|
197
+ | [overview.tsx](examples/overview.tsx) | An icon-only button opens the row actions; picking an item runs it and closes the menu — `Dropdown.Item`, `onSelect`. |
198
+ | [structure.tsx](examples/structure.tsx) | Optional parts of an account menu: a header with an avatar, a labelled group, item icons, key hints and separators — `Dropdown.Header`, `Dropdown.Group`, `Dropdown.ItemIcon`, `Dropdown.ItemShortcut`. |
199
+ | [sizes.tsx](examples/sizes.tsx) | Every size tier with icons, key hints and a destructive item; the menu takes the tier of its trigger — `size`. |
200
+ | [placement.tsx](examples/placement.tsx) | Every side and alignment relative to the trigger; near the viewport edge the menu flips and shifts — `side`, `align`. |
201
+ | [states.tsx](examples/states.tsx) | A regular, a disabled and a destructive item; arrow keys skip the disabled one — `disabled`, `tone`. |
202
+ | [match-trigger-width.tsx](examples/match-trigger-width.tsx) | Under a full-width button the menu is at least as wide as the trigger — `matchTriggerWidth`. |
203
+ | [checkbox-items.tsx](examples/checkbox-items.tsx) | A column chooser: toggles in the menu keep it open, the key column cannot be hidden — `Dropdown.CheckboxItem`, `checked`, `onCheckedChange`. |
204
+ | [long-list.tsx](examples/long-list.tsx) | More projects than fit: the grouped list scrolls inside the panel, capped by the room next to the trigger — `Dropdown.Group`. |
205
+ | [dismiss.tsx](examples/dismiss.tsx) | An onboarding step keeps the menu open on an outside press and on Escape until an item is picked — `closeOnOutsideClick`, `closeOnEscape`. |
206
+ | [controlled-open.tsx](examples/controlled-open.tsx) | The parent owns the open state and opens the menu from another button; the picked step updates the trigger — `open`, `onOpenChange`. |
237
207
 
238
208
  ## Mistakes
239
- - `onClick` on Dropdown.Item → use `onSelect` (Item has no `onClick` prop).
240
- - Using Dropdown as a form select that shows the chosen value → use Select.
241
- - `tone="error"` → destructive tone is `danger`.
242
- - A different `size` on the trigger and the panel → use the same tier.
243
- - Setting `size` on every `ItemIcon` → leave it, it follows the panel.
209
+ - Using Dropdown to pick a form value → Select shows the value and works with forms.
210
+ - An icon passed as a component (`as={Icon}`) → put the glyph inside `Dropdown.ItemIcon`.
211
+ - A hand-written shortcut `<kbd>` → `Dropdown.ItemShortcut` (a Kbd at the end of the item).
212
+ - `Dropdown.Group` with a separate heading element → pass the heading as `label`.
213
+ - A destructive item without `tone="danger"`, or in the middle of the list → mark it and put it last.
244
214
 
245
215
  ## Related
246
- [Select](../select/COMPONENT.md) · [CommandMenu](../command-menu/COMPONENT.md) · [Popover](../popover/COMPONENT.md) · [Kbd](../kbd/COMPONENT.md) · [Avatar](../avatar/COMPONENT.md)
216
+ - **Built from:** [ScrollContainer](../scroll-container/COMPONENT.md) (the menu), [Kbd](../kbd/COMPONENT.md) (`ItemShortcut`), [Divider](../divider/COMPONENT.md) (`Separator`), Icon (`action.check` of `CheckboxItem`)
217
+ - **See also:** [Select](../select/COMPONENT.md), [CommandMenu](../command-menu/COMPONENT.md), [Popover](../popover/COMPONENT.md), [Button](../button/COMPONENT.md)
@@ -0,0 +1,48 @@
1
+ /** A column chooser: toggles in the menu keep it open, the key column cannot be hidden — `Dropdown.CheckboxItem`, `checked`, `onCheckedChange`. */
2
+ import { Button, Dropdown, Icon } from "prime-ui-kit";
3
+ import * as React from "react";
4
+
5
+ const COLUMNS = [
6
+ { id: "number", label: "Номер", locked: true },
7
+ { id: "client", label: "Клиент", locked: false },
8
+ { id: "status", label: "Статус", locked: false },
9
+ { id: "amount", label: "Сумма", locked: false },
10
+ { id: "due", label: "Срок оплаты", locked: false },
11
+ ];
12
+
13
+ export default function DropdownCheckboxItemsExample() {
14
+ const [hidden, setHidden] = React.useState<string[]>(["due"]);
15
+ const shown = COLUMNS.length - hidden.length;
16
+
17
+ const toggle = (id: string, visible: boolean) =>
18
+ setHidden((list) => (visible ? list.filter((item) => item !== id) : [...list, id]));
19
+
20
+ return (
21
+ <Dropdown.Root>
22
+ <Dropdown.Trigger>
23
+ <Button.Root variant="soft" tone="neutral">
24
+ <Button.Icon>
25
+ <Icon name="action.settings" />
26
+ </Button.Icon>
27
+ Колонки: {shown} из {COLUMNS.length}
28
+ </Button.Root>
29
+ </Dropdown.Trigger>
30
+ <Dropdown.Content>
31
+ <Dropdown.Group label="Показывать">
32
+ {COLUMNS.map((column) => (
33
+ <Dropdown.CheckboxItem
34
+ key={column.id}
35
+ checked={!hidden.includes(column.id)}
36
+ disabled={column.locked}
37
+ onCheckedChange={(visible) => toggle(column.id, visible)}
38
+ >
39
+ {column.label}
40
+ </Dropdown.CheckboxItem>
41
+ ))}
42
+ </Dropdown.Group>
43
+ <Dropdown.Separator />
44
+ <Dropdown.Item onSelect={() => setHidden([])}>Показать все</Dropdown.Item>
45
+ </Dropdown.Content>
46
+ </Dropdown.Root>
47
+ );
48
+ }
@@ -0,0 +1,32 @@
1
+ /** The parent owns the open state and opens the menu from another button; the picked step updates the trigger — `open`, `onOpenChange`. */
2
+ import { Button, Dropdown } from "prime-ui-kit";
3
+ import * as React from "react";
4
+
5
+ const STEPS = ["Шаг 1 · Реквизиты", "Шаг 2 · Товары", "Шаг 3 · Оплата"];
6
+
7
+ export default function DropdownControlledOpenExample() {
8
+ const [open, setOpen] = React.useState(false);
9
+ const [step, setStep] = React.useState(STEPS[1]);
10
+
11
+ return (
12
+ <>
13
+ <Button.Root variant="ghost" tone="neutral" onClick={() => setOpen(true)}>
14
+ Перейти к шагу
15
+ </Button.Root>
16
+ <Dropdown.Root open={open} onOpenChange={setOpen}>
17
+ <Dropdown.Trigger>
18
+ <Button.Root variant="soft" tone="neutral">
19
+ {step}
20
+ </Button.Root>
21
+ </Dropdown.Trigger>
22
+ <Dropdown.Content>
23
+ {STEPS.map((item) => (
24
+ <Dropdown.Item key={item} onSelect={() => setStep(item)}>
25
+ {item}
26
+ </Dropdown.Item>
27
+ ))}
28
+ </Dropdown.Content>
29
+ </Dropdown.Root>
30
+ </>
31
+ );
32
+ }
@@ -0,0 +1,17 @@
1
+ /** An onboarding step keeps the menu open on an outside press and on Escape until an item is picked — `closeOnOutsideClick`, `closeOnEscape`. */
2
+ import { Button, Dropdown } from "prime-ui-kit";
3
+
4
+ export default function DropdownDismissExample() {
5
+ return (
6
+ <Dropdown.Root closeOnOutsideClick={false} closeOnEscape={false}>
7
+ <Dropdown.Trigger>
8
+ <Button.Root>Выберите роль в команде</Button.Root>
9
+ </Dropdown.Trigger>
10
+ <Dropdown.Content>
11
+ <Dropdown.Item>Руководитель</Dropdown.Item>
12
+ <Dropdown.Item>Менеджер проектов</Dropdown.Item>
13
+ <Dropdown.Item>Бухгалтер</Dropdown.Item>
14
+ </Dropdown.Content>
15
+ </Dropdown.Root>
16
+ );
17
+ }