prime-ui-kit 0.9.3 → 0.11.0

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 (1890) hide show
  1. package/README.md +120 -59
  2. package/THIRD_PARTY_NOTICES +76 -0
  3. package/bin/prime-ui-kit.js +52 -0
  4. package/dist/chunks/chunk-6TI4DSM5.js +5669 -0
  5. package/dist/chunks/chunk-CUH6DJ57.js +29335 -0
  6. package/dist/chunks/{chunk-U5SR2LZR.js → chunk-GKX3QAUC.js} +161 -6
  7. package/dist/chunks/chunk-Q3BFRQHZ.js +1729 -0
  8. package/dist/chunks/chunk-WDTSHOTD.js +6841 -0
  9. package/dist/color-picker.d.ts +5 -3
  10. package/dist/color-picker.js +7 -2
  11. package/dist/components/accordion/Accordion.d.ts +1 -1
  12. package/dist/components/avatar/Avatar.d.ts +2 -2
  13. package/dist/components/badge/Badge.d.ts +17 -5
  14. package/dist/components/badge/tier.d.ts +6 -2
  15. package/dist/components/banner/Banner.d.ts +1 -1
  16. package/dist/components/breadcrumb/Breadcrumb.d.ts +1 -1
  17. package/dist/components/button/Button.d.ts +47 -12
  18. package/dist/components/button-group/ButtonGroup.d.ts +22 -5
  19. package/dist/components/card/Card.d.ts +19 -3
  20. package/dist/components/chart-frame/ChartFrame.d.ts +229 -0
  21. package/dist/components/chat/Chat.d.ts +192 -0
  22. package/dist/components/chat/ChatPinned.d.ts +44 -0
  23. package/dist/components/chat/ChatRows.d.ts +30 -0
  24. package/dist/components/chat/MessageList.d.ts +95 -0
  25. package/dist/components/chat/chatContext.d.ts +54 -0
  26. package/dist/components/chat/groupMessages.d.ts +50 -0
  27. package/dist/components/chat/messageFlow.d.ts +42 -0
  28. package/dist/components/checkbox/Checkbox.d.ts +9 -4
  29. package/dist/components/code-block/CodeBlock.d.ts +1 -1
  30. package/dist/components/color-field/ColorField.d.ts +44 -0
  31. package/dist/components/color-picker/ColorPicker.d.ts +5 -4
  32. package/dist/components/color-picker/ColorPresets.d.ts +22 -14
  33. package/dist/components/color-swatches/ColorSwatches.d.ts +9 -4
  34. package/dist/components/command-menu/CommandMenu.d.ts +41 -11
  35. package/dist/components/composer/Composer.d.ts +234 -0
  36. package/dist/components/composer/format.d.ts +39 -0
  37. package/dist/components/composer/liveWave.d.ts +30 -0
  38. package/dist/components/composer/useRecorder.d.ts +72 -0
  39. package/dist/components/confirm-dialog/ConfirmDialog.d.ts +57 -0
  40. package/dist/components/crossfade/Crossfade.d.ts +8 -2
  41. package/dist/components/data-table/ColumnsMenu.d.ts +19 -0
  42. package/dist/components/data-table/DataTable.d.ts +72 -8
  43. package/dist/components/data-table/Footer.d.ts +1 -1
  44. package/dist/components/data-table/Head.d.ts +6 -2
  45. package/dist/components/data-table/Row.d.ts +33 -5
  46. package/dist/components/data-table/StateRows.d.ts +4 -2
  47. package/dist/components/data-table/context.d.ts +14 -0
  48. package/dist/components/data-table/reorder.d.ts +86 -0
  49. package/dist/components/data-table/rowEvents.d.ts +14 -0
  50. package/dist/components/data-table/rows.d.ts +17 -1
  51. package/dist/components/data-table/serverMode.d.ts +8 -0
  52. package/dist/components/data-table/types.d.ts +16 -0
  53. package/dist/components/data-table/useColumnHover.d.ts +2 -1
  54. package/dist/components/data-table/useInfiniteRows.d.ts +4 -1
  55. package/dist/components/data-table/useRowSelection.d.ts +5 -4
  56. package/dist/components/datepicker/Datepicker.d.ts +8 -3
  57. package/dist/components/datepicker/DatepickerPanel.d.ts +2 -2
  58. package/dist/components/datepicker/panelLayout.d.ts +2 -2
  59. package/dist/components/description-list/DescriptionList.d.ts +59 -0
  60. package/dist/components/digit-input/DigitInput.d.ts +12 -5
  61. package/dist/components/divider/Divider.d.ts +1 -1
  62. package/dist/components/dnd/Dnd.d.ts +48 -20
  63. package/dist/components/dnd/dragSession.d.ts +27 -2
  64. package/dist/components/dnd/geometry.d.ts +12 -4
  65. package/dist/components/dnd/labels.d.ts +12 -1
  66. package/dist/components/dnd/useDragSource.d.ts +2 -0
  67. package/dist/components/dnd/useDropTarget.d.ts +6 -3
  68. package/dist/components/dnd/useFlipList.d.ts +8 -2
  69. package/dist/components/dnd/useSortableList.d.ts +13 -10
  70. package/dist/components/drawer/Drawer.d.ts +14 -12
  71. package/dist/components/dropdown/Dropdown.d.ts +23 -4
  72. package/dist/components/empty-page/EmptyPage.d.ts +35 -5
  73. package/dist/components/fieldset/Fieldset.d.ts +24 -0
  74. package/dist/components/file-upload/FileUpload.d.ts +152 -14
  75. package/dist/components/gallery/Gallery.d.ts +79 -0
  76. package/dist/components/gallery/layout.d.ts +34 -0
  77. package/dist/components/gantt/Gantt.d.ts +102 -0
  78. package/dist/components/gantt/GanttBar.d.ts +51 -0
  79. package/dist/components/gantt/GanttRow.d.ts +75 -0
  80. package/dist/components/gantt/ganttModel.d.ts +133 -0
  81. package/dist/components/gantt/useEdgeAutoScroll.d.ts +12 -0
  82. package/dist/components/hint/Hint.d.ts +1 -1
  83. package/dist/components/index.d.ts +53 -22
  84. package/dist/components/input/Input.d.ts +58 -4
  85. package/dist/components/kanban/Kanban.d.ts +77 -12
  86. package/dist/components/kbd/Kbd.d.ts +1 -1
  87. package/dist/components/label/Label.d.ts +1 -1
  88. package/dist/components/link-button/LinkButton.d.ts +2 -2
  89. package/dist/components/login-form/LoginForm.d.ts +1 -1
  90. package/dist/components/media-viewer/MediaViewer.d.ts +55 -0
  91. package/dist/components/media-viewer/ViewerVideo.d.ts +53 -0
  92. package/dist/components/media-viewer/originShape.d.ts +17 -0
  93. package/dist/components/media-viewer/physics.d.ts +81 -0
  94. package/dist/components/media-viewer/types.d.ts +59 -0
  95. package/dist/components/media-viewer/viewerEngine.d.ts +202 -0
  96. package/dist/components/message/Message.d.ts +83 -0
  97. package/dist/components/message/MessageCards.d.ts +64 -0
  98. package/dist/components/message/MessageFile.d.ts +36 -0
  99. package/dist/components/message/MessageMedia.d.ts +12 -0
  100. package/dist/components/message/MessageParts.d.ts +206 -0
  101. package/dist/components/message/MessageReactionBar.d.ts +35 -0
  102. package/dist/components/message/MessageTyping.d.ts +25 -0
  103. package/dist/components/message/bubbleHug.d.ts +10 -0
  104. package/dist/components/message/bubbleMorph.d.ts +43 -0
  105. package/dist/components/message/formatMessageTime.d.ts +2 -0
  106. package/dist/components/message/types.d.ts +21 -0
  107. package/dist/components/modal/DialogGuard.d.ts +21 -0
  108. package/dist/components/modal/DialogParts.d.ts +90 -15
  109. package/dist/components/modal/Modal.d.ts +9 -47
  110. package/dist/components/modal/ModalDialog.d.ts +46 -0
  111. package/dist/components/native-select/NativeSelect.d.ts +3 -3
  112. package/dist/components/notification/Notification.d.ts +7 -1
  113. package/dist/components/page-content/PageContent.d.ts +58 -1
  114. package/dist/components/page-toolbar/PageToolbar.d.ts +8 -7
  115. package/dist/components/pagination/Pagination.d.ts +1 -1
  116. package/dist/components/popover/Popover.d.ts +12 -4
  117. package/dist/components/progress-bar/ProgressBar.d.ts +30 -10
  118. package/dist/components/progress-circle/ProgressCircle.d.ts +42 -7
  119. package/dist/components/radio/Radio.d.ts +4 -4
  120. package/dist/components/scroll-container/ScrollContainer.d.ts +27 -7
  121. package/dist/components/scroll-container/useFitFlag.d.ts +5 -0
  122. package/dist/components/scroll-container/useScrollEdges.d.ts +53 -0
  123. package/dist/components/scroll-container/useWheelToInline.d.ts +10 -0
  124. package/dist/components/segmented-control/SegmentedControl.d.ts +23 -6
  125. package/dist/components/select/Select.d.ts +38 -8
  126. package/dist/components/select/SelectItem.d.ts +7 -4
  127. package/dist/components/select/selectContext.d.ts +12 -3
  128. package/dist/components/sheet/Sheet.d.ts +49 -0
  129. package/dist/components/skeleton/Skeleton.d.ts +1 -1
  130. package/dist/components/slider/Slider.d.ts +17 -3
  131. package/dist/components/smart-filter/SmartFilter.d.ts +48 -6
  132. package/dist/components/smart-filter/model.d.ts +31 -11
  133. package/dist/components/sparkline/Sparkline.d.ts +19 -4
  134. package/dist/components/spinner/Spinner.d.ts +4 -3
  135. package/dist/components/stepper/Stepper.d.ts +2 -2
  136. package/dist/components/switch/Switch.d.ts +14 -4
  137. package/dist/components/tabs/Tabs.d.ts +5 -3
  138. package/dist/components/tag-select/TagOptionMenu.d.ts +6 -2
  139. package/dist/components/tag-select/TagSelect.d.ts +27 -9
  140. package/dist/components/tag-select/VirtualOptions.d.ts +24 -0
  141. package/dist/components/textarea/Textarea.d.ts +48 -2
  142. package/dist/components/thumbnail/Thumbnail.d.ts +48 -6
  143. package/dist/components/timeline/Timeline.d.ts +1 -1
  144. package/dist/components/tooltip/Tooltip.d.ts +9 -4
  145. package/dist/components/typography/Typography.d.ts +1 -1
  146. package/dist/components/video-note/VideoNote.d.ts +27 -0
  147. package/dist/components/voice-player/VoicePlayer.d.ts +33 -0
  148. package/dist/components/voice-player/getWaveform.d.ts +7 -0
  149. package/dist/hooks/useEdgeOverflow.d.ts +17 -8
  150. package/dist/hooks/useImageStatus.d.ts +10 -10
  151. package/dist/hooks/useModalLayer.d.ts +6 -4
  152. package/dist/hooks/usePosition.d.ts +16 -1
  153. package/dist/hooks/usePresence.d.ts +1 -1
  154. package/dist/hooks/useSwipeDismiss.d.ts +11 -19
  155. package/dist/hooks/useTokenValue.d.ts +10 -0
  156. package/dist/hooks/useUploadQueue.d.ts +60 -0
  157. package/dist/hooks/useVirtualRows.d.ts +74 -0
  158. package/dist/icon-set.d.ts +530 -0
  159. package/dist/icon-set.js +1056 -0
  160. package/dist/icons/Icon.d.ts +13 -20
  161. package/dist/icons/glyph.d.ts +55 -0
  162. package/dist/icons/glyphs/a-arrow-down.d.ts +2 -0
  163. package/dist/icons/glyphs/a-arrow-up.d.ts +2 -0
  164. package/dist/icons/glyphs/accessibility.d.ts +2 -0
  165. package/dist/icons/glyphs/activity.d.ts +2 -0
  166. package/dist/icons/glyphs/air-vent.d.ts +2 -0
  167. package/dist/icons/glyphs/airplay.d.ts +2 -0
  168. package/dist/icons/glyphs/alarm-clock-check.d.ts +2 -0
  169. package/dist/icons/glyphs/alarm-clock-minus.d.ts +2 -0
  170. package/dist/icons/glyphs/alarm-clock-plus.d.ts +2 -0
  171. package/dist/icons/glyphs/alarm-clock.d.ts +2 -0
  172. package/dist/icons/glyphs/alarm-smoke.d.ts +2 -0
  173. package/dist/icons/glyphs/align-horizontal-space-around.d.ts +2 -0
  174. package/dist/icons/glyphs/align-vertical-space-around.d.ts +2 -0
  175. package/dist/icons/glyphs/ambulance.d.ts +2 -0
  176. package/dist/icons/glyphs/angry.d.ts +2 -0
  177. package/dist/icons/glyphs/annoyed.d.ts +2 -0
  178. package/dist/icons/glyphs/archive.d.ts +2 -0
  179. package/dist/icons/glyphs/arrow-big-down-dash.d.ts +2 -0
  180. package/dist/icons/glyphs/arrow-big-down.d.ts +2 -0
  181. package/dist/icons/glyphs/arrow-big-left-dash.d.ts +2 -0
  182. package/dist/icons/glyphs/arrow-big-left.d.ts +2 -0
  183. package/dist/icons/glyphs/arrow-big-right-dash.d.ts +2 -0
  184. package/dist/icons/glyphs/arrow-big-right.d.ts +2 -0
  185. package/dist/icons/glyphs/arrow-big-up-dash.d.ts +2 -0
  186. package/dist/icons/glyphs/arrow-big-up.d.ts +2 -0
  187. package/dist/icons/glyphs/arrow-down-0-1.d.ts +2 -0
  188. package/dist/icons/glyphs/arrow-down-1-0.d.ts +2 -0
  189. package/dist/icons/glyphs/arrow-down-a-z.d.ts +2 -0
  190. package/dist/icons/glyphs/arrow-down-left.d.ts +2 -0
  191. package/dist/icons/glyphs/arrow-down-right.d.ts +2 -0
  192. package/dist/icons/glyphs/arrow-down-z-a.d.ts +2 -0
  193. package/dist/icons/glyphs/arrow-down.d.ts +2 -0
  194. package/dist/icons/glyphs/arrow-left.d.ts +2 -0
  195. package/dist/icons/glyphs/arrow-right.d.ts +2 -0
  196. package/dist/icons/glyphs/arrow-up-down.d.ts +2 -0
  197. package/dist/icons/glyphs/arrow-up-left.d.ts +2 -0
  198. package/dist/icons/glyphs/arrow-up-right.d.ts +2 -0
  199. package/dist/icons/glyphs/arrow-up.d.ts +2 -0
  200. package/dist/icons/glyphs/at-sign.d.ts +2 -0
  201. package/dist/icons/glyphs/atom.d.ts +2 -0
  202. package/dist/icons/glyphs/audio-lines.d.ts +2 -0
  203. package/dist/icons/glyphs/axe.d.ts +2 -0
  204. package/dist/icons/glyphs/badge-alert.d.ts +2 -0
  205. package/dist/icons/glyphs/badge-percent.d.ts +2 -0
  206. package/dist/icons/glyphs/ban.d.ts +2 -0
  207. package/dist/icons/glyphs/banana.d.ts +2 -0
  208. package/dist/icons/glyphs/battery-charging.d.ts +2 -0
  209. package/dist/icons/glyphs/battery-full.d.ts +2 -0
  210. package/dist/icons/glyphs/battery-low.d.ts +2 -0
  211. package/dist/icons/glyphs/battery-medium.d.ts +2 -0
  212. package/dist/icons/glyphs/battery-plus.d.ts +2 -0
  213. package/dist/icons/glyphs/battery-warning.d.ts +2 -0
  214. package/dist/icons/glyphs/battery.d.ts +2 -0
  215. package/dist/icons/glyphs/bell-electric.d.ts +2 -0
  216. package/dist/icons/glyphs/bell.d.ts +2 -0
  217. package/dist/icons/glyphs/biceps-flexed.d.ts +2 -0
  218. package/dist/icons/glyphs/bike.d.ts +2 -0
  219. package/dist/icons/glyphs/binary.d.ts +2 -0
  220. package/dist/icons/glyphs/blocks.d.ts +2 -0
  221. package/dist/icons/glyphs/bluetooth-connected.d.ts +2 -0
  222. package/dist/icons/glyphs/bluetooth-off.d.ts +2 -0
  223. package/dist/icons/glyphs/bluetooth-searching.d.ts +2 -0
  224. package/dist/icons/glyphs/bluetooth.d.ts +2 -0
  225. package/dist/icons/glyphs/bold.d.ts +2 -0
  226. package/dist/icons/glyphs/bone.d.ts +2 -0
  227. package/dist/icons/glyphs/book-open.d.ts +2 -0
  228. package/dist/icons/glyphs/book-text.d.ts +2 -0
  229. package/dist/icons/glyphs/bookmark-check.d.ts +2 -0
  230. package/dist/icons/glyphs/bookmark-minus.d.ts +2 -0
  231. package/dist/icons/glyphs/bookmark-plus.d.ts +2 -0
  232. package/dist/icons/glyphs/bookmark-x.d.ts +2 -0
  233. package/dist/icons/glyphs/bookmark.d.ts +2 -0
  234. package/dist/icons/glyphs/bot-message-square.d.ts +2 -0
  235. package/dist/icons/glyphs/bot.d.ts +2 -0
  236. package/dist/icons/glyphs/box.d.ts +2 -0
  237. package/dist/icons/glyphs/boxes.d.ts +2 -0
  238. package/dist/icons/glyphs/brain.d.ts +2 -0
  239. package/dist/icons/glyphs/briefcase-business.d.ts +2 -0
  240. package/dist/icons/glyphs/calendar-check-2.d.ts +2 -0
  241. package/dist/icons/glyphs/calendar-check.d.ts +2 -0
  242. package/dist/icons/glyphs/calendar-cog.d.ts +2 -0
  243. package/dist/icons/glyphs/calendar-days.d.ts +2 -0
  244. package/dist/icons/glyphs/calendar.d.ts +2 -0
  245. package/dist/icons/glyphs/captions.d.ts +2 -0
  246. package/dist/icons/glyphs/car.d.ts +2 -0
  247. package/dist/icons/glyphs/cast.d.ts +2 -0
  248. package/dist/icons/glyphs/cctv.d.ts +2 -0
  249. package/dist/icons/glyphs/chart-bar-decreasing.d.ts +2 -0
  250. package/dist/icons/glyphs/chart-bar-increasing.d.ts +2 -0
  251. package/dist/icons/glyphs/chart-column-decreasing.d.ts +2 -0
  252. package/dist/icons/glyphs/chart-column-increasing.d.ts +2 -0
  253. package/dist/icons/glyphs/chart-column.d.ts +2 -0
  254. package/dist/icons/glyphs/chart-gantt.d.ts +2 -0
  255. package/dist/icons/glyphs/chart-line.d.ts +2 -0
  256. package/dist/icons/glyphs/chart-no-axes-column-decreasing.d.ts +2 -0
  257. package/dist/icons/glyphs/chart-no-axes-column-increasing.d.ts +2 -0
  258. package/dist/icons/glyphs/chart-pie.d.ts +2 -0
  259. package/dist/icons/glyphs/chart-scatter.d.ts +2 -0
  260. package/dist/icons/glyphs/chart-spline.d.ts +2 -0
  261. package/dist/icons/glyphs/check-check.d.ts +2 -0
  262. package/dist/icons/glyphs/check.d.ts +2 -0
  263. package/dist/icons/glyphs/chess-bishop.d.ts +2 -0
  264. package/dist/icons/glyphs/chess-king.d.ts +2 -0
  265. package/dist/icons/glyphs/chess-knight.d.ts +2 -0
  266. package/dist/icons/glyphs/chess-pawn.d.ts +2 -0
  267. package/dist/icons/glyphs/chevron-down.d.ts +2 -0
  268. package/dist/icons/glyphs/chevron-first.d.ts +2 -0
  269. package/dist/icons/glyphs/chevron-left.d.ts +2 -0
  270. package/dist/icons/glyphs/chevron-right.d.ts +2 -0
  271. package/dist/icons/glyphs/chevron-up.d.ts +2 -0
  272. package/dist/icons/glyphs/chevrons-down-up.d.ts +2 -0
  273. package/dist/icons/glyphs/chevrons-left-right.d.ts +2 -0
  274. package/dist/icons/glyphs/chevrons-left.d.ts +2 -0
  275. package/dist/icons/glyphs/chevrons-right-left.d.ts +2 -0
  276. package/dist/icons/glyphs/chevrons-up-down.d.ts +2 -0
  277. package/dist/icons/glyphs/chromium.d.ts +2 -0
  278. package/dist/icons/glyphs/cigarette-off.d.ts +2 -0
  279. package/dist/icons/glyphs/cigarette.d.ts +2 -0
  280. package/dist/icons/glyphs/circle-alert.d.ts +2 -0
  281. package/dist/icons/glyphs/circle-check.d.ts +2 -0
  282. package/dist/icons/glyphs/circle-chevron-down.d.ts +2 -0
  283. package/dist/icons/glyphs/circle-chevron-left.d.ts +2 -0
  284. package/dist/icons/glyphs/circle-chevron-right.d.ts +2 -0
  285. package/dist/icons/glyphs/circle-chevron-up.d.ts +2 -0
  286. package/dist/icons/glyphs/circle-dashed.d.ts +2 -0
  287. package/dist/icons/glyphs/circle-dollar-sign.d.ts +2 -0
  288. package/dist/icons/glyphs/circle-gauge.d.ts +2 -0
  289. package/dist/icons/glyphs/circle-question-mark.d.ts +2 -0
  290. package/dist/icons/glyphs/circle-x.d.ts +2 -0
  291. package/dist/icons/glyphs/circle.d.ts +2 -0
  292. package/dist/icons/glyphs/clapperboard.d.ts +2 -0
  293. package/dist/icons/glyphs/clipboard-check.d.ts +2 -0
  294. package/dist/icons/glyphs/clock.d.ts +2 -0
  295. package/dist/icons/glyphs/cloud-backup.d.ts +2 -0
  296. package/dist/icons/glyphs/cloud-cog.d.ts +2 -0
  297. package/dist/icons/glyphs/cloud-download.d.ts +2 -0
  298. package/dist/icons/glyphs/cloud-lightning.d.ts +2 -0
  299. package/dist/icons/glyphs/cloud-off.d.ts +2 -0
  300. package/dist/icons/glyphs/cloud-rain-wind.d.ts +2 -0
  301. package/dist/icons/glyphs/cloud-rain.d.ts +2 -0
  302. package/dist/icons/glyphs/cloud-snow.d.ts +2 -0
  303. package/dist/icons/glyphs/cloud-sun.d.ts +2 -0
  304. package/dist/icons/glyphs/cloud-sync.d.ts +2 -0
  305. package/dist/icons/glyphs/cloud-upload.d.ts +2 -0
  306. package/dist/icons/glyphs/code-xml.d.ts +2 -0
  307. package/dist/icons/glyphs/code.d.ts +2 -0
  308. package/dist/icons/glyphs/coffee.d.ts +2 -0
  309. package/dist/icons/glyphs/cog.d.ts +2 -0
  310. package/dist/icons/glyphs/columns-3.d.ts +2 -0
  311. package/dist/icons/glyphs/compass.d.ts +2 -0
  312. package/dist/icons/glyphs/concierge-bell.d.ts +2 -0
  313. package/dist/icons/glyphs/construction.d.ts +2 -0
  314. package/dist/icons/glyphs/contrast.d.ts +2 -0
  315. package/dist/icons/glyphs/cooking-pot.d.ts +2 -0
  316. package/dist/icons/glyphs/copy.d.ts +2 -0
  317. package/dist/icons/glyphs/corner-down-left.d.ts +2 -0
  318. package/dist/icons/glyphs/corner-down-right.d.ts +2 -0
  319. package/dist/icons/glyphs/corner-left-down.d.ts +2 -0
  320. package/dist/icons/glyphs/corner-left-up.d.ts +2 -0
  321. package/dist/icons/glyphs/corner-right-down.d.ts +2 -0
  322. package/dist/icons/glyphs/corner-right-up.d.ts +2 -0
  323. package/dist/icons/glyphs/corner-up-left.d.ts +2 -0
  324. package/dist/icons/glyphs/corner-up-right.d.ts +2 -0
  325. package/dist/icons/glyphs/cpu.d.ts +2 -0
  326. package/dist/icons/glyphs/credit-card.d.ts +2 -0
  327. package/dist/icons/glyphs/crown.d.ts +2 -0
  328. package/dist/icons/glyphs/cup-soda.d.ts +2 -0
  329. package/dist/icons/glyphs/database-backup.d.ts +2 -0
  330. package/dist/icons/glyphs/delete.d.ts +2 -0
  331. package/dist/icons/glyphs/disc-3.d.ts +2 -0
  332. package/dist/icons/glyphs/disc.d.ts +2 -0
  333. package/dist/icons/glyphs/dollar-sign.d.ts +2 -0
  334. package/dist/icons/glyphs/download.d.ts +2 -0
  335. package/dist/icons/glyphs/dribbble.d.ts +2 -0
  336. package/dist/icons/glyphs/droplet.d.ts +2 -0
  337. package/dist/icons/glyphs/drum.d.ts +2 -0
  338. package/dist/icons/glyphs/earth.d.ts +2 -0
  339. package/dist/icons/glyphs/ellipsis.d.ts +2 -0
  340. package/dist/icons/glyphs/euro.d.ts +2 -0
  341. package/dist/icons/glyphs/ev-charger.d.ts +2 -0
  342. package/dist/icons/glyphs/expand.d.ts +2 -0
  343. package/dist/icons/glyphs/external-link.d.ts +2 -0
  344. package/dist/icons/glyphs/eye-off.d.ts +2 -0
  345. package/dist/icons/glyphs/eye.d.ts +2 -0
  346. package/dist/icons/glyphs/facebook.d.ts +2 -0
  347. package/dist/icons/glyphs/fan.d.ts +2 -0
  348. package/dist/icons/glyphs/feather.d.ts +2 -0
  349. package/dist/icons/glyphs/figma.d.ts +2 -0
  350. package/dist/icons/glyphs/file-chart-line.d.ts +2 -0
  351. package/dist/icons/glyphs/file-check-corner.d.ts +2 -0
  352. package/dist/icons/glyphs/file-check.d.ts +2 -0
  353. package/dist/icons/glyphs/file-cog.d.ts +2 -0
  354. package/dist/icons/glyphs/file-pen-line.d.ts +2 -0
  355. package/dist/icons/glyphs/file-stack.d.ts +2 -0
  356. package/dist/icons/glyphs/file-text.d.ts +2 -0
  357. package/dist/icons/glyphs/file.d.ts +2 -0
  358. package/dist/icons/glyphs/fingerprint-pattern.d.ts +2 -0
  359. package/dist/icons/glyphs/fish-symbol.d.ts +2 -0
  360. package/dist/icons/glyphs/flag.d.ts +2 -0
  361. package/dist/icons/glyphs/flame.d.ts +2 -0
  362. package/dist/icons/glyphs/flask-conical.d.ts +2 -0
  363. package/dist/icons/glyphs/folder-archive.d.ts +2 -0
  364. package/dist/icons/glyphs/folder-check.d.ts +2 -0
  365. package/dist/icons/glyphs/folder-clock.d.ts +2 -0
  366. package/dist/icons/glyphs/folder-code.d.ts +2 -0
  367. package/dist/icons/glyphs/folder-cog.d.ts +2 -0
  368. package/dist/icons/glyphs/folder-dot.d.ts +2 -0
  369. package/dist/icons/glyphs/folder-down.d.ts +2 -0
  370. package/dist/icons/glyphs/folder-git-2.d.ts +2 -0
  371. package/dist/icons/glyphs/folder-git.d.ts +2 -0
  372. package/dist/icons/glyphs/folder-heart.d.ts +2 -0
  373. package/dist/icons/glyphs/folder-input.d.ts +2 -0
  374. package/dist/icons/glyphs/folder-kanban.d.ts +2 -0
  375. package/dist/icons/glyphs/folder-key.d.ts +2 -0
  376. package/dist/icons/glyphs/folder-lock.d.ts +2 -0
  377. package/dist/icons/glyphs/folder-minus.d.ts +2 -0
  378. package/dist/icons/glyphs/folder-open.d.ts +2 -0
  379. package/dist/icons/glyphs/folder-output.d.ts +2 -0
  380. package/dist/icons/glyphs/folder-plus.d.ts +2 -0
  381. package/dist/icons/glyphs/folder-root.d.ts +2 -0
  382. package/dist/icons/glyphs/folder-sync.d.ts +2 -0
  383. package/dist/icons/glyphs/folder-tree.d.ts +2 -0
  384. package/dist/icons/glyphs/folder-up.d.ts +2 -0
  385. package/dist/icons/glyphs/folder-x.d.ts +2 -0
  386. package/dist/icons/glyphs/folders.d.ts +2 -0
  387. package/dist/icons/glyphs/forward.d.ts +2 -0
  388. package/dist/icons/glyphs/frame.d.ts +2 -0
  389. package/dist/icons/glyphs/frown.d.ts +2 -0
  390. package/dist/icons/glyphs/fuel.d.ts +2 -0
  391. package/dist/icons/glyphs/funnel.d.ts +2 -0
  392. package/dist/icons/glyphs/gallery-horizontal-end.d.ts +2 -0
  393. package/dist/icons/glyphs/gallery-thumbnails.d.ts +2 -0
  394. package/dist/icons/glyphs/gallery-vertical-end.d.ts +2 -0
  395. package/dist/icons/glyphs/gauge.d.ts +2 -0
  396. package/dist/icons/glyphs/gavel.d.ts +2 -0
  397. package/dist/icons/glyphs/georgian-lari.d.ts +2 -0
  398. package/dist/icons/glyphs/git-branch.d.ts +2 -0
  399. package/dist/icons/glyphs/git-commit-horizontal.d.ts +2 -0
  400. package/dist/icons/glyphs/git-commit-vertical.d.ts +2 -0
  401. package/dist/icons/glyphs/git-compare-arrows.d.ts +2 -0
  402. package/dist/icons/glyphs/git-compare.d.ts +2 -0
  403. package/dist/icons/glyphs/git-fork.d.ts +2 -0
  404. package/dist/icons/glyphs/git-graph.d.ts +2 -0
  405. package/dist/icons/glyphs/git-merge.d.ts +2 -0
  406. package/dist/icons/glyphs/git-pull-request-closed.d.ts +2 -0
  407. package/dist/icons/glyphs/git-pull-request-create.d.ts +2 -0
  408. package/dist/icons/glyphs/git-pull-request.d.ts +2 -0
  409. package/dist/icons/glyphs/github.d.ts +2 -0
  410. package/dist/icons/glyphs/gitlab.d.ts +2 -0
  411. package/dist/icons/glyphs/globe.d.ts +2 -0
  412. package/dist/icons/glyphs/graduation-cap.d.ts +2 -0
  413. package/dist/icons/glyphs/grip-horizontal.d.ts +2 -0
  414. package/dist/icons/glyphs/grip-vertical.d.ts +2 -0
  415. package/dist/icons/glyphs/grip.d.ts +2 -0
  416. package/dist/icons/glyphs/hammer.d.ts +2 -0
  417. package/dist/icons/glyphs/hand-coins.d.ts +2 -0
  418. package/dist/icons/glyphs/hand-fist.d.ts +2 -0
  419. package/dist/icons/glyphs/hand-grab.d.ts +2 -0
  420. package/dist/icons/glyphs/hand-heart.d.ts +2 -0
  421. package/dist/icons/glyphs/hand-helping.d.ts +2 -0
  422. package/dist/icons/glyphs/hand-metal.d.ts +2 -0
  423. package/dist/icons/glyphs/hand.d.ts +2 -0
  424. package/dist/icons/glyphs/hard-drive-download.d.ts +2 -0
  425. package/dist/icons/glyphs/hard-drive-upload.d.ts +2 -0
  426. package/dist/icons/glyphs/hard-drive.d.ts +2 -0
  427. package/dist/icons/glyphs/hat-glasses.d.ts +2 -0
  428. package/dist/icons/glyphs/headset.d.ts +2 -0
  429. package/dist/icons/glyphs/heart-handshake.d.ts +2 -0
  430. package/dist/icons/glyphs/heart-pulse.d.ts +2 -0
  431. package/dist/icons/glyphs/heart.d.ts +2 -0
  432. package/dist/icons/glyphs/history.d.ts +2 -0
  433. package/dist/icons/glyphs/hourglass.d.ts +2 -0
  434. package/dist/icons/glyphs/house.d.ts +2 -0
  435. package/dist/icons/glyphs/id-card.d.ts +2 -0
  436. package/dist/icons/glyphs/image.d.ts +2 -0
  437. package/dist/icons/glyphs/inbox.d.ts +2 -0
  438. package/dist/icons/glyphs/indian-rupee.d.ts +2 -0
  439. package/dist/icons/glyphs/info.d.ts +2 -0
  440. package/dist/icons/glyphs/instagram.d.ts +2 -0
  441. package/dist/icons/glyphs/italic.d.ts +2 -0
  442. package/dist/icons/glyphs/japanese-yen.d.ts +2 -0
  443. package/dist/icons/glyphs/key-round.d.ts +2 -0
  444. package/dist/icons/glyphs/key-square.d.ts +2 -0
  445. package/dist/icons/glyphs/key.d.ts +2 -0
  446. package/dist/icons/glyphs/keyboard.d.ts +2 -0
  447. package/dist/icons/glyphs/languages.d.ts +2 -0
  448. package/dist/icons/glyphs/laptop-minimal-check.d.ts +2 -0
  449. package/dist/icons/glyphs/laugh.d.ts +2 -0
  450. package/dist/icons/glyphs/layers.d.ts +2 -0
  451. package/dist/icons/glyphs/layout-dashboard.d.ts +2 -0
  452. package/dist/icons/glyphs/layout-grid.d.ts +2 -0
  453. package/dist/icons/glyphs/layout-panel-top.d.ts +2 -0
  454. package/dist/icons/glyphs/leaf.d.ts +2 -0
  455. package/dist/icons/glyphs/leafy-green.d.ts +2 -0
  456. package/dist/icons/glyphs/link-2.d.ts +2 -0
  457. package/dist/icons/glyphs/link.d.ts +2 -0
  458. package/dist/icons/glyphs/linkedin.d.ts +2 -0
  459. package/dist/icons/glyphs/list-filter.d.ts +2 -0
  460. package/dist/icons/glyphs/list-todo.d.ts +2 -0
  461. package/dist/icons/glyphs/list.d.ts +2 -0
  462. package/dist/icons/glyphs/loader-circle.d.ts +2 -0
  463. package/dist/icons/glyphs/loader-pinwheel.d.ts +2 -0
  464. package/dist/icons/glyphs/loader.d.ts +2 -0
  465. package/dist/icons/glyphs/lock-keyhole-open.d.ts +2 -0
  466. package/dist/icons/glyphs/lock-keyhole.d.ts +2 -0
  467. package/dist/icons/glyphs/lock-open.d.ts +2 -0
  468. package/dist/icons/glyphs/lock.d.ts +2 -0
  469. package/dist/icons/glyphs/log-in.d.ts +2 -0
  470. package/dist/icons/glyphs/log-out.d.ts +2 -0
  471. package/dist/icons/glyphs/mail-check.d.ts +2 -0
  472. package/dist/icons/glyphs/mail.d.ts +2 -0
  473. package/dist/icons/glyphs/mailbox.d.ts +2 -0
  474. package/dist/icons/glyphs/map-pin-check-inside.d.ts +2 -0
  475. package/dist/icons/glyphs/map-pin-check.d.ts +2 -0
  476. package/dist/icons/glyphs/map-pin-house.d.ts +2 -0
  477. package/dist/icons/glyphs/map-pin-minus-inside.d.ts +2 -0
  478. package/dist/icons/glyphs/map-pin-minus.d.ts +2 -0
  479. package/dist/icons/glyphs/map-pin-off.d.ts +2 -0
  480. package/dist/icons/glyphs/map-pin-plus-inside.d.ts +2 -0
  481. package/dist/icons/glyphs/map-pin-plus.d.ts +2 -0
  482. package/dist/icons/glyphs/map-pin-x-inside.d.ts +2 -0
  483. package/dist/icons/glyphs/map-pin.d.ts +2 -0
  484. package/dist/icons/glyphs/maximize-2.d.ts +2 -0
  485. package/dist/icons/glyphs/maximize.d.ts +2 -0
  486. package/dist/icons/glyphs/megaphone.d.ts +2 -0
  487. package/dist/icons/glyphs/meh.d.ts +2 -0
  488. package/dist/icons/glyphs/menu.d.ts +2 -0
  489. package/dist/icons/glyphs/message-circle-check.d.ts +2 -0
  490. package/dist/icons/glyphs/message-circle-dashed.d.ts +2 -0
  491. package/dist/icons/glyphs/message-circle-more.d.ts +2 -0
  492. package/dist/icons/glyphs/message-circle-plus.d.ts +2 -0
  493. package/dist/icons/glyphs/message-circle-x.d.ts +2 -0
  494. package/dist/icons/glyphs/message-circle.d.ts +2 -0
  495. package/dist/icons/glyphs/message-square-check.d.ts +2 -0
  496. package/dist/icons/glyphs/message-square-dashed.d.ts +2 -0
  497. package/dist/icons/glyphs/message-square-more.d.ts +2 -0
  498. package/dist/icons/glyphs/message-square-plus.d.ts +2 -0
  499. package/dist/icons/glyphs/message-square-x.d.ts +2 -0
  500. package/dist/icons/glyphs/message-square.d.ts +2 -0
  501. package/dist/icons/glyphs/mic-off.d.ts +2 -0
  502. package/dist/icons/glyphs/mic.d.ts +2 -0
  503. package/dist/icons/glyphs/minimize.d.ts +2 -0
  504. package/dist/icons/glyphs/minus.d.ts +2 -0
  505. package/dist/icons/glyphs/monitor-check.d.ts +2 -0
  506. package/dist/icons/glyphs/monitor-cog.d.ts +2 -0
  507. package/dist/icons/glyphs/monitor.d.ts +2 -0
  508. package/dist/icons/glyphs/moon.d.ts +2 -0
  509. package/dist/icons/glyphs/motorbike.d.ts +2 -0
  510. package/dist/icons/glyphs/mouse-pointer-click.d.ts +2 -0
  511. package/dist/icons/glyphs/nfc.d.ts +2 -0
  512. package/dist/icons/glyphs/package.d.ts +2 -0
  513. package/dist/icons/glyphs/palette.d.ts +2 -0
  514. package/dist/icons/glyphs/panel-left-close.d.ts +2 -0
  515. package/dist/icons/glyphs/panel-left-open.d.ts +2 -0
  516. package/dist/icons/glyphs/panel-right-open.d.ts +2 -0
  517. package/dist/icons/glyphs/paperclip.d.ts +2 -0
  518. package/dist/icons/glyphs/party-popper.d.ts +2 -0
  519. package/dist/icons/glyphs/pause.d.ts +2 -0
  520. package/dist/icons/glyphs/pen-tool.d.ts +2 -0
  521. package/dist/icons/glyphs/philippine-peso.d.ts +2 -0
  522. package/dist/icons/glyphs/phone-call.d.ts +2 -0
  523. package/dist/icons/glyphs/phone-forwarded.d.ts +2 -0
  524. package/dist/icons/glyphs/phone-incoming.d.ts +2 -0
  525. package/dist/icons/glyphs/phone-missed.d.ts +2 -0
  526. package/dist/icons/glyphs/phone-off.d.ts +2 -0
  527. package/dist/icons/glyphs/phone.d.ts +2 -0
  528. package/dist/icons/glyphs/pickaxe.d.ts +2 -0
  529. package/dist/icons/glyphs/pin.d.ts +2 -0
  530. package/dist/icons/glyphs/pipette.d.ts +2 -0
  531. package/dist/icons/glyphs/plane-landing.d.ts +2 -0
  532. package/dist/icons/glyphs/plane-takeoff.d.ts +2 -0
  533. package/dist/icons/glyphs/plane.d.ts +2 -0
  534. package/dist/icons/glyphs/play.d.ts +2 -0
  535. package/dist/icons/glyphs/plug-zap.d.ts +2 -0
  536. package/dist/icons/glyphs/plus.d.ts +2 -0
  537. package/dist/icons/glyphs/pound-sterling.d.ts +2 -0
  538. package/dist/icons/glyphs/projector.d.ts +2 -0
  539. package/dist/icons/glyphs/rabbit.d.ts +2 -0
  540. package/dist/icons/glyphs/radio-tower.d.ts +2 -0
  541. package/dist/icons/glyphs/radio.d.ts +2 -0
  542. package/dist/icons/glyphs/receipt-cent.d.ts +2 -0
  543. package/dist/icons/glyphs/receipt-euro.d.ts +2 -0
  544. package/dist/icons/glyphs/receipt-indian-rupee.d.ts +2 -0
  545. package/dist/icons/glyphs/receipt-japanese-yen.d.ts +2 -0
  546. package/dist/icons/glyphs/receipt-pound-sterling.d.ts +2 -0
  547. package/dist/icons/glyphs/receipt-russian-ruble.d.ts +2 -0
  548. package/dist/icons/glyphs/receipt-swiss-franc.d.ts +2 -0
  549. package/dist/icons/glyphs/receipt-text.d.ts +2 -0
  550. package/dist/icons/glyphs/receipt-turkish-lira.d.ts +2 -0
  551. package/dist/icons/glyphs/receipt.d.ts +2 -0
  552. package/dist/icons/glyphs/redo-dot.d.ts +2 -0
  553. package/dist/icons/glyphs/redo.d.ts +2 -0
  554. package/dist/icons/glyphs/refresh-ccw-dot.d.ts +2 -0
  555. package/dist/icons/glyphs/refresh-ccw.d.ts +2 -0
  556. package/dist/icons/glyphs/refresh-cw-off.d.ts +2 -0
  557. package/dist/icons/glyphs/refresh-cw.d.ts +2 -0
  558. package/dist/icons/glyphs/reply.d.ts +2 -0
  559. package/dist/icons/glyphs/rocket.d.ts +2 -0
  560. package/dist/icons/glyphs/rocking-chair.d.ts +2 -0
  561. package/dist/icons/glyphs/roller-coaster.d.ts +2 -0
  562. package/dist/icons/glyphs/rotate-ccw.d.ts +2 -0
  563. package/dist/icons/glyphs/rotate-cw.d.ts +2 -0
  564. package/dist/icons/glyphs/route.d.ts +2 -0
  565. package/dist/icons/glyphs/router.d.ts +2 -0
  566. package/dist/icons/glyphs/russian-ruble.d.ts +2 -0
  567. package/dist/icons/glyphs/satellite-dish.d.ts +2 -0
  568. package/dist/icons/glyphs/saudi-riyal.d.ts +2 -0
  569. package/dist/icons/glyphs/scale.d.ts +2 -0
  570. package/dist/icons/glyphs/scan-face.d.ts +2 -0
  571. package/dist/icons/glyphs/scan-text.d.ts +2 -0
  572. package/dist/icons/glyphs/search.d.ts +2 -0
  573. package/dist/icons/glyphs/send.d.ts +2 -0
  574. package/dist/icons/glyphs/server-cog.d.ts +2 -0
  575. package/dist/icons/glyphs/server-crash.d.ts +2 -0
  576. package/dist/icons/glyphs/server.d.ts +2 -0
  577. package/dist/icons/glyphs/settings.d.ts +2 -0
  578. package/dist/icons/glyphs/shield-check.d.ts +2 -0
  579. package/dist/icons/glyphs/ship-wheel.d.ts +2 -0
  580. package/dist/icons/glyphs/ship.d.ts +2 -0
  581. package/dist/icons/glyphs/shopping-cart.d.ts +2 -0
  582. package/dist/icons/glyphs/shower-head.d.ts +2 -0
  583. package/dist/icons/glyphs/shredder.d.ts +2 -0
  584. package/dist/icons/glyphs/shrink.d.ts +2 -0
  585. package/dist/icons/glyphs/sliders-horizontal.d.ts +2 -0
  586. package/dist/icons/glyphs/smartphone-charging.d.ts +2 -0
  587. package/dist/icons/glyphs/smartphone-nfc.d.ts +2 -0
  588. package/dist/icons/glyphs/smartphone.d.ts +2 -0
  589. package/dist/icons/glyphs/smile-plus.d.ts +2 -0
  590. package/dist/icons/glyphs/smile.d.ts +2 -0
  591. package/dist/icons/glyphs/snowflake.d.ts +2 -0
  592. package/dist/icons/glyphs/soup.d.ts +2 -0
  593. package/dist/icons/glyphs/sparkles.d.ts +2 -0
  594. package/dist/icons/glyphs/spray-can.d.ts +2 -0
  595. package/dist/icons/glyphs/square-activity.d.ts +2 -0
  596. package/dist/icons/glyphs/square-arrow-down.d.ts +2 -0
  597. package/dist/icons/glyphs/square-arrow-left.d.ts +2 -0
  598. package/dist/icons/glyphs/square-arrow-right.d.ts +2 -0
  599. package/dist/icons/glyphs/square-arrow-up.d.ts +2 -0
  600. package/dist/icons/glyphs/square-chevron-down.d.ts +2 -0
  601. package/dist/icons/glyphs/square-chevron-left.d.ts +2 -0
  602. package/dist/icons/glyphs/square-chevron-right.d.ts +2 -0
  603. package/dist/icons/glyphs/square-chevron-up.d.ts +2 -0
  604. package/dist/icons/glyphs/square-pen.d.ts +2 -0
  605. package/dist/icons/glyphs/square-stack.d.ts +2 -0
  606. package/dist/icons/glyphs/stamp.d.ts +2 -0
  607. package/dist/icons/glyphs/star.d.ts +2 -0
  608. package/dist/icons/glyphs/stethoscope.d.ts +2 -0
  609. package/dist/icons/glyphs/strikethrough.d.ts +2 -0
  610. package/dist/icons/glyphs/sun-dim.d.ts +2 -0
  611. package/dist/icons/glyphs/sun-medium.d.ts +2 -0
  612. package/dist/icons/glyphs/sun-moon.d.ts +2 -0
  613. package/dist/icons/glyphs/sun.d.ts +2 -0
  614. package/dist/icons/glyphs/sunset.d.ts +2 -0
  615. package/dist/icons/glyphs/swiss-franc.d.ts +2 -0
  616. package/dist/icons/glyphs/switch-camera.d.ts +2 -0
  617. package/dist/icons/glyphs/syringe.d.ts +2 -0
  618. package/dist/icons/glyphs/tablet.d.ts +2 -0
  619. package/dist/icons/glyphs/telescope.d.ts +2 -0
  620. package/dist/icons/glyphs/terminal.d.ts +2 -0
  621. package/dist/icons/glyphs/text-align-center.d.ts +2 -0
  622. package/dist/icons/glyphs/text-align-end.d.ts +2 -0
  623. package/dist/icons/glyphs/text-align-start.d.ts +2 -0
  624. package/dist/icons/glyphs/text-quote.d.ts +2 -0
  625. package/dist/icons/glyphs/thermometer.d.ts +2 -0
  626. package/dist/icons/glyphs/thumbs-down.d.ts +2 -0
  627. package/dist/icons/glyphs/thumbs-up.d.ts +2 -0
  628. package/dist/icons/glyphs/ticket.d.ts +2 -0
  629. package/dist/icons/glyphs/timer.d.ts +2 -0
  630. package/dist/icons/glyphs/tornado.d.ts +2 -0
  631. package/dist/icons/glyphs/train-track.d.ts +2 -0
  632. package/dist/icons/glyphs/trash-2.d.ts +2 -0
  633. package/dist/icons/glyphs/tree-deciduous.d.ts +2 -0
  634. package/dist/icons/glyphs/tree-pine.d.ts +2 -0
  635. package/dist/icons/glyphs/trending-down.d.ts +2 -0
  636. package/dist/icons/glyphs/trending-up-down.d.ts +2 -0
  637. package/dist/icons/glyphs/trending-up.d.ts +2 -0
  638. package/dist/icons/glyphs/triangle-alert.d.ts +2 -0
  639. package/dist/icons/glyphs/trophy.d.ts +2 -0
  640. package/dist/icons/glyphs/truck.d.ts +2 -0
  641. package/dist/icons/glyphs/turkish-lira.d.ts +2 -0
  642. package/dist/icons/glyphs/twitch.d.ts +2 -0
  643. package/dist/icons/glyphs/twitter.d.ts +2 -0
  644. package/dist/icons/glyphs/underline.d.ts +2 -0
  645. package/dist/icons/glyphs/undo-dot.d.ts +2 -0
  646. package/dist/icons/glyphs/undo.d.ts +2 -0
  647. package/dist/icons/glyphs/unplug.d.ts +2 -0
  648. package/dist/icons/glyphs/upload.d.ts +2 -0
  649. package/dist/icons/glyphs/user-check.d.ts +2 -0
  650. package/dist/icons/glyphs/user-plus.d.ts +2 -0
  651. package/dist/icons/glyphs/user-round-check.d.ts +2 -0
  652. package/dist/icons/glyphs/user-round-cog.d.ts +2 -0
  653. package/dist/icons/glyphs/user-round-plus.d.ts +2 -0
  654. package/dist/icons/glyphs/user-round.d.ts +2 -0
  655. package/dist/icons/glyphs/user.d.ts +2 -0
  656. package/dist/icons/glyphs/users-round.d.ts +2 -0
  657. package/dist/icons/glyphs/users.d.ts +2 -0
  658. package/dist/icons/glyphs/vibrate.d.ts +2 -0
  659. package/dist/icons/glyphs/video.d.ts +2 -0
  660. package/dist/icons/glyphs/volume-2.d.ts +2 -0
  661. package/dist/icons/glyphs/volume-x.d.ts +2 -0
  662. package/dist/icons/glyphs/volume.d.ts +2 -0
  663. package/dist/icons/glyphs/wallet.d.ts +2 -0
  664. package/dist/icons/glyphs/washing-machine.d.ts +2 -0
  665. package/dist/icons/glyphs/waves-arrow-down.d.ts +2 -0
  666. package/dist/icons/glyphs/waves-arrow-up.d.ts +2 -0
  667. package/dist/icons/glyphs/waves-ladder.d.ts +2 -0
  668. package/dist/icons/glyphs/waves.d.ts +2 -0
  669. package/dist/icons/glyphs/waypoints.d.ts +2 -0
  670. package/dist/icons/glyphs/webhook.d.ts +2 -0
  671. package/dist/icons/glyphs/wifi-cog.d.ts +2 -0
  672. package/dist/icons/glyphs/wifi-low.d.ts +2 -0
  673. package/dist/icons/glyphs/wifi-pen.d.ts +2 -0
  674. package/dist/icons/glyphs/wifi-sync.d.ts +2 -0
  675. package/dist/icons/glyphs/wifi.d.ts +2 -0
  676. package/dist/icons/glyphs/wind-arrow-down.d.ts +2 -0
  677. package/dist/icons/glyphs/wind.d.ts +2 -0
  678. package/dist/icons/glyphs/workflow.d.ts +2 -0
  679. package/dist/icons/glyphs/wrench.d.ts +2 -0
  680. package/dist/icons/glyphs/x.d.ts +2 -0
  681. package/dist/icons/glyphs/youtube.d.ts +2 -0
  682. package/dist/icons/glyphs/zap-off.d.ts +2 -0
  683. package/dist/icons/glyphs/zap.d.ts +2 -0
  684. package/dist/icons/glyphs/zoom-in.d.ts +2 -0
  685. package/dist/icons/glyphs/zoom-out.d.ts +2 -0
  686. package/dist/icons/iconPlay.d.ts +2 -0
  687. package/dist/icons/index.d.ts +1 -1
  688. package/dist/icons/registry.d.ts +139 -79
  689. package/dist/index.css +1 -12794
  690. package/dist/index.d.ts +7 -2
  691. package/dist/index.js +60 -10
  692. package/dist/internal/AnchorRectContext.d.ts +9 -0
  693. package/dist/internal/ChoiceField.d.ts +2 -2
  694. package/dist/internal/ControlSizeContext.d.ts +1 -1
  695. package/dist/internal/Disclosure.d.ts +15 -0
  696. package/dist/internal/FieldAction.d.ts +38 -0
  697. package/dist/internal/FieldCommit.d.ts +46 -0
  698. package/dist/internal/FieldFrame.d.ts +18 -1
  699. package/dist/internal/HighlightMatch.d.ts +5 -3
  700. package/dist/internal/MorphText.d.ts +3 -2
  701. package/dist/internal/ProgressLegend.d.ts +18 -0
  702. package/dist/internal/VisuallyHidden.d.ts +5 -1
  703. package/dist/internal/attachmentTile.d.ts +64 -0
  704. package/dist/internal/attachmentTile.module.css.d.ts +2 -0
  705. package/dist/internal/disabledContext.d.ts +7 -0
  706. package/dist/internal/edgeAutoScroll.d.ts +30 -0
  707. package/dist/internal/fileFormat.d.ts +5 -0
  708. package/dist/internal/fileName.d.ts +9 -0
  709. package/dist/internal/fileSize.d.ts +2 -0
  710. package/dist/internal/formatClock.d.ts +2 -0
  711. package/dist/internal/glyphSwap.d.ts +19 -0
  712. package/dist/internal/iconBox.module.css.d.ts +2 -0
  713. package/dist/internal/imageSlot.d.ts +3 -1
  714. package/dist/internal/leaveInPlace.d.ts +9 -0
  715. package/dist/internal/listbox.d.ts +19 -0
  716. package/dist/internal/mediaDisk.d.ts +14 -0
  717. package/dist/internal/mediaFrame.d.ts +2 -0
  718. package/dist/internal/mediaKind.d.ts +7 -0
  719. package/dist/internal/mediaPlayer.d.ts +135 -0
  720. package/dist/internal/mediaSession.d.ts +13 -0
  721. package/dist/internal/messageList.d.ts +121 -0
  722. package/dist/internal/messagePart.d.ts +106 -0
  723. package/dist/internal/overlay/FloatingPanel.d.ts +1 -1
  724. package/dist/internal/overlay/focus.d.ts +23 -2
  725. package/dist/internal/overlay/useFloatingLayer.d.ts +2 -2
  726. package/dist/internal/palette.d.ts +7 -0
  727. package/dist/internal/progressSegments.d.ts +39 -2
  728. package/dist/internal/readReceipts.d.ts +11 -0
  729. package/dist/internal/richText.d.ts +40 -0
  730. package/dist/internal/ring.d.ts +64 -0
  731. package/dist/internal/sticky.d.ts +2 -0
  732. package/dist/internal/surfaceDepth.d.ts +2 -0
  733. package/dist/internal/transcript.d.ts +73 -0
  734. package/dist/internal/transfer.d.ts +79 -0
  735. package/dist/internal/transferDisk.d.ts +76 -0
  736. package/dist/internal/useNearView.d.ts +7 -0
  737. package/dist/internal/usePendingChanges.d.ts +18 -0
  738. package/dist/internal/useRangeSelection.d.ts +41 -0
  739. package/dist/layout/app-header/AppHeader.d.ts +21 -3
  740. package/dist/layout/bottom-nav/BottomNav.d.ts +27 -7
  741. package/dist/layout/index.d.ts +2 -2
  742. package/dist/layout/sidebar/Sidebar.d.ts +1 -1
  743. package/dist/skill/SKILL.md +130 -0
  744. package/dist/skill/anti-slop.md +224 -0
  745. package/dist/skill/api-contract.md +295 -0
  746. package/dist/skill/cheatsheet.md +317 -0
  747. package/dist/skill/checklist.md +91 -0
  748. package/dist/skill/choosing.md +164 -0
  749. package/dist/skill/components.md +177 -0
  750. package/dist/skill/composition.md +312 -0
  751. package/dist/skill/foundations.md +186 -0
  752. package/dist/skill/layouts.md +262 -0
  753. package/dist/skill/motion.md +211 -0
  754. package/dist/skill/patterns/chat.module.css +33 -0
  755. package/dist/skill/patterns/chat.tsx +838 -0
  756. package/dist/skill/patterns/dashboard.module.css +44 -0
  757. package/dist/skill/patterns/dashboard.tsx +326 -0
  758. package/dist/skill/patterns/detail-page.module.css +74 -0
  759. package/dist/skill/patterns/detail-page.tsx +209 -0
  760. package/dist/skill/patterns/form-drawer.module.css +14 -0
  761. package/dist/skill/patterns/form-drawer.tsx +240 -0
  762. package/dist/skill/patterns/list-page.module.css +19 -0
  763. package/dist/skill/patterns/list-page.tsx +334 -0
  764. package/dist/skill/patterns/screen-states.module.css +54 -0
  765. package/dist/skill/patterns/screen-states.tsx +186 -0
  766. package/dist/skill/patterns/settings-page.module.css +47 -0
  767. package/dist/skill/patterns/settings-page.tsx +217 -0
  768. package/dist/skill/reference/components/accordion/COMPONENT.md +175 -0
  769. package/dist/skill/reference/components/accordion/examples/collapsible.tsx +27 -0
  770. package/dist/skill/reference/components/accordion/examples/controlled.tsx +36 -0
  771. package/dist/skill/reference/components/accordion/examples/examples.module.css +10 -0
  772. package/dist/skill/reference/components/accordion/examples/multiple.tsx +31 -0
  773. package/dist/skill/reference/components/accordion/examples/overview.tsx +39 -0
  774. package/dist/skill/reference/components/accordion/examples/sizes.tsx +28 -0
  775. package/dist/skill/reference/components/accordion/examples/states.tsx +31 -0
  776. package/dist/skill/reference/components/accordion/examples/variants.tsx +35 -0
  777. package/dist/skill/reference/components/accordion/examples/with-icon.tsx +47 -0
  778. package/dist/skill/reference/components/avatar/COMPONENT.md +166 -0
  779. package/dist/skill/reference/components/avatar/examples/examples.module.css +25 -0
  780. package/dist/skill/reference/components/avatar/examples/overview.tsx +18 -0
  781. package/dist/skill/reference/components/avatar/examples/presence.tsx +47 -0
  782. package/dist/skill/reference/components/avatar/examples/sizes.tsx +21 -0
  783. package/dist/skill/reference/components/avatar/examples/src-from-state.tsx +30 -0
  784. package/dist/skill/reference/components/avatar/examples/states.tsx +39 -0
  785. package/dist/skill/reference/components/avatar/examples/team-group.tsx +41 -0
  786. package/dist/skill/reference/components/avatar/examples/variants.tsx +40 -0
  787. package/dist/skill/reference/components/badge/COMPONENT.md +193 -0
  788. package/dist/skill/reference/components/badge/examples/applied-filters.tsx +47 -0
  789. package/dist/skill/reference/components/badge/examples/examples.module.css +32 -0
  790. package/dist/skill/reference/components/badge/examples/filter-values.tsx +39 -0
  791. package/dist/skill/reference/components/badge/examples/in-controls.tsx +23 -0
  792. package/dist/skill/reference/components/badge/examples/overview.tsx +13 -0
  793. package/dist/skill/reference/components/badge/examples/server-tags.tsx +61 -0
  794. package/dist/skill/reference/components/badge/examples/sizes.tsx +21 -0
  795. package/dist/skill/reference/components/badge/examples/states.tsx +59 -0
  796. package/dist/skill/reference/components/badge/examples/variants.tsx +38 -0
  797. package/dist/skill/reference/components/badge/examples/with-icon.tsx +50 -0
  798. package/dist/skill/reference/components/banner/COMPONENT.md +165 -0
  799. package/dist/skill/reference/components/banner/examples/dismissible.tsx +38 -0
  800. package/dist/skill/reference/components/banner/examples/examples.module.css +32 -0
  801. package/dist/skill/reference/components/banner/examples/narrow.tsx +23 -0
  802. package/dist/skill/reference/components/banner/examples/overview.tsx +18 -0
  803. package/dist/skill/reference/components/banner/examples/page-strip.tsx +53 -0
  804. package/dist/skill/reference/components/banner/examples/sizes.tsx +29 -0
  805. package/dist/skill/reference/components/banner/examples/structure.tsx +45 -0
  806. package/dist/skill/reference/components/banner/examples/variants.tsx +43 -0
  807. package/dist/skill/reference/components/breadcrumb/COMPONENT.md +137 -0
  808. package/dist/skill/reference/components/breadcrumb/examples/ellipsis.tsx +12 -0
  809. package/dist/skill/reference/components/breadcrumb/examples/examples.module.css +11 -0
  810. package/dist/skill/reference/components/breadcrumb/examples/overflow.tsx +26 -0
  811. package/dist/skill/reference/components/breadcrumb/examples/overview.tsx +12 -0
  812. package/dist/skill/reference/components/breadcrumb/examples/sizes.tsx +24 -0
  813. package/dist/skill/reference/components/breadcrumb/examples/with-icon.tsx +14 -0
  814. package/dist/skill/reference/components/button/COMPONENT.md +211 -0
  815. package/dist/skill/reference/components/button/examples/as-child.tsx +15 -0
  816. package/dist/skill/reference/components/button/examples/circle.tsx +67 -0
  817. package/dist/skill/reference/components/button/examples/download.tsx +45 -0
  818. package/dist/skill/reference/components/button/examples/examples.module.css +54 -0
  819. package/dist/skill/reference/components/button/examples/hold-to-confirm.tsx +34 -0
  820. package/dist/skill/reference/components/button/examples/in-form.tsx +45 -0
  821. package/dist/skill/reference/components/button/examples/label-morph.tsx +38 -0
  822. package/dist/skill/reference/components/button/examples/on-colored-host.tsx +29 -0
  823. package/dist/skill/reference/components/button/examples/over-media.tsx +36 -0
  824. package/dist/skill/reference/components/button/examples/overview.tsx +13 -0
  825. package/dist/skill/reference/components/button/examples/sizes.tsx +19 -0
  826. package/dist/skill/reference/components/button/examples/states.tsx +38 -0
  827. package/dist/skill/reference/components/button/examples/toggle.tsx +21 -0
  828. package/dist/skill/reference/components/button/examples/variants.tsx +32 -0
  829. package/dist/skill/reference/components/button/examples/with-icon.tsx +41 -0
  830. package/dist/skill/reference/components/button-group/COMPONENT.md +172 -0
  831. package/dist/skill/reference/components/button-group/examples/controlled.tsx +29 -0
  832. package/dist/skill/reference/components/button-group/examples/examples.module.css +8 -0
  833. package/dist/skill/reference/components/button-group/examples/full-width.tsx +19 -0
  834. package/dist/skill/reference/components/button-group/examples/in-form.tsx +55 -0
  835. package/dist/skill/reference/components/button-group/examples/orientation.tsx +19 -0
  836. package/dist/skill/reference/components/button-group/examples/overview.tsx +12 -0
  837. package/dist/skill/reference/components/button-group/examples/sizes.tsx +22 -0
  838. package/dist/skill/reference/components/button-group/examples/states.tsx +33 -0
  839. package/dist/skill/reference/components/button-group/examples/with-icon.tsx +45 -0
  840. package/dist/skill/reference/components/card/COMPONENT.md +218 -0
  841. package/dist/skill/reference/components/card/examples/content-templates.tsx +67 -0
  842. package/dist/skill/reference/components/card/examples/examples.module.css +84 -0
  843. package/dist/skill/reference/components/card/examples/flat.tsx +25 -0
  844. package/dist/skill/reference/components/card/examples/interactive.tsx +28 -0
  845. package/dist/skill/reference/components/card/examples/kpi-media.tsx +42 -0
  846. package/dist/skill/reference/components/card/examples/narrow.tsx +47 -0
  847. package/dist/skill/reference/components/card/examples/overview.tsx +39 -0
  848. package/dist/skill/reference/components/card/examples/panel-chart.tsx +44 -0
  849. package/dist/skill/reference/components/card/examples/variants.tsx +40 -0
  850. package/dist/skill/reference/components/chart-frame/COMPONENT.md +265 -0
  851. package/dist/skill/reference/components/chart-frame/examples/controlled.tsx +92 -0
  852. package/dist/skill/reference/components/chart-frame/examples/examples.module.css +6 -0
  853. package/dist/skill/reference/components/chart-frame/examples/narrow.tsx +46 -0
  854. package/dist/skill/reference/components/chart-frame/examples/overview.tsx +127 -0
  855. package/dist/skill/reference/components/chart-frame/examples/states.tsx +78 -0
  856. package/dist/skill/reference/components/chart-frame/examples/tooltip.tsx +158 -0
  857. package/dist/skill/reference/components/chat/COMPONENT.md +336 -0
  858. package/dist/skill/reference/components/chat/examples/controlled.tsx +68 -0
  859. package/dist/skill/reference/components/chat/examples/examples.module.css +38 -0
  860. package/dist/skill/reference/components/chat/examples/group-chat.tsx +130 -0
  861. package/dist/skill/reference/components/chat/examples/live.tsx +89 -0
  862. package/dist/skill/reference/components/chat/examples/narrow.tsx +46 -0
  863. package/dist/skill/reference/components/chat/examples/overview.tsx +839 -0
  864. package/dist/skill/reference/components/chat/examples/search.tsx +61 -0
  865. package/dist/skill/reference/components/chat/examples/structure.tsx +28 -0
  866. package/dist/skill/reference/components/checkbox/COMPONENT.md +171 -0
  867. package/dist/skill/reference/components/checkbox/examples/controlled.tsx +41 -0
  868. package/dist/skill/reference/components/checkbox/examples/examples.module.css +69 -0
  869. package/dist/skill/reference/components/checkbox/examples/in-form.tsx +34 -0
  870. package/dist/skill/reference/components/checkbox/examples/indicator.tsx +54 -0
  871. package/dist/skill/reference/components/checkbox/examples/overview.tsx +10 -0
  872. package/dist/skill/reference/components/checkbox/examples/sizes.tsx +18 -0
  873. package/dist/skill/reference/components/checkbox/examples/states.tsx +48 -0
  874. package/dist/skill/reference/components/checkbox/examples/variants.tsx +30 -0
  875. package/dist/skill/reference/components/checkbox/examples/without-label.tsx +13 -0
  876. package/dist/skill/reference/components/code-block/COMPONENT.md +108 -0
  877. package/dist/skill/reference/components/code-block/examples/color-scheme.tsx +16 -0
  878. package/dist/skill/reference/components/code-block/examples/examples.module.css +21 -0
  879. package/dist/skill/reference/components/code-block/examples/narrow.tsx +14 -0
  880. package/dist/skill/reference/components/code-block/examples/overview.tsx +19 -0
  881. package/dist/skill/reference/components/code-block/examples/variants.tsx +21 -0
  882. package/dist/skill/reference/components/color-field/COMPONENT.md +163 -0
  883. package/dist/skill/reference/components/color-field/examples/controlled.tsx +33 -0
  884. package/dist/skill/reference/components/color-field/examples/examples.module.css +22 -0
  885. package/dist/skill/reference/components/color-field/examples/in-form.tsx +45 -0
  886. package/dist/skill/reference/components/color-field/examples/overview.tsx +6 -0
  887. package/dist/skill/reference/components/color-field/examples/presets.tsx +20 -0
  888. package/dist/skill/reference/components/color-field/examples/sizes.tsx +14 -0
  889. package/dist/skill/reference/components/color-field/examples/states.tsx +12 -0
  890. package/dist/skill/reference/components/color-field/examples/validation.tsx +29 -0
  891. package/dist/skill/reference/components/color-picker/COMPONENT.md +339 -0
  892. package/dist/skill/reference/components/color-picker/examples/controlled.tsx +37 -0
  893. package/dist/skill/reference/components/color-picker/examples/examples.module.css +48 -0
  894. package/dist/skill/reference/components/color-picker/examples/formats.tsx +26 -0
  895. package/dist/skill/reference/components/color-picker/examples/in-form.tsx +52 -0
  896. package/dist/skill/reference/components/color-picker/examples/overview.tsx +37 -0
  897. package/dist/skill/reference/components/color-picker/examples/panel.tsx +41 -0
  898. package/dist/skill/reference/components/color-picker/examples/presets-sizes.tsx +28 -0
  899. package/dist/skill/reference/components/color-picker/examples/presets.tsx +35 -0
  900. package/dist/skill/reference/components/color-picker/examples/sizes.tsx +26 -0
  901. package/dist/skill/reference/components/color-picker/examples/states.tsx +22 -0
  902. package/dist/skill/reference/components/color-picker/examples/validation.tsx +24 -0
  903. package/dist/skill/reference/components/color-swatches/COMPONENT.md +146 -0
  904. package/dist/skill/reference/components/color-swatches/examples/controlled.tsx +22 -0
  905. package/dist/skill/reference/components/color-swatches/examples/examples.module.css +19 -0
  906. package/dist/skill/reference/components/color-swatches/examples/in-form.tsx +41 -0
  907. package/dist/skill/reference/components/color-swatches/examples/overview.tsx +6 -0
  908. package/dist/skill/reference/components/color-swatches/examples/sizes.tsx +19 -0
  909. package/dist/skill/reference/components/color-swatches/examples/states.tsx +20 -0
  910. package/dist/skill/reference/components/color-swatches/examples/wrapping.tsx +12 -0
  911. package/dist/skill/reference/components/command-menu/COMPONENT.md +225 -0
  912. package/dist/skill/reference/components/command-menu/examples/controlled-open.tsx +29 -0
  913. package/dist/skill/reference/components/command-menu/examples/controlled.tsx +42 -0
  914. package/dist/skill/reference/components/command-menu/examples/dismiss.tsx +39 -0
  915. package/dist/skill/reference/components/command-menu/examples/load-error.tsx +65 -0
  916. package/dist/skill/reference/components/command-menu/examples/overview.tsx +61 -0
  917. package/dist/skill/reference/components/command-menu/examples/server-search.tsx +91 -0
  918. package/dist/skill/reference/components/command-menu/examples/sizes.tsx +53 -0
  919. package/dist/skill/reference/components/command-menu/examples/states.tsx +48 -0
  920. package/dist/skill/reference/components/command-menu/examples/structure.tsx +54 -0
  921. package/dist/skill/reference/components/composer/COMPONENT.md +310 -0
  922. package/dist/skill/reference/components/composer/examples/attachments.tsx +36 -0
  923. package/dist/skill/reference/components/composer/examples/controlled.tsx +46 -0
  924. package/dist/skill/reference/components/composer/examples/examples.module.css +30 -0
  925. package/dist/skill/reference/components/composer/examples/formatting.tsx +15 -0
  926. package/dist/skill/reference/components/composer/examples/narrow.tsx +22 -0
  927. package/dist/skill/reference/components/composer/examples/overview.tsx +39 -0
  928. package/dist/skill/reference/components/composer/examples/reply-edit.tsx +68 -0
  929. package/dist/skill/reference/components/composer/examples/sizes.tsx +23 -0
  930. package/dist/skill/reference/components/composer/examples/states.tsx +31 -0
  931. package/dist/skill/reference/components/composer/examples/typing.tsx +24 -0
  932. package/dist/skill/reference/components/composer/examples/voice.tsx +21 -0
  933. package/dist/skill/reference/components/confirm-dialog/COMPONENT.md +124 -0
  934. package/dist/skill/reference/components/confirm-dialog/examples/controlled-open.tsx +35 -0
  935. package/dist/skill/reference/components/confirm-dialog/examples/failure.tsx +37 -0
  936. package/dist/skill/reference/components/confirm-dialog/examples/overview.tsx +24 -0
  937. package/dist/skill/reference/components/confirm-dialog/examples/variants.tsx +44 -0
  938. package/dist/skill/reference/components/crossfade/COMPONENT.md +118 -0
  939. package/dist/skill/reference/components/crossfade/examples/examples.module.css +93 -0
  940. package/dist/skill/reference/components/crossfade/examples/fill.tsx +79 -0
  941. package/dist/skill/reference/components/crossfade/examples/overview.tsx +102 -0
  942. package/dist/skill/reference/components/crossfade/examples/record-switch.tsx +67 -0
  943. package/dist/skill/reference/components/data-table/COMPONENT.md +366 -0
  944. package/dist/skill/reference/components/data-table/examples/appearance.tsx +62 -0
  945. package/dist/skill/reference/components/data-table/examples/columns-visibility.tsx +151 -0
  946. package/dist/skill/reference/components/data-table/examples/content-width.tsx +65 -0
  947. package/dist/skill/reference/components/data-table/examples/controlled.tsx +56 -0
  948. package/dist/skill/reference/components/data-table/examples/detail-panel.tsx +101 -0
  949. package/dist/skill/reference/components/data-table/examples/examples.module.css +86 -0
  950. package/dist/skill/reference/components/data-table/examples/fill-height.tsx +55 -0
  951. package/dist/skill/reference/components/data-table/examples/groups.tsx +73 -0
  952. package/dist/skill/reference/components/data-table/examples/heatmap.tsx +44 -0
  953. package/dist/skill/reference/components/data-table/examples/infinite-scroll.tsx +53 -0
  954. package/dist/skill/reference/components/data-table/examples/narrow.tsx +50 -0
  955. package/dist/skill/reference/components/data-table/examples/nested-rows.tsx +128 -0
  956. package/dist/skill/reference/components/data-table/examples/numeric.tsx +41 -0
  957. package/dist/skill/reference/components/data-table/examples/overview.tsx +54 -0
  958. package/dist/skill/reference/components/data-table/examples/reorder.tsx +61 -0
  959. package/dist/skill/reference/components/data-table/examples/row-link.tsx +100 -0
  960. package/dist/skill/reference/components/data-table/examples/row-open.tsx +129 -0
  961. package/dist/skill/reference/components/data-table/examples/selection.tsx +60 -0
  962. package/dist/skill/reference/components/data-table/examples/server.tsx +181 -0
  963. package/dist/skill/reference/components/data-table/examples/sizes.tsx +56 -0
  964. package/dist/skill/reference/components/data-table/examples/states.tsx +50 -0
  965. package/dist/skill/reference/components/data-table/examples/sticky.tsx +54 -0
  966. package/dist/skill/reference/components/data-table/examples/toolbar.tsx +124 -0
  967. package/dist/skill/reference/components/datepicker/COMPONENT.md +228 -0
  968. package/dist/skill/reference/components/datepicker/examples/controlled-open.tsx +32 -0
  969. package/dist/skill/reference/components/datepicker/examples/controlled.tsx +39 -0
  970. package/dist/skill/reference/components/datepicker/examples/examples.module.css +26 -0
  971. package/dist/skill/reference/components/datepicker/examples/in-form.tsx +74 -0
  972. package/dist/skill/reference/components/datepicker/examples/inline-panel.tsx +14 -0
  973. package/dist/skill/reference/components/datepicker/examples/narrow.tsx +14 -0
  974. package/dist/skill/reference/components/datepicker/examples/overview.tsx +6 -0
  975. package/dist/skill/reference/components/datepicker/examples/range-presets.tsx +22 -0
  976. package/dist/skill/reference/components/datepicker/examples/sizes.tsx +22 -0
  977. package/dist/skill/reference/components/datepicker/examples/states.tsx +20 -0
  978. package/dist/skill/reference/components/datepicker/examples/validation.tsx +36 -0
  979. package/dist/skill/reference/components/datepicker/examples/yearless.tsx +20 -0
  980. package/dist/skill/reference/components/description-list/COMPONENT.md +132 -0
  981. package/dist/skill/reference/components/description-list/examples/examples.module.css +41 -0
  982. package/dist/skill/reference/components/description-list/examples/narrow.tsx +20 -0
  983. package/dist/skill/reference/components/description-list/examples/overview.tsx +35 -0
  984. package/dist/skill/reference/components/description-list/examples/sizes.tsx +24 -0
  985. package/dist/skill/reference/components/description-list/examples/structure.tsx +29 -0
  986. package/dist/skill/reference/components/description-list/examples/vertical.tsx +21 -0
  987. package/dist/skill/reference/components/digit-input/COMPONENT.md +165 -0
  988. package/dist/skill/reference/components/digit-input/examples/controlled.tsx +23 -0
  989. package/dist/skill/reference/components/digit-input/examples/examples.module.css +25 -0
  990. package/dist/skill/reference/components/digit-input/examples/full-width.tsx +13 -0
  991. package/dist/skill/reference/components/digit-input/examples/grouped.tsx +11 -0
  992. package/dist/skill/reference/components/digit-input/examples/in-form.tsx +50 -0
  993. package/dist/skill/reference/components/digit-input/examples/on-complete.tsx +33 -0
  994. package/dist/skill/reference/components/digit-input/examples/overview.tsx +6 -0
  995. package/dist/skill/reference/components/digit-input/examples/sizes.tsx +14 -0
  996. package/dist/skill/reference/components/digit-input/examples/states.tsx +11 -0
  997. package/dist/skill/reference/components/digit-input/examples/validation.tsx +24 -0
  998. package/dist/skill/reference/components/divider/COMPONENT.md +113 -0
  999. package/dist/skill/reference/components/divider/examples/align.tsx +14 -0
  1000. package/dist/skill/reference/components/divider/examples/examples.module.css +30 -0
  1001. package/dist/skill/reference/components/divider/examples/or-separator.tsx +19 -0
  1002. package/dist/skill/reference/components/divider/examples/overview.tsx +30 -0
  1003. package/dist/skill/reference/components/divider/examples/sizes.tsx +19 -0
  1004. package/dist/skill/reference/components/divider/examples/vertical.tsx +21 -0
  1005. package/dist/skill/reference/components/divider/examples/with-icon.tsx +26 -0
  1006. package/dist/skill/reference/components/dnd/COMPONENT.md +260 -0
  1007. package/dist/skill/reference/components/dnd/examples/board.tsx +91 -0
  1008. package/dist/skill/reference/components/dnd/examples/drop-zones.tsx +82 -0
  1009. package/dist/skill/reference/components/dnd/examples/examples.module.css +112 -0
  1010. package/dist/skill/reference/components/dnd/examples/grid.tsx +48 -0
  1011. package/dist/skill/reference/components/dnd/examples/handle.tsx +58 -0
  1012. package/dist/skill/reference/components/dnd/examples/locked.tsx +57 -0
  1013. package/dist/skill/reference/components/dnd/examples/narrow.tsx +42 -0
  1014. package/dist/skill/reference/components/dnd/examples/overview.tsx +45 -0
  1015. package/dist/skill/reference/components/drawer/COMPONENT.md +229 -0
  1016. package/dist/skill/reference/components/drawer/examples/controlled-open.tsx +40 -0
  1017. package/dist/skill/reference/components/drawer/examples/dismiss.tsx +55 -0
  1018. package/dist/skill/reference/components/drawer/examples/examples.module.css +21 -0
  1019. package/dist/skill/reference/components/drawer/examples/guard.tsx +80 -0
  1020. package/dist/skill/reference/components/drawer/examples/header-actions.tsx +63 -0
  1021. package/dist/skill/reference/components/drawer/examples/in-form.tsx +87 -0
  1022. package/dist/skill/reference/components/drawer/examples/long-content.tsx +40 -0
  1023. package/dist/skill/reference/components/drawer/examples/overview.tsx +56 -0
  1024. package/dist/skill/reference/components/drawer/examples/placement.tsx +40 -0
  1025. package/dist/skill/reference/components/drawer/examples/sizes.tsx +43 -0
  1026. package/dist/skill/reference/components/drawer/examples/structure.tsx +35 -0
  1027. package/dist/skill/reference/components/dropdown/COMPONENT.md +235 -0
  1028. package/dist/skill/reference/components/dropdown/examples/checkbox-items.tsx +48 -0
  1029. package/dist/skill/reference/components/dropdown/examples/controlled-open.tsx +32 -0
  1030. package/dist/skill/reference/components/dropdown/examples/dismiss.tsx +17 -0
  1031. package/dist/skill/reference/components/dropdown/examples/examples.module.css +22 -0
  1032. package/dist/skill/reference/components/dropdown/examples/item-description.tsx +30 -0
  1033. package/dist/skill/reference/components/dropdown/examples/link-items.tsx +29 -0
  1034. package/dist/skill/reference/components/dropdown/examples/long-list.tsx +42 -0
  1035. package/dist/skill/reference/components/dropdown/examples/match-trigger-width.tsx +23 -0
  1036. package/dist/skill/reference/components/dropdown/examples/overview.tsx +41 -0
  1037. package/dist/skill/reference/components/dropdown/examples/placement.tsx +33 -0
  1038. package/dist/skill/reference/components/dropdown/examples/sizes.tsx +43 -0
  1039. package/dist/skill/reference/components/dropdown/examples/states.tsx +35 -0
  1040. package/dist/skill/reference/components/dropdown/examples/structure.tsx +56 -0
  1041. package/dist/skill/reference/components/empty-page/COMPONENT.md +167 -0
  1042. package/dist/skill/reference/components/empty-page/examples/compact.tsx +23 -0
  1043. package/dist/skill/reference/components/empty-page/examples/data-region.tsx +32 -0
  1044. package/dist/skill/reference/components/empty-page/examples/examples.module.css +54 -0
  1045. package/dist/skill/reference/components/empty-page/examples/narrow.tsx +26 -0
  1046. package/dist/skill/reference/components/empty-page/examples/overview.tsx +22 -0
  1047. package/dist/skill/reference/components/empty-page/examples/region-error.tsx +86 -0
  1048. package/dist/skill/reference/components/empty-page/examples/sizes.tsx +25 -0
  1049. package/{src/components/empty-page/examples/icon-tones.tsx → dist/skill/reference/components/empty-page/examples/variants.tsx} +10 -9
  1050. package/dist/skill/reference/components/example-frame/COMPONENT.md +140 -0
  1051. package/dist/skill/reference/components/example-frame/examples/controlled.tsx +42 -0
  1052. package/dist/skill/reference/components/example-frame/examples/overview.tsx +16 -0
  1053. package/dist/skill/reference/components/fieldset/COMPONENT.md +107 -0
  1054. package/dist/skill/reference/components/fieldset/examples/examples.module.css +14 -0
  1055. package/dist/skill/reference/components/fieldset/examples/in-form.tsx +59 -0
  1056. package/dist/skill/reference/components/fieldset/examples/overview.tsx +22 -0
  1057. package/dist/skill/reference/components/fieldset/examples/states.tsx +35 -0
  1058. package/dist/skill/reference/components/file-upload/COMPONENT.md +407 -0
  1059. package/dist/skill/reference/components/file-upload/examples/attachment-tray.tsx +99 -0
  1060. package/dist/skill/reference/components/file-upload/examples/avatar-upload.tsx +56 -0
  1061. package/dist/skill/reference/components/file-upload/examples/controlled.tsx +77 -0
  1062. package/dist/skill/reference/components/file-upload/examples/custom-body.tsx +44 -0
  1063. package/dist/skill/reference/components/file-upload/examples/examples.module.css +122 -0
  1064. package/dist/skill/reference/components/file-upload/examples/file-cards.tsx +64 -0
  1065. package/dist/skill/reference/components/file-upload/examples/gallery.tsx +104 -0
  1066. package/dist/skill/reference/components/file-upload/examples/in-form.tsx +79 -0
  1067. package/dist/skill/reference/components/file-upload/examples/narrow.tsx +73 -0
  1068. package/dist/skill/reference/components/file-upload/examples/overview.tsx +49 -0
  1069. package/dist/skill/reference/components/file-upload/examples/row-parts.tsx +41 -0
  1070. package/dist/skill/reference/components/file-upload/examples/saving.tsx +71 -0
  1071. package/dist/skill/reference/components/file-upload/examples/sizes.tsx +26 -0
  1072. package/dist/skill/reference/components/file-upload/examples/states.tsx +23 -0
  1073. package/dist/skill/reference/components/file-upload/examples/validation.tsx +42 -0
  1074. package/dist/skill/reference/components/file-upload/examples/variants.tsx +32 -0
  1075. package/dist/skill/reference/components/gallery/COMPONENT.md +151 -0
  1076. package/dist/skill/reference/components/gallery/examples/controlled-open.tsx +39 -0
  1077. package/dist/skill/reference/components/gallery/examples/examples.module.css +14 -0
  1078. package/dist/skill/reference/components/gallery/examples/overview.tsx +52 -0
  1079. package/dist/skill/reference/components/gallery/examples/transfer.tsx +45 -0
  1080. package/dist/skill/reference/components/gantt/COMPONENT.md +224 -0
  1081. package/dist/skill/reference/components/gantt/examples/controlled.tsx +72 -0
  1082. package/dist/skill/reference/components/gantt/examples/examples.module.css +30 -0
  1083. package/dist/skill/reference/components/gantt/examples/large.tsx +96 -0
  1084. package/dist/skill/reference/components/gantt/examples/narrow.tsx +54 -0
  1085. package/dist/skill/reference/components/gantt/examples/occupancy.tsx +149 -0
  1086. package/dist/skill/reference/components/gantt/examples/overview.tsx +82 -0
  1087. package/dist/skill/reference/components/gantt/examples/sizes.tsx +48 -0
  1088. package/dist/skill/reference/components/gantt/examples/states.tsx +68 -0
  1089. package/dist/skill/reference/components/gantt/examples/variants.tsx +82 -0
  1090. package/dist/skill/reference/components/hint/COMPONENT.md +113 -0
  1091. package/dist/skill/reference/components/hint/examples/examples.module.css +14 -0
  1092. package/dist/skill/reference/components/hint/examples/hint-or-error.tsx +27 -0
  1093. package/dist/skill/reference/components/hint/examples/overview.tsx +22 -0
  1094. package/dist/skill/reference/components/hint/examples/sizes.tsx +19 -0
  1095. package/dist/skill/reference/components/hint/examples/states.tsx +27 -0
  1096. package/dist/skill/reference/components/hint/examples/with-icon.tsx +31 -0
  1097. package/dist/skill/reference/components/input/COMPONENT.md +297 -0
  1098. package/dist/skill/reference/components/input/examples/affixes.tsx +22 -0
  1099. package/dist/skill/reference/components/input/examples/controlled.tsx +39 -0
  1100. package/dist/skill/reference/components/input/examples/edge-actions.tsx +30 -0
  1101. package/dist/skill/reference/components/input/examples/examples.module.css +38 -0
  1102. package/dist/skill/reference/components/input/examples/in-form.tsx +107 -0
  1103. package/dist/skill/reference/components/input/examples/inline-edit.tsx +52 -0
  1104. package/dist/skill/reference/components/input/examples/overview.tsx +12 -0
  1105. package/dist/skill/reference/components/input/examples/password-strength.tsx +13 -0
  1106. package/dist/skill/reference/components/input/examples/sizes.tsx +18 -0
  1107. package/dist/skill/reference/components/input/examples/states.tsx +27 -0
  1108. package/dist/skill/reference/components/input/examples/validation.tsx +60 -0
  1109. package/dist/skill/reference/components/input/examples/with-icon.tsx +25 -0
  1110. package/dist/skill/reference/components/input/examples/without-focus-ring.tsx +25 -0
  1111. package/dist/skill/reference/components/kanban/COMPONENT.md +239 -0
  1112. package/dist/skill/reference/components/kanban/examples/cards.tsx +152 -0
  1113. package/dist/skill/reference/components/kanban/examples/columns.tsx +182 -0
  1114. package/dist/skill/reference/components/kanban/examples/controlled.tsx +78 -0
  1115. package/dist/skill/reference/components/kanban/examples/examples.module.css +37 -0
  1116. package/dist/skill/reference/components/kanban/examples/limits.tsx +60 -0
  1117. package/dist/skill/reference/components/kanban/examples/narrow.tsx +76 -0
  1118. package/dist/skill/reference/components/kanban/examples/overview.tsx +130 -0
  1119. package/dist/skill/reference/components/kanban/examples/saving.tsx +83 -0
  1120. package/dist/skill/reference/components/kanban/examples/states.tsx +75 -0
  1121. package/dist/skill/reference/components/kanban/examples/structure.tsx +76 -0
  1122. package/dist/skill/reference/components/kanban/examples/variants.tsx +57 -0
  1123. package/dist/skill/reference/components/kbd/COMPONENT.md +99 -0
  1124. package/dist/skill/reference/components/kbd/examples/examples.module.css +37 -0
  1125. package/dist/skill/reference/components/kbd/examples/in-controls.tsx +34 -0
  1126. package/dist/skill/reference/components/kbd/examples/overview.tsx +24 -0
  1127. package/dist/skill/reference/components/kbd/examples/shortcut-list.tsx +49 -0
  1128. package/dist/skill/reference/components/kbd/examples/sizes.tsx +19 -0
  1129. package/dist/skill/reference/components/label/COMPONENT.md +126 -0
  1130. package/dist/skill/reference/components/label/examples/examples.module.css +16 -0
  1131. package/dist/skill/reference/components/label/examples/overview.tsx +20 -0
  1132. package/dist/skill/reference/components/label/examples/sizes.tsx +19 -0
  1133. package/dist/skill/reference/components/label/examples/states.tsx +23 -0
  1134. package/dist/skill/reference/components/label/examples/structure.tsx +32 -0
  1135. package/dist/skill/reference/components/label/examples/with-icon.tsx +31 -0
  1136. package/dist/skill/reference/components/link-button/COMPONENT.md +128 -0
  1137. package/dist/skill/reference/components/link-button/examples/as-child.tsx +18 -0
  1138. package/dist/skill/reference/components/link-button/examples/external-link.tsx +14 -0
  1139. package/dist/skill/reference/components/link-button/examples/overview.tsx +11 -0
  1140. package/dist/skill/reference/components/link-button/examples/sizes.tsx +21 -0
  1141. package/dist/skill/reference/components/link-button/examples/states.tsx +31 -0
  1142. package/dist/skill/reference/components/link-button/examples/variants.tsx +21 -0
  1143. package/dist/skill/reference/components/link-button/examples/with-icon.tsx +27 -0
  1144. package/dist/skill/reference/components/login-form/COMPONENT.md +163 -0
  1145. package/dist/skill/reference/components/login-form/examples/examples.module.css +39 -0
  1146. package/dist/skill/reference/components/login-form/examples/forgot-password.tsx +39 -0
  1147. package/dist/skill/reference/components/login-form/examples/narrow.tsx +32 -0
  1148. package/dist/skill/reference/components/login-form/examples/overview.tsx +58 -0
  1149. package/dist/skill/reference/components/login-form/examples/register.tsx +80 -0
  1150. package/dist/skill/reference/components/login-form/examples/reset-password.tsx +60 -0
  1151. package/dist/skill/reference/components/login-form/examples/sizes.tsx +38 -0
  1152. package/dist/skill/reference/components/login-form/examples/states.tsx +71 -0
  1153. package/dist/skill/reference/components/login-form/examples/structure.tsx +28 -0
  1154. package/dist/skill/reference/components/login-form/examples/verification-code.tsx +57 -0
  1155. package/dist/skill/reference/components/media-viewer/COMPONENT.md +207 -0
  1156. package/dist/skill/reference/components/media-viewer/examples/actions.tsx +86 -0
  1157. package/dist/skill/reference/components/media-viewer/examples/controlled-open.tsx +30 -0
  1158. package/dist/skill/reference/components/media-viewer/examples/controlled.tsx +54 -0
  1159. package/dist/skill/reference/components/media-viewer/examples/dismiss.tsx +34 -0
  1160. package/dist/skill/reference/components/media-viewer/examples/examples.module.css +16 -0
  1161. package/dist/skill/reference/components/media-viewer/examples/origin.tsx +60 -0
  1162. package/dist/skill/reference/components/media-viewer/examples/overview.tsx +75 -0
  1163. package/dist/skill/reference/components/media-viewer/examples/thumbnails.tsx +49 -0
  1164. package/dist/skill/reference/components/media-viewer/examples/video.tsx +55 -0
  1165. package/dist/skill/reference/components/message/COMPONENT.md +444 -0
  1166. package/dist/skill/reference/components/message/examples/author.tsx +74 -0
  1167. package/dist/skill/reference/components/message/examples/contact.tsx +24 -0
  1168. package/dist/skill/reference/components/message/examples/context-menu.tsx +71 -0
  1169. package/dist/skill/reference/components/message/examples/examples.module.css +18 -0
  1170. package/dist/skill/reference/components/message/examples/file.tsx +79 -0
  1171. package/dist/skill/reference/components/message/examples/kinds.tsx +93 -0
  1172. package/dist/skill/reference/components/message/examples/link-preview.tsx +17 -0
  1173. package/dist/skill/reference/components/message/examples/location.tsx +30 -0
  1174. package/dist/skill/reference/components/message/examples/media.tsx +93 -0
  1175. package/dist/skill/reference/components/message/examples/narrow.tsx +29 -0
  1176. package/dist/skill/reference/components/message/examples/overview.tsx +52 -0
  1177. package/dist/skill/reference/components/message/examples/reactions.tsx +73 -0
  1178. package/dist/skill/reference/components/message/examples/status.tsx +45 -0
  1179. package/dist/skill/reference/components/message/examples/structure.tsx +32 -0
  1180. package/dist/skill/reference/components/message/examples/text-formatting.tsx +27 -0
  1181. package/dist/skill/reference/components/message/examples/typing.tsx +22 -0
  1182. package/dist/skill/reference/components/message/examples/voice.tsx +39 -0
  1183. package/dist/skill/reference/components/modal/COMPONENT.md +247 -0
  1184. package/dist/skill/reference/components/modal/examples/controlled-open.tsx +33 -0
  1185. package/dist/skill/reference/components/modal/examples/custom-container.tsx +29 -0
  1186. package/dist/skill/reference/components/modal/examples/dismiss.tsx +54 -0
  1187. package/dist/skill/reference/components/modal/examples/examples.module.css +21 -0
  1188. package/dist/skill/reference/components/modal/examples/guard.tsx +87 -0
  1189. package/dist/skill/reference/components/modal/examples/in-form.tsx +83 -0
  1190. package/dist/skill/reference/components/modal/examples/long-content.tsx +52 -0
  1191. package/dist/skill/reference/components/modal/examples/overview.tsx +35 -0
  1192. package/dist/skill/reference/components/modal/examples/sizes.tsx +48 -0
  1193. package/dist/skill/reference/components/modal/examples/structure.tsx +53 -0
  1194. package/dist/skill/reference/components/native-select/COMPONENT.md +132 -0
  1195. package/dist/skill/reference/components/native-select/examples/controlled.tsx +26 -0
  1196. package/dist/skill/reference/components/native-select/examples/examples.module.css +16 -0
  1197. package/dist/skill/reference/components/native-select/examples/in-form.tsx +58 -0
  1198. package/dist/skill/reference/components/native-select/examples/option-groups.tsx +17 -0
  1199. package/dist/skill/reference/components/native-select/examples/overview.tsx +16 -0
  1200. package/dist/skill/reference/components/native-select/examples/sizes.tsx +18 -0
  1201. package/dist/skill/reference/components/native-select/examples/states.tsx +21 -0
  1202. package/dist/skill/reference/components/native-select/examples/validation.tsx +31 -0
  1203. package/dist/skill/reference/components/notification/COMPONENT.md +193 -0
  1204. package/dist/skill/reference/components/notification/examples/dismiss.tsx +50 -0
  1205. package/dist/skill/reference/components/notification/examples/examples.module.css +52 -0
  1206. package/dist/skill/reference/components/notification/examples/in-form.tsx +64 -0
  1207. package/dist/skill/reference/components/notification/examples/overview.tsx +24 -0
  1208. package/dist/skill/reference/components/notification/examples/placement.tsx +66 -0
  1209. package/dist/skill/reference/components/notification/examples/sizes.tsx +22 -0
  1210. package/dist/skill/reference/components/notification/examples/stacking.tsx +45 -0
  1211. package/dist/skill/reference/components/notification/examples/structure.tsx +20 -0
  1212. package/dist/skill/reference/components/notification/examples/tones.tsx +25 -0
  1213. package/dist/skill/reference/components/notification/examples/undo.tsx +61 -0
  1214. package/dist/skill/reference/components/page-content/COMPONENT.md +215 -0
  1215. package/dist/skill/reference/components/page-content/examples/examples.module.css +76 -0
  1216. package/dist/skill/reference/components/page-content/examples/list-detail.tsx +114 -0
  1217. package/dist/skill/reference/components/page-content/examples/narrow.tsx +25 -0
  1218. package/dist/skill/reference/components/page-content/examples/overview.tsx +41 -0
  1219. package/dist/skill/reference/components/page-content/examples/variants.tsx +39 -0
  1220. package/dist/skill/reference/components/page-toolbar/COMPONENT.md +141 -0
  1221. package/dist/skill/reference/components/page-toolbar/examples/examples.module.css +16 -0
  1222. package/dist/skill/reference/components/page-toolbar/examples/narrow.tsx +103 -0
  1223. package/dist/skill/reference/components/page-toolbar/examples/overview.tsx +113 -0
  1224. package/dist/skill/reference/components/page-toolbar/examples/save-changes.tsx +40 -0
  1225. package/dist/skill/reference/components/page-toolbar/examples/without-search.tsx +60 -0
  1226. package/dist/skill/reference/components/pagination/COMPONENT.md +132 -0
  1227. package/dist/skill/reference/components/pagination/examples/controlled.tsx +51 -0
  1228. package/dist/skill/reference/components/pagination/examples/examples.module.css +24 -0
  1229. package/dist/skill/reference/components/pagination/examples/narrow.tsx +25 -0
  1230. package/dist/skill/reference/components/pagination/examples/overflow.tsx +23 -0
  1231. package/dist/skill/reference/components/pagination/examples/overview.tsx +6 -0
  1232. package/dist/skill/reference/components/pagination/examples/sizes.tsx +19 -0
  1233. package/dist/skill/reference/components/popover/COMPONENT.md +183 -0
  1234. package/dist/skill/reference/components/popover/examples/controlled-open.tsx +32 -0
  1235. package/dist/skill/reference/components/popover/examples/dismiss.tsx +49 -0
  1236. package/dist/skill/reference/components/popover/examples/examples.module.css +49 -0
  1237. package/dist/skill/reference/components/popover/examples/flush.tsx +47 -0
  1238. package/dist/skill/reference/components/popover/examples/from-menu.tsx +56 -0
  1239. package/dist/skill/reference/components/popover/examples/in-form.tsx +76 -0
  1240. package/dist/skill/reference/components/popover/examples/match-trigger-width.tsx +23 -0
  1241. package/dist/skill/reference/components/popover/examples/overview.tsx +43 -0
  1242. package/dist/skill/reference/components/popover/examples/placement.tsx +34 -0
  1243. package/dist/skill/reference/components/popover/examples/sizes.tsx +36 -0
  1244. package/dist/skill/reference/components/popover/examples/structure.tsx +50 -0
  1245. package/dist/skill/reference/components/progress-bar/COMPONENT.md +199 -0
  1246. package/dist/skill/reference/components/progress-bar/examples/custom-max.tsx +12 -0
  1247. package/dist/skill/reference/components/progress-bar/examples/examples.module.css +17 -0
  1248. package/dist/skill/reference/components/progress-bar/examples/legend.tsx +28 -0
  1249. package/dist/skill/reference/components/progress-bar/examples/milestone.tsx +43 -0
  1250. package/dist/skill/reference/components/progress-bar/examples/overview.tsx +12 -0
  1251. package/dist/skill/reference/components/progress-bar/examples/ranking.tsx +28 -0
  1252. package/dist/skill/reference/components/progress-bar/examples/segments.tsx +32 -0
  1253. package/dist/skill/reference/components/progress-bar/examples/sizes.tsx +19 -0
  1254. package/dist/skill/reference/components/progress-bar/examples/states.tsx +43 -0
  1255. package/dist/skill/reference/components/progress-bar/examples/steps.tsx +35 -0
  1256. package/dist/skill/reference/components/progress-bar/examples/variants.tsx +34 -0
  1257. package/dist/skill/reference/components/progress-circle/COMPONENT.md +189 -0
  1258. package/dist/skill/reference/components/progress-circle/examples/examples.module.css +22 -0
  1259. package/dist/skill/reference/components/progress-circle/examples/inner-content.tsx +35 -0
  1260. package/dist/skill/reference/components/progress-circle/examples/legend.tsx +33 -0
  1261. package/dist/skill/reference/components/progress-circle/examples/overview.tsx +10 -0
  1262. package/dist/skill/reference/components/progress-circle/examples/segments.tsx +64 -0
  1263. package/dist/skill/reference/components/progress-circle/examples/sizes.tsx +21 -0
  1264. package/dist/skill/reference/components/progress-circle/examples/states.tsx +25 -0
  1265. package/dist/skill/reference/components/progress-circle/examples/under-way.tsx +54 -0
  1266. package/dist/skill/reference/components/progress-circle/examples/variants.tsx +28 -0
  1267. package/dist/skill/reference/components/radio/COMPONENT.md +165 -0
  1268. package/dist/skill/reference/components/radio/examples/controlled.tsx +30 -0
  1269. package/dist/skill/reference/components/radio/examples/group.tsx +23 -0
  1270. package/dist/skill/reference/components/radio/examples/orientation.tsx +34 -0
  1271. package/dist/skill/reference/components/radio/examples/overview.tsx +18 -0
  1272. package/dist/skill/reference/components/radio/examples/sizes.tsx +20 -0
  1273. package/dist/skill/reference/components/radio/examples/states.tsx +48 -0
  1274. package/dist/skill/reference/components/scroll-container/COMPONENT.md +179 -0
  1275. package/dist/skill/reference/components/scroll-container/examples/auto-scroll.tsx +52 -0
  1276. package/dist/skill/reference/components/scroll-container/examples/chat.tsx +101 -0
  1277. package/dist/skill/reference/components/scroll-container/examples/edges.tsx +43 -0
  1278. package/dist/skill/reference/components/scroll-container/examples/examples.module.css +139 -0
  1279. package/dist/skill/reference/components/scroll-container/examples/lock.tsx +49 -0
  1280. package/dist/skill/reference/components/scroll-container/examples/overscroll.tsx +27 -0
  1281. package/dist/skill/reference/components/scroll-container/examples/overview.tsx +27 -0
  1282. package/dist/skill/reference/components/scroll-container/examples/scrollbar.tsx +52 -0
  1283. package/dist/skill/reference/components/scroll-container/examples/snap.tsx +36 -0
  1284. package/dist/skill/reference/components/scroll-container/examples/variants.tsx +54 -0
  1285. package/dist/skill/reference/components/segmented-control/COMPONENT.md +214 -0
  1286. package/dist/skill/reference/components/segmented-control/examples/colors.tsx +18 -0
  1287. package/dist/skill/reference/components/segmented-control/examples/controlled.tsx +28 -0
  1288. package/dist/skill/reference/components/segmented-control/examples/examples.module.css +20 -0
  1289. package/dist/skill/reference/components/segmented-control/examples/full-width.tsx +12 -0
  1290. package/dist/skill/reference/components/segmented-control/examples/in-form.tsx +42 -0
  1291. package/dist/skill/reference/components/segmented-control/examples/overview.tsx +12 -0
  1292. package/dist/skill/reference/components/segmented-control/examples/scroll.tsx +16 -0
  1293. package/dist/skill/reference/components/segmented-control/examples/sizes.tsx +22 -0
  1294. package/dist/skill/reference/components/segmented-control/examples/states.tsx +47 -0
  1295. package/dist/skill/reference/components/segmented-control/examples/two-line.tsx +28 -0
  1296. package/dist/skill/reference/components/segmented-control/examples/with-icon.tsx +52 -0
  1297. package/dist/skill/reference/components/select/COMPONENT.md +300 -0
  1298. package/dist/skill/reference/components/select/examples/clearable.tsx +23 -0
  1299. package/dist/skill/reference/components/select/examples/controlled-open.tsx +30 -0
  1300. package/dist/skill/reference/components/select/examples/controlled.tsx +34 -0
  1301. package/dist/skill/reference/components/select/examples/examples.module.css +35 -0
  1302. package/dist/skill/reference/components/select/examples/in-form.tsx +88 -0
  1303. package/dist/skill/reference/components/select/examples/load-error.tsx +45 -0
  1304. package/dist/skill/reference/components/select/examples/multiple.tsx +26 -0
  1305. package/dist/skill/reference/components/select/examples/overview.tsx +17 -0
  1306. package/dist/skill/reference/components/select/examples/people.tsx +53 -0
  1307. package/dist/skill/reference/components/select/examples/rich-options.tsx +72 -0
  1308. package/dist/skill/reference/components/select/examples/searchable.tsx +42 -0
  1309. package/dist/skill/reference/components/select/examples/server-search.tsx +93 -0
  1310. package/dist/skill/reference/components/select/examples/sizes.tsx +23 -0
  1311. package/dist/skill/reference/components/select/examples/states.tsx +67 -0
  1312. package/dist/skill/reference/components/select/examples/validation.tsx +46 -0
  1313. package/dist/skill/reference/components/select/examples/with-icon.tsx +35 -0
  1314. package/dist/skill/reference/components/sheet/COMPONENT.md +216 -0
  1315. package/dist/skill/reference/components/sheet/examples/controlled-open.tsx +37 -0
  1316. package/dist/skill/reference/components/sheet/examples/dismiss.tsx +42 -0
  1317. package/dist/skill/reference/components/sheet/examples/examples.module.css +13 -0
  1318. package/dist/skill/reference/components/sheet/examples/in-form.tsx +65 -0
  1319. package/dist/skill/reference/components/sheet/examples/overview.tsx +50 -0
  1320. package/{src/components/drawer/examples/date-sheet.tsx → dist/skill/reference/components/sheet/examples/structure.tsx} +11 -17
  1321. package/dist/skill/reference/components/skeleton/COMPONENT.md +104 -0
  1322. package/dist/skill/reference/components/skeleton/examples/examples.module.css +89 -0
  1323. package/dist/skill/reference/components/skeleton/examples/form.tsx +20 -0
  1324. package/dist/skill/reference/components/skeleton/examples/overview.tsx +21 -0
  1325. package/dist/skill/reference/components/skeleton/examples/sizes.tsx +24 -0
  1326. package/dist/skill/reference/components/skeleton/examples/with-crossfade.tsx +68 -0
  1327. package/dist/skill/reference/components/slider/COMPONENT.md +186 -0
  1328. package/dist/skill/reference/components/slider/examples/autosave.tsx +39 -0
  1329. package/dist/skill/reference/components/slider/examples/controlled.tsx +39 -0
  1330. package/dist/skill/reference/components/slider/examples/examples.module.css +24 -0
  1331. package/dist/skill/reference/components/slider/examples/hint-and-error.tsx +33 -0
  1332. package/dist/skill/reference/components/slider/examples/orientation.tsx +27 -0
  1333. package/dist/skill/reference/components/slider/examples/overview.tsx +6 -0
  1334. package/dist/skill/reference/components/slider/examples/range-step.tsx +19 -0
  1335. package/dist/skill/reference/components/slider/examples/sizes.tsx +18 -0
  1336. package/dist/skill/reference/components/slider/examples/states.tsx +18 -0
  1337. package/dist/skill/reference/components/slider/examples/value-format.tsx +32 -0
  1338. package/dist/skill/reference/components/slider/examples/variants.tsx +23 -0
  1339. package/dist/skill/reference/components/smart-filter/COMPONENT.md +235 -0
  1340. package/dist/skill/reference/components/smart-filter/examples/controlled.tsx +48 -0
  1341. package/dist/skill/reference/components/smart-filter/examples/examples.module.css +56 -0
  1342. package/dist/skill/reference/components/smart-filter/examples/many-values.tsx +53 -0
  1343. package/dist/skill/reference/components/smart-filter/examples/narrow.tsx +38 -0
  1344. package/dist/skill/reference/components/smart-filter/examples/option-groups.tsx +40 -0
  1345. package/dist/skill/reference/components/smart-filter/examples/overview.tsx +109 -0
  1346. package/dist/skill/reference/components/smart-filter/examples/ranges.tsx +89 -0
  1347. package/dist/skill/reference/components/smart-filter/examples/single-value.tsx +41 -0
  1348. package/dist/skill/reference/components/smart-filter/examples/sizes.tsx +33 -0
  1349. package/dist/skill/reference/components/sparkline/COMPONENT.md +127 -0
  1350. package/dist/skill/reference/components/sparkline/examples/examples.module.css +13 -0
  1351. package/dist/skill/reference/components/sparkline/examples/overview.tsx +27 -0
  1352. package/dist/skill/reference/components/sparkline/examples/period.tsx +46 -0
  1353. package/dist/skill/reference/components/sparkline/examples/signed-bars.tsx +41 -0
  1354. package/dist/skill/reference/components/sparkline/examples/states.tsx +30 -0
  1355. package/dist/skill/reference/components/sparkline/examples/variants.tsx +29 -0
  1356. package/dist/skill/reference/components/spinner/COMPONENT.md +114 -0
  1357. package/dist/skill/reference/components/spinner/examples/examples.module.css +20 -0
  1358. package/dist/skill/reference/components/spinner/examples/loading-region.tsx +22 -0
  1359. package/dist/skill/reference/components/spinner/examples/overview.tsx +15 -0
  1360. package/dist/skill/reference/components/spinner/examples/sizes.tsx +19 -0
  1361. package/dist/skill/reference/components/spinner/examples/variants.tsx +19 -0
  1362. package/dist/skill/reference/components/stepper/COMPONENT.md +176 -0
  1363. package/dist/skill/reference/components/stepper/examples/controlled.tsx +46 -0
  1364. package/dist/skill/reference/components/stepper/examples/examples.module.css +24 -0
  1365. package/dist/skill/reference/components/stepper/examples/narrow.tsx +23 -0
  1366. package/dist/skill/reference/components/stepper/examples/orientation.tsx +35 -0
  1367. package/dist/skill/reference/components/stepper/examples/overview.tsx +28 -0
  1368. package/dist/skill/reference/components/stepper/examples/sizes.tsx +31 -0
  1369. package/dist/skill/reference/components/stepper/examples/states.tsx +49 -0
  1370. package/dist/skill/reference/components/stepper/examples/with-icon.tsx +29 -0
  1371. package/dist/skill/reference/components/switch/COMPONENT.md +147 -0
  1372. package/dist/skill/reference/components/switch/examples/controlled.tsx +17 -0
  1373. package/dist/skill/reference/components/switch/examples/examples.module.css +30 -0
  1374. package/dist/skill/reference/components/switch/examples/in-form.tsx +36 -0
  1375. package/dist/skill/reference/components/switch/examples/overview.tsx +10 -0
  1376. package/dist/skill/reference/components/switch/examples/saving.tsx +53 -0
  1377. package/dist/skill/reference/components/switch/examples/settings-row.tsx +24 -0
  1378. package/dist/skill/reference/components/switch/examples/sizes.tsx +18 -0
  1379. package/dist/skill/reference/components/switch/examples/states.tsx +48 -0
  1380. package/dist/skill/reference/components/tabs/COMPONENT.md +276 -0
  1381. package/dist/skill/reference/components/tabs/examples/closable.tsx +48 -0
  1382. package/dist/skill/reference/components/tabs/examples/controlled.tsx +33 -0
  1383. package/dist/skill/reference/components/tabs/examples/examples.module.css +38 -0
  1384. package/dist/skill/reference/components/tabs/examples/in-drawer.tsx +100 -0
  1385. package/dist/skill/reference/components/tabs/examples/orientation.tsx +94 -0
  1386. package/dist/skill/reference/components/tabs/examples/overflow.tsx +60 -0
  1387. package/dist/skill/reference/components/tabs/examples/overview.tsx +30 -0
  1388. package/dist/skill/reference/components/tabs/examples/sizes.tsx +30 -0
  1389. package/dist/skill/reference/components/tabs/examples/states.tsx +26 -0
  1390. package/dist/skill/reference/components/tabs/examples/two-line.tsx +56 -0
  1391. package/dist/skill/reference/components/tabs/examples/variants.tsx +40 -0
  1392. package/dist/skill/reference/components/tabs/examples/with-icon.tsx +44 -0
  1393. package/dist/skill/reference/components/tag-select/COMPONENT.md +179 -0
  1394. package/dist/skill/reference/components/tag-select/examples/confirm-delete.tsx +60 -0
  1395. package/dist/skill/reference/components/tag-select/examples/controlled-open.tsx +29 -0
  1396. package/dist/skill/reference/components/tag-select/examples/controlled.tsx +26 -0
  1397. package/dist/skill/reference/components/tag-select/examples/creatable.tsx +49 -0
  1398. package/dist/skill/reference/components/tag-select/examples/examples.module.css +16 -0
  1399. package/dist/skill/reference/components/tag-select/examples/in-form.tsx +85 -0
  1400. package/dist/skill/reference/components/tag-select/examples/manage-tags.tsx +38 -0
  1401. package/dist/skill/reference/components/tag-select/examples/many-tags.tsx +20 -0
  1402. package/dist/skill/reference/components/tag-select/examples/overview.tsx +21 -0
  1403. package/dist/skill/reference/components/tag-select/examples/sizes.tsx +27 -0
  1404. package/dist/skill/reference/components/tag-select/examples/states.tsx +24 -0
  1405. package/dist/skill/reference/components/tag-select/examples/validation.tsx +40 -0
  1406. package/dist/skill/reference/components/textarea/COMPONENT.md +206 -0
  1407. package/dist/skill/reference/components/textarea/examples/auto-resize.tsx +28 -0
  1408. package/dist/skill/reference/components/textarea/examples/controlled.tsx +21 -0
  1409. package/dist/skill/reference/components/textarea/examples/edge-actions.tsx +24 -0
  1410. package/dist/skill/reference/components/textarea/examples/examples.module.css +27 -0
  1411. package/dist/skill/reference/components/textarea/examples/in-form.tsx +76 -0
  1412. package/dist/skill/reference/components/textarea/examples/inline-edit.tsx +42 -0
  1413. package/dist/skill/reference/components/textarea/examples/overview.tsx +12 -0
  1414. package/dist/skill/reference/components/textarea/examples/sizes.tsx +20 -0
  1415. package/dist/skill/reference/components/textarea/examples/states.tsx +21 -0
  1416. package/dist/skill/reference/components/textarea/examples/validation.tsx +50 -0
  1417. package/dist/skill/reference/components/textarea/examples/without-focus-ring.tsx +12 -0
  1418. package/dist/skill/reference/components/thumbnail/COMPONENT.md +191 -0
  1419. package/dist/skill/reference/components/thumbnail/examples/controlled.tsx +61 -0
  1420. package/dist/skill/reference/components/thumbnail/examples/examples.module.css +76 -0
  1421. package/dist/skill/reference/components/thumbnail/examples/full-width.tsx +45 -0
  1422. package/dist/skill/reference/components/thumbnail/examples/overview.tsx +27 -0
  1423. package/dist/skill/reference/components/thumbnail/examples/pressable.tsx +56 -0
  1424. package/dist/skill/reference/components/thumbnail/examples/ratios.tsx +25 -0
  1425. package/dist/skill/reference/components/thumbnail/examples/ring.tsx +29 -0
  1426. package/dist/skill/reference/components/thumbnail/examples/sizes.tsx +23 -0
  1427. package/dist/skill/reference/components/thumbnail/examples/states.tsx +38 -0
  1428. package/dist/skill/reference/components/thumbnail/examples/variants.tsx +28 -0
  1429. package/dist/skill/reference/components/thumbnail/examples/video.tsx +46 -0
  1430. package/dist/skill/reference/components/timeline/COMPONENT.md +181 -0
  1431. package/dist/skill/reference/components/timeline/examples/examples.module.css +25 -0
  1432. package/dist/skill/reference/components/timeline/examples/links.tsx +28 -0
  1433. package/dist/skill/reference/components/timeline/examples/narrow.tsx +41 -0
  1434. package/dist/skill/reference/components/timeline/examples/overview.tsx +47 -0
  1435. package/dist/skill/reference/components/timeline/examples/sizes.tsx +33 -0
  1436. package/dist/skill/reference/components/timeline/examples/structure.tsx +56 -0
  1437. package/dist/skill/reference/components/timeline/examples/variants.tsx +56 -0
  1438. package/dist/skill/reference/components/tooltip/COMPONENT.md +167 -0
  1439. package/dist/skill/reference/components/tooltip/examples/controlled-open.tsx +23 -0
  1440. package/dist/skill/reference/components/tooltip/examples/delay.tsx +25 -0
  1441. package/dist/skill/reference/components/tooltip/examples/disabled-trigger.tsx +13 -0
  1442. package/dist/skill/reference/components/tooltip/examples/examples.module.css +20 -0
  1443. package/dist/skill/reference/components/tooltip/examples/long-content.tsx +18 -0
  1444. package/dist/skill/reference/components/tooltip/examples/non-interactive-trigger.tsx +31 -0
  1445. package/dist/skill/reference/components/tooltip/examples/overview.tsx +17 -0
  1446. package/dist/skill/reference/components/tooltip/examples/placement.tsx +30 -0
  1447. package/dist/skill/reference/components/tooltip/examples/sizes.tsx +21 -0
  1448. package/dist/skill/reference/components/tooltip/examples/toolbar.tsx +35 -0
  1449. package/dist/skill/reference/components/typography/COMPONENT.md +126 -0
  1450. package/dist/skill/reference/components/typography/examples/article.tsx +36 -0
  1451. package/dist/skill/reference/components/typography/examples/examples.module.css +41 -0
  1452. package/dist/skill/reference/components/typography/examples/inline-emphasis.tsx +20 -0
  1453. package/dist/skill/reference/components/typography/examples/overview.tsx +20 -0
  1454. package/dist/skill/reference/components/typography/examples/semantic-tag.tsx +17 -0
  1455. package/dist/skill/reference/components/typography/examples/truncate.tsx +19 -0
  1456. package/dist/skill/reference/components/typography/examples/variants.tsx +50 -0
  1457. package/dist/skill/reference/components/typography/examples/weights.tsx +31 -0
  1458. package/dist/skill/reference/components/video-note/COMPONENT.md +173 -0
  1459. package/dist/skill/reference/components/video-note/examples/controlled.tsx +28 -0
  1460. package/dist/skill/reference/components/video-note/examples/examples.module.css +4 -0
  1461. package/dist/skill/reference/components/video-note/examples/in-message.tsx +22 -0
  1462. package/dist/skill/reference/components/video-note/examples/overview.tsx +8 -0
  1463. package/dist/skill/reference/components/video-note/examples/states.tsx +74 -0
  1464. package/dist/skill/reference/components/video-note/examples/transcript.tsx +29 -0
  1465. package/dist/skill/reference/components/video-note/examples/transfer.tsx +76 -0
  1466. package/dist/skill/reference/components/visually-hidden/COMPONENT.md +81 -0
  1467. package/dist/skill/reference/components/visually-hidden/examples/overview.tsx +22 -0
  1468. package/dist/skill/reference/components/voice-player/COMPONENT.md +192 -0
  1469. package/dist/skill/reference/components/voice-player/examples/call-recording.tsx +34 -0
  1470. package/dist/skill/reference/components/voice-player/examples/controlled.tsx +38 -0
  1471. package/dist/skill/reference/components/voice-player/examples/examples.module.css +23 -0
  1472. package/dist/skill/reference/components/voice-player/examples/in-message.tsx +29 -0
  1473. package/dist/skill/reference/components/voice-player/examples/overview.tsx +13 -0
  1474. package/dist/skill/reference/components/voice-player/examples/states.tsx +81 -0
  1475. package/dist/skill/reference/components/voice-player/examples/transcript.tsx +50 -0
  1476. package/dist/skill/reference/components/voice-player/examples/transfer.tsx +88 -0
  1477. package/dist/skill/reference/icon-set.ts +530 -0
  1478. package/dist/skill/reference/layout/app-header/COMPONENT.md +203 -0
  1479. package/dist/skill/reference/layout/app-header/examples/breadcrumbs.tsx +36 -0
  1480. package/dist/skill/reference/layout/app-header/examples/examples.module.css +47 -0
  1481. package/dist/skill/reference/layout/app-header/examples/in-app-shell.tsx +70 -0
  1482. package/dist/skill/reference/layout/app-header/examples/narrow.tsx +29 -0
  1483. package/dist/skill/reference/layout/app-header/examples/overview.tsx +36 -0
  1484. package/dist/skill/reference/layout/app-header/examples/page-title.tsx +85 -0
  1485. package/dist/skill/reference/layout/app-shell/COMPONENT.md +156 -0
  1486. package/dist/skill/reference/layout/app-shell/examples/contained.tsx +30 -0
  1487. package/dist/skill/reference/layout/app-shell/examples/examples.module.css +44 -0
  1488. package/dist/skill/reference/layout/app-shell/examples/footer.tsx +59 -0
  1489. package/dist/skill/reference/layout/app-shell/examples/overview.tsx +83 -0
  1490. package/dist/skill/reference/layout/app-shell/examples/template.tsx +54 -0
  1491. package/dist/skill/reference/layout/bottom-nav/COMPONENT.md +169 -0
  1492. package/dist/skill/reference/layout/bottom-nav/examples/examples.module.css +46 -0
  1493. package/dist/skill/reference/layout/bottom-nav/examples/floating-action.tsx +91 -0
  1494. package/dist/skill/reference/layout/bottom-nav/examples/floating.tsx +89 -0
  1495. package/dist/skill/reference/layout/bottom-nav/examples/icon-only.tsx +41 -0
  1496. package/dist/skill/reference/layout/bottom-nav/examples/in-app-shell.tsx +64 -0
  1497. package/dist/skill/reference/layout/bottom-nav/examples/overview.tsx +44 -0
  1498. package/dist/skill/reference/layout/bottom-nav/examples/router.tsx +31 -0
  1499. package/dist/skill/reference/layout/bottom-nav/examples/structure.tsx +47 -0
  1500. package/dist/skill/reference/layout/sidebar/COMPONENT.md +402 -0
  1501. package/dist/skill/reference/layout/sidebar/examples/account.tsx +88 -0
  1502. package/dist/skill/reference/layout/sidebar/examples/brand-header.tsx +45 -0
  1503. package/dist/skill/reference/layout/sidebar/examples/collapsible-groups.tsx +77 -0
  1504. package/dist/skill/reference/layout/sidebar/examples/controlled-open.tsx +55 -0
  1505. package/dist/skill/reference/layout/sidebar/examples/controlled.tsx +68 -0
  1506. package/dist/skill/reference/layout/sidebar/examples/examples.module.css +64 -0
  1507. package/dist/skill/reference/layout/sidebar/examples/nested-items.tsx +74 -0
  1508. package/dist/skill/reference/layout/sidebar/examples/overview.tsx +126 -0
  1509. package/dist/skill/reference/layout/sidebar/examples/router.tsx +33 -0
  1510. package/dist/skill/reference/layout/sidebar/examples/sizes.tsx +39 -0
  1511. package/dist/skill/reference/layout/sidebar/examples/structure.tsx +81 -0
  1512. package/dist/skill/responsive.md +274 -0
  1513. package/dist/theme/chartColors.d.ts +20 -0
  1514. package/dist/tokens/primitives.d.ts +31 -0
  1515. package/dist/tokens/semantic.d.ts +189 -18
  1516. package/dist/tokens/themes/dark.d.ts +42 -2
  1517. package/package.json +19 -8
  1518. package/src/components/accordion/COMPONENT.md +1 -1
  1519. package/src/components/avatar/COMPONENT.md +5 -3
  1520. package/src/components/avatar/examples/presence.tsx +17 -2
  1521. package/src/components/avatar/examples/team-group.tsx +27 -7
  1522. package/src/components/badge/COMPONENT.md +17 -6
  1523. package/src/components/badge/examples/server-tags.tsx +61 -0
  1524. package/src/components/badge/examples/states.tsx +9 -1
  1525. package/src/components/banner/COMPONENT.md +1 -1
  1526. package/src/components/breadcrumb/COMPONENT.md +2 -2
  1527. package/src/components/button/COMPONENT.md +44 -16
  1528. package/src/components/button/examples/circle.tsx +67 -0
  1529. package/src/components/button/examples/examples.module.css +22 -0
  1530. package/src/components/button/examples/hold-to-confirm.tsx +13 -2
  1531. package/src/components/button/examples/in-form.tsx +15 -3
  1532. package/src/components/button/examples/label-morph.tsx +7 -2
  1533. package/src/components/button/examples/over-media.tsx +36 -0
  1534. package/src/components/button/examples/toggle.tsx +21 -0
  1535. package/src/components/button/examples/variants.tsx +1 -0
  1536. package/src/components/button-group/COMPONENT.md +30 -13
  1537. package/src/components/button-group/examples/in-form.tsx +42 -7
  1538. package/src/components/card/COMPONENT.md +37 -13
  1539. package/src/components/card/examples/interactive.tsx +28 -0
  1540. package/src/components/card/examples/panel-chart.tsx +2 -1
  1541. package/src/components/card/examples/variants.tsx +3 -1
  1542. package/src/components/chart-frame/COMPONENT.md +265 -0
  1543. package/src/components/chart-frame/examples/controlled.tsx +92 -0
  1544. package/src/components/chart-frame/examples/examples.module.css +6 -0
  1545. package/src/components/chart-frame/examples/narrow.tsx +46 -0
  1546. package/src/components/chart-frame/examples/overview.tsx +127 -0
  1547. package/src/components/chart-frame/examples/states.tsx +78 -0
  1548. package/src/components/chart-frame/examples/tooltip.tsx +158 -0
  1549. package/src/components/chat/COMPONENT.md +336 -0
  1550. package/src/components/chat/examples/controlled.tsx +68 -0
  1551. package/src/components/chat/examples/examples.module.css +38 -0
  1552. package/src/components/chat/examples/group-chat.tsx +130 -0
  1553. package/src/components/chat/examples/live.tsx +89 -0
  1554. package/src/components/chat/examples/narrow.tsx +46 -0
  1555. package/src/components/chat/examples/overview.tsx +839 -0
  1556. package/src/components/chat/examples/search.tsx +61 -0
  1557. package/src/components/chat/examples/structure.tsx +28 -0
  1558. package/src/components/checkbox/COMPONENT.md +15 -4
  1559. package/src/components/checkbox/examples/variants.tsx +30 -0
  1560. package/src/components/color-field/COMPONENT.md +163 -0
  1561. package/src/components/color-field/examples/controlled.tsx +33 -0
  1562. package/src/components/color-field/examples/examples.module.css +22 -0
  1563. package/src/components/color-field/examples/in-form.tsx +45 -0
  1564. package/src/components/color-field/examples/overview.tsx +6 -0
  1565. package/src/components/color-field/examples/presets.tsx +20 -0
  1566. package/src/components/color-field/examples/sizes.tsx +14 -0
  1567. package/src/components/color-field/examples/states.tsx +12 -0
  1568. package/src/components/color-field/examples/validation.tsx +29 -0
  1569. package/src/components/color-picker/COMPONENT.md +28 -18
  1570. package/src/components/color-picker/examples/in-form.tsx +13 -5
  1571. package/src/components/color-picker/examples/overview.tsx +1 -1
  1572. package/src/components/color-picker/examples/presets-sizes.tsx +3 -1
  1573. package/src/components/color-picker/examples/presets.tsx +5 -3
  1574. package/src/components/color-picker/examples/validation.tsx +10 -4
  1575. package/src/components/color-swatches/COMPONENT.md +15 -14
  1576. package/src/components/color-swatches/examples/in-form.tsx +11 -5
  1577. package/src/components/color-swatches/examples/sizes.tsx +1 -1
  1578. package/src/components/color-swatches/examples/wrapping.tsx +1 -1
  1579. package/src/components/command-menu/COMPONENT.md +46 -17
  1580. package/src/components/command-menu/examples/controlled.tsx +3 -3
  1581. package/src/components/command-menu/examples/load-error.tsx +65 -0
  1582. package/src/components/command-menu/examples/server-search.tsx +91 -0
  1583. package/src/components/composer/COMPONENT.md +310 -0
  1584. package/src/components/composer/examples/attachments.tsx +36 -0
  1585. package/src/components/composer/examples/controlled.tsx +46 -0
  1586. package/src/components/composer/examples/examples.module.css +30 -0
  1587. package/src/components/composer/examples/formatting.tsx +15 -0
  1588. package/src/components/composer/examples/narrow.tsx +22 -0
  1589. package/src/components/composer/examples/overview.tsx +39 -0
  1590. package/src/components/composer/examples/reply-edit.tsx +68 -0
  1591. package/src/components/composer/examples/sizes.tsx +23 -0
  1592. package/src/components/composer/examples/states.tsx +31 -0
  1593. package/src/components/composer/examples/typing.tsx +24 -0
  1594. package/src/components/composer/examples/voice.tsx +21 -0
  1595. package/src/components/confirm-dialog/COMPONENT.md +124 -0
  1596. package/src/components/confirm-dialog/examples/controlled-open.tsx +35 -0
  1597. package/src/components/confirm-dialog/examples/failure.tsx +37 -0
  1598. package/src/components/confirm-dialog/examples/overview.tsx +24 -0
  1599. package/src/components/confirm-dialog/examples/variants.tsx +44 -0
  1600. package/src/components/crossfade/COMPONENT.md +16 -2
  1601. package/src/components/crossfade/examples/examples.module.css +28 -0
  1602. package/src/components/crossfade/examples/fill.tsx +79 -0
  1603. package/src/components/data-table/COMPONENT.md +136 -29
  1604. package/src/components/data-table/examples/columns-visibility.tsx +26 -42
  1605. package/src/components/data-table/examples/examples.module.css +9 -0
  1606. package/src/components/data-table/examples/fill-height.tsx +55 -0
  1607. package/src/components/data-table/examples/groups.tsx +73 -0
  1608. package/src/components/data-table/examples/heatmap.tsx +44 -0
  1609. package/src/components/data-table/examples/reorder.tsx +61 -0
  1610. package/src/components/data-table/examples/row-link.tsx +100 -0
  1611. package/src/components/data-table/examples/row-open.tsx +129 -0
  1612. package/src/components/data-table/examples/server.tsx +181 -0
  1613. package/src/components/datepicker/COMPONENT.md +16 -12
  1614. package/src/components/datepicker/examples/in-form.tsx +40 -10
  1615. package/src/components/datepicker/examples/inline-panel.tsx +9 -3
  1616. package/src/components/datepicker/examples/validation.tsx +20 -10
  1617. package/src/components/description-list/COMPONENT.md +132 -0
  1618. package/src/components/description-list/examples/examples.module.css +41 -0
  1619. package/src/components/description-list/examples/narrow.tsx +20 -0
  1620. package/src/components/description-list/examples/overview.tsx +35 -0
  1621. package/src/components/description-list/examples/sizes.tsx +24 -0
  1622. package/src/components/description-list/examples/structure.tsx +29 -0
  1623. package/src/components/description-list/examples/vertical.tsx +21 -0
  1624. package/src/components/digit-input/COMPONENT.md +14 -8
  1625. package/src/components/digit-input/examples/in-form.tsx +22 -4
  1626. package/src/components/digit-input/examples/on-complete.tsx +19 -7
  1627. package/src/components/digit-input/examples/validation.tsx +12 -5
  1628. package/src/components/divider/COMPONENT.md +1 -1
  1629. package/src/components/dnd/COMPONENT.md +93 -30
  1630. package/src/components/dnd/examples/board.tsx +16 -8
  1631. package/src/components/dnd/examples/drop-zones.tsx +2 -2
  1632. package/src/components/dnd/examples/examples.module.css +23 -0
  1633. package/src/components/dnd/examples/grid.tsx +48 -0
  1634. package/src/components/dnd/examples/handle.tsx +7 -2
  1635. package/src/components/dnd/examples/locked.tsx +57 -0
  1636. package/src/components/dnd/examples/narrow.tsx +1 -1
  1637. package/src/components/drawer/COMPONENT.md +67 -34
  1638. package/src/components/drawer/examples/controlled-open.tsx +8 -1
  1639. package/src/components/drawer/examples/examples.module.css +0 -5
  1640. package/src/components/drawer/examples/guard.tsx +80 -0
  1641. package/src/components/drawer/examples/header-actions.tsx +63 -0
  1642. package/src/components/drawer/examples/in-form.tsx +7 -2
  1643. package/src/components/drawer/examples/overview.tsx +9 -1
  1644. package/src/components/drawer/examples/placement.tsx +9 -4
  1645. package/src/components/drawer/examples/sizes.tsx +7 -0
  1646. package/src/components/dropdown/COMPONENT.md +35 -17
  1647. package/src/components/dropdown/examples/item-description.tsx +30 -0
  1648. package/src/components/dropdown/examples/link-items.tsx +29 -0
  1649. package/src/components/dropdown/examples/overview.tsx +1 -1
  1650. package/src/components/dropdown/examples/structure.tsx +1 -1
  1651. package/src/components/empty-page/COMPONENT.md +44 -16
  1652. package/src/components/empty-page/examples/examples.module.css +19 -2
  1653. package/src/components/empty-page/examples/region-error.tsx +86 -0
  1654. package/src/components/empty-page/examples/variants.tsx +43 -0
  1655. package/src/components/example-frame/COMPONENT.md +3 -2
  1656. package/src/components/fieldset/COMPONENT.md +107 -0
  1657. package/src/components/fieldset/examples/examples.module.css +14 -0
  1658. package/src/components/fieldset/examples/in-form.tsx +59 -0
  1659. package/src/components/fieldset/examples/overview.tsx +22 -0
  1660. package/src/components/fieldset/examples/states.tsx +35 -0
  1661. package/src/components/file-upload/COMPONENT.md +256 -64
  1662. package/src/components/file-upload/examples/attachment-tray.tsx +99 -0
  1663. package/src/components/file-upload/examples/controlled.tsx +77 -0
  1664. package/src/components/file-upload/examples/examples.module.css +38 -7
  1665. package/src/components/file-upload/examples/file-cards.tsx +64 -0
  1666. package/src/components/file-upload/examples/gallery.tsx +104 -0
  1667. package/src/components/file-upload/examples/in-form.tsx +49 -46
  1668. package/src/components/file-upload/examples/narrow.tsx +64 -8
  1669. package/src/components/file-upload/examples/overview.tsx +34 -37
  1670. package/src/components/file-upload/examples/row-parts.tsx +41 -0
  1671. package/src/components/file-upload/examples/saving.tsx +71 -0
  1672. package/src/components/file-upload/examples/sizes.tsx +13 -14
  1673. package/src/components/file-upload/examples/states.tsx +12 -3
  1674. package/src/components/file-upload/examples/validation.tsx +29 -6
  1675. package/src/components/file-upload/examples/variants.tsx +21 -2
  1676. package/src/components/gallery/COMPONENT.md +151 -0
  1677. package/src/components/gallery/examples/controlled-open.tsx +39 -0
  1678. package/src/components/gallery/examples/examples.module.css +14 -0
  1679. package/src/components/gallery/examples/overview.tsx +52 -0
  1680. package/src/components/gallery/examples/transfer.tsx +45 -0
  1681. package/src/components/gantt/COMPONENT.md +224 -0
  1682. package/src/components/gantt/examples/controlled.tsx +72 -0
  1683. package/src/components/gantt/examples/examples.module.css +30 -0
  1684. package/src/components/gantt/examples/large.tsx +96 -0
  1685. package/src/components/gantt/examples/narrow.tsx +54 -0
  1686. package/src/components/gantt/examples/occupancy.tsx +149 -0
  1687. package/src/components/gantt/examples/overview.tsx +82 -0
  1688. package/src/components/gantt/examples/sizes.tsx +48 -0
  1689. package/src/components/gantt/examples/states.tsx +68 -0
  1690. package/src/components/gantt/examples/variants.tsx +82 -0
  1691. package/src/components/hint/COMPONENT.md +3 -3
  1692. package/src/components/hint/examples/overview.tsx +10 -22
  1693. package/src/components/input/COMPONENT.md +72 -16
  1694. package/src/components/input/examples/edge-actions.tsx +30 -0
  1695. package/src/components/input/examples/in-form.tsx +42 -7
  1696. package/src/components/input/examples/inline-edit.tsx +52 -0
  1697. package/src/components/input/examples/password-strength.tsx +2 -1
  1698. package/src/components/input/examples/validation.tsx +38 -13
  1699. package/src/components/kanban/COMPONENT.md +94 -36
  1700. package/src/components/kanban/examples/cards.tsx +152 -0
  1701. package/src/components/kanban/examples/columns.tsx +182 -0
  1702. package/src/components/kanban/examples/examples.module.css +6 -0
  1703. package/src/components/kanban/examples/limits.tsx +5 -3
  1704. package/src/components/kanban/examples/saving.tsx +83 -0
  1705. package/src/components/kanban/examples/variants.tsx +57 -0
  1706. package/src/components/label/COMPONENT.md +4 -4
  1707. package/src/components/label/examples/overview.tsx +11 -8
  1708. package/src/components/link-button/COMPONENT.md +3 -1
  1709. package/src/components/login-form/COMPONENT.md +4 -3
  1710. package/src/components/login-form/examples/overview.tsx +2 -2
  1711. package/src/components/login-form/examples/register.tsx +2 -7
  1712. package/src/components/login-form/examples/states.tsx +18 -22
  1713. package/src/components/media-viewer/COMPONENT.md +207 -0
  1714. package/src/components/media-viewer/examples/actions.tsx +86 -0
  1715. package/src/components/media-viewer/examples/controlled-open.tsx +30 -0
  1716. package/src/components/media-viewer/examples/controlled.tsx +54 -0
  1717. package/src/components/media-viewer/examples/dismiss.tsx +34 -0
  1718. package/src/components/media-viewer/examples/examples.module.css +16 -0
  1719. package/src/components/media-viewer/examples/origin.tsx +60 -0
  1720. package/src/components/media-viewer/examples/overview.tsx +75 -0
  1721. package/src/components/media-viewer/examples/thumbnails.tsx +49 -0
  1722. package/src/components/media-viewer/examples/video.tsx +55 -0
  1723. package/src/components/message/COMPONENT.md +444 -0
  1724. package/src/components/message/examples/author.tsx +74 -0
  1725. package/src/components/message/examples/contact.tsx +24 -0
  1726. package/src/components/message/examples/context-menu.tsx +71 -0
  1727. package/src/components/message/examples/examples.module.css +18 -0
  1728. package/src/components/message/examples/file.tsx +79 -0
  1729. package/src/components/message/examples/kinds.tsx +93 -0
  1730. package/src/components/message/examples/link-preview.tsx +17 -0
  1731. package/src/components/message/examples/location.tsx +30 -0
  1732. package/src/components/message/examples/media.tsx +93 -0
  1733. package/src/components/message/examples/narrow.tsx +29 -0
  1734. package/src/components/message/examples/overview.tsx +52 -0
  1735. package/src/components/message/examples/reactions.tsx +73 -0
  1736. package/src/components/message/examples/status.tsx +45 -0
  1737. package/src/components/message/examples/structure.tsx +32 -0
  1738. package/src/components/message/examples/text-formatting.tsx +27 -0
  1739. package/src/components/message/examples/typing.tsx +22 -0
  1740. package/src/components/message/examples/voice.tsx +39 -0
  1741. package/src/components/modal/COMPONENT.md +52 -21
  1742. package/src/components/modal/examples/guard.tsx +87 -0
  1743. package/src/components/modal/examples/in-form.tsx +7 -2
  1744. package/src/components/modal/examples/sizes.tsx +2 -1
  1745. package/src/components/native-select/COMPONENT.md +4 -4
  1746. package/src/components/native-select/examples/examples.module.css +2 -0
  1747. package/src/components/native-select/examples/in-form.tsx +18 -3
  1748. package/src/components/native-select/examples/validation.tsx +8 -3
  1749. package/src/components/notification/COMPONENT.md +4 -1
  1750. package/src/components/notification/examples/examples.module.css +11 -1
  1751. package/src/components/notification/examples/undo.tsx +61 -0
  1752. package/src/components/page-content/COMPONENT.md +78 -11
  1753. package/src/components/page-content/examples/examples.module.css +54 -0
  1754. package/src/components/page-content/examples/list-detail.tsx +114 -0
  1755. package/src/components/page-content/examples/variants.tsx +1 -1
  1756. package/src/components/page-toolbar/COMPONENT.md +21 -22
  1757. package/src/components/page-toolbar/examples/narrow.tsx +4 -4
  1758. package/src/components/page-toolbar/examples/overview.tsx +4 -4
  1759. package/src/components/pagination/COMPONENT.md +1 -1
  1760. package/src/components/popover/COMPONENT.md +16 -8
  1761. package/src/components/popover/examples/examples.module.css +5 -0
  1762. package/src/components/popover/examples/from-menu.tsx +56 -0
  1763. package/src/components/popover/examples/in-form.tsx +27 -5
  1764. package/src/components/progress-bar/COMPONENT.md +57 -13
  1765. package/src/components/progress-bar/examples/legend.tsx +28 -0
  1766. package/src/components/progress-bar/examples/ranking.tsx +28 -0
  1767. package/src/components/progress-bar/examples/states.tsx +43 -0
  1768. package/src/components/progress-circle/COMPONENT.md +70 -27
  1769. package/src/components/progress-circle/examples/examples.module.css +5 -0
  1770. package/src/components/progress-circle/examples/legend.tsx +33 -0
  1771. package/src/components/progress-circle/examples/states.tsx +25 -0
  1772. package/src/components/progress-circle/examples/under-way.tsx +54 -0
  1773. package/src/components/radio/COMPONENT.md +4 -4
  1774. package/src/components/scroll-container/COMPONENT.md +85 -24
  1775. package/src/components/scroll-container/examples/auto-scroll.tsx +52 -0
  1776. package/src/components/scroll-container/examples/chat.tsx +101 -0
  1777. package/src/components/scroll-container/examples/edges.tsx +43 -0
  1778. package/src/components/scroll-container/examples/examples.module.css +73 -0
  1779. package/src/components/scroll-container/examples/lock.tsx +49 -0
  1780. package/src/components/scroll-container/examples/scrollbar.tsx +52 -0
  1781. package/src/components/scroll-container/examples/snap.tsx +36 -0
  1782. package/src/components/segmented-control/COMPONENT.md +32 -13
  1783. package/src/components/segmented-control/examples/examples.module.css +11 -0
  1784. package/src/components/segmented-control/examples/in-form.tsx +42 -0
  1785. package/src/components/select/COMPONENT.md +92 -24
  1786. package/src/components/select/examples/examples.module.css +1 -0
  1787. package/src/components/select/examples/in-form.tsx +25 -3
  1788. package/src/components/select/examples/load-error.tsx +45 -0
  1789. package/src/components/select/examples/people.tsx +53 -0
  1790. package/src/components/select/examples/server-search.tsx +93 -0
  1791. package/src/components/select/examples/validation.tsx +8 -3
  1792. package/src/components/sheet/COMPONENT.md +216 -0
  1793. package/src/components/sheet/examples/controlled-open.tsx +37 -0
  1794. package/src/components/sheet/examples/dismiss.tsx +42 -0
  1795. package/src/components/sheet/examples/examples.module.css +13 -0
  1796. package/src/components/sheet/examples/in-form.tsx +65 -0
  1797. package/src/components/sheet/examples/overview.tsx +50 -0
  1798. package/src/components/sheet/examples/structure.tsx +35 -0
  1799. package/src/components/skeleton/COMPONENT.md +1 -1
  1800. package/src/components/slider/COMPONENT.md +22 -5
  1801. package/src/components/slider/examples/autosave.tsx +39 -0
  1802. package/src/components/slider/examples/examples.module.css +6 -0
  1803. package/src/components/slider/examples/orientation.tsx +27 -0
  1804. package/src/components/smart-filter/COMPONENT.md +67 -16
  1805. package/src/components/smart-filter/examples/option-groups.tsx +40 -0
  1806. package/src/components/smart-filter/examples/ranges.tsx +89 -0
  1807. package/src/components/smart-filter/examples/single-value.tsx +41 -0
  1808. package/src/components/sparkline/COMPONENT.md +48 -19
  1809. package/src/components/sparkline/examples/signed-bars.tsx +41 -0
  1810. package/src/components/sparkline/examples/states.tsx +30 -0
  1811. package/src/components/sparkline/examples/variants.tsx +29 -0
  1812. package/src/components/spinner/COMPONENT.md +10 -8
  1813. package/src/components/stepper/COMPONENT.md +4 -0
  1814. package/src/components/switch/COMPONENT.md +12 -6
  1815. package/src/components/switch/examples/in-form.tsx +3 -1
  1816. package/src/components/switch/examples/saving.tsx +53 -0
  1817. package/src/components/switch/examples/states.tsx +6 -1
  1818. package/src/components/tabs/COMPONENT.md +46 -26
  1819. package/src/components/tabs/examples/examples.module.css +6 -0
  1820. package/src/components/tabs/examples/in-drawer.tsx +100 -0
  1821. package/src/components/tabs/examples/overview.tsx +1 -1
  1822. package/src/components/tag-select/COMPONENT.md +36 -23
  1823. package/src/components/tag-select/examples/confirm-delete.tsx +60 -0
  1824. package/src/components/tag-select/examples/creatable.tsx +23 -2
  1825. package/src/components/tag-select/examples/examples.module.css +1 -0
  1826. package/src/components/tag-select/examples/in-form.tsx +27 -3
  1827. package/src/components/tag-select/examples/manage-tags.tsx +10 -6
  1828. package/src/components/tag-select/examples/validation.tsx +7 -2
  1829. package/src/components/textarea/COMPONENT.md +60 -13
  1830. package/src/components/textarea/examples/auto-resize.tsx +8 -1
  1831. package/src/components/textarea/examples/edge-actions.tsx +24 -0
  1832. package/src/components/textarea/examples/in-form.tsx +20 -8
  1833. package/src/components/textarea/examples/inline-edit.tsx +42 -0
  1834. package/src/components/textarea/examples/validation.tsx +24 -8
  1835. package/src/components/thumbnail/COMPONENT.md +51 -10
  1836. package/src/components/thumbnail/examples/controlled.tsx +61 -0
  1837. package/src/components/thumbnail/examples/examples.module.css +31 -0
  1838. package/src/components/thumbnail/examples/full-width.tsx +2 -5
  1839. package/src/components/thumbnail/examples/overview.tsx +2 -6
  1840. package/src/components/thumbnail/examples/pressable.tsx +56 -0
  1841. package/src/components/thumbnail/examples/video.tsx +46 -0
  1842. package/src/components/timeline/COMPONENT.md +2 -1
  1843. package/src/components/tooltip/COMPONENT.md +13 -7
  1844. package/src/components/tooltip/examples/disabled-trigger.tsx +2 -7
  1845. package/src/components/tooltip/examples/examples.module.css +6 -9
  1846. package/src/components/tooltip/examples/non-interactive-trigger.tsx +31 -0
  1847. package/src/components/typography/COMPONENT.md +2 -0
  1848. package/src/components/video-note/COMPONENT.md +173 -0
  1849. package/src/components/video-note/examples/controlled.tsx +28 -0
  1850. package/src/components/video-note/examples/examples.module.css +4 -0
  1851. package/src/components/video-note/examples/in-message.tsx +22 -0
  1852. package/src/components/video-note/examples/overview.tsx +8 -0
  1853. package/src/components/video-note/examples/states.tsx +74 -0
  1854. package/src/components/video-note/examples/transcript.tsx +29 -0
  1855. package/src/components/video-note/examples/transfer.tsx +76 -0
  1856. package/src/components/visually-hidden/COMPONENT.md +81 -0
  1857. package/src/components/visually-hidden/examples/overview.tsx +22 -0
  1858. package/src/components/voice-player/COMPONENT.md +192 -0
  1859. package/src/components/voice-player/examples/call-recording.tsx +34 -0
  1860. package/src/components/voice-player/examples/controlled.tsx +38 -0
  1861. package/src/components/voice-player/examples/examples.module.css +23 -0
  1862. package/src/components/voice-player/examples/in-message.tsx +29 -0
  1863. package/src/components/voice-player/examples/overview.tsx +13 -0
  1864. package/src/components/voice-player/examples/states.tsx +81 -0
  1865. package/src/components/voice-player/examples/transcript.tsx +50 -0
  1866. package/src/components/voice-player/examples/transfer.tsx +88 -0
  1867. package/src/layout/app-header/COMPONENT.md +35 -10
  1868. package/src/layout/app-header/examples/page-title.tsx +85 -0
  1869. package/src/layout/app-shell/COMPONENT.md +11 -5
  1870. package/src/layout/app-shell/examples/examples.module.css +1 -1
  1871. package/src/layout/app-shell/examples/footer.tsx +1 -1
  1872. package/src/layout/bottom-nav/COMPONENT.md +50 -34
  1873. package/src/layout/bottom-nav/examples/examples.module.css +8 -1
  1874. package/src/layout/bottom-nav/examples/floating-action.tsx +91 -0
  1875. package/src/layout/bottom-nav/examples/floating.tsx +6 -6
  1876. package/src/layout/bottom-nav/examples/in-app-shell.tsx +1 -1
  1877. package/src/layout/sidebar/COMPONENT.md +18 -13
  1878. package/src/layout/sidebar/examples/account.tsx +1 -1
  1879. package/src/layout/sidebar/examples/overview.tsx +1 -1
  1880. package/src/styles/controls.css +138 -0
  1881. package/src/styles/globals.css +8 -0
  1882. package/src/styles/reset.css +34 -30
  1883. package/src/styles/theme-dark.css +31 -2
  1884. package/src/styles/theme-light.css +73 -6
  1885. package/src/styles/tokens.css +18 -0
  1886. package/dist/chunks/chunk-6JTZOA5I.js +0 -4040
  1887. package/dist/chunks/chunk-OAE4IQX2.js +0 -13550
  1888. package/dist/components/dnd/autoScroll.d.ts +0 -5
  1889. package/src/components/file-upload/examples/upload-progress.tsx +0 -39
  1890. package/src/components/scroll-container/examples/edge-fade.tsx +0 -53
@@ -1,4040 +0,0 @@
1
- // src/internal/ControlSizeContext.tsx
2
- import * as React from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var ControlSizeContext = React.createContext(null);
5
- ControlSizeContext.displayName = "ControlSizeContext";
6
- function ControlSizeProvider({ value, children }) {
7
- return /* @__PURE__ */ jsx(ControlSizeContext.Provider, { value, children });
8
- }
9
- ControlSizeProvider.displayName = "ControlSizeProvider";
10
- function useOptionalControlSize() {
11
- return React.useContext(ControlSizeContext) ?? void 0;
12
- }
13
- function useControlSize(sizeProp) {
14
- const host = React.useContext(ControlSizeContext);
15
- return sizeProp ?? host ?? "m";
16
- }
17
-
18
- // src/components/spinner/Spinner.tsx
19
- import * as React2 from "react";
20
-
21
- // src/internal/cx.ts
22
- function cx(...classNames) {
23
- return classNames.filter(Boolean).join(" ");
24
- }
25
-
26
- // src/internal/data-attributes.ts
27
- function toDataAttributes(input) {
28
- const result = {};
29
- for (const [key, value] of Object.entries(input)) {
30
- if (value === void 0) {
31
- continue;
32
- }
33
- const attributeName = `data-${key}`;
34
- result[attributeName] = typeof value === "boolean" ? String(value) : `${value}`;
35
- }
36
- return result;
37
- }
38
-
39
- // src/internal/iconBox.module.css
40
- var iconBox_default = {
41
- box: "iconBox_box",
42
- xs: "iconBox_xs",
43
- s: "iconBox_s",
44
- m: "iconBox_m",
45
- l: "iconBox_l",
46
- xl: "iconBox_xl",
47
- inherit: "iconBox_inherit"
48
- };
49
-
50
- // src/internal/iconBox.ts
51
- function iconBoxClass(size, tier) {
52
- return cx(iconBox_default.box, iconBox_default[size ?? tier ?? "m"], size === void 0 && iconBox_default.inherit);
53
- }
54
-
55
- // src/internal/textTone.module.css
56
- var textTone_default = {
57
- tone: "textTone_tone"
58
- };
59
-
60
- // src/internal/VisuallyHidden.module.css
61
- var VisuallyHidden_default = {
62
- root: "VisuallyHidden_root"
63
- };
64
-
65
- // src/internal/VisuallyHidden.tsx
66
- import { jsx as jsx2 } from "react/jsx-runtime";
67
- var visuallyHiddenClass = VisuallyHidden_default.root;
68
- function VisuallyHidden({ className, ...rest }) {
69
- return /* @__PURE__ */ jsx2("span", { className: cx(VisuallyHidden_default.root, className), ...rest });
70
- }
71
-
72
- // src/components/spinner/Spinner.module.css
73
- var Spinner_default = {
74
- root: "Spinner_root",
75
- ring: "Spinner_ring",
76
- primeSpinnerTurn: "Spinner_primeSpinnerTurn"
77
- };
78
-
79
- // src/components/spinner/Spinner.tsx
80
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
81
- var SPINNER_LABELS = {
82
- loading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430"
83
- };
84
- function Spinner({
85
- size: sizeProp,
86
- tone = "default",
87
- labels: labelsProp,
88
- className,
89
- ...rest
90
- }) {
91
- const controlSize = useOptionalControlSize();
92
- const labels = React2.useMemo(() => ({ ...SPINNER_LABELS, ...labelsProp }), [labelsProp]);
93
- const size = sizeProp ?? controlSize ?? "m";
94
- return /* @__PURE__ */ jsxs(
95
- "span",
96
- {
97
- role: "status",
98
- className: cx(Spinner_default.root, iconBoxClass(sizeProp, controlSize), textTone_default.tone, className),
99
- ...toDataAttributes({ size, tone: tone === "default" ? void 0 : tone }),
100
- ...rest,
101
- children: [
102
- /* @__PURE__ */ jsx3("span", { className: Spinner_default.ring, "aria-hidden": "true" }),
103
- /* @__PURE__ */ jsx3(VisuallyHidden, { children: labels.loading })
104
- ]
105
- }
106
- );
107
- }
108
-
109
- // src/components/button/Button.tsx
110
- import * as React8 from "react";
111
-
112
- // src/internal/fieldSurface.module.css
113
- var fieldSurface_default = {
114
- surface: "fieldSurface_surface"
115
- };
116
-
117
- // src/internal/fieldTier.module.css
118
- var fieldTier_default = {
119
- tier: "fieldTier_tier"
120
- };
121
-
122
- // src/internal/fieldTrigger.module.css
123
- var fieldTrigger_default = {
124
- trigger: "fieldTrigger_trigger"
125
- };
126
-
127
- // src/internal/fieldClasses.ts
128
- var fieldSurfaceClass = fieldSurface_default.surface;
129
- var fieldTierClass = fieldTier_default.tier;
130
- var fieldTriggerClass = `${fieldTier_default.tier} ${fieldSurface_default.surface} ${fieldTrigger_default.trigger}`;
131
-
132
- // src/internal/iconLayout.ts
133
- import * as React3 from "react";
134
- function iconLayout(children, iconType) {
135
- const content = React3.Children.toArray(children).filter(
136
- (child) => !(typeof child === "string" && child.trim() === "")
137
- );
138
- const isIcon = (child) => React3.isValidElement(child) && child.type === iconType;
139
- const iconOnly = content.length > 0 && content.every(isIcon);
140
- return {
141
- iconOnly,
142
- leadingIcon: !iconOnly && content.length > 0 && isIcon(content[0]),
143
- trailingIcon: !iconOnly && content.length > 0 && isIcon(content[content.length - 1])
144
- };
145
- }
146
-
147
- // src/internal/MorphText.tsx
148
- import * as React5 from "react";
149
-
150
- // src/hooks/usePresence.ts
151
- import * as React4 from "react";
152
- var DURATION_FALLBACK_MS = {
153
- fast: 230,
154
- base: 380,
155
- slow: 570
156
- };
157
- var TIMEOUT_SLACK_MS = 50;
158
- function prefersReducedMotion() {
159
- return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
160
- }
161
- function parseDurationMs(raw) {
162
- const value = raw.trim();
163
- if (value === "") return null;
164
- const n = Number.parseFloat(value);
165
- if (Number.isNaN(n)) return null;
166
- if (value.endsWith("ms")) return n;
167
- if (value.endsWith("s")) return n * 1e3;
168
- return null;
169
- }
170
- function motionDurationMs(token) {
171
- if (typeof document === "undefined") return DURATION_FALLBACK_MS[token];
172
- const raw = getComputedStyle(document.documentElement).getPropertyValue(
173
- `--prime-motion-duration-${token}`
174
- );
175
- return parseDurationMs(raw) ?? DURATION_FALLBACK_MS[token];
176
- }
177
- function exitTimeoutMs(token) {
178
- return motionDurationMs(token) + TIMEOUT_SLACK_MS;
179
- }
180
- function usePresence(open, options = {}) {
181
- const { exitDuration = "base" } = options;
182
- const [mounted, setMounted] = React4.useState(open);
183
- if (open && !mounted) setMounted(true);
184
- if (!open && mounted && prefersReducedMotion()) setMounted(false);
185
- const openRef = React4.useRef(open);
186
- openRef.current = open;
187
- React4.useEffect(() => {
188
- if (open || !mounted) return;
189
- const id = window.setTimeout(() => setMounted(false), exitTimeoutMs(exitDuration));
190
- return () => window.clearTimeout(id);
191
- }, [open, mounted, exitDuration]);
192
- const onExitEnd = React4.useCallback((event) => {
193
- if (event.target !== event.currentTarget) return;
194
- if (!openRef.current) setMounted(false);
195
- }, []);
196
- return { mounted: open || mounted, state: open ? "open" : "closed", onExitEnd };
197
- }
198
-
199
- // src/internal/MorphText.module.css
200
- var MorphText_default = {
201
- root: "MorphText_root",
202
- morphing: "MorphText_morphing",
203
- sizer: "MorphText_sizer",
204
- layer: "MorphText_layer",
205
- letter: "MorphText_letter",
206
- letterOut: "MorphText_letterOut",
207
- primeMorphOut: "MorphText_primeMorphOut",
208
- letterIn: "MorphText_letterIn",
209
- primeMorphIn: "MorphText_primeMorphIn"
210
- };
211
-
212
- // src/internal/MorphText.tsx
213
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
214
- function digitsOnly(a, b) {
215
- return a.replace(/\d/g, "") === b.replace(/\d/g, "");
216
- }
217
- function letters(text, kind) {
218
- return [...text].map((char, i) => /* @__PURE__ */ jsx4(
219
- "span",
220
- {
221
- className: cx(MorphText_default.letter, kind === "in" ? MorphText_default.letterIn : MorphText_default.letterOut),
222
- style: { "--morph-i": i },
223
- children: char
224
- },
225
- i
226
- ));
227
- }
228
- function settleMs(text, root) {
229
- const css = getComputedStyle(root);
230
- const read = (name) => Number.parseFloat(css.getPropertyValue(name)) || 0;
231
- const base = read("--prime-motion-duration-base");
232
- const step = read("--prime-motion-stagger") / 6;
233
- return base + step * text.length + 50;
234
- }
235
- function MorphText({ children: text, className }) {
236
- const rootRef = React5.useRef(null);
237
- const sizerRef = React5.useRef(null);
238
- const prevText = React5.useRef(null);
239
- const restWidth = React5.useRef(0);
240
- const nextId = React5.useRef(0);
241
- const [morph, setMorph] = React5.useState(null);
242
- const morphRef = React5.useRef(morph);
243
- morphRef.current = morph;
244
- React5.useLayoutEffect(() => {
245
- const root = rootRef.current;
246
- const prev = prevText.current;
247
- prevText.current = text;
248
- if (!root || prev === null || prev === text) return;
249
- if (prefersReducedMotion() || digitsOnly(prev, text)) {
250
- setMorph(null);
251
- return;
252
- }
253
- const running = morphRef.current;
254
- const width = running ? root.getBoundingClientRect().width : restWidth.current;
255
- nextId.current += 1;
256
- setMorph({ id: nextId.current, from: running ? running.to : prev, to: text, width });
257
- }, [text]);
258
- React5.useLayoutEffect(() => {
259
- if (!morph) return;
260
- const root = rootRef.current;
261
- const sizer = sizerRef.current;
262
- if (!root || !sizer) return;
263
- const target = sizer.getBoundingClientRect().width;
264
- if (target !== morph.width) {
265
- root.style.width = `${morph.width}px`;
266
- root.getBoundingClientRect();
267
- root.style.width = `${target}px`;
268
- }
269
- const timer = window.setTimeout(() => setMorph(null), settleMs(morph.to, root));
270
- return () => window.clearTimeout(timer);
271
- }, [morph]);
272
- React5.useLayoutEffect(() => {
273
- if (morph || !rootRef.current) return;
274
- rootRef.current.style.width = "";
275
- restWidth.current = rootRef.current.getBoundingClientRect().width;
276
- });
277
- if (!morph) {
278
- return /* @__PURE__ */ jsx4("span", { ref: rootRef, className: cx(MorphText_default.root, className), children: text });
279
- }
280
- return /* @__PURE__ */ jsxs2("span", { ref: rootRef, className: cx(MorphText_default.root, MorphText_default.morphing, className), children: [
281
- /* @__PURE__ */ jsx4("span", { ref: sizerRef, className: MorphText_default.sizer, "aria-hidden": "true", children: morph.to }),
282
- /* @__PURE__ */ jsx4("span", { className: MorphText_default.layer, "aria-hidden": "true", children: letters(morph.from, "out") }, `out-${morph.id}`),
283
- /* @__PURE__ */ jsx4("span", { className: MorphText_default.layer, "aria-hidden": "true", children: letters(morph.to, "in") }, `in-${morph.id}`),
284
- /* @__PURE__ */ jsx4(VisuallyHidden, { children: morph.to })
285
- ] });
286
- }
287
-
288
- // src/internal/slot.tsx
289
- import * as React7 from "react";
290
-
291
- // src/hooks/useMergedRefs.ts
292
- import * as React6 from "react";
293
-
294
- // src/internal/mergeRefs.ts
295
- function mergeRefs(...refs) {
296
- return (value) => {
297
- for (const ref of refs) {
298
- if (ref == null) continue;
299
- if (typeof ref === "function") {
300
- ref(value);
301
- } else {
302
- ref.current = value;
303
- }
304
- }
305
- };
306
- }
307
-
308
- // src/hooks/useMergedRefs.ts
309
- function useMergedRefs(...refs) {
310
- return React6.useMemo(() => mergeRefs(...refs), refs);
311
- }
312
-
313
- // src/internal/slot.tsx
314
- import { Fragment, jsx as jsx5 } from "react/jsx-runtime";
315
- var isPrevented = (event) => typeof event === "object" && event !== null && event.defaultPrevented === true;
316
- function mergeProps(slotProps, childProps) {
317
- const merged = { ...slotProps };
318
- for (const key of Object.keys(childProps)) {
319
- const slotValue = slotProps[key];
320
- const childValue = childProps[key];
321
- if (key === "ref") continue;
322
- if (key === "className") {
323
- if (typeof childValue === "function" && typeof slotValue === "string") {
324
- const slotClass = slotValue;
325
- merged[key] = (...args) => {
326
- const resolved = childValue(...args);
327
- return [slotClass, resolved].filter(Boolean).join(" ") || void 0;
328
- };
329
- } else {
330
- const parts = [slotValue, childValue].filter(Boolean);
331
- merged[key] = parts.length > 0 ? parts.join(" ") : void 0;
332
- }
333
- } else if (key === "style") {
334
- merged[key] = slotValue != null && childValue != null ? { ...slotValue, ...childValue } : childValue ?? slotValue;
335
- } else if (key === "aria-describedby" && slotValue && childValue) {
336
- merged[key] = `${childValue} ${slotValue}`;
337
- } else if (key.startsWith("on") && typeof slotValue === "function" && typeof childValue === "function") {
338
- merged[key] = (...args) => {
339
- childValue(...args);
340
- if (!isPrevented(args[0])) slotValue(...args);
341
- };
342
- } else if (childValue !== void 0) {
343
- merged[key] = childValue;
344
- }
345
- }
346
- return merged;
347
- }
348
- function blockDisabledClick(event) {
349
- event.preventDefault();
350
- event.stopPropagation();
351
- }
352
- function Slot({ children, ref, ...slotProps }) {
353
- const child = React7.isValidElement(children) ? children : null;
354
- const childRef = child?.props.ref ?? void 0;
355
- const composedRef = useMergedRefs(ref, childRef);
356
- if (!child) return /* @__PURE__ */ jsx5(Fragment, { children });
357
- const merged = mergeProps(slotProps, child.props);
358
- const disabled = slotProps["aria-disabled"] === true || slotProps["aria-disabled"] === "true";
359
- if (disabled) merged.onClickCapture = blockDisabledClick;
360
- return React7.cloneElement(child, { ...merged, ref: composedRef });
361
- }
362
- Slot.displayName = "Slot";
363
-
364
- // src/internal/touchTarget.module.css
365
- var touchTarget_default = {
366
- target: "touchTarget_target",
367
- targetBlock: "touchTarget_targetBlock"
368
- };
369
-
370
- // src/internal/touchTarget.ts
371
- var touchTargetClass = touchTarget_default.target;
372
- var touchTargetBlockClass = touchTarget_default.targetBlock;
373
-
374
- // src/components/button/Button.module.css
375
- var Button_default = {
376
- root: "Button_root",
377
- icon: "Button_icon",
378
- spinner: "Button_spinner",
379
- fillTrack: "Button_fillTrack",
380
- fill: "Button_fill"
381
- };
382
-
383
- // src/components/button/Button.tsx
384
- import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
385
- var BUTTON_LABELS = { holdHint: "\u0423\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C" };
386
- var HOLD_MS = 1200;
387
- function useHoldToConfirm(enabled, onConfirm) {
388
- const [phase, setPhase] = React8.useState("idle");
389
- const timer = React8.useRef(void 0);
390
- const confirm = React8.useRef(onConfirm);
391
- confirm.current = onConfirm;
392
- React8.useEffect(() => () => window.clearTimeout(timer.current), []);
393
- const start = () => {
394
- if (!enabled || phase === "holding" || phase === "done") return;
395
- setPhase("holding");
396
- timer.current = window.setTimeout(() => {
397
- setPhase("done");
398
- confirm.current?.();
399
- }, HOLD_MS);
400
- };
401
- const stop = () => {
402
- window.clearTimeout(timer.current);
403
- setPhase(
404
- (current) => current === "holding" ? "cancel" : current === "done" ? "idle" : current
405
- );
406
- };
407
- return { phase, start, stop };
408
- }
409
- function morphLabels(children) {
410
- const out = [];
411
- let run = null;
412
- const flush = () => {
413
- if (run !== null && run !== "") {
414
- out.push(/* @__PURE__ */ jsx6(MorphText, { children: run }, `label-${out.length}`));
415
- }
416
- run = null;
417
- };
418
- for (const child of React8.Children.toArray(children)) {
419
- if (typeof child === "string" || typeof child === "number") {
420
- run = (run ?? "") + String(child);
421
- } else {
422
- flush();
423
- out.push(child);
424
- }
425
- }
426
- flush();
427
- return out;
428
- }
429
- function ButtonRoot({
430
- children,
431
- className,
432
- variant = "solid",
433
- tone = "accent",
434
- size: sizeProp,
435
- fullWidth,
436
- type = "button",
437
- loading = false,
438
- progress,
439
- holdToConfirm = false,
440
- onConfirm,
441
- labels,
442
- disabled,
443
- asChild = false,
444
- onClick: onClick2,
445
- ref,
446
- ...rest
447
- }) {
448
- const size = useControlSize(sizeProp);
449
- const isDisabled = disabled || loading;
450
- const layout = iconLayout(children, ButtonIcon);
451
- const hold = useHoldToConfirm(holdToConfirm && !isDisabled, onConfirm);
452
- const hintId = React8.useId();
453
- const inProgress = progress !== void 0;
454
- const [fillUsed, setFillUsed] = React8.useState(false);
455
- if ((inProgress || holdToConfirm) && !fillUsed) setFillUsed(true);
456
- const dataAttrs = toDataAttributes({
457
- variant,
458
- tone,
459
- size,
460
- // `disabled` only: a loading button is busy, not unavailable, and keeps its colors.
461
- disabled: disabled || void 0,
462
- loading,
463
- "full-width": fullWidth,
464
- "icon-only": layout.iconOnly || void 0,
465
- "leading-icon": layout.leadingIcon || void 0,
466
- "trailing-icon": layout.trailingIcon || void 0,
467
- // Without a leading icon the spinner is centered over the hidden label: width stays put.
468
- "loading-overlay": loading && !asChild && !layout.leadingIcon && !layout.iconOnly || void 0,
469
- progress: inProgress || void 0,
470
- hold: holdToConfirm ? hold.phase : void 0
471
- });
472
- const classes = cx(fieldTierClass, touchTargetClass, Button_default.root, className);
473
- if (asChild) {
474
- return /* @__PURE__ */ jsx6(ControlSizeProvider, { value: size, children: /* @__PURE__ */ jsx6(
475
- Slot,
476
- {
477
- ...rest,
478
- ref,
479
- className: classes,
480
- "aria-disabled": isDisabled || void 0,
481
- "aria-busy": loading || void 0,
482
- onClick: isDisabled ? (event) => event.preventDefault() : onClick2,
483
- ...dataAttrs,
484
- children
485
- }
486
- ) });
487
- }
488
- const {
489
- onPointerDown: onPointerDown2,
490
- onPointerUp,
491
- onPointerLeave,
492
- onPointerCancel,
493
- onKeyDown: onKeyDown2,
494
- onKeyUp,
495
- onBlur
496
- } = rest;
497
- const holdHandlers = holdToConfirm ? {
498
- onPointerDown: (event) => {
499
- onPointerDown2?.(event);
500
- if (event.button === 0) hold.start();
501
- },
502
- onPointerUp: (event) => {
503
- onPointerUp?.(event);
504
- hold.stop();
505
- },
506
- onPointerLeave: (event) => {
507
- onPointerLeave?.(event);
508
- hold.stop();
509
- },
510
- onPointerCancel: (event) => {
511
- onPointerCancel?.(event);
512
- hold.stop();
513
- },
514
- onKeyDown: (event) => {
515
- onKeyDown2?.(event);
516
- if ((event.key === " " || event.key === "Enter") && !event.repeat) {
517
- event.preventDefault();
518
- hold.start();
519
- }
520
- },
521
- onKeyUp: (event) => {
522
- onKeyUp?.(event);
523
- if (event.key === " " || event.key === "Enter") hold.stop();
524
- },
525
- onBlur: (event) => {
526
- onBlur?.(event);
527
- hold.stop();
528
- },
529
- onContextMenu: (event) => {
530
- rest.onContextMenu?.(event);
531
- if (hold.phase === "holding" || hold.phase === "done") event.preventDefault();
532
- }
533
- } : null;
534
- const describedBy = holdToConfirm ? cx(rest["aria-describedby"], hintId) || void 0 : rest["aria-describedby"];
535
- const button = /* @__PURE__ */ jsxs3(
536
- "button",
537
- {
538
- ...rest,
539
- ...holdHandlers,
540
- ref,
541
- type,
542
- className: classes,
543
- disabled: isDisabled,
544
- "aria-busy": loading || inProgress || void 0,
545
- "aria-describedby": describedBy,
546
- onClick: onClick2,
547
- style: inProgress || holdToConfirm ? {
548
- ...rest.style,
549
- "--btn-progress": inProgress ? Math.min(1, Math.max(0, progress)) : void 0,
550
- "--btn-hold-duration": holdToConfirm ? `${HOLD_MS}ms` : void 0
551
- } : rest.style,
552
- ...dataAttrs,
553
- children: [
554
- fillUsed ? /* @__PURE__ */ jsx6("span", { className: Button_default.fillTrack, "aria-hidden": "true", children: /* @__PURE__ */ jsx6("span", { className: Button_default.fill }) }) : null,
555
- /* @__PURE__ */ jsxs3(ControlSizeProvider, { value: size, children: [
556
- loading ? /* @__PURE__ */ jsx6(Spinner, { className: Button_default.spinner, "aria-hidden": "true" }) : null,
557
- morphLabels(children)
558
- ] })
559
- ]
560
- }
561
- );
562
- if (!holdToConfirm) return button;
563
- return /* @__PURE__ */ jsxs3(Fragment2, { children: [
564
- button,
565
- /* @__PURE__ */ jsx6(VisuallyHidden, { id: hintId, children: { ...BUTTON_LABELS, ...labels }.holdHint })
566
- ] });
567
- }
568
- ButtonRoot.displayName = "Button.Root";
569
- function ButtonIcon({ children, className, ...rest }) {
570
- return /* @__PURE__ */ jsx6("span", { className: cx(Button_default.icon, className), "aria-hidden": "true", ...rest, children });
571
- }
572
- ButtonIcon.displayName = "Button.Icon";
573
- var Button = { Root: ButtonRoot, Icon: ButtonIcon };
574
-
575
- // src/components/divider/Divider.module.css
576
- var Divider_default = {
577
- root: "Divider_root",
578
- content: "Divider_content"
579
- };
580
-
581
- // src/components/divider/Divider.tsx
582
- import { jsx as jsx7 } from "react/jsx-runtime";
583
- function Divider({
584
- orientation = "horizontal",
585
- align = "center",
586
- size = "m",
587
- children,
588
- className,
589
- role = "separator",
590
- ...rest
591
- }) {
592
- return /* @__PURE__ */ jsx7(
593
- "div",
594
- {
595
- ...rest,
596
- className: cx(Divider_default.root, className),
597
- role,
598
- ...orientation === "vertical" ? { "aria-orientation": "vertical" } : {},
599
- ...toDataAttributes({ orientation, align, size }),
600
- children: children != null ? /* @__PURE__ */ jsx7(ControlSizeProvider, { value: size, children: /* @__PURE__ */ jsx7("span", { className: Divider_default.content, children }) }) : null
601
- }
602
- );
603
- }
604
-
605
- // src/icons/Icon.module.css
606
- var Icon_default = {
607
- root: "Icon_root"
608
- };
609
-
610
- // src/icons/registry.ts
611
- import {
612
- Activity,
613
- AlertTriangle,
614
- ArrowDown,
615
- ArrowUp,
616
- ArrowUpDown,
617
- Bell,
618
- Bold,
619
- BookOpen,
620
- Calendar,
621
- ChartColumn,
622
- Check,
623
- CheckCircle2,
624
- ChevronDown,
625
- ChevronLeft,
626
- ChevronRight,
627
- ChevronsLeft,
628
- ChevronsUpDown,
629
- ChevronUp,
630
- Circle,
631
- CloudOff,
632
- CloudUpload,
633
- Code2,
634
- Copy,
635
- Download,
636
- ExternalLink,
637
- Eye,
638
- EyeOff,
639
- FileText,
640
- GripVertical,
641
- HardDrive,
642
- House,
643
- Image,
644
- Inbox,
645
- Info,
646
- Italic,
647
- KeyRound,
648
- LayoutDashboard,
649
- LayoutGrid,
650
- Link2,
651
- List,
652
- ListFilter,
653
- ListTodo,
654
- Lock,
655
- LogIn,
656
- LogOut,
657
- Mail,
658
- MailCheck,
659
- Menu,
660
- MessageSquare,
661
- Minus,
662
- Monitor,
663
- Moon,
664
- MoreHorizontal,
665
- Package,
666
- PanelLeftClose,
667
- PanelLeftOpen,
668
- Pipette,
669
- Plus,
670
- Receipt,
671
- RefreshCw,
672
- Rocket,
673
- Search,
674
- Send,
675
- Settings,
676
- ShoppingCart,
677
- Smartphone,
678
- Sun,
679
- Tablet,
680
- Trash2,
681
- Truck,
682
- Underline,
683
- UserRound,
684
- Users,
685
- Wallet,
686
- X,
687
- XCircle
688
- } from "lucide-react";
689
- var iconRegistry = {
690
- "nav.chevronDown": ChevronDown,
691
- "nav.chevronLeft": ChevronLeft,
692
- "nav.chevronRight": ChevronRight,
693
- "nav.chevronUp": ChevronUp,
694
- "nav.chevronsLeft": ChevronsLeft,
695
- "nav.chevronsUpDown": ChevronsUpDown,
696
- "nav.dashboard": LayoutDashboard,
697
- "nav.home": House,
698
- "nav.itemDot": Circle,
699
- "nav.layoutGrid": LayoutGrid,
700
- "nav.menu": Menu,
701
- "nav.sidebarCollapse": PanelLeftClose,
702
- "nav.sidebarExpand": PanelLeftOpen,
703
- "action.add": Plus,
704
- "action.check": Check,
705
- "action.close": X,
706
- "action.copy": Copy,
707
- "action.delete": Trash2,
708
- "action.download": Download,
709
- "action.drag": GripVertical,
710
- "action.externalLink": ExternalLink,
711
- "action.eyedropper": Pipette,
712
- "action.filter": ListFilter,
713
- "action.login": LogIn,
714
- "action.logout": LogOut,
715
- "action.more": MoreHorizontal,
716
- "action.refresh": RefreshCw,
717
- "action.remove": Minus,
718
- "action.search": Search,
719
- "action.send": Send,
720
- "action.settings": Settings,
721
- "action.upload": CloudUpload,
722
- "field.calendar": Calendar,
723
- "field.email": Mail,
724
- "field.password.show": Eye,
725
- "field.password.hide": EyeOff,
726
- "format.bold": Bold,
727
- "format.italic": Italic,
728
- "format.link": Link2,
729
- "format.list": List,
730
- "format.underline": Underline,
731
- "object.activity": Activity,
732
- "object.bell": Bell,
733
- "object.book": BookOpen,
734
- "object.cart": ShoppingCart,
735
- "object.chart": ChartColumn,
736
- "object.document": FileText,
737
- "object.image": Image,
738
- "object.inbox": Inbox,
739
- "object.key": KeyRound,
740
- "object.message": MessageSquare,
741
- "object.package": Package,
742
- "object.receipt": Receipt,
743
- "object.rocket": Rocket,
744
- "object.storage": HardDrive,
745
- "object.tasks": ListTodo,
746
- "object.truck": Truck,
747
- "object.user": UserRound,
748
- "object.users": Users,
749
- "object.wallet": Wallet,
750
- "sort.ascending": ArrowUp,
751
- "sort.descending": ArrowDown,
752
- "sort.none": ArrowUpDown,
753
- "status.danger": XCircle,
754
- "status.emailSent": MailCheck,
755
- "status.info": Info,
756
- "status.locked": Lock,
757
- "status.offline": CloudOff,
758
- "status.success": CheckCircle2,
759
- /** A rising trend; a falling one is the same arrow turned half a turn (it rotates between them). */
760
- "status.trendUp": ArrowUp,
761
- "status.warning": AlertTriangle,
762
- "theme.dark": Moon,
763
- "theme.light": Sun,
764
- "view.code": Code2,
765
- "view.preview": Eye,
766
- "viewport.desktop": Monitor,
767
- "viewport.mobile": Smartphone,
768
- "viewport.tablet": Tablet
769
- };
770
-
771
- // src/icons/Icon.tsx
772
- import { jsx as jsx8 } from "react/jsx-runtime";
773
- function IconSvg({
774
- glyph: GlyphSvg,
775
- className,
776
- size,
777
- tone = "default",
778
- strokeWidth = 1.75,
779
- ...rest
780
- }) {
781
- const tier = useOptionalControlSize();
782
- return /* @__PURE__ */ jsx8(
783
- GlyphSvg,
784
- {
785
- className: cx(Icon_default.root, iconBoxClass(size, tier), textTone_default.tone, className),
786
- "data-tone": tone === "default" ? void 0 : tone,
787
- strokeWidth,
788
- "aria-hidden": "true",
789
- ...rest
790
- }
791
- );
792
- }
793
- function Icon({ name, ...rest }) {
794
- return /* @__PURE__ */ jsx8(IconSvg, { glyph: iconRegistry[name], ...rest });
795
- }
796
- function createIcon(glyph) {
797
- function DomainIcon(props) {
798
- return /* @__PURE__ */ jsx8(IconSvg, { glyph, ...props });
799
- }
800
- DomainIcon.displayName = `Icon(${glyph.displayName ?? "Glyph"})`;
801
- return DomainIcon;
802
- }
803
-
804
- // src/components/scroll-container/ScrollContainer.tsx
805
- import * as React10 from "react";
806
-
807
- // src/hooks/useEdgeOverflow.ts
808
- import * as React9 from "react";
809
- var NONE = { start: false, end: false };
810
- function useEdgeOverflow(ref, enabled, horizontal) {
811
- const [overflow, setOverflow] = React9.useState(NONE);
812
- React9.useLayoutEffect(() => {
813
- const node = ref.current;
814
- if (!enabled || !node) return;
815
- const update = () => {
816
- const position = horizontal ? Math.abs(node.scrollLeft) : node.scrollTop;
817
- const max = horizontal ? node.scrollWidth - node.clientWidth : node.scrollHeight - node.clientHeight;
818
- const start = position > 1;
819
- const end = max - position > 1;
820
- node.style.setProperty("--edge-start", `${Math.max(0, position)}px`);
821
- node.style.setProperty("--edge-end", `${Math.max(0, max - position)}px`);
822
- setOverflow((prev) => prev.start === start && prev.end === end ? prev : { start, end });
823
- };
824
- let frame = 0;
825
- const schedule = () => {
826
- if (frame) return;
827
- frame = requestAnimationFrame(() => {
828
- frame = 0;
829
- update();
830
- });
831
- };
832
- update();
833
- node.addEventListener("scroll", schedule, { passive: true });
834
- const resize = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(schedule);
835
- const observeChildren = () => {
836
- for (const child of Array.from(node.children)) resize?.observe(child);
837
- };
838
- resize?.observe(node);
839
- observeChildren();
840
- const mutation = new MutationObserver(() => {
841
- observeChildren();
842
- schedule();
843
- });
844
- mutation.observe(node, { childList: true });
845
- return () => {
846
- cancelAnimationFrame(frame);
847
- node.removeEventListener("scroll", schedule);
848
- resize?.disconnect();
849
- mutation.disconnect();
850
- };
851
- }, [ref, enabled, horizontal]);
852
- return enabled ? overflow : NONE;
853
- }
854
-
855
- // src/components/scroll-container/ScrollContainer.module.css
856
- var ScrollContainer_default = {
857
- root: "ScrollContainer_root",
858
- vertical: "ScrollContainer_vertical",
859
- horizontal: "ScrollContainer_horizontal",
860
- both: "ScrollContainer_both",
861
- overscrollContain: "ScrollContainer_overscrollContain",
862
- overscrollNone: "ScrollContainer_overscrollNone",
863
- scrollbarHidden: "ScrollContainer_scrollbarHidden"
864
- };
865
-
866
- // src/components/scroll-container/ScrollContainer.tsx
867
- import { jsx as jsx9 } from "react/jsx-runtime";
868
- var axisClass = {
869
- vertical: ScrollContainer_default.vertical,
870
- horizontal: ScrollContainer_default.horizontal,
871
- both: ScrollContainer_default.both
872
- };
873
- function ScrollContainer({
874
- as: Component = "div",
875
- axis = "vertical",
876
- overscrollBehavior = "contain",
877
- fade = false,
878
- scrollbar = "thin",
879
- className,
880
- ref,
881
- ...rest
882
- }) {
883
- const innerRef = React10.useRef(null);
884
- const mergedRef = useMergedRefs(innerRef, ref);
885
- const horizontal = axis === "horizontal";
886
- const overflow = useEdgeOverflow(innerRef, fade, horizontal);
887
- return /* @__PURE__ */ jsx9(
888
- Component,
889
- {
890
- ref: mergedRef,
891
- className: cx(
892
- ScrollContainer_default.root,
893
- axisClass[axis],
894
- overscrollBehavior === "contain" && ScrollContainer_default.overscrollContain,
895
- overscrollBehavior === "none" && ScrollContainer_default.overscrollNone,
896
- scrollbar === "hidden" && ScrollContainer_default.scrollbarHidden,
897
- className
898
- ),
899
- ...toDataAttributes({
900
- fade: fade ? horizontal ? "horizontal" : "vertical" : void 0,
901
- "overflow-start": overflow.start || void 0,
902
- "overflow-end": overflow.end || void 0
903
- }),
904
- ...rest
905
- }
906
- );
907
- }
908
-
909
- // src/internal/states.ts
910
- var controlSizes = ["xs", "s", "m", "l", "xl"];
911
- function stepDown(size, n = 1) {
912
- return controlSizes[Math.max(0, controlSizes.indexOf(size) - n)] ?? "xs";
913
- }
914
- var variants = ["solid", "soft", "outline", "ghost"];
915
- var tones = ["neutral", "accent", "success", "warning", "danger", "info"];
916
- var paletteColors = [
917
- "gray",
918
- "blue",
919
- "green",
920
- "orange",
921
- "red",
922
- "yellow",
923
- "purple",
924
- "sky",
925
- "pink",
926
- "teal"
927
- ];
928
- var dataStates = [
929
- "open",
930
- "closed",
931
- "checked",
932
- "unchecked",
933
- "indeterminate",
934
- "active",
935
- "inactive"
936
- ];
937
- var textTones = [
938
- "default",
939
- "secondary",
940
- "muted",
941
- "accent",
942
- "success",
943
- "warning",
944
- "danger"
945
- ];
946
-
947
- // src/internal/enterMotion.module.css
948
- var enterMotion_default = {
949
- enter: "enterMotion_enter",
950
- primeEnter: "enterMotion_primeEnter",
951
- enterBase: "enterMotion_enterBase",
952
- enterBaseChildren: "enterMotion_enterBaseChildren"
953
- };
954
-
955
- // src/components/hint/Hint.module.css
956
- var Hint_default = {
957
- root: "Hint_root",
958
- icon: "Hint_icon"
959
- };
960
-
961
- // src/components/hint/Hint.tsx
962
- import { jsx as jsx10 } from "react/jsx-runtime";
963
- function HintRoot({ className, size = "m", invalid, disabled, children, ...rest }) {
964
- return /* @__PURE__ */ jsx10(ControlSizeProvider, { value: size, children: /* @__PURE__ */ jsx10(
965
- "p",
966
- {
967
- ...rest,
968
- className: cx(Hint_default.root, invalid && enterMotion_default.enter, className),
969
- ...toDataAttributes({
970
- size,
971
- invalid: invalid || void 0,
972
- disabled: disabled || void 0
973
- }),
974
- children
975
- }
976
- ) });
977
- }
978
- HintRoot.displayName = "Hint.Root";
979
- function HintIcon({ className, ...rest }) {
980
- return /* @__PURE__ */ jsx10("span", { "aria-hidden": "true", className: cx(Hint_default.icon, className), ...rest });
981
- }
982
- HintIcon.displayName = "Hint.Icon";
983
- var Hint = { Root: HintRoot, Icon: HintIcon };
984
-
985
- // src/components/label/Label.module.css
986
- var Label_default = {
987
- root: "Label_root",
988
- icon: "Label_icon",
989
- asterisk: "Label_asterisk",
990
- description: "Label_description",
991
- optional: "Label_optional"
992
- };
993
-
994
- // src/components/label/Label.tsx
995
- import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
996
- var LABEL_LABELS = { optional: "\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E" };
997
- function LabelRoot({
998
- className,
999
- disabled,
1000
- children,
1001
- size: sizeProp,
1002
- required,
1003
- optional,
1004
- labels,
1005
- ref,
1006
- ...rest
1007
- }) {
1008
- const size = useControlSize(sizeProp);
1009
- return (
1010
- // biome-ignore lint/a11y/noLabelWithoutControl: field label primitive; association via htmlFor or wrapping control is caller responsibility
1011
- /* @__PURE__ */ jsx11(
1012
- "label",
1013
- {
1014
- ref,
1015
- className: cx(Label_default.root, className),
1016
- "aria-disabled": disabled || void 0,
1017
- ...rest,
1018
- ...toDataAttributes({ disabled: disabled || void 0, size }),
1019
- children: /* @__PURE__ */ jsxs4(ControlSizeProvider, { value: size, children: [
1020
- children,
1021
- required ? /* @__PURE__ */ jsx11("span", { className: Label_default.asterisk, "aria-hidden": "true", children: "*" }) : null,
1022
- optional ? /* @__PURE__ */ jsx11("span", { className: Label_default.optional, children: labels?.optional ?? LABEL_LABELS.optional }) : null
1023
- ] })
1024
- }
1025
- )
1026
- );
1027
- }
1028
- LabelRoot.displayName = "Label.Root";
1029
- function LabelIcon({ className, ...rest }) {
1030
- return /* @__PURE__ */ jsx11("span", { className: cx(Label_default.icon, className), "aria-hidden": "true", ...rest });
1031
- }
1032
- LabelIcon.displayName = "Label.Icon";
1033
- function LabelDescription({ className, ...rest }) {
1034
- return /* @__PURE__ */ jsx11("span", { className: cx(Label_default.description, className), ...rest });
1035
- }
1036
- LabelDescription.displayName = "Label.Description";
1037
- var Label = {
1038
- Root: LabelRoot,
1039
- Icon: LabelIcon,
1040
- Description: LabelDescription
1041
- };
1042
-
1043
- // src/components/checkbox/Checkbox.tsx
1044
- import * as React13 from "react";
1045
-
1046
- // src/hooks/useControllableState.ts
1047
- import * as React11 from "react";
1048
- function useControllableState({
1049
- value,
1050
- defaultValue,
1051
- onChange
1052
- }) {
1053
- const [internalValue, setInternalValue] = React11.useState(defaultValue);
1054
- const isControlled = value !== void 0;
1055
- const currentValue = isControlled ? value : internalValue;
1056
- const currentValueRef = React11.useRef(currentValue);
1057
- currentValueRef.current = currentValue;
1058
- const setValue = React11.useCallback(
1059
- (nextValue) => {
1060
- const previousValue = currentValueRef.current;
1061
- const computedValue = typeof nextValue === "function" ? nextValue(previousValue) : nextValue;
1062
- if (Object.is(previousValue, computedValue)) {
1063
- return;
1064
- }
1065
- currentValueRef.current = computedValue;
1066
- if (!isControlled) {
1067
- setInternalValue(computedValue);
1068
- }
1069
- onChange?.(computedValue);
1070
- },
1071
- [isControlled, onChange]
1072
- );
1073
- return [currentValue, setValue];
1074
- }
1075
-
1076
- // src/internal/CheckMark.module.css
1077
- var CheckMark_default = {
1078
- svg: "CheckMark_svg",
1079
- check: "CheckMark_check",
1080
- bar: "CheckMark_bar"
1081
- };
1082
-
1083
- // src/internal/CheckMark.tsx
1084
- import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
1085
- function CheckMark({ state, className }) {
1086
- return /* @__PURE__ */ jsxs5(
1087
- "svg",
1088
- {
1089
- viewBox: "0 0 24 24",
1090
- className: cx(CheckMark_default.svg, className),
1091
- "data-state": state,
1092
- "aria-hidden": "true",
1093
- focusable: "false",
1094
- children: [
1095
- /* @__PURE__ */ jsx12("path", { d: "M5.5 12.5l4.25 4.25L18.5 8", pathLength: 1, className: CheckMark_default.check }),
1096
- /* @__PURE__ */ jsx12("path", { d: "M7 12h10", pathLength: 1, className: CheckMark_default.bar })
1097
- ]
1098
- }
1099
- );
1100
- }
1101
-
1102
- // src/internal/ChoiceField.module.css
1103
- var ChoiceField_default = {
1104
- tier: "ChoiceField_tier",
1105
- field: "ChoiceField_field",
1106
- row: "ChoiceField_row",
1107
- controlCell: "ChoiceField_controlCell",
1108
- input: "ChoiceField_input",
1109
- text: "ChoiceField_text",
1110
- support: "ChoiceField_support",
1111
- visual: "ChoiceField_visual"
1112
- };
1113
-
1114
- // src/internal/ChoiceField.tsx
1115
- import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
1116
- var choiceInputClass = ChoiceField_default.input;
1117
- var choiceVisualClass = ChoiceField_default.visual;
1118
- var choiceTierClass = ChoiceField_default.tier;
1119
- function ChoiceField({
1120
- ids,
1121
- size,
1122
- state,
1123
- disabled,
1124
- readOnly = false,
1125
- hint,
1126
- error,
1127
- control,
1128
- className,
1129
- children
1130
- }) {
1131
- return /* @__PURE__ */ jsx13(ControlSizeProvider, { value: size, children: /* @__PURE__ */ jsxs6(
1132
- "div",
1133
- {
1134
- className: cx(ChoiceField_default.tier, ChoiceField_default.field, className),
1135
- ...toDataAttributes({
1136
- size,
1137
- state,
1138
- invalid: ids.invalid || void 0,
1139
- disabled: disabled || void 0,
1140
- readonly: readOnly || void 0
1141
- }),
1142
- children: [
1143
- /* @__PURE__ */ jsxs6("label", { htmlFor: ids.controlId, className: ChoiceField_default.row, children: [
1144
- /* @__PURE__ */ jsx13("span", { className: cx(ChoiceField_default.controlCell, touchTargetClass), children: control }),
1145
- children
1146
- ] }),
1147
- ids.showError ? /* @__PURE__ */ jsx13(Hint.Root, { id: ids.errorId, size, invalid: true, className: ChoiceField_default.support, children: error }) : ids.showHint ? /* @__PURE__ */ jsx13(Hint.Root, { id: ids.hintId, size, disabled, className: ChoiceField_default.support, children: hint }) : null
1148
- ]
1149
- }
1150
- ) });
1151
- }
1152
- function ChoiceLabel({ className, ...rest }) {
1153
- return /* @__PURE__ */ jsx13("span", { className: cx(ChoiceField_default.text, className), ...rest });
1154
- }
1155
-
1156
- // src/internal/FieldFrame.tsx
1157
- import * as React12 from "react";
1158
-
1159
- // src/internal/formatLabel.ts
1160
- function formatLabel(template, values) {
1161
- return template.replace(
1162
- /\{(\w+)\}/g,
1163
- (_, name) => Object.hasOwn(values, name) ? String(values[name] ?? "") : ""
1164
- ).trim();
1165
- }
1166
-
1167
- // src/internal/RollingNumber.module.css
1168
- var RollingNumber_default = {
1169
- root: "RollingNumber_root",
1170
- digit: "RollingNumber_digit",
1171
- char: "RollingNumber_char"
1172
- };
1173
-
1174
- // src/internal/RollingNumber.tsx
1175
- import { jsx as jsx14 } from "react/jsx-runtime";
1176
- function RollingNumber({ children, className }) {
1177
- const chars = [...String(children)];
1178
- return /* @__PURE__ */ jsx14("span", { className: cx(RollingNumber_default.root, className), children: chars.map((char, i) => {
1179
- const key = chars.length - i;
1180
- return /\d/.test(char) ? /* @__PURE__ */ jsx14(
1181
- "span",
1182
- {
1183
- className: RollingNumber_default.digit,
1184
- style: { "--rolling-n": char },
1185
- children: char
1186
- },
1187
- `d${key}`
1188
- ) : /* @__PURE__ */ jsx14("span", { className: RollingNumber_default.char, children: char }, `c${key}`);
1189
- }) });
1190
- }
1191
-
1192
- // src/internal/FieldFrame.module.css
1193
- var FieldFrame_default = {
1194
- root: "FieldFrame_root",
1195
- label: "FieldFrame_label",
1196
- labelRow: "FieldFrame_labelRow",
1197
- labelEnd: "FieldFrame_labelEnd",
1198
- body: "FieldFrame_body",
1199
- supportText: "FieldFrame_supportText",
1200
- support: "FieldFrame_support",
1201
- counter: "FieldFrame_counter"
1202
- };
1203
-
1204
- // src/internal/FieldFrame.tsx
1205
- import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
1206
- function hasContent(node) {
1207
- return node != null && node !== false && node !== "";
1208
- }
1209
- function useFieldFrame(explicitId, {
1210
- label,
1211
- hint,
1212
- error,
1213
- invalid
1214
- }, ariaDescribedBy) {
1215
- const generated = React12.useId();
1216
- const controlId = explicitId ?? generated;
1217
- const labelId = `${controlId}-label`;
1218
- const hintId = `${controlId}-hint`;
1219
- const errorId = `${controlId}-error`;
1220
- const showError = hasContent(error);
1221
- const showHint = !showError && hasContent(hint);
1222
- const describedBy = [ariaDescribedBy, showHint ? hintId : void 0, showError ? errorId : void 0].filter(Boolean).join(" ") || void 0;
1223
- return {
1224
- controlId,
1225
- labelId,
1226
- hintId,
1227
- errorId,
1228
- describedBy,
1229
- labelledBy: hasContent(label) ? labelId : void 0,
1230
- showHint,
1231
- showError,
1232
- invalid: Boolean(invalid) || showError
1233
- };
1234
- }
1235
- function FieldFrame({
1236
- size,
1237
- ids,
1238
- label,
1239
- required,
1240
- optional,
1241
- hint,
1242
- error,
1243
- disabled,
1244
- optionalLabel,
1245
- group = false,
1246
- labelEnd,
1247
- counter,
1248
- reserveSupportRow = false,
1249
- className,
1250
- children,
1251
- ...rest
1252
- }) {
1253
- const { showError, showHint } = ids;
1254
- const showSupport = showError || showHint || counter != null || reserveSupportRow;
1255
- const labelNode = hasContent(label) ? /* @__PURE__ */ jsx15(
1256
- Label.Root,
1257
- {
1258
- id: ids.labelId,
1259
- htmlFor: group ? void 0 : ids.controlId,
1260
- size,
1261
- required,
1262
- optional,
1263
- disabled,
1264
- labels: { optional: optionalLabel },
1265
- className: FieldFrame_default.label,
1266
- children: label
1267
- }
1268
- ) : null;
1269
- return /* @__PURE__ */ jsxs7(
1270
- "div",
1271
- {
1272
- ...rest,
1273
- className: cx(FieldFrame_default.root, className),
1274
- ...toDataAttributes({
1275
- size,
1276
- invalid: ids.invalid || void 0,
1277
- disabled: disabled || void 0
1278
- }),
1279
- children: [
1280
- labelEnd != null ? /* @__PURE__ */ jsxs7("div", { className: FieldFrame_default.labelRow, children: [
1281
- labelNode,
1282
- /* @__PURE__ */ jsx15("span", { className: FieldFrame_default.labelEnd, children: labelEnd })
1283
- ] }) : labelNode,
1284
- /* @__PURE__ */ jsxs7("div", { className: FieldFrame_default.body, children: [
1285
- children,
1286
- showSupport ? /* @__PURE__ */ jsxs7(
1287
- "div",
1288
- {
1289
- className: FieldFrame_default.support,
1290
- ...toDataAttributes({ size, reserve: reserveSupportRow || void 0 }),
1291
- children: [
1292
- showError ? /* @__PURE__ */ jsx15(Hint.Root, { id: ids.errorId, size, invalid: true, className: FieldFrame_default.supportText, children: error }) : showHint ? /* @__PURE__ */ jsx15(
1293
- Hint.Root,
1294
- {
1295
- id: ids.hintId,
1296
- size,
1297
- disabled,
1298
- className: FieldFrame_default.supportText,
1299
- children: hint
1300
- }
1301
- ) : /* @__PURE__ */ jsx15("span", { className: FieldFrame_default.supportText }),
1302
- counter
1303
- ]
1304
- }
1305
- ) : null
1306
- ] })
1307
- ]
1308
- }
1309
- );
1310
- }
1311
- function FieldCounter({ current, max, size, label, className, ...rest }) {
1312
- return /* @__PURE__ */ jsxs7(
1313
- "span",
1314
- {
1315
- ...rest,
1316
- className: cx(FieldFrame_default.counter, className),
1317
- "data-size": size,
1318
- "data-invalid": current > max || void 0,
1319
- "aria-live": "polite",
1320
- children: [
1321
- /* @__PURE__ */ jsxs7("span", { "aria-hidden": "true", children: [
1322
- /* @__PURE__ */ jsx15(RollingNumber, { children: current }),
1323
- "/",
1324
- max
1325
- ] }),
1326
- /* @__PURE__ */ jsx15(VisuallyHidden, { children: formatLabel(label, { current, max }) })
1327
- ]
1328
- }
1329
- );
1330
- }
1331
-
1332
- // src/components/checkbox/Checkbox.module.css
1333
- var Checkbox_default = {
1334
- root: "Checkbox_root",
1335
- indicator: "Checkbox_indicator",
1336
- control: "Checkbox_control"
1337
- };
1338
-
1339
- // src/components/checkbox/Checkbox.tsx
1340
- import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
1341
- function CheckboxRoot({
1342
- id,
1343
- checked: checkedProp,
1344
- defaultChecked = false,
1345
- onCheckedChange,
1346
- indeterminate = false,
1347
- invalid,
1348
- hint,
1349
- error,
1350
- size: sizeProp,
1351
- disabled = false,
1352
- readOnly = false,
1353
- className,
1354
- "aria-describedby": ariaDescribedBy,
1355
- children,
1356
- ref,
1357
- ...inputRest
1358
- }) {
1359
- const size = useControlSize(sizeProp);
1360
- const ids = useFieldFrame(id, { hint, error, invalid }, ariaDescribedBy);
1361
- const [checked, setChecked] = useControllableState({
1362
- value: checkedProp,
1363
- defaultValue: defaultChecked,
1364
- onChange: onCheckedChange
1365
- });
1366
- const internalRef = React13.useRef(null);
1367
- const mergedRef = useMergedRefs(internalRef, ref);
1368
- React13.useEffect(() => {
1369
- if (internalRef.current) internalRef.current.indeterminate = indeterminate;
1370
- }, [indeterminate]);
1371
- return /* @__PURE__ */ jsx16(
1372
- ChoiceField,
1373
- {
1374
- ids,
1375
- size,
1376
- state: indeterminate ? "indeterminate" : checked ? "checked" : "unchecked",
1377
- disabled,
1378
- readOnly,
1379
- hint,
1380
- error,
1381
- className: cx(Checkbox_default.root, className),
1382
- control: /* @__PURE__ */ jsxs8(Fragment3, { children: [
1383
- /* @__PURE__ */ jsx16(
1384
- "input",
1385
- {
1386
- ...inputRest,
1387
- ref: mergedRef,
1388
- id: ids.controlId,
1389
- type: "checkbox",
1390
- className: choiceInputClass,
1391
- disabled,
1392
- checked,
1393
- onChange: (event) => {
1394
- if (!readOnly) setChecked(event.target.checked);
1395
- },
1396
- "aria-invalid": ids.invalid || void 0,
1397
- "aria-readonly": readOnly || void 0,
1398
- "aria-describedby": ids.describedBy
1399
- }
1400
- ),
1401
- /* @__PURE__ */ jsx16("span", { className: cx(choiceVisualClass, Checkbox_default.control), "aria-hidden": "true", children: /* @__PURE__ */ jsx16(
1402
- CheckMark,
1403
- {
1404
- state: indeterminate ? "indeterminate" : checked ? "checked" : "unchecked"
1405
- }
1406
- ) })
1407
- ] }),
1408
- children
1409
- }
1410
- );
1411
- }
1412
- CheckboxRoot.displayName = "Checkbox.Root";
1413
- function CheckboxLabel(props) {
1414
- return /* @__PURE__ */ jsx16(ChoiceLabel, { ...props });
1415
- }
1416
- CheckboxLabel.displayName = "Checkbox.Label";
1417
- function CheckboxIndicator({
1418
- checked = false,
1419
- indeterminate = false,
1420
- disabled = false,
1421
- size: sizeProp,
1422
- className,
1423
- ...rest
1424
- }) {
1425
- const size = useControlSize(sizeProp);
1426
- return /* @__PURE__ */ jsx16(
1427
- "span",
1428
- {
1429
- "aria-hidden": "true",
1430
- className: cx(
1431
- choiceTierClass,
1432
- choiceVisualClass,
1433
- Checkbox_default.control,
1434
- Checkbox_default.indicator,
1435
- className
1436
- ),
1437
- ...toDataAttributes({
1438
- size,
1439
- state: indeterminate ? "indeterminate" : checked ? "checked" : "unchecked",
1440
- disabled: disabled || void 0
1441
- }),
1442
- ...rest,
1443
- children: /* @__PURE__ */ jsx16(CheckMark, { state: indeterminate ? "indeterminate" : checked ? "checked" : "unchecked" })
1444
- }
1445
- );
1446
- }
1447
- CheckboxIndicator.displayName = "Checkbox.Indicator";
1448
- var Checkbox = {
1449
- Root: CheckboxRoot,
1450
- Label: CheckboxLabel,
1451
- Indicator: CheckboxIndicator
1452
- };
1453
-
1454
- // src/internal/swatch.tsx
1455
- import * as React14 from "react";
1456
-
1457
- // src/internal/swatch.module.css
1458
- var swatch_default = {
1459
- fill: "swatch_fill",
1460
- checker: "swatch_checker",
1461
- tier: "swatch_tier",
1462
- chip: "swatch_chip",
1463
- swatch: "swatch_swatch",
1464
- check: "swatch_check"
1465
- };
1466
-
1467
- // src/internal/swatch.tsx
1468
- import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
1469
- var COLOR_PRESETS = [
1470
- { value: "#ef4444", label: "\u041A\u0440\u0430\u0441\u043D\u044B\u0439" },
1471
- { value: "#f97316", label: "\u041E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439" },
1472
- { value: "#eab308", label: "\u0416\u0451\u043B\u0442\u044B\u0439" },
1473
- { value: "#22c55e", label: "\u0417\u0435\u043B\u0451\u043D\u044B\u0439" },
1474
- { value: "#14b8a6", label: "\u0411\u0438\u0440\u044E\u0437\u043E\u0432\u044B\u0439" },
1475
- { value: "#5068f5", label: "\u0421\u0438\u043D\u0438\u0439" },
1476
- { value: "#a855f7", label: "\u0424\u0438\u043E\u043B\u0435\u0442\u043E\u0432\u044B\u0439" },
1477
- { value: "#ec4899", label: "\u0420\u043E\u0437\u043E\u0432\u044B\u0439" },
1478
- { value: "#b91c1c", label: "\u0422\u0451\u043C\u043D\u043E-\u043A\u0440\u0430\u0441\u043D\u044B\u0439" },
1479
- { value: "#c2410c", label: "\u0422\u0451\u043C\u043D\u043E-\u043E\u0440\u0430\u043D\u0436\u0435\u0432\u044B\u0439" },
1480
- { value: "#a16207", label: "\u0413\u043E\u0440\u0447\u0438\u0447\u043D\u044B\u0439" },
1481
- { value: "#15803d", label: "\u0422\u0451\u043C\u043D\u043E-\u0437\u0435\u043B\u0451\u043D\u044B\u0439" },
1482
- { value: "#0f766e", label: "\u0422\u0451\u043C\u043D\u043E-\u0431\u0438\u0440\u044E\u0437\u043E\u0432\u044B\u0439" },
1483
- { value: "#2f4ae0", label: "\u0422\u0451\u043C\u043D\u043E-\u0441\u0438\u043D\u0438\u0439" },
1484
- { value: "#7e22ce", label: "\u0422\u0451\u043C\u043D\u043E-\u0444\u0438\u043E\u043B\u0435\u0442\u043E\u0432\u044B\u0439" },
1485
- { value: "#be185d", label: "\u0422\u0451\u043C\u043D\u043E-\u0440\u043E\u0437\u043E\u0432\u044B\u0439" }
1486
- ];
1487
- function useSwatchOptions(presets, allowEmpty, emptyLabel) {
1488
- return React14.useMemo(
1489
- () => [
1490
- ...presets.map((preset) => ({ ...preset, contrast: markContrast(preset.value) })),
1491
- ...allowEmpty ? [{ value: null, label: emptyLabel, contrast: "dark" }] : []
1492
- ],
1493
- [presets, allowEmpty, emptyLabel]
1494
- );
1495
- }
1496
- var swatchClass = swatch_default.swatch;
1497
- var swatchTierClass = swatch_default.tier;
1498
- function SwatchFill({ value }) {
1499
- if (value == null) return /* @__PURE__ */ jsx17("span", { "aria-hidden": true, className: swatch_default.checker });
1500
- return /* @__PURE__ */ jsx17("svg", { className: swatch_default.fill, "aria-hidden": "true", viewBox: "0 0 1 1", preserveAspectRatio: "none", children: /* @__PURE__ */ jsx17("rect", { width: "1", height: "1", fill: value }) });
1501
- }
1502
- function SwatchContent({ value, selected }) {
1503
- return /* @__PURE__ */ jsxs9(Fragment4, { children: [
1504
- /* @__PURE__ */ jsx17(SwatchFill, { value }),
1505
- /* @__PURE__ */ jsx17(CheckMark, { state: selected ? "checked" : "unchecked", className: swatch_default.check })
1506
- ] });
1507
- }
1508
- function SwatchChip({ value, className, ...rest }) {
1509
- return /* @__PURE__ */ jsx17("span", { ...rest, "aria-hidden": true, className: cx(swatch_default.chip, className), children: /* @__PURE__ */ jsx17(SwatchFill, { value }) });
1510
- }
1511
- function sameColor(a, b) {
1512
- return (a ?? "").trim().toLowerCase() === (b ?? "").trim().toLowerCase();
1513
- }
1514
- function colorToRgb(value) {
1515
- const input = value.trim().toLowerCase();
1516
- const hex = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(input)?.[1];
1517
- if (hex) {
1518
- const full = hex.length <= 4 ? [...hex].map((c) => c + c).join("") : hex;
1519
- return [0, 2, 4].map((i) => Number.parseInt(full.slice(i, i + 2), 16));
1520
- }
1521
- const fn = /^(rgba?|hsla?)\(([^)]+)\)$/.exec(input);
1522
- if (!fn) return null;
1523
- const parts = fn[2].split(/[\s,/]+/).filter(Boolean);
1524
- if (parts.length < 3) return null;
1525
- const num = (part, scale) => part.endsWith("%") ? Number.parseFloat(part) / 100 * scale : Number.parseFloat(part);
1526
- if (fn[1].startsWith("rgb")) {
1527
- const rgb = parts.slice(0, 3).map((part) => num(part, 255));
1528
- return rgb.every(Number.isFinite) ? rgb : null;
1529
- }
1530
- const h = Number.parseFloat(parts[0]);
1531
- const s = num(parts[1], 1);
1532
- const l = num(parts[2], 1);
1533
- if (![h, s, l].every(Number.isFinite)) return null;
1534
- const a = s * Math.min(l, 1 - l);
1535
- const channel = (n) => {
1536
- const k = (n + h / 30) % 12;
1537
- return 255 * (l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1)));
1538
- };
1539
- return [channel(0), channel(8), channel(4)];
1540
- }
1541
- function markContrast(value) {
1542
- const rgb = colorToRgb(value);
1543
- if (!rgb) return "dark";
1544
- const lin = (c) => {
1545
- const s = c / 255;
1546
- return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
1547
- };
1548
- const l = 0.2126 * lin(rgb[0]) + 0.7152 * lin(rgb[1]) + 0.0722 * lin(rgb[2]);
1549
- return l > 0.179 ? "dark" : "light";
1550
- }
1551
-
1552
- // src/components/color-swatches/ColorSwatches.tsx
1553
- import * as React15 from "react";
1554
-
1555
- // src/internal/rovingFocus.ts
1556
- var PREV = {
1557
- horizontal: ["ArrowLeft"],
1558
- vertical: ["ArrowUp"],
1559
- both: ["ArrowLeft", "ArrowUp"]
1560
- };
1561
- var NEXT = {
1562
- horizontal: ["ArrowRight"],
1563
- vertical: ["ArrowDown"],
1564
- both: ["ArrowRight", "ArrowDown"]
1565
- };
1566
- function rovingIndex(key, index, count, orientation = "both") {
1567
- if (count <= 0) return null;
1568
- if (key === "Home") return 0;
1569
- if (key === "End") return count - 1;
1570
- if (NEXT[orientation].includes(key)) return index < 0 ? 0 : (index + 1) % count;
1571
- if (PREV[orientation].includes(key)) return index < 0 ? count - 1 : (index - 1 + count) % count;
1572
- return null;
1573
- }
1574
- function gridIndex(key, index, count, columns) {
1575
- if (count <= 0) return null;
1576
- const from = Math.min(Math.max(index, 0), count - 1);
1577
- const step = Math.max(1, columns);
1578
- switch (key) {
1579
- case "ArrowRight":
1580
- return Math.min(from + 1, count - 1);
1581
- case "ArrowLeft":
1582
- return Math.max(from - 1, 0);
1583
- case "ArrowDown":
1584
- return from + step < count ? from + step : from;
1585
- case "ArrowUp":
1586
- return from - step >= 0 ? from - step : from;
1587
- case "Home":
1588
- return 0;
1589
- case "End":
1590
- return count - 1;
1591
- default:
1592
- return null;
1593
- }
1594
- }
1595
-
1596
- // src/components/color-swatches/ColorSwatches.module.css
1597
- var ColorSwatches_default = {
1598
- grid: "ColorSwatches_grid"
1599
- };
1600
-
1601
- // src/components/color-swatches/ColorSwatches.tsx
1602
- import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1603
- var COLOR_SWATCHES_LABELS = {
1604
- group: "\u0426\u0432\u0435\u0442",
1605
- empty: "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430",
1606
- optional: "\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E"
1607
- };
1608
- function columnsOf(items) {
1609
- const top = items[0]?.offsetTop;
1610
- const count = items.findIndex((item) => !item || item.offsetTop !== top);
1611
- return Math.max(1, count === -1 ? items.length : count);
1612
- }
1613
- function ColorSwatches({
1614
- value: valueProp,
1615
- defaultValue = null,
1616
- onValueChange,
1617
- presets = COLOR_PRESETS,
1618
- size: sizeProp,
1619
- disabled = false,
1620
- invalid,
1621
- allowEmpty = false,
1622
- name,
1623
- id,
1624
- className,
1625
- label,
1626
- required,
1627
- optional,
1628
- hint,
1629
- error,
1630
- "aria-label": ariaLabel,
1631
- "aria-labelledby": ariaLabelledBy,
1632
- "aria-describedby": ariaDescribedBy,
1633
- labels: labelsProp,
1634
- ...rest
1635
- }) {
1636
- const size = useControlSize(sizeProp);
1637
- const labels = { ...COLOR_SWATCHES_LABELS, ...labelsProp };
1638
- const [value, setValue] = useControllableState({
1639
- value: valueProp,
1640
- defaultValue,
1641
- onChange: onValueChange
1642
- });
1643
- const ids = useFieldFrame(id, { label, hint, error, invalid }, ariaDescribedBy);
1644
- const options = useSwatchOptions(presets, allowEmpty, labels.empty);
1645
- const selectedIndex = options.findIndex((option) => sameColor(option.value, value));
1646
- const focusIndex = Math.max(0, selectedIndex);
1647
- const itemRefs = React15.useRef([]);
1648
- const labelledBy = ariaLabelledBy ?? ids.labelledBy;
1649
- const onKeyDown2 = (event) => {
1650
- const current = itemRefs.current.indexOf(document.activeElement);
1651
- const next = gridIndex(
1652
- event.key,
1653
- current === -1 ? focusIndex : current,
1654
- options.length,
1655
- columnsOf(itemRefs.current)
1656
- );
1657
- if (next === null) return;
1658
- event.preventDefault();
1659
- setValue(options[next].value);
1660
- itemRefs.current[next]?.focus();
1661
- };
1662
- return /* @__PURE__ */ jsx18(
1663
- FieldFrame,
1664
- {
1665
- ...rest,
1666
- size,
1667
- ids,
1668
- label,
1669
- required,
1670
- optional,
1671
- hint,
1672
- error,
1673
- disabled,
1674
- optionalLabel: labels.optional,
1675
- group: true,
1676
- className,
1677
- children: /* @__PURE__ */ jsxs10(
1678
- "div",
1679
- {
1680
- id: ids.controlId,
1681
- role: "radiogroup",
1682
- "aria-label": labelledBy ? void 0 : ariaLabel ?? labels.group,
1683
- "aria-labelledby": labelledBy,
1684
- "aria-describedby": ids.describedBy,
1685
- "aria-required": required || void 0,
1686
- "aria-invalid": ids.invalid || void 0,
1687
- className: cx(swatchTierClass, ColorSwatches_default.grid),
1688
- ...toDataAttributes({
1689
- size,
1690
- invalid: ids.invalid || void 0,
1691
- disabled: disabled || void 0
1692
- }),
1693
- onKeyDown: disabled ? void 0 : onKeyDown2,
1694
- children: [
1695
- options.map((option, index) => {
1696
- const selected = index === selectedIndex;
1697
- return (
1698
- // biome-ignore lint/a11y/useSemanticElements: a swatch is a styled button in a roving radiogroup; a native radio cannot carry the color fill and check mark
1699
- /* @__PURE__ */ jsx18(
1700
- "button",
1701
- {
1702
- ref: (el) => {
1703
- itemRefs.current[index] = el;
1704
- },
1705
- type: "button",
1706
- role: "radio",
1707
- "aria-checked": selected,
1708
- "aria-label": option.label,
1709
- title: option.label,
1710
- tabIndex: index === focusIndex ? 0 : -1,
1711
- disabled,
1712
- className: swatchClass,
1713
- ...toDataAttributes({
1714
- state: selected ? "checked" : "unchecked",
1715
- contrast: option.contrast
1716
- }),
1717
- onClick: () => setValue(option.value),
1718
- children: /* @__PURE__ */ jsx18(SwatchContent, { value: option.value, selected })
1719
- },
1720
- option.value ?? "empty"
1721
- )
1722
- );
1723
- }),
1724
- name ? /* @__PURE__ */ jsx18("input", { type: "hidden", name, value: value ?? "" }) : null
1725
- ]
1726
- }
1727
- )
1728
- }
1729
- );
1730
- }
1731
-
1732
- // src/components/empty-page/EmptyPage.module.css
1733
- var EmptyPage_default = {
1734
- root: "EmptyPage_root",
1735
- iconWrap: "EmptyPage_iconWrap",
1736
- title: "EmptyPage_title",
1737
- description: "EmptyPage_description",
1738
- actions: "EmptyPage_actions"
1739
- };
1740
-
1741
- // src/components/empty-page/EmptyPage.tsx
1742
- import { jsx as jsx19 } from "react/jsx-runtime";
1743
- function EmptyPageRoot({
1744
- size = "m",
1745
- layout = "default",
1746
- className,
1747
- children,
1748
- ...rest
1749
- }) {
1750
- return /* @__PURE__ */ jsx19(
1751
- "div",
1752
- {
1753
- className: cx(EmptyPage_default.root, layout !== "compact" && enterMotion_default.enterBaseChildren, className),
1754
- ...rest,
1755
- ...toDataAttributes({ size, layout: layout === "default" ? void 0 : layout }),
1756
- children: /* @__PURE__ */ jsx19(ControlSizeProvider, { value: size, children })
1757
- }
1758
- );
1759
- }
1760
- EmptyPageRoot.displayName = "EmptyPage.Root";
1761
- function EmptyPageIcon({ tone = "neutral", className, ...rest }) {
1762
- return /* @__PURE__ */ jsx19("div", { className: cx(EmptyPage_default.iconWrap, className), "data-tone": tone, ...rest });
1763
- }
1764
- EmptyPageIcon.displayName = "EmptyPage.Icon";
1765
- function EmptyPageTitle({ as: Tag = "h2", className, ref, ...rest }) {
1766
- return /* @__PURE__ */ jsx19(Tag, { ref, className: cx(EmptyPage_default.title, className), ...rest });
1767
- }
1768
- EmptyPageTitle.displayName = "EmptyPage.Title";
1769
- function EmptyPageDescription({ className, ...rest }) {
1770
- return /* @__PURE__ */ jsx19("p", { className: cx(EmptyPage_default.description, className), ...rest });
1771
- }
1772
- EmptyPageDescription.displayName = "EmptyPage.Description";
1773
- function EmptyPageActions({ className, ...rest }) {
1774
- return /* @__PURE__ */ jsx19("div", { className: cx(EmptyPage_default.actions, className), ...rest });
1775
- }
1776
- EmptyPageActions.displayName = "EmptyPage.Actions";
1777
- var EmptyPage = {
1778
- Root: EmptyPageRoot,
1779
- Icon: EmptyPageIcon,
1780
- Title: EmptyPageTitle,
1781
- Description: EmptyPageDescription,
1782
- Actions: EmptyPageActions
1783
- };
1784
-
1785
- // src/components/progress-bar/ProgressBar.tsx
1786
- import * as React16 from "react";
1787
-
1788
- // src/internal/progressSegments.ts
1789
- function resolveValue(value, max) {
1790
- const top = max !== void 0 && max > 0 ? max : 100;
1791
- const clamped = Math.min(top, Math.max(Number.isFinite(value) ? value : 0, 0));
1792
- return {
1793
- value: clamped,
1794
- max: top,
1795
- ratio: clamped / top,
1796
- percent: Math.round(clamped / top * 100)
1797
- };
1798
- }
1799
- var DEFAULT_PROGRESS_SEGMENTS_LABELS = {
1800
- empty: "\u041D\u0435\u0442 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u043E\u0432",
1801
- allEmpty: "\u0412\u0441\u0435 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u044B \u043F\u0443\u0441\u0442\u044B"
1802
- };
1803
- function nonNegative(n) {
1804
- return Number.isFinite(n) && n > 0 ? n : 0;
1805
- }
1806
- function resolveSegments(input, max, labels) {
1807
- const segments = input.map((s) => ({ ...s, value: nonNegative(s.value) }));
1808
- const total = segments.reduce((acc, s) => acc + s.value, 0);
1809
- const scale = max !== void 0 && max > 0 ? Math.max(max, total) : total;
1810
- let text;
1811
- if (segments.length === 0) text = labels.empty;
1812
- else if (scale <= 0) text = labels.allEmpty;
1813
- else
1814
- text = segments.map((s) => {
1815
- const pct = Math.round(s.value / scale * 100);
1816
- return s.label ? `${s.label}: ${pct}%` : `${pct}%`;
1817
- }).join(", ");
1818
- return {
1819
- segments,
1820
- total,
1821
- scale,
1822
- rest: scale - total,
1823
- percent: scale > 0 ? Math.round(total / scale * 100) : 0,
1824
- text
1825
- };
1826
- }
1827
-
1828
- // src/components/progress-bar/ProgressBar.module.css
1829
- var ProgressBar_default = {
1830
- root: "ProgressBar_root",
1831
- segment: "ProgressBar_segment",
1832
- header: "ProgressBar_header",
1833
- label: "ProgressBar_label",
1834
- value: "ProgressBar_value",
1835
- native: "ProgressBar_native",
1836
- bar: "ProgressBar_bar",
1837
- fill: "ProgressBar_fill",
1838
- segments: "ProgressBar_segments",
1839
- rest: "ProgressBar_rest",
1840
- step: "ProgressBar_step"
1841
- };
1842
-
1843
- // src/components/progress-bar/ProgressBar.tsx
1844
- import { Fragment as Fragment5, jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
1845
- var MIN_STEPS = 2;
1846
- var MAX_STEPS = 12;
1847
- function useStepOrder(filled, count) {
1848
- const prev = React16.useRef(filled);
1849
- const from = prev.current;
1850
- React16.useEffect(() => {
1851
- prev.current = filled;
1852
- }, [filled]);
1853
- return Array.from(
1854
- { length: count },
1855
- (_, i) => filled >= from ? Math.max(0, i - from) : Math.max(0, from - 1 - i)
1856
- );
1857
- }
1858
- function ProgressBar(props) {
1859
- const {
1860
- label,
1861
- size = "m",
1862
- showValue = false,
1863
- className,
1864
- value: valueProp,
1865
- max: maxProp,
1866
- tone: toneProp,
1867
- segments: segmentsProp,
1868
- segmentGap = "none",
1869
- steps = false,
1870
- labels,
1871
- "aria-label": ariaLabel,
1872
- ...rest
1873
- } = props;
1874
- const labelId = React16.useId();
1875
- const descriptionId = React16.useId();
1876
- const stepResolved = !segmentsProp && steps ? resolveValue(valueProp ?? 0, maxProp) : null;
1877
- const stepCount = stepResolved ? Math.min(MAX_STEPS, Math.max(MIN_STEPS, Math.round(stepResolved.max))) : 0;
1878
- const stepFilled = stepResolved ? Math.round(stepResolved.value / stepResolved.max * stepCount) : 0;
1879
- const stepOrder = useStepOrder(stepFilled, stepCount);
1880
- let percent;
1881
- let tone;
1882
- let bar;
1883
- if (segmentsProp) {
1884
- const resolved = resolveSegments(segmentsProp, maxProp, {
1885
- ...DEFAULT_PROGRESS_SEGMENTS_LABELS,
1886
- ...labels
1887
- });
1888
- const { segments, total, rest: free, text } = resolved;
1889
- percent = resolved.percent;
1890
- const named = Boolean(label || ariaLabel);
1891
- const a11y = named ? {
1892
- "aria-labelledby": label ? labelId : void 0,
1893
- "aria-label": label ? void 0 : ariaLabel,
1894
- "aria-describedby": descriptionId
1895
- } : { "aria-label": text };
1896
- bar = /* @__PURE__ */ jsxs11(Fragment5, { children: [
1897
- named ? /* @__PURE__ */ jsx20(VisuallyHidden, { id: descriptionId, children: text }) : null,
1898
- /* @__PURE__ */ jsxs11(
1899
- "div",
1900
- {
1901
- className: ProgressBar_default.bar,
1902
- role: "group",
1903
- ...a11y,
1904
- ...toDataAttributes({ "segment-gap": segmentGap }),
1905
- children: [
1906
- total > 0 ? /* @__PURE__ */ jsx20("span", { className: ProgressBar_default.segments, style: { flexGrow: total }, children: segments.map((seg, i) => /* @__PURE__ */ jsx20(
1907
- "span",
1908
- {
1909
- className: ProgressBar_default.segment,
1910
- style: { flexGrow: seg.value },
1911
- title: seg.label,
1912
- ...toDataAttributes({ tone: seg.tone ?? "accent" })
1913
- },
1914
- i
1915
- )) }) : null,
1916
- free > 0 || total === 0 ? /* @__PURE__ */ jsx20("span", { className: ProgressBar_default.rest, style: { flexGrow: free > 0 ? free : 1 } }) : null
1917
- ]
1918
- }
1919
- )
1920
- ] });
1921
- } else {
1922
- const resolved = resolveValue(valueProp ?? 0, maxProp);
1923
- const { value, max } = resolved;
1924
- percent = resolved.percent;
1925
- tone = toneProp ?? "accent";
1926
- bar = /* @__PURE__ */ jsxs11(Fragment5, { children: [
1927
- /* @__PURE__ */ jsx20(
1928
- "progress",
1929
- {
1930
- value,
1931
- max,
1932
- "aria-labelledby": label ? labelId : void 0,
1933
- "aria-label": label ? void 0 : ariaLabel,
1934
- className: ProgressBar_default.native
1935
- }
1936
- ),
1937
- steps ? /* @__PURE__ */ jsx20("span", { className: ProgressBar_default.bar, "aria-hidden": "true", "data-steps": "true", children: stepOrder.map((order, i) => /* @__PURE__ */ jsx20(
1938
- "span",
1939
- {
1940
- className: ProgressBar_default.step,
1941
- "data-filled": i < stepFilled || void 0,
1942
- style: { "--pb-step-order": order }
1943
- },
1944
- i
1945
- )) }) : /* @__PURE__ */ jsx20(
1946
- "span",
1947
- {
1948
- className: ProgressBar_default.bar,
1949
- "aria-hidden": "true",
1950
- style: { "--pb-ratio": resolved.ratio },
1951
- children: /* @__PURE__ */ jsx20("span", { className: ProgressBar_default.fill })
1952
- }
1953
- )
1954
- ] });
1955
- }
1956
- return /* @__PURE__ */ jsxs11("div", { className: cx(ProgressBar_default.root, className), ...rest, ...toDataAttributes({ size, tone }), children: [
1957
- label || showValue ? /* @__PURE__ */ jsxs11("div", { className: ProgressBar_default.header, children: [
1958
- label ? /* @__PURE__ */ jsx20("span", { className: ProgressBar_default.label, id: labelId, children: label }) : null,
1959
- showValue ? /* @__PURE__ */ jsxs11("span", { className: ProgressBar_default.value, "aria-hidden": "true", children: [
1960
- percent,
1961
- "%"
1962
- ] }) : null
1963
- ] }) : null,
1964
- bar
1965
- ] });
1966
- }
1967
-
1968
- // src/components/input/passwordStrength.ts
1969
- var SHORT = 8;
1970
- function getPasswordStrength(value) {
1971
- if (value.length === 0) return 0;
1972
- const points = Number(/\p{Ll}/u.test(value)) + Number(/\p{Lu}/u.test(value)) + Number(/\p{N}/u.test(value)) + Number(/[^\p{L}\p{N}\s]/u.test(value)) + Number(value.length >= 10) + Number(value.length >= 14);
1973
- const level = points >= 5 ? 4 : points === 4 ? 3 : points === 3 ? 2 : 1;
1974
- return value.length < SHORT ? Math.min(level, 2) : level;
1975
- }
1976
-
1977
- // src/components/input/Input.tsx
1978
- import * as React18 from "react";
1979
-
1980
- // src/internal/context.ts
1981
- import * as React17 from "react";
1982
- function createComponentContext(displayName) {
1983
- const Ctx = React17.createContext(null);
1984
- Ctx.displayName = `${displayName}Context`;
1985
- function useComponentContext() {
1986
- const value = React17.useContext(Ctx);
1987
- if (value === null) {
1988
- throw new Error(
1989
- `[prime-ui-kit] \`${displayName}\` sub-component must be used inside \`${displayName}.Root\`.`
1990
- );
1991
- }
1992
- return value;
1993
- }
1994
- return [Ctx.Provider, useComponentContext];
1995
- }
1996
-
1997
- // src/components/input/Input.module.css
1998
- var Input_default = {
1999
- root: "Input_root",
2000
- wrapper: "Input_wrapper",
2001
- affix: "Input_affix",
2002
- field: "Input_field",
2003
- inlineAffix: "Input_inlineAffix",
2004
- icon: "Input_icon",
2005
- action: "Input_action",
2006
- strengthWord: "Input_strengthWord"
2007
- };
2008
-
2009
- // src/components/input/Input.tsx
2010
- import { Fragment as Fragment6, jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
2011
- var INPUT_LABELS = {
2012
- optional: "\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",
2013
- clear: "\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",
2014
- counter: "{current} \u0438\u0437 {max} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432",
2015
- strength: "\u041D\u0430\u0434\u0451\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044F",
2016
- strengthWeak: "\u0421\u043B\u0430\u0431\u044B\u0439",
2017
- strengthEasy: "\u041B\u0451\u0433\u043A\u0438\u0439",
2018
- strengthMedium: "\u0421\u0440\u0435\u0434\u043D\u0438\u0439",
2019
- strengthHard: "\u0421\u043B\u043E\u0436\u043D\u044B\u0439"
2020
- };
2021
- var STRENGTH_TONES = {
2022
- 1: "danger",
2023
- 2: "warning",
2024
- 3: "accent",
2025
- 4: "success"
2026
- };
2027
- var [InputProvider, useInputContext] = createComponentContext("Input");
2028
- function InputRoot({
2029
- size: sizeProp,
2030
- invalid,
2031
- focusRing = true,
2032
- label,
2033
- required = false,
2034
- optional = false,
2035
- hint,
2036
- error,
2037
- counter,
2038
- reserveSupportRow = false,
2039
- id,
2040
- strength = false,
2041
- getStrength = getPasswordStrength,
2042
- labels: labelsProp,
2043
- children,
2044
- className,
2045
- ...rest
2046
- }) {
2047
- const [strengthValue, setStrengthValue] = React18.useState("");
2048
- const size = useControlSize(sizeProp);
2049
- const ids = useFieldFrame(id, { label, hint, error, invalid });
2050
- const labels = React18.useMemo(() => ({ ...INPUT_LABELS, ...labelsProp }), [labelsProp]);
2051
- const { invalid: isInvalid, controlId: inputId, describedBy } = ids;
2052
- const inputRef = React18.useRef(null);
2053
- const contextValue = React18.useMemo(
2054
- () => ({
2055
- size,
2056
- invalid: isInvalid,
2057
- focusRing,
2058
- required,
2059
- inputId,
2060
- inputRef,
2061
- describedBy,
2062
- labels,
2063
- reportValue: strength ? setStrengthValue : null
2064
- }),
2065
- [size, isInvalid, focusRing, required, inputId, describedBy, labels, strength]
2066
- );
2067
- const level = strength ? getStrength(strengthValue) : 0;
2068
- const levelWord = level ? [labels.strengthWeak, labels.strengthEasy, labels.strengthMedium, labels.strengthHard][level - 1] : "";
2069
- return /* @__PURE__ */ jsx21(InputProvider, { value: contextValue, children: /* @__PURE__ */ jsx21(ControlSizeProvider, { value: size, children: /* @__PURE__ */ jsxs12(
2070
- FieldFrame,
2071
- {
2072
- ...rest,
2073
- size,
2074
- ids,
2075
- label,
2076
- required,
2077
- optional,
2078
- hint,
2079
- error,
2080
- counter: strength ? /* @__PURE__ */ jsxs12(Fragment6, { children: [
2081
- /* @__PURE__ */ jsx21(
2082
- "span",
2083
- {
2084
- className: Input_default.strengthWord,
2085
- "data-tone": level ? STRENGTH_TONES[level] : void 0,
2086
- "aria-live": "polite",
2087
- children: levelWord ? /* @__PURE__ */ jsxs12(Fragment6, { children: [
2088
- /* @__PURE__ */ jsx21(VisuallyHidden, { children: `${labels.strength}: ` }),
2089
- /* @__PURE__ */ jsx21(MorphText, { children: levelWord })
2090
- ] }) : null
2091
- }
2092
- ),
2093
- counter
2094
- ] }) : counter,
2095
- reserveSupportRow: reserveSupportRow || strength,
2096
- optionalLabel: labels.optional,
2097
- className: cx(fieldTierClass, Input_default.root, className),
2098
- children: [
2099
- children,
2100
- strength ? /* @__PURE__ */ jsx21(
2101
- ProgressBar,
2102
- {
2103
- steps: true,
2104
- value: level,
2105
- max: 4,
2106
- tone: level ? STRENGTH_TONES[level] : "neutral",
2107
- size: "xs",
2108
- "aria-label": labels.strength
2109
- }
2110
- ) : null
2111
- ]
2112
- }
2113
- ) }) });
2114
- }
2115
- InputRoot.displayName = "Input.Root";
2116
- function InputWrapper({ children, className, ...rest }) {
2117
- const { size, invalid, focusRing } = useInputContext();
2118
- return /* @__PURE__ */ jsx21(
2119
- "div",
2120
- {
2121
- ...rest,
2122
- className: cx(fieldSurfaceClass, Input_default.wrapper, className),
2123
- ...toDataAttributes({
2124
- size,
2125
- invalid: invalid || void 0,
2126
- "focus-ring": focusRing ? void 0 : false
2127
- }),
2128
- children
2129
- }
2130
- );
2131
- }
2132
- InputWrapper.displayName = "Input.Wrapper";
2133
- function InputField({
2134
- className,
2135
- "aria-describedby": ariaDescribedBy,
2136
- required,
2137
- onChange,
2138
- onValueChange,
2139
- ref,
2140
- ...rest
2141
- }) {
2142
- const {
2143
- inputId,
2144
- inputRef,
2145
- invalid,
2146
- required: requiredCtx,
2147
- describedBy,
2148
- reportValue
2149
- } = useInputContext();
2150
- const setRefs = useMergedRefs(inputRef, ref);
2151
- const controlled = rest.value;
2152
- React18.useEffect(() => {
2153
- if (!reportValue) return;
2154
- if (controlled !== void 0) reportValue(String(controlled));
2155
- else if (inputRef.current) reportValue(inputRef.current.value);
2156
- }, [reportValue, controlled, inputRef]);
2157
- const resolvedDescribedBy = [ariaDescribedBy, describedBy].filter(Boolean).join(" ") || void 0;
2158
- return /* @__PURE__ */ jsx21(
2159
- "input",
2160
- {
2161
- ...rest,
2162
- ref: setRefs,
2163
- id: inputId,
2164
- className: cx(Input_default.field, className),
2165
- "aria-invalid": invalid || void 0,
2166
- "aria-describedby": resolvedDescribedBy,
2167
- required: required ?? (requiredCtx || void 0),
2168
- onChange: (event) => {
2169
- onChange?.(event);
2170
- onValueChange?.(event.target.value);
2171
- reportValue?.(event.target.value);
2172
- }
2173
- }
2174
- );
2175
- }
2176
- InputField.displayName = "Input.Field";
2177
- function InputIcon({ side, children, className, ...rest }) {
2178
- return /* @__PURE__ */ jsx21("span", { ...rest, className: cx(Input_default.icon, className), "data-side": side, "aria-hidden": "true", children });
2179
- }
2180
- InputIcon.displayName = "Input.Icon";
2181
- function InputAffix({ side, children, className, ...rest }) {
2182
- return /* @__PURE__ */ jsx21("div", { ...rest, className: cx(Input_default.affix, className), "data-side": side, "aria-hidden": "true", children });
2183
- }
2184
- InputAffix.displayName = "Input.Affix";
2185
- function InputInlineAffix({ side, children, className, ...rest }) {
2186
- return /* @__PURE__ */ jsx21(
2187
- "span",
2188
- {
2189
- ...rest,
2190
- className: cx(Input_default.inlineAffix, className),
2191
- "data-side": side,
2192
- "aria-hidden": "true",
2193
- children
2194
- }
2195
- );
2196
- }
2197
- InputInlineAffix.displayName = "Input.InlineAffix";
2198
- function InputClearButton({ className, onClick: onClick2, ref, ...rest }) {
2199
- const { inputId, inputRef, labels } = useInputContext();
2200
- return /* @__PURE__ */ jsx21(
2201
- "button",
2202
- {
2203
- ...rest,
2204
- ref,
2205
- type: "button",
2206
- className: cx(Input_default.action, className),
2207
- "aria-label": labels.clear,
2208
- "aria-controls": inputId,
2209
- onClick: (event) => {
2210
- onClick2?.(event);
2211
- if (!event.defaultPrevented) inputRef.current?.focus();
2212
- },
2213
- children: /* @__PURE__ */ jsx21(Icon, { name: "action.close" })
2214
- }
2215
- );
2216
- }
2217
- InputClearButton.displayName = "Input.ClearButton";
2218
- function InputCounter(props) {
2219
- const { size, labels } = useInputContext();
2220
- return /* @__PURE__ */ jsx21(FieldCounter, { ...props, size, label: labels.counter });
2221
- }
2222
- InputCounter.displayName = "Input.Counter";
2223
- var Input = {
2224
- Root: InputRoot,
2225
- Wrapper: InputWrapper,
2226
- Field: InputField,
2227
- Icon: InputIcon,
2228
- Affix: InputAffix,
2229
- InlineAffix: InputInlineAffix,
2230
- ClearButton: InputClearButton,
2231
- Counter: InputCounter
2232
- };
2233
-
2234
- // src/internal/imageSlot.tsx
2235
- import * as React20 from "react";
2236
-
2237
- // src/hooks/useImageStatus.ts
2238
- import * as React19 from "react";
2239
- function useImageStatus(report, { onLoad, onError } = {}) {
2240
- const [status, setStatus] = React19.useState("loading");
2241
- React19.useLayoutEffect(() => {
2242
- report("loading");
2243
- return () => report("idle");
2244
- }, [report]);
2245
- const handleLoad = React19.useCallback(
2246
- (event) => {
2247
- setStatus("loaded");
2248
- report("loaded");
2249
- onLoad?.(event);
2250
- },
2251
- [onLoad, report]
2252
- );
2253
- const handleError = React19.useCallback(
2254
- (event) => {
2255
- setStatus("error");
2256
- report("error");
2257
- onError?.(event);
2258
- },
2259
- [onError, report]
2260
- );
2261
- return { status, onLoad: handleLoad, onError: handleError };
2262
- }
2263
-
2264
- // src/internal/imageSlot.tsx
2265
- import { jsx as jsx22 } from "react/jsx-runtime";
2266
- function createImageSlot(name, classNames) {
2267
- const [Provider, useSlotContext] = createComponentContext(name);
2268
- function ImageSlotProvider({ children }) {
2269
- const [imageStatus, setImageStatus] = React20.useState("idle");
2270
- const value = React20.useMemo(() => ({ imageStatus, setImageStatus }), [imageStatus]);
2271
- return /* @__PURE__ */ jsx22(Provider, { value, children });
2272
- }
2273
- function ImageInner({ src, alt = "", className, onLoad, onError, ...rest }) {
2274
- const { setImageStatus } = useSlotContext();
2275
- const image = useImageStatus(setImageStatus, { onLoad, onError });
2276
- return /* @__PURE__ */ jsx22(
2277
- "img",
2278
- {
2279
- src,
2280
- alt,
2281
- className: cx(classNames.image, className),
2282
- onLoad: image.onLoad,
2283
- onError: image.onError,
2284
- ...toDataAttributes({ status: image.status }),
2285
- ...rest
2286
- }
2287
- );
2288
- }
2289
- function Image2(props) {
2290
- return /* @__PURE__ */ jsx22(ImageInner, { ...props }, props.src);
2291
- }
2292
- Image2.displayName = `${name}.Image`;
2293
- function Fallback({ className, ...rest }) {
2294
- const { imageStatus } = useSlotContext();
2295
- return /* @__PURE__ */ jsx22(
2296
- "span",
2297
- {
2298
- className: cx(classNames.fallback, className),
2299
- "aria-hidden": imageStatus === "loaded" ? true : void 0,
2300
- ...rest
2301
- }
2302
- );
2303
- }
2304
- Fallback.displayName = `${name}.Fallback`;
2305
- return {
2306
- ImageSlotProvider,
2307
- useImageSlot: () => useSlotContext().imageStatus,
2308
- Image: Image2,
2309
- Fallback
2310
- };
2311
- }
2312
-
2313
- // src/internal/palette.module.css
2314
- var palette_default = {
2315
- hue: "palette_hue"
2316
- };
2317
-
2318
- // src/components/thumbnail/Thumbnail.module.css
2319
- var Thumbnail_default = {
2320
- root: "Thumbnail_root",
2321
- image: "Thumbnail_image",
2322
- fallback: "Thumbnail_fallback"
2323
- };
2324
-
2325
- // src/components/thumbnail/Thumbnail.tsx
2326
- import { jsx as jsx23 } from "react/jsx-runtime";
2327
- var slot = createImageSlot("Thumbnail", { image: Thumbnail_default.image, fallback: Thumbnail_default.fallback });
2328
- function ThumbnailRoot({
2329
- size = "m",
2330
- ratio = "1:1",
2331
- color = "gray",
2332
- variant = "soft",
2333
- fullWidth = false,
2334
- ring = false,
2335
- className,
2336
- children,
2337
- ...rest
2338
- }) {
2339
- return /* @__PURE__ */ jsx23(slot.ImageSlotProvider, { children: /* @__PURE__ */ jsx23(
2340
- "div",
2341
- {
2342
- className: cx(Thumbnail_default.root, palette_default.hue, className),
2343
- ...toDataAttributes({
2344
- size,
2345
- ratio,
2346
- color,
2347
- variant,
2348
- "full-width": fullWidth || void 0,
2349
- ring: ring || void 0
2350
- }),
2351
- ...rest,
2352
- children
2353
- }
2354
- ) });
2355
- }
2356
- ThumbnailRoot.displayName = "Thumbnail.Root";
2357
- function ThumbnailImage({ fit = "cover", ...rest }) {
2358
- return /* @__PURE__ */ jsx23(slot.Image, { ...rest, "data-fit": fit });
2359
- }
2360
- ThumbnailImage.displayName = "Thumbnail.Image";
2361
- var ThumbnailFallback = slot.Fallback;
2362
- var Thumbnail = {
2363
- Root: ThumbnailRoot,
2364
- Image: ThumbnailImage,
2365
- Fallback: ThumbnailFallback
2366
- };
2367
-
2368
- // src/components/select/Select.tsx
2369
- import * as React34 from "react";
2370
-
2371
- // src/internal/listbox.ts
2372
- import * as React21 from "react";
2373
- var optionDomId = (listboxId, value) => `${listboxId}-opt-${value.replace(/\s+/g, "_")}`;
2374
- function enabledOptions(container) {
2375
- if (!container) return [];
2376
- return Array.from(
2377
- container.querySelectorAll('[role="option"]:not([data-disabled="true"])')
2378
- );
2379
- }
2380
- function createStore(initial) {
2381
- let value = initial;
2382
- const listeners = /* @__PURE__ */ new Set();
2383
- return {
2384
- get: () => value,
2385
- set: (next) => {
2386
- if (Object.is(value, next)) return;
2387
- value = next;
2388
- for (const listener of listeners) listener();
2389
- },
2390
- subscribe: (listener) => {
2391
- listeners.add(listener);
2392
- return () => listeners.delete(listener);
2393
- }
2394
- };
2395
- }
2396
- function useCreateStore(initial) {
2397
- return React21.useState(() => createStore(initial))[0];
2398
- }
2399
- function useStoreSlice(store, select) {
2400
- const read = () => select(store.get());
2401
- return React21.useSyncExternalStore(store.subscribe, read, read);
2402
- }
2403
- function handleListboxKeyDown(event, { items, highlight, onSelect }) {
2404
- if (items.length === 0) return;
2405
- const highlighted = highlight.get();
2406
- const current = items.findIndex((item) => item.dataset.value === highlighted);
2407
- const next = rovingIndex(event.key, current, items.length, "vertical");
2408
- if (next !== null) {
2409
- event.preventDefault();
2410
- const item = items[next];
2411
- highlight.set(item?.dataset.value);
2412
- item?.scrollIntoView?.({ block: "nearest" });
2413
- return;
2414
- }
2415
- if (event.key === "Enter" || event.key === " ") {
2416
- event.preventDefault();
2417
- if (highlighted === void 0) return;
2418
- onSelect(highlighted, items[current]?.dataset.label ?? highlighted);
2419
- }
2420
- }
2421
- var TYPEAHEAD_RESET_MS = 500;
2422
- function useTypeahead() {
2423
- const state = React21.useRef({ buffer: "", timer: 0 });
2424
- React21.useEffect(() => () => window.clearTimeout(state.current.timer), []);
2425
- const isTyping = React21.useCallback(() => state.current.buffer !== "", []);
2426
- const find = React21.useCallback(
2427
- (key, items, highlighted) => {
2428
- const s = state.current;
2429
- window.clearTimeout(s.timer);
2430
- s.buffer += key.toLocaleLowerCase();
2431
- s.timer = window.setTimeout(() => {
2432
- s.buffer = "";
2433
- }, TYPEAHEAD_RESET_MS);
2434
- const start = items.findIndex((item) => item.dataset.value === highlighted);
2435
- const repeated = [...s.buffer].every((char) => char === s.buffer[0]);
2436
- const prefix = repeated ? key.toLocaleLowerCase() : s.buffer;
2437
- const from = repeated ? start + 1 : Math.max(start, 0);
2438
- return [...items.slice(from), ...items.slice(0, from)].find(
2439
- (item) => (item.dataset.label ?? "").toLocaleLowerCase().startsWith(prefix)
2440
- );
2441
- },
2442
- []
2443
- );
2444
- return { find, isTyping };
2445
- }
2446
-
2447
- // src/internal/MenuGroup.tsx
2448
- import * as React22 from "react";
2449
-
2450
- // src/internal/menu.module.css
2451
- var menu_default = {
2452
- tier: "menu_tier",
2453
- menu: "menu_menu",
2454
- item: "menu_item",
2455
- itemIcon: "menu_itemIcon",
2456
- shortcut: "menu_shortcut",
2457
- check: "menu_check",
2458
- group: "menu_group",
2459
- groupLabel: "menu_groupLabel",
2460
- separator: "menu_separator",
2461
- searchRow: "menu_searchRow",
2462
- searchInput: "menu_searchInput"
2463
- };
2464
-
2465
- // src/internal/MenuGroup.tsx
2466
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
2467
- function MenuGroup({ label, className, children, ...rest }) {
2468
- const labelId = React22.useId();
2469
- return (
2470
- // biome-ignore lint/a11y/useSemanticElements: role="group" inside a menu / listbox; <fieldset> is not allowed there
2471
- /* @__PURE__ */ jsxs13(
2472
- "div",
2473
- {
2474
- ...rest,
2475
- role: "group",
2476
- "aria-labelledby": label != null ? labelId : void 0,
2477
- className: cx(menu_default.group, className),
2478
- children: [
2479
- label != null ? /* @__PURE__ */ jsx24("div", { id: labelId, role: "presentation", className: menu_default.groupLabel, children: label }) : null,
2480
- children
2481
- ]
2482
- }
2483
- )
2484
- );
2485
- }
2486
-
2487
- // src/internal/floatingSurface.module.css
2488
- var floatingSurface_default = {
2489
- surface: "floatingSurface_surface",
2490
- layer: "floatingSurface_layer",
2491
- scrim: "floatingSurface_scrim",
2492
- sheet: "floatingSurface_sheet",
2493
- sheetContent: "floatingSurface_sheetContent"
2494
- };
2495
-
2496
- // src/internal/overlayMotion.module.css
2497
- var overlayMotion_default = {
2498
- dialog: "overlayMotion_dialog",
2499
- drawer: "overlayMotion_drawer",
2500
- sheet: "overlayMotion_sheet",
2501
- floating: "overlayMotion_floating",
2502
- scrim: "overlayMotion_scrim",
2503
- overlayFadeIn: "overlayMotion_overlayFadeIn",
2504
- overlayFadeOut: "overlayMotion_overlayFadeOut",
2505
- overlayDialogIn: "overlayMotion_overlayDialogIn",
2506
- overlayDialogOut: "overlayMotion_overlayDialogOut",
2507
- overlaySheetIn: "overlayMotion_overlaySheetIn",
2508
- overlaySheetOut: "overlayMotion_overlaySheetOut",
2509
- overlayDrawerIn: "overlayMotion_overlayDrawerIn",
2510
- overlayDrawerOut: "overlayMotion_overlayDrawerOut",
2511
- overlayFloatIn: "overlayMotion_overlayFloatIn",
2512
- overlayFloatOut: "overlayMotion_overlayFloatOut"
2513
- };
2514
-
2515
- // src/internal/Portal.tsx
2516
- import * as React23 from "react";
2517
- import { createPortal } from "react-dom";
2518
- function Portal({ children, container }) {
2519
- const [mounted, setMounted] = React23.useState(false);
2520
- React23.useLayoutEffect(() => {
2521
- setMounted(true);
2522
- return () => setMounted(false);
2523
- }, []);
2524
- if (!mounted) return null;
2525
- return createPortal(children, container ?? document.body);
2526
- }
2527
-
2528
- // src/internal/sheet.module.css
2529
- var sheet_default = {
2530
- handle: "sheet_handle",
2531
- swipeY: "sheet_swipeY",
2532
- swipeX: "sheet_swipeX"
2533
- };
2534
-
2535
- // src/internal/surfaceDepth.tsx
2536
- import * as React24 from "react";
2537
- var SurfaceDepthContext = React24.createContext(0);
2538
- SurfaceDepthContext.displayName = "SurfaceDepthContext";
2539
- function nextSurfaceDepth(depth) {
2540
- if (typeof depth === "number") return Math.min(depth + 1, 4);
2541
- if (depth === "tinted") return 1;
2542
- return depth === "floating" ? "floating-1" : "floating-2";
2543
- }
2544
- function useNestedSurfaceDepth() {
2545
- return nextSurfaceDepth(React24.useContext(SurfaceDepthContext));
2546
- }
2547
- var SurfaceDepthProvider = SurfaceDepthContext.Provider;
2548
- var StageDepthContext = React24.createContext(0);
2549
- StageDepthContext.displayName = "StageDepthContext";
2550
- var StageDepthProvider = StageDepthContext.Provider;
2551
- function useStageDepth() {
2552
- return React24.useContext(StageDepthContext);
2553
- }
2554
-
2555
- // src/internal/overlay/layerStack.ts
2556
- import * as React25 from "react";
2557
-
2558
- // src/internal/overlay/focus.ts
2559
- var FOCUSABLE = [
2560
- "a[href]",
2561
- "button:not([disabled])",
2562
- 'input:not([disabled]):not([type="hidden"])',
2563
- "select:not([disabled])",
2564
- "textarea:not([disabled])",
2565
- "[tabindex]"
2566
- ].map((selector) => `${selector}:not([tabindex="-1"])`).join(", ");
2567
- function getFocusable(container) {
2568
- return Array.from(container.querySelectorAll(FOCUSABLE)).filter((el) => {
2569
- if (el.getAttribute("aria-hidden") === "true") return false;
2570
- const style = window.getComputedStyle(el);
2571
- return style.display !== "none" && style.visibility !== "hidden";
2572
- });
2573
- }
2574
- function focusInto(container) {
2575
- if (container.contains(document.activeElement)) return;
2576
- const target = container.querySelector("[data-autofocus]") ?? getFocusable(container)[0] ?? container;
2577
- target.focus({ preventScroll: true });
2578
- }
2579
- function focusBack(el) {
2580
- if (el?.isConnected) el.focus({ preventScroll: true });
2581
- }
2582
- function activeElement() {
2583
- if (typeof document === "undefined") return null;
2584
- const el = document.activeElement;
2585
- return el instanceof HTMLElement && el !== document.body ? el : null;
2586
- }
2587
-
2588
- // src/internal/overlay/layerStack.ts
2589
- var stack = [];
2590
- var pendingClick = null;
2591
- function isAncestor(ancestor, entry) {
2592
- for (let p = entry.parent; p; p = p.parent) if (p === ancestor) return true;
2593
- return false;
2594
- }
2595
- function contains(entry, target) {
2596
- return target !== null && entry.refs.some((ref) => ref.current?.contains(target));
2597
- }
2598
- function topInteractive() {
2599
- for (let i = stack.length - 1; i >= 0; i--) {
2600
- if (stack[i]?.dismiss !== "none") return stack[i];
2601
- }
2602
- return void 0;
2603
- }
2604
- function trapTab(event) {
2605
- const active = document.activeElement;
2606
- for (let i = stack.length - 1; i >= 0; i--) {
2607
- const entry = stack[i];
2608
- if (!entry || entry.dismiss === "none") continue;
2609
- const panel = entry.refs[0]?.current;
2610
- if (!panel) continue;
2611
- const inside = panel.contains(active);
2612
- if (!entry.trap) {
2613
- if (inside) return;
2614
- continue;
2615
- }
2616
- const focusable = getFocusable(panel);
2617
- if (focusable.length === 0) {
2618
- event.preventDefault();
2619
- panel.focus({ preventScroll: true });
2620
- return;
2621
- }
2622
- const first = focusable[0];
2623
- const last = focusable[focusable.length - 1];
2624
- if (event.shiftKey ? !inside || active === first : !inside || active === last) {
2625
- event.preventDefault();
2626
- (event.shiftKey ? last : first)?.focus();
2627
- }
2628
- return;
2629
- }
2630
- }
2631
- function onKeyDown(event) {
2632
- if (event.key === "Tab") {
2633
- trapTab(event);
2634
- return;
2635
- }
2636
- if (event.key !== "Escape" || event.defaultPrevented) return;
2637
- stack[stack.length - 1]?.onDismiss("escape");
2638
- }
2639
- function onPointerDown(event) {
2640
- pendingClick = null;
2641
- const top = topInteractive();
2642
- const target = event.target instanceof Node ? event.target : null;
2643
- if (!top || !target || contains(top, target)) return;
2644
- if (top.dismiss === "click") pendingClick = top;
2645
- else top.onDismiss("outside");
2646
- }
2647
- function onClick(event) {
2648
- const layer = pendingClick;
2649
- pendingClick = null;
2650
- const target = event.target instanceof Node ? event.target : null;
2651
- if (!layer || layer !== topInteractive() || !target || contains(layer, target)) return;
2652
- layer.onDismiss("scrim");
2653
- }
2654
- function listen(on) {
2655
- if (on) {
2656
- document.addEventListener("keydown", onKeyDown);
2657
- document.addEventListener("pointerdown", onPointerDown, true);
2658
- document.addEventListener("click", onClick, true);
2659
- } else {
2660
- document.removeEventListener("keydown", onKeyDown);
2661
- document.removeEventListener("pointerdown", onPointerDown, true);
2662
- document.removeEventListener("click", onClick, true);
2663
- }
2664
- }
2665
- function push(entry) {
2666
- if (stack.length === 0) listen(true);
2667
- const below = stack.findIndex((other) => isAncestor(entry, other));
2668
- if (below === -1) stack.push(entry);
2669
- else stack.splice(below, 0, entry);
2670
- return () => {
2671
- const index = stack.indexOf(entry);
2672
- if (index !== -1) stack.splice(index, 1);
2673
- if (pendingClick === entry) pendingClick = null;
2674
- if (stack.length === 0) listen(false);
2675
- };
2676
- }
2677
- var LayerContext = React25.createContext(null);
2678
- var LayerProvider = LayerContext.Provider;
2679
- function useLayer(open, options) {
2680
- const parent = React25.useContext(LayerContext);
2681
- const [entry] = React25.useState(() => ({ parent, trap: false, ...options }));
2682
- entry.parent = parent;
2683
- entry.refs = options.refs;
2684
- entry.dismiss = options.dismiss;
2685
- entry.trap = options.trap ?? false;
2686
- entry.onDismiss = options.onDismiss;
2687
- React25.useLayoutEffect(() => open ? push(entry) : void 0, [open, entry]);
2688
- return entry;
2689
- }
2690
-
2691
- // src/internal/overlay/FloatingPanel.tsx
2692
- import { Fragment as Fragment7, jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
2693
- function FloatingPanel({
2694
- floating,
2695
- size,
2696
- scroll = false,
2697
- surface = true,
2698
- className,
2699
- onKeyDown: onKeyDown2,
2700
- children,
2701
- ref,
2702
- ...rest
2703
- }) {
2704
- const mergedRef = useMergedRefs(floating.panelRef, ref);
2705
- if (!floating.mounted) return null;
2706
- const { sheet, presence } = floating;
2707
- const panelRef = sheet ? ref : mergedRef;
2708
- const props = {
2709
- ...rest,
2710
- className: sheet ? cx(floatingSurface_default.sheetContent, className) : cx(
2711
- surface && floatingSurface_default.surface,
2712
- floatingSurface_default.layer,
2713
- overlayMotion_default.floating,
2714
- className
2715
- ),
2716
- "data-size": size,
2717
- ...surface && !sheet ? { "data-depth": "floating" } : null,
2718
- ...sheet ? null : {
2719
- "data-state": presence.state,
2720
- "data-side": floating.side,
2721
- onAnimationEnd: presence.onExitEnd
2722
- },
2723
- onKeyDown: (event) => {
2724
- onKeyDown2?.(event);
2725
- floating.onKeyDown(event);
2726
- }
2727
- };
2728
- const panel = scroll ? /* @__PURE__ */ jsx25(ScrollContainer, { ...props, ref: panelRef, children }) : /* @__PURE__ */ jsx25("div", { ...props, ref: panelRef, children });
2729
- return /* @__PURE__ */ jsx25(Portal, { children: /* @__PURE__ */ jsx25(LayerProvider, { value: floating.layer, children: /* @__PURE__ */ jsx25(SurfaceDepthProvider, { value: "floating", children: /* @__PURE__ */ jsx25(ControlSizeProvider, { value: size, children: sheet ? /* @__PURE__ */ jsxs14(Fragment7, { children: [
2730
- /* @__PURE__ */ jsx25(
2731
- "div",
2732
- {
2733
- role: "presentation",
2734
- className: cx(floatingSurface_default.scrim, floatingSurface_default.layer, overlayMotion_default.scrim),
2735
- "data-state": presence.state
2736
- }
2737
- ),
2738
- /* @__PURE__ */ jsxs14(
2739
- "div",
2740
- {
2741
- ref: floating.panelRef,
2742
- className: cx(
2743
- floatingSurface_default.sheet,
2744
- floatingSurface_default.layer,
2745
- overlayMotion_default.sheet,
2746
- sheet_default.swipeY
2747
- ),
2748
- "data-depth": "floating",
2749
- "data-state": presence.state,
2750
- onAnimationEnd: presence.onExitEnd,
2751
- onPointerDown: floating.onSheetPointerDown,
2752
- children: [
2753
- /* @__PURE__ */ jsx25("div", { className: sheet_default.handle, "data-swipe-handle": "", "aria-hidden": "true" }),
2754
- panel
2755
- ]
2756
- }
2757
- )
2758
- ] }) : panel }) }) }) });
2759
- }
2760
- function FloatingTrigger({ triggerProps, children, ...forwarded }) {
2761
- return /* @__PURE__ */ jsx25(Slot, { ...forwarded, children: /* @__PURE__ */ jsx25(Slot, { ...triggerProps, children }) });
2762
- }
2763
-
2764
- // src/internal/overlay/useFloatingLayer.ts
2765
- import * as React31 from "react";
2766
-
2767
- // src/hooks/useMediaQuery.ts
2768
- import * as React26 from "react";
2769
- var COMPACT_QUERY = "(max-width: 639px)";
2770
- function useMediaQuery(query, enabled = true) {
2771
- const subscribe = React26.useCallback(
2772
- (onChange) => {
2773
- if (!enabled || typeof window === "undefined" || !window.matchMedia) return () => {
2774
- };
2775
- const mq = window.matchMedia(query);
2776
- mq.addEventListener("change", onChange);
2777
- return () => mq.removeEventListener("change", onChange);
2778
- },
2779
- [enabled, query]
2780
- );
2781
- const getSnapshot = () => enabled && typeof window !== "undefined" && !!window.matchMedia ? window.matchMedia(query).matches : false;
2782
- return React26.useSyncExternalStore(subscribe, getSnapshot, () => false);
2783
- }
2784
-
2785
- // src/hooks/usePosition.ts
2786
- import * as React28 from "react";
2787
-
2788
- // src/internal/AnchorRectContext.tsx
2789
- import * as React27 from "react";
2790
- var AnchorRectContext = React27.createContext(null);
2791
- var AnchorRectProvider = AnchorRectContext.Provider;
2792
- function useAnchorRectResolver() {
2793
- return React27.useContext(AnchorRectContext);
2794
- }
2795
-
2796
- // src/internal/layoutPxFromPrimitives.ts
2797
- var FALLBACK_ROOT_FONT_PX = 16;
2798
- function getRootFontSizePx() {
2799
- if (typeof document === "undefined") {
2800
- return FALLBACK_ROOT_FONT_PX;
2801
- }
2802
- const raw = getComputedStyle(document.documentElement).fontSize;
2803
- const parsed = Number.parseFloat(raw);
2804
- return Number.isFinite(parsed) && parsed > 0 ? parsed : FALLBACK_ROOT_FONT_PX;
2805
- }
2806
-
2807
- // src/internal/scrollAncestors.ts
2808
- var SCROLLABLE = /^(auto|scroll|overlay)$/;
2809
- function getScrollContainers(node) {
2810
- const out = [window];
2811
- if (!node || typeof window === "undefined") return out;
2812
- for (let el = node.parentElement; el; el = el.parentElement) {
2813
- const { overflowX, overflowY } = window.getComputedStyle(el);
2814
- if (SCROLLABLE.test(overflowY) || SCROLLABLE.test(overflowX)) {
2815
- out.push(el);
2816
- }
2817
- }
2818
- if (window.visualViewport) out.push(window.visualViewport);
2819
- return out;
2820
- }
2821
-
2822
- // src/hooks/usePosition.ts
2823
- var FLOAT_MAX_HEIGHT_VAR = "--float-max-h";
2824
- var FLOAT_MIN_WIDTH_VAR = "--float-min-w";
2825
- var FLOAT_MAX_WIDTH_VAR = "--float-max-w";
2826
- var FLOAT_ARROW_VAR = "--float-arrow";
2827
- var MIN_MENU_ESTIMATE = 176;
2828
- var FALLBACK_VIEWPORT_PAD_PX = 8;
2829
- var FALLBACK_PANEL_OFFSET_PX = 4;
2830
- var MIN_FLOATING_MAX_HEIGHT = 120;
2831
- var FIRST_PAINT_FLOAT_HEIGHT_GUESS_PX = 280;
2832
- var OPPOSITE = {
2833
- top: "bottom",
2834
- bottom: "top",
2835
- left: "right",
2836
- right: "left"
2837
- };
2838
- function readCssLengthPx(name, fallbackPx) {
2839
- if (typeof document === "undefined") return fallbackPx;
2840
- const raw = getComputedStyle(document.documentElement).getPropertyValue(name).trim();
2841
- if (!raw) return fallbackPx;
2842
- const n = Number.parseFloat(raw);
2843
- if (!Number.isFinite(n)) return fallbackPx;
2844
- if (raw.endsWith("rem")) return Math.round(n * getRootFontSizePx());
2845
- if (raw.endsWith("px") || n === 0) return Math.round(n);
2846
- return fallbackPx;
2847
- }
2848
- function getViewportPadPx() {
2849
- return readCssLengthPx("--prime-space-2", FALLBACK_VIEWPORT_PAD_PX);
2850
- }
2851
- var clamp = (value, min, max) => Math.max(min, Math.min(value, Math.max(min, max)));
2852
- function computeFloatingPosition(anchor, contentW, contentH, vw, vh, opts) {
2853
- const { align, offset, flip, matchAnchorWidth, arrowInset } = opts;
2854
- const pad = opts.viewportPad ?? FALLBACK_VIEWPORT_PAD_PX;
2855
- const room = {
2856
- top: anchor.top - offset - pad,
2857
- bottom: vh - anchor.bottom - offset - pad,
2858
- left: anchor.left - offset - pad,
2859
- right: vw - anchor.right - offset - pad
2860
- };
2861
- const isVertical = (s) => s === "top" || s === "bottom";
2862
- const mainSize = isVertical(opts.side) ? contentH : contentW;
2863
- let side = opts.side;
2864
- if (flip && mainSize > 0 && room[side] < mainSize) {
2865
- const opposite = OPPOSITE[side];
2866
- if (room[opposite] >= mainSize || room[opposite] > room[side]) side = opposite;
2867
- }
2868
- const vertical = isVertical(side);
2869
- const viewportMaxWidth = Math.max(0, Math.floor(vw - pad * 2));
2870
- const maxWidth = vertical ? viewportMaxWidth : Math.max(0, Math.min(viewportMaxWidth, Math.floor(room[side])));
2871
- const width = Math.min(
2872
- maxWidth,
2873
- contentW > 0 ? contentW : matchAnchorWidth ? anchor.width : Math.max(anchor.width, MIN_MENU_ESTIMATE)
2874
- );
2875
- let main;
2876
- if (side === "bottom") main = anchor.bottom + offset;
2877
- else if (side === "right") main = anchor.right + offset;
2878
- else if (side === "left") main = Math.max(pad, anchor.left - offset - width);
2879
- else
2880
- main = Math.max(
2881
- pad,
2882
- anchor.top - offset - (contentH > 0 ? contentH : FIRST_PAINT_FLOAT_HEIGHT_GUESS_PX)
2883
- );
2884
- const anchorStart = vertical ? anchor.left : anchor.top;
2885
- const anchorSize = vertical ? anchor.width : anchor.height;
2886
- const crossSize = vertical ? width : contentH;
2887
- const viewport = vertical ? vw : vh;
2888
- const crossFor = (a) => a === "start" ? anchorStart : a === "end" ? anchorStart + anchorSize - crossSize : anchorStart + anchorSize / 2 - crossSize / 2;
2889
- const fits = (x) => x >= pad && x + crossSize <= viewport - pad;
2890
- let cross = crossFor(align);
2891
- if (flip && !fits(cross)) {
2892
- const opposite = align === "end" ? "start" : align === "start" ? "end" : align;
2893
- if (opposite !== align && fits(crossFor(opposite))) cross = crossFor(opposite);
2894
- }
2895
- cross = Math.round(clamp(cross, pad, viewport - crossSize - pad));
2896
- const out = {
2897
- top: Math.round(vertical ? main : cross),
2898
- left: Math.round(vertical ? cross : main),
2899
- side,
2900
- maxWidth,
2901
- maxHeight: Math.max(MIN_FLOATING_MAX_HEIGHT, Math.floor(vertical ? room[side] : vh - pad * 2))
2902
- };
2903
- if (matchAnchorWidth) out.minWidth = Math.min(anchor.width, maxWidth);
2904
- if (arrowInset !== void 0) {
2905
- out.arrow = Math.round(
2906
- clamp(anchorStart + anchorSize / 2 - cross, arrowInset, crossSize - arrowInset)
2907
- );
2908
- }
2909
- return out;
2910
- }
2911
- function usePosition(enabled, anchorRef, layerRef, {
2912
- side: preferredSide = "bottom",
2913
- align = "start",
2914
- matchAnchorWidth = false,
2915
- offsetToken = "--prime-panel-offset",
2916
- arrowInset
2917
- } = {}) {
2918
- const [attached, setAttached] = React28.useState(false);
2919
- const [resolvedSide, setResolvedSide] = React28.useState(preferredSide);
2920
- const resolveAnchorRect = useAnchorRectResolver();
2921
- const metricsRef = React28.useRef(null);
2922
- const update = React28.useCallback(
2923
- (remeasure) => {
2924
- const anchor = anchorRef.current;
2925
- const layer = layerRef.current;
2926
- if (!anchor || !layer) return;
2927
- if (remeasure || !metricsRef.current) {
2928
- metricsRef.current = {
2929
- offset: readCssLengthPx(offsetToken, FALLBACK_PANEL_OFFSET_PX),
2930
- pad: getViewportPadPx(),
2931
- arrow: arrowInset?.(layer)
2932
- };
2933
- }
2934
- const { offset, pad, arrow } = metricsRef.current;
2935
- const rect = anchor.getBoundingClientRect();
2936
- const pos = computeFloatingPosition(
2937
- resolveAnchorRect ? resolveAnchorRect(anchor, rect) : rect,
2938
- layer.offsetWidth,
2939
- layer.offsetHeight,
2940
- window.innerWidth,
2941
- window.innerHeight,
2942
- {
2943
- side: preferredSide,
2944
- align,
2945
- offset,
2946
- viewportPad: pad,
2947
- flip: true,
2948
- matchAnchorWidth,
2949
- arrowInset: arrow
2950
- }
2951
- );
2952
- setResolvedSide(pos.side);
2953
- const set = (name, value) => {
2954
- if (layer.style.getPropertyValue(name) !== value) layer.style.setProperty(name, value);
2955
- };
2956
- const px = (n) => n === void 0 ? "" : `${n}px`;
2957
- set("position", "fixed");
2958
- set("top", px(pos.top));
2959
- set("left", px(pos.left));
2960
- set(FLOAT_MIN_WIDTH_VAR, px(pos.minWidth));
2961
- set(FLOAT_MAX_WIDTH_VAR, px(pos.maxWidth));
2962
- set(FLOAT_MAX_HEIGHT_VAR, px(pos.maxHeight));
2963
- set(FLOAT_ARROW_VAR, px(pos.arrow));
2964
- },
2965
- [
2966
- anchorRef,
2967
- layerRef,
2968
- preferredSide,
2969
- align,
2970
- matchAnchorWidth,
2971
- offsetToken,
2972
- arrowInset,
2973
- resolveAnchorRect
2974
- ]
2975
- );
2976
- const updateRef = React28.useRef(update);
2977
- updateRef.current = update;
2978
- const attachLayer = React28.useCallback(
2979
- (node) => {
2980
- layerRef.current = node;
2981
- setAttached(node !== null);
2982
- },
2983
- [layerRef]
2984
- );
2985
- const active = enabled && attached;
2986
- React28.useLayoutEffect(() => {
2987
- if (active) update(true);
2988
- }, [active, update]);
2989
- React28.useLayoutEffect(() => {
2990
- if (!active) return;
2991
- let frame = 0;
2992
- let remeasure = false;
2993
- const schedule = (measure) => {
2994
- remeasure ||= measure;
2995
- cancelAnimationFrame(frame);
2996
- frame = requestAnimationFrame(() => {
2997
- updateRef.current(remeasure);
2998
- remeasure = false;
2999
- });
3000
- };
3001
- const follow = () => schedule(false);
3002
- const resize = () => schedule(true);
3003
- window.addEventListener("resize", resize);
3004
- const scrollTargets = getScrollContainers(anchorRef.current);
3005
- for (const target of scrollTargets) {
3006
- target.addEventListener("scroll", follow, { passive: true });
3007
- }
3008
- window.visualViewport?.addEventListener("resize", resize);
3009
- const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(follow);
3010
- if (layerRef.current) observer?.observe(layerRef.current);
3011
- if (anchorRef.current) observer?.observe(anchorRef.current);
3012
- return () => {
3013
- cancelAnimationFrame(frame);
3014
- window.removeEventListener("resize", resize);
3015
- for (const target of scrollTargets) target.removeEventListener("scroll", follow);
3016
- window.visualViewport?.removeEventListener("resize", resize);
3017
- observer?.disconnect();
3018
- };
3019
- }, [active, anchorRef, layerRef]);
3020
- return { side: resolvedSide, attachLayer };
3021
- }
3022
-
3023
- // src/hooks/useScrollLock.ts
3024
- import * as React29 from "react";
3025
- var lockCount = 0;
3026
- var saved = null;
3027
- function lockScroll() {
3028
- if (lockCount === 0) {
3029
- const { body, documentElement } = document;
3030
- const scrollbarWidth = window.innerWidth - documentElement.clientWidth;
3031
- saved = { overflow: body.style.overflow, paddingRight: body.style.paddingRight };
3032
- if (scrollbarWidth > 0) {
3033
- const padding = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
3034
- body.style.paddingRight = `${padding + scrollbarWidth}px`;
3035
- }
3036
- body.style.overflow = "hidden";
3037
- }
3038
- lockCount++;
3039
- }
3040
- function unlockScroll() {
3041
- lockCount = Math.max(0, lockCount - 1);
3042
- if (lockCount === 0 && saved) {
3043
- document.body.style.overflow = saved.overflow;
3044
- document.body.style.paddingRight = saved.paddingRight;
3045
- saved = null;
3046
- }
3047
- }
3048
- function useScrollLock(enabled) {
3049
- React29.useEffect(() => {
3050
- if (!enabled) return;
3051
- lockScroll();
3052
- return unlockScroll;
3053
- }, [enabled]);
3054
- }
3055
-
3056
- // src/hooks/useSwipeDismiss.ts
3057
- import * as React30 from "react";
3058
- var SLOP_PX = 8;
3059
- var DISTANCE_RATIO = 0.3;
3060
- var FLICK_VELOCITY = 0.5;
3061
- var VELOCITY_WINDOW_MS = 100;
3062
- var NO_DRAG = "input, textarea, select, [contenteditable], [role='slider']";
3063
- var SWIPE_OFFSET_VAR = "--swipe-offset";
3064
- var OVERPULL_PX = 24;
3065
- function rubberBand(distance) {
3066
- return -OVERPULL_PX * (1 - 1 / (1 + Math.abs(distance) / OVERPULL_PX));
3067
- }
3068
- function inCrossScroller(target, panel, horizontal) {
3069
- for (let node = target; node && node !== panel; node = node.parentElement) {
3070
- const style = getComputedStyle(node);
3071
- const overflow = horizontal ? style.overflowX : style.overflowY;
3072
- const scrolls = horizontal ? node.scrollWidth > node.clientWidth : node.scrollHeight > node.clientHeight;
3073
- if (scrolls && (overflow === "auto" || overflow === "scroll")) return true;
3074
- }
3075
- return false;
3076
- }
3077
- function useSwipeDismiss({
3078
- enabled,
3079
- direction,
3080
- onDismiss,
3081
- handle,
3082
- touchAnywhere = false,
3083
- onProgress
3084
- }) {
3085
- const optionsRef = React30.useRef({ direction, onDismiss, handle, touchAnywhere, onProgress });
3086
- optionsRef.current = { direction, onDismiss, handle, touchAnywhere, onProgress };
3087
- const cleanupRef = React30.useRef(null);
3088
- React30.useEffect(() => () => cleanupRef.current?.(), []);
3089
- const onPointerDown2 = React30.useCallback(
3090
- (event) => {
3091
- if (!enabled || event.defaultPrevented || !event.isPrimary || event.button !== 0) return;
3092
- const { direction: direction2, handle: handle2, touchAnywhere: touchAnywhere2 } = optionsRef.current;
3093
- const panel = event.currentTarget;
3094
- const target = event.target;
3095
- if (target.closest(NO_DRAG)) return;
3096
- const fromHandle = target.closest(handle2) !== null && panel.contains(target.closest(handle2));
3097
- const horizontal = direction2 !== "down";
3098
- if (!fromHandle) {
3099
- if (!touchAnywhere2 || event.pointerType !== "touch") return;
3100
- if (inCrossScroller(target, panel, horizontal)) return;
3101
- }
3102
- cleanupRef.current?.();
3103
- const pointerId = event.pointerId;
3104
- const sign = direction2 === "left" ? -1 : 1;
3105
- const start = horizontal ? event.clientX : event.clientY;
3106
- const startCross = horizontal ? event.clientY : event.clientX;
3107
- let dragging = false;
3108
- let offset = 0;
3109
- let samples = [];
3110
- const full = horizontal ? panel.offsetWidth : panel.offsetHeight;
3111
- const write = (value, progress = full > 0 ? value / full : value > 0 ? 1 : 0) => {
3112
- panel.style.setProperty(SWIPE_OFFSET_VAR, `${value * sign}px`);
3113
- optionsRef.current.onProgress?.(Math.min(1, Math.max(0, progress)));
3114
- };
3115
- const finish = () => {
3116
- window.removeEventListener("pointermove", onMove);
3117
- window.removeEventListener("pointerup", onUp);
3118
- window.removeEventListener("pointercancel", onCancel);
3119
- cleanupRef.current = null;
3120
- };
3121
- const settle = (dismiss) => {
3122
- delete panel.dataset.swiping;
3123
- if (dismiss) {
3124
- panel.dataset.swipeDismissed = "";
3125
- write(full, 1);
3126
- optionsRef.current.onDismiss();
3127
- } else {
3128
- write(0);
3129
- }
3130
- };
3131
- const onMove = (move) => {
3132
- if (move.pointerId !== pointerId) return;
3133
- const along = ((horizontal ? move.clientX : move.clientY) - start) * sign;
3134
- const across = (horizontal ? move.clientY : move.clientX) - startCross;
3135
- if (!dragging) {
3136
- if (Math.abs(along) < SLOP_PX && Math.abs(across) < SLOP_PX) return;
3137
- if (Math.abs(across) > Math.abs(along) || !fromHandle && along < 0) {
3138
- finish();
3139
- return;
3140
- }
3141
- dragging = true;
3142
- panel.dataset.swiping = "";
3143
- panel.setPointerCapture?.(pointerId);
3144
- }
3145
- move.preventDefault();
3146
- offset = along > 0 ? along : rubberBand(along);
3147
- write(offset);
3148
- const now = move.timeStamp;
3149
- samples.push({ t: now, d: along });
3150
- samples = samples.filter((s) => now - s.t <= VELOCITY_WINDOW_MS);
3151
- };
3152
- const onUp = (up) => {
3153
- if (up.pointerId !== pointerId) return;
3154
- finish();
3155
- if (!dragging) return;
3156
- const first = samples[0];
3157
- const last = samples[samples.length - 1];
3158
- const elapsed = first && last ? last.t - first.t : 0;
3159
- const velocity = elapsed > 0 ? (last.d - first.d) / elapsed : 0;
3160
- settle(offset > full * DISTANCE_RATIO || offset > SLOP_PX && velocity > FLICK_VELOCITY);
3161
- };
3162
- const onCancel = (cancel) => {
3163
- if (cancel.pointerId !== pointerId) return;
3164
- finish();
3165
- if (dragging) settle(false);
3166
- };
3167
- window.addEventListener("pointermove", onMove, { passive: false });
3168
- window.addEventListener("pointerup", onUp);
3169
- window.addEventListener("pointercancel", onCancel);
3170
- cleanupRef.current = finish;
3171
- },
3172
- [enabled]
3173
- );
3174
- return { onPointerDown: onPointerDown2 };
3175
- }
3176
-
3177
- // src/internal/overlay/useFloatingLayer.ts
3178
- function useFloatingLayer({
3179
- open,
3180
- onOpenChange,
3181
- triggerRef,
3182
- closeOnEscape = true,
3183
- closeOnOutsideClick = true,
3184
- dismiss = "pointerdown",
3185
- focusOnOpen = false,
3186
- trap = false,
3187
- tabExit = "none",
3188
- exitDuration = "fast",
3189
- skipExit = false,
3190
- sheet: sheetOption = false,
3191
- ...positionOptions
3192
- }) {
3193
- const sheet = useMediaQuery(COMPACT_QUERY, sheetOption);
3194
- const presence = usePresence(open, { exitDuration: sheet ? "base" : exitDuration });
3195
- const mounted = presence.mounted && (open || !skipExit);
3196
- const contentRef = React31.useRef(null);
3197
- const position = usePosition(mounted && !sheet, triggerRef, contentRef, positionOptions);
3198
- useScrollLock(open && sheet);
3199
- const [panel, setPanel] = React31.useState(null);
3200
- const { attachLayer } = position;
3201
- const panelRef = React31.useCallback(
3202
- (node) => {
3203
- attachLayer(node);
3204
- setPanel(node);
3205
- },
3206
- [attachLayer]
3207
- );
3208
- const outsideRef = React31.useRef(false);
3209
- const close = React31.useCallback(() => {
3210
- outsideRef.current = false;
3211
- onOpenChange(false);
3212
- }, [onOpenChange]);
3213
- const dismissOutside = React31.useCallback(() => {
3214
- outsideRef.current = true;
3215
- onOpenChange(false);
3216
- }, [onOpenChange]);
3217
- const swipe = useSwipeDismiss({
3218
- enabled: sheet && open && closeOnOutsideClick,
3219
- direction: "down",
3220
- onDismiss: dismissOutside,
3221
- handle: "[data-swipe-handle]"
3222
- });
3223
- const onDismiss = (reason) => {
3224
- if (reason === "escape") {
3225
- if (closeOnEscape) close();
3226
- } else if (closeOnOutsideClick) {
3227
- dismissOutside();
3228
- }
3229
- };
3230
- const layer = useLayer(open, {
3231
- refs: [contentRef, triggerRef],
3232
- dismiss,
3233
- trap,
3234
- onDismiss
3235
- });
3236
- const passive = dismiss === "none";
3237
- React31.useEffect(() => {
3238
- if (!open || !panel || passive) return;
3239
- outsideRef.current = false;
3240
- if (focusOnOpen) focusInto(panel);
3241
- return () => {
3242
- if (outsideRef.current) return;
3243
- const active = document.activeElement;
3244
- if (!active || active === document.body || panel.contains(active)) {
3245
- focusBack(triggerRef.current);
3246
- }
3247
- };
3248
- }, [open, panel, passive, focusOnOpen, triggerRef]);
3249
- const onKeyDown2 = (event) => {
3250
- if (event.key !== "Tab" || event.defaultPrevented || trap || tabExit === "none") return;
3251
- const node = contentRef.current;
3252
- if (!node) return;
3253
- if (tabExit === "edges") {
3254
- const focusable = getFocusable(node);
3255
- const active = document.activeElement;
3256
- const leaving = event.shiftKey ? active === node || active === focusable[0] : focusable.length === 0 || active === focusable[focusable.length - 1];
3257
- if (!leaving) return;
3258
- }
3259
- if (event.shiftKey) event.preventDefault();
3260
- focusBack(triggerRef.current);
3261
- close();
3262
- };
3263
- return {
3264
- open,
3265
- presence,
3266
- mounted,
3267
- side: position.side,
3268
- sheet,
3269
- onSheetPointerDown: swipe.onPointerDown,
3270
- panelRef,
3271
- contentRef,
3272
- layer,
3273
- close,
3274
- onKeyDown: onKeyDown2
3275
- };
3276
- }
3277
-
3278
- // src/components/select/Select.module.css
3279
- var Select_default = {
3280
- trigger: "Select_trigger",
3281
- triggerMain: "Select_triggerMain",
3282
- value: "Select_value",
3283
- valueBody: "Select_valueBody",
3284
- triggerIcon: "Select_triggerIcon",
3285
- chevron: "Select_chevron",
3286
- clear: "Select_clear",
3287
- content: "Select_content",
3288
- listbox: "Select_listbox",
3289
- search: "Select_search",
3290
- group: "Select_group",
3291
- separator: "Select_separator",
3292
- status: "Select_status",
3293
- item: "Select_item",
3294
- itemText: "Select_itemText",
3295
- itemTitle: "Select_itemTitle",
3296
- itemDescription: "Select_itemDescription",
3297
- itemMeta: "Select_itemMeta",
3298
- media: "Select_media"
3299
- };
3300
-
3301
- // src/components/select/SelectItem.tsx
3302
- import * as React33 from "react";
3303
-
3304
- // src/internal/HighlightMatch.tsx
3305
- import * as React32 from "react";
3306
-
3307
- // src/internal/HighlightMatch.module.css
3308
- var HighlightMatch_default = {
3309
- match: "HighlightMatch_match"
3310
- };
3311
-
3312
- // src/internal/HighlightMatch.tsx
3313
- import { Fragment as Fragment8, jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
3314
- function matchIndex(text, query) {
3315
- if (!query) return -1;
3316
- return text.toLowerCase().indexOf(query.toLowerCase());
3317
- }
3318
- function HighlightMatch({ text, query }) {
3319
- const q = query.trim();
3320
- const at = matchIndex(text, q);
3321
- if (at < 0) return /* @__PURE__ */ jsx26(Fragment8, { children: text });
3322
- return /* @__PURE__ */ jsxs15("span", { children: [
3323
- text.slice(0, at),
3324
- /* @__PURE__ */ jsx26("mark", { className: HighlightMatch_default.match, children: text.slice(at, at + q.length) }),
3325
- text.slice(at + q.length)
3326
- ] });
3327
- }
3328
- function highlightChildren(children, query) {
3329
- if (!query.trim()) return children;
3330
- return React32.Children.map(
3331
- children,
3332
- (child) => typeof child === "string" || typeof child === "number" ? /* @__PURE__ */ jsx26(HighlightMatch, { text: String(child), query }) : child
3333
- );
3334
- }
3335
-
3336
- // src/components/select/selectContext.ts
3337
- var normalize = (text) => text.trim().toLocaleLowerCase();
3338
- function createItemRegistry() {
3339
- const entries = /* @__PURE__ */ new Map();
3340
- const version = createStore(0);
3341
- const bump = () => version.set(version.get() + 1);
3342
- return {
3343
- version,
3344
- labelOf: (value) => entries.get(value)?.label ?? value,
3345
- register: (value, label, haystack) => {
3346
- const entry = entries.get(value);
3347
- entries.set(value, { label, haystack, mounted: (entry?.mounted ?? 0) + 1 });
3348
- bump();
3349
- return () => {
3350
- const current = entries.get(value);
3351
- if (current) current.mounted -= 1;
3352
- bump();
3353
- };
3354
- },
3355
- anyMatch: (query) => {
3356
- for (const entry of entries.values()) {
3357
- if (entry.mounted > 0 && (query === "" || entry.haystack.includes(query))) return true;
3358
- }
3359
- return false;
3360
- }
3361
- };
3362
- }
3363
- var [SelectProvider, useSelectContext] = createComponentContext("Select");
3364
-
3365
- // src/components/select/SelectItem.tsx
3366
- import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
3367
- var MEDIA_SIZE = { xs: "xs", s: "xs", m: "s", l: "s", xl: "m" };
3368
- function textOf(node) {
3369
- if (node == null || typeof node === "boolean") return "";
3370
- if (typeof node === "string" || typeof node === "number") return String(node);
3371
- if (Array.isArray(node)) return node.map(textOf).join("");
3372
- if (React33.isValidElement(node))
3373
- return textOf(node.props.children);
3374
- return "";
3375
- }
3376
- function SelectItemIcon({ className, ...rest }) {
3377
- return /* @__PURE__ */ jsx27("span", { "aria-hidden": "true", className: cx(menu_default.itemIcon, className), ...rest });
3378
- }
3379
- SelectItemIcon.displayName = "Select.ItemIcon";
3380
- var OptionQueryContext = React33.createContext("");
3381
- function SelectItemText({ children, className, ...rest }) {
3382
- const query = React33.useContext(OptionQueryContext);
3383
- return /* @__PURE__ */ jsx27("span", { ...rest, className: cx(Select_default.itemTitle, className), children: highlightChildren(children, query) });
3384
- }
3385
- SelectItemText.displayName = "Select.ItemText";
3386
- function SelectItemDescription({
3387
- children,
3388
- className,
3389
- ...rest
3390
- }) {
3391
- const query = React33.useContext(OptionQueryContext);
3392
- return /* @__PURE__ */ jsx27("span", { ...rest, className: cx(Select_default.itemDescription, className), children: highlightChildren(children, query) });
3393
- }
3394
- SelectItemDescription.displayName = "Select.ItemDescription";
3395
- function SelectItemMeta({ children, className, ...rest }) {
3396
- return /* @__PURE__ */ jsx27("span", { ...rest, className: cx(Select_default.itemMeta, className), children });
3397
- }
3398
- SelectItemMeta.displayName = "Select.ItemMeta";
3399
- function splitItemChildren(children) {
3400
- const parts = {
3401
- leading: [],
3402
- body: [],
3403
- meta: [],
3404
- rich: false,
3405
- title: "",
3406
- description: ""
3407
- };
3408
- let plain = "";
3409
- for (const child of React33.Children.toArray(children)) {
3410
- if (!React33.isValidElement(child)) {
3411
- plain += textOf(child);
3412
- parts.body.push(child);
3413
- } else if (child.type === React33.Fragment) {
3414
- const inner = splitItemChildren(child.props.children);
3415
- parts.leading.push(...inner.leading);
3416
- parts.body.push(...inner.body);
3417
- parts.meta.push(...inner.meta);
3418
- parts.rich ||= inner.rich;
3419
- parts.title ||= inner.title;
3420
- parts.description ||= inner.description;
3421
- plain += inner.title;
3422
- } else if (child.type === SelectItemIcon) {
3423
- parts.leading.push(child);
3424
- } else if (child.type === Thumbnail.Root) {
3425
- parts.leading.push(child);
3426
- parts.rich = true;
3427
- } else if (child.type === SelectItemMeta) {
3428
- parts.meta.push(child);
3429
- } else {
3430
- if (child.type === SelectItemText) parts.title = textOf(child.props.children);
3431
- if (child.type === SelectItemDescription) {
3432
- parts.description = textOf(child.props.children);
3433
- parts.rich = true;
3434
- }
3435
- parts.body.push(child);
3436
- }
3437
- }
3438
- parts.title = (parts.title || plain).trim();
3439
- return parts;
3440
- }
3441
- function sizeMedia(leading, size) {
3442
- return leading.map(
3443
- (node) => React33.isValidElement(node) && node.type === Thumbnail.Root ? React33.cloneElement(node, {
3444
- size: node.props.size ?? MEDIA_SIZE[size],
3445
- className: cx(Select_default.media, node.props.className),
3446
- "aria-hidden": true
3447
- }) : node
3448
- );
3449
- }
3450
- function SelectItem({
3451
- value,
3452
- label,
3453
- keywords,
3454
- disabled,
3455
- className,
3456
- children,
3457
- ref
3458
- }) {
3459
- const { multiple, size, selected, highlight, pick, registry, listboxId, query } = useSelectContext();
3460
- const parts = splitItemChildren(children);
3461
- const resolvedLabel = label || parts.title || value;
3462
- const haystack = normalize(`${resolvedLabel} ${parts.description} ${keywords ?? ""}`);
3463
- const isSelected = selected.includes(value);
3464
- const isHighlighted = useStoreSlice(highlight, (current) => current === value);
3465
- React33.useLayoutEffect(
3466
- () => registry.register(value, resolvedLabel, haystack),
3467
- [registry, value, resolvedLabel, haystack]
3468
- );
3469
- const search = normalize(query);
3470
- if (search !== "" && !haystack.includes(search)) return null;
3471
- return (
3472
- // biome-ignore lint/a11y/useFocusableInteractive: focus stays on the listbox / search (aria-activedescendant)
3473
- // biome-ignore lint/a11y/useKeyWithClickEvents: the keyboard is handled on the listbox
3474
- /* @__PURE__ */ jsxs16(
3475
- "div",
3476
- {
3477
- ref,
3478
- id: optionDomId(listboxId, value),
3479
- role: "option",
3480
- "aria-selected": isSelected,
3481
- "aria-disabled": disabled || void 0,
3482
- className: cx(menu_default.item, Select_default.item, className),
3483
- onClick: () => {
3484
- if (!disabled) pick(value);
3485
- },
3486
- onMouseMove: () => {
3487
- if (!disabled && !isHighlighted) highlight.set(value);
3488
- },
3489
- ...toDataAttributes({
3490
- value,
3491
- label: resolvedLabel,
3492
- selected: isSelected,
3493
- highlighted: isHighlighted,
3494
- disabled: Boolean(disabled),
3495
- rich: parts.rich || void 0
3496
- }),
3497
- children: [
3498
- multiple ? /* @__PURE__ */ jsx27(Checkbox.Indicator, { checked: isSelected, disabled, size: stepDown(size) }) : null,
3499
- sizeMedia(parts.leading, size),
3500
- /* @__PURE__ */ jsx27("span", { className: Select_default.itemText, children: /* @__PURE__ */ jsx27(OptionQueryContext.Provider, { value: query, children: highlightChildren(parts.body, query) }) }),
3501
- parts.meta,
3502
- multiple ? null : /* @__PURE__ */ jsx27("span", { className: menu_default.check, "aria-hidden": "true", children: isSelected ? /* @__PURE__ */ jsx27(Icon, { name: "action.check" }) : null })
3503
- ]
3504
- }
3505
- )
3506
- );
3507
- }
3508
- SelectItem.displayName = "Select.Item";
3509
-
3510
- // src/components/select/Select.tsx
3511
- import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
3512
- var SELECT_LABELS = {
3513
- search: "\u041F\u043E\u0438\u0441\u043A",
3514
- empty: "\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",
3515
- emptyHint: "\u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441",
3516
- loading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",
3517
- clear: "\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",
3518
- optional: "\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E"
3519
- };
3520
- function SelectRoot(props) {
3521
- const {
3522
- size = "m",
3523
- label,
3524
- required = false,
3525
- optional,
3526
- hint,
3527
- error,
3528
- invalid,
3529
- focusRing = true,
3530
- disabled = false,
3531
- placeholder,
3532
- id,
3533
- open,
3534
- defaultOpen = false,
3535
- onOpenChange,
3536
- clearable = false,
3537
- loading = false,
3538
- labels: labelsProp,
3539
- className,
3540
- children,
3541
- multiple: _multiple,
3542
- value: _value,
3543
- defaultValue: _defaultValue,
3544
- onValueChange: _onValueChange,
3545
- ...rest
3546
- } = props;
3547
- const multiple = props.multiple === true;
3548
- const labels = React34.useMemo(() => ({ ...SELECT_LABELS, ...labelsProp }), [labelsProp]);
3549
- const ids = useFieldFrame(id, { hint, error, invalid });
3550
- const [value, setValue] = useControllableState({
3551
- value: props.value,
3552
- defaultValue: props.defaultValue ?? (multiple ? [] : void 0),
3553
- onChange: props.onValueChange
3554
- });
3555
- const selected = React34.useMemo(
3556
- () => Array.isArray(value) ? value : value ? [value] : [],
3557
- [value]
3558
- );
3559
- const [isOpen, setOpen] = useControllableState({
3560
- value: open,
3561
- defaultValue: defaultOpen,
3562
- onChange: onOpenChange
3563
- });
3564
- const highlight = useCreateStore(void 0);
3565
- const [registry] = React34.useState(createItemRegistry);
3566
- const [query, setQuery] = React34.useState("");
3567
- const triggerRef = React34.useRef(null);
3568
- if (!isOpen && query !== "") setQuery("");
3569
- const pick = React34.useCallback(
3570
- (optionValue) => {
3571
- if (multiple) {
3572
- setValue((prev) => {
3573
- const list = Array.isArray(prev) ? prev : [];
3574
- return list.includes(optionValue) ? list.filter((item) => item !== optionValue) : [...list, optionValue];
3575
- });
3576
- return;
3577
- }
3578
- setValue(optionValue);
3579
- setOpen(false);
3580
- },
3581
- [multiple, setValue, setOpen]
3582
- );
3583
- const clear = React34.useCallback(() => setValue(multiple ? [] : ""), [multiple, setValue]);
3584
- const context = React34.useMemo(
3585
- () => ({
3586
- size,
3587
- invalid: ids.invalid,
3588
- focusRing,
3589
- required,
3590
- disabled,
3591
- placeholder,
3592
- multiple,
3593
- selected,
3594
- registry,
3595
- pick,
3596
- clear,
3597
- clearable,
3598
- loading,
3599
- isOpen,
3600
- setOpen,
3601
- highlight,
3602
- query,
3603
- setQuery,
3604
- triggerId: ids.controlId,
3605
- listboxId: `${ids.controlId}-listbox`,
3606
- describedBy: ids.describedBy,
3607
- triggerRef,
3608
- labels
3609
- }),
3610
- [
3611
- size,
3612
- ids.invalid,
3613
- ids.controlId,
3614
- ids.describedBy,
3615
- focusRing,
3616
- required,
3617
- disabled,
3618
- placeholder,
3619
- multiple,
3620
- selected,
3621
- registry,
3622
- pick,
3623
- clear,
3624
- clearable,
3625
- loading,
3626
- isOpen,
3627
- setOpen,
3628
- highlight,
3629
- query,
3630
- labels
3631
- ]
3632
- );
3633
- return /* @__PURE__ */ jsx28(
3634
- FieldFrame,
3635
- {
3636
- ...rest,
3637
- size,
3638
- ids,
3639
- label,
3640
- required,
3641
- optional,
3642
- hint,
3643
- error,
3644
- disabled,
3645
- optionalLabel: labels.optional,
3646
- className,
3647
- children: /* @__PURE__ */ jsx28(SelectProvider, { value: context, children: /* @__PURE__ */ jsx28(ControlSizeProvider, { value: size, children }) })
3648
- }
3649
- );
3650
- }
3651
- SelectRoot.displayName = "Select.Root";
3652
- function SelectTrigger({
3653
- className,
3654
- children,
3655
- onClick: onClick2,
3656
- onKeyDown: onKeyDown2,
3657
- "aria-describedby": ariaDescribedBy,
3658
- ref,
3659
- ...rest
3660
- }) {
3661
- const {
3662
- isOpen,
3663
- setOpen,
3664
- triggerId,
3665
- listboxId,
3666
- disabled,
3667
- size,
3668
- invalid,
3669
- focusRing,
3670
- required,
3671
- describedBy,
3672
- triggerRef,
3673
- loading,
3674
- clearable,
3675
- selected,
3676
- clear,
3677
- labels
3678
- } = useSelectContext();
3679
- const mergedRef = useMergedRefs(triggerRef, ref);
3680
- const showClear = clearable && selected.length > 0 && !disabled && !loading;
3681
- return /* @__PURE__ */ jsxs17(
3682
- "button",
3683
- {
3684
- ...rest,
3685
- ref: mergedRef,
3686
- id: triggerId,
3687
- type: "button",
3688
- role: "combobox",
3689
- "aria-expanded": isOpen,
3690
- "aria-haspopup": "listbox",
3691
- "aria-controls": listboxId,
3692
- "aria-invalid": invalid || void 0,
3693
- "aria-required": required || void 0,
3694
- "aria-describedby": [ariaDescribedBy, describedBy].filter(Boolean).join(" ") || void 0,
3695
- "aria-busy": loading || void 0,
3696
- disabled,
3697
- className: cx(fieldTriggerClass, Select_default.trigger, className),
3698
- onClick: (event) => {
3699
- onClick2?.(event);
3700
- if (!event.defaultPrevented) setOpen(!isOpen);
3701
- },
3702
- onKeyDown: (event) => {
3703
- onKeyDown2?.(event);
3704
- if (event.defaultPrevented) return;
3705
- if (["ArrowDown", "ArrowUp", " ", "Enter"].includes(event.key)) {
3706
- event.preventDefault();
3707
- if (!isOpen) setOpen(true);
3708
- } else if (showClear && (event.key === "Delete" || event.key === "Backspace")) {
3709
- event.preventDefault();
3710
- clear();
3711
- }
3712
- },
3713
- ...toDataAttributes({
3714
- state: isOpen ? "open" : "closed",
3715
- size,
3716
- invalid: invalid || void 0,
3717
- loading: loading || void 0,
3718
- disabled: disabled || void 0,
3719
- "focus-ring": focusRing ? void 0 : false
3720
- }),
3721
- children: [
3722
- /* @__PURE__ */ jsx28("span", { className: Select_default.triggerMain, children }),
3723
- showClear ? (
3724
- // A segment, not a button: interactive content inside a <button> is invalid. The keyboard
3725
- // clears with Delete / Backspace on the trigger.
3726
- /* @__PURE__ */ jsx28(
3727
- "span",
3728
- {
3729
- className: Select_default.clear,
3730
- "aria-hidden": "true",
3731
- title: labels.clear,
3732
- "data-select-clear": "",
3733
- onMouseDown: (event) => event.preventDefault(),
3734
- onClick: (event) => {
3735
- event.stopPropagation();
3736
- clear();
3737
- },
3738
- children: /* @__PURE__ */ jsx28(Icon, { name: "action.close" })
3739
- }
3740
- )
3741
- ) : null,
3742
- /* @__PURE__ */ jsx28("span", { className: Select_default.chevron, "aria-hidden": "true", children: loading ? /* @__PURE__ */ jsx28(Spinner, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx28(Icon, { name: "nav.chevronDown" }) })
3743
- ]
3744
- }
3745
- );
3746
- }
3747
- SelectTrigger.displayName = "Select.Trigger";
3748
- function SelectValue({ renderValue, className, ...rest }) {
3749
- const { selected, registry, placeholder, multiple, size } = useSelectContext();
3750
- const text = useStoreSlice(registry.version, () => selected.map(registry.labelOf).join(", "));
3751
- if (selected.length > 0 && renderValue && !multiple) {
3752
- const value = selected[0] ?? "";
3753
- const parts = splitItemChildren(renderValue({ value, label: text }));
3754
- return /* @__PURE__ */ jsxs17(
3755
- "span",
3756
- {
3757
- ...rest,
3758
- className: cx(Select_default.value, className),
3759
- ...toDataAttributes({ rich: parts.rich || void 0 }),
3760
- children: [
3761
- sizeMedia(parts.leading, size),
3762
- /* @__PURE__ */ jsx28("span", { className: Select_default.valueBody, children: parts.body })
3763
- ]
3764
- }
3765
- );
3766
- }
3767
- return /* @__PURE__ */ jsx28(
3768
- "span",
3769
- {
3770
- ...rest,
3771
- className: cx(Select_default.value, className),
3772
- ...toDataAttributes({ placeholder: selected.length === 0 || void 0 }),
3773
- children: selected.length > 0 ? text : placeholder
3774
- }
3775
- );
3776
- }
3777
- SelectValue.displayName = "Select.Value";
3778
- function SelectTriggerIcon({ className, ...rest }) {
3779
- return /* @__PURE__ */ jsx28("span", { "aria-hidden": "true", className: cx(Select_default.triggerIcon, className), ...rest });
3780
- }
3781
- SelectTriggerIcon.displayName = "Select.TriggerIcon";
3782
- function SelectContent({ searchable = false, className, children, ...rest }) {
3783
- const {
3784
- isOpen,
3785
- setOpen,
3786
- pick,
3787
- triggerId,
3788
- listboxId,
3789
- triggerRef,
3790
- highlight,
3791
- multiple,
3792
- size,
3793
- query,
3794
- setQuery,
3795
- loading,
3796
- labels,
3797
- registry
3798
- } = useSelectContext();
3799
- const listboxRef = React34.useRef(null);
3800
- const floating = useFloatingLayer({
3801
- open: isOpen,
3802
- onOpenChange: setOpen,
3803
- triggerRef,
3804
- side: "bottom",
3805
- align: "start",
3806
- matchAnchorWidth: true,
3807
- focusOnOpen: true,
3808
- tabExit: "always",
3809
- sheet: true
3810
- });
3811
- const highlighted = useStoreSlice(highlight, (value) => value);
3812
- const isEmpty = useStoreSlice(registry.version, () => !registry.anyMatch(normalize(query)));
3813
- const typeahead = useTypeahead();
3814
- const handleKeyDown = (event) => {
3815
- const inSearch = event.target instanceof HTMLInputElement;
3816
- if (inSearch && [" ", "Home", "End"].includes(event.key)) return;
3817
- const items = enabledOptions(listboxRef.current);
3818
- const printable = event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;
3819
- if (printable && !inSearch && (event.key !== " " || typeahead.isTyping())) {
3820
- event.preventDefault();
3821
- const match = typeahead.find(event.key, items, highlight.get());
3822
- if (match) {
3823
- highlight.set(match.dataset.value);
3824
- match.scrollIntoView?.({ block: "nearest" });
3825
- }
3826
- return;
3827
- }
3828
- handleListboxKeyDown(event, { items, highlight, onSelect: pick });
3829
- };
3830
- if (!floating.mounted) return /* @__PURE__ */ jsx28("div", { hidden: true, children });
3831
- const activeDescendant = isOpen && highlighted !== void 0 ? optionDomId(listboxId, highlighted) : void 0;
3832
- return /* @__PURE__ */ jsxs17(
3833
- FloatingPanel,
3834
- {
3835
- ...rest,
3836
- floating,
3837
- size,
3838
- className: cx(menu_default.tier, menu_default.menu, Select_default.content, className),
3839
- onKeyDown: handleKeyDown,
3840
- ...toDataAttributes({ searching: query !== "" || void 0 }),
3841
- children: [
3842
- searchable ? (
3843
- // The permanent focus of the panel: no ring, the caret is the indicator (foundation §7).
3844
- /* @__PURE__ */ jsxs17("div", { className: cx(menu_default.searchRow, Select_default.search), "data-focus-ring": "false", children: [
3845
- /* @__PURE__ */ jsx28(Icon, { name: "action.search", size: "s" }),
3846
- /* @__PURE__ */ jsx28(
3847
- "input",
3848
- {
3849
- type: "text",
3850
- className: menu_default.searchInput,
3851
- value: query,
3852
- placeholder: labels.search,
3853
- "aria-label": labels.search,
3854
- "aria-controls": listboxId,
3855
- "aria-activedescendant": activeDescendant,
3856
- "aria-autocomplete": "list",
3857
- autoComplete: "off",
3858
- spellCheck: false,
3859
- "data-autofocus": "",
3860
- onChange: (event) => setQuery(event.target.value)
3861
- }
3862
- )
3863
- ] })
3864
- ) : null,
3865
- loading ? /* @__PURE__ */ jsxs17("div", { className: Select_default.status, role: "status", children: [
3866
- /* @__PURE__ */ jsx28(Spinner, { "aria-hidden": "true" }),
3867
- labels.loading
3868
- ] }) : null,
3869
- /* @__PURE__ */ jsx28(
3870
- ScrollContainer,
3871
- {
3872
- ref: listboxRef,
3873
- id: listboxId,
3874
- role: "listbox",
3875
- "aria-multiselectable": multiple || void 0,
3876
- "aria-labelledby": triggerId,
3877
- "aria-activedescendant": searchable ? void 0 : activeDescendant,
3878
- "aria-busy": loading || void 0,
3879
- tabIndex: -1,
3880
- "data-autofocus": searchable ? void 0 : "",
3881
- className: Select_default.listbox,
3882
- children
3883
- }
3884
- ),
3885
- isEmpty && !loading ? /* @__PURE__ */ jsxs17(EmptyPage.Root, { layout: "compact", role: "status", children: [
3886
- /* @__PURE__ */ jsx28(EmptyPage.Title, { as: "p", children: labels.empty }),
3887
- query !== "" && labels.emptyHint ? /* @__PURE__ */ jsx28(EmptyPage.Description, { children: labels.emptyHint }) : null
3888
- ] }) : null,
3889
- /* @__PURE__ */ jsx28(HighlightOnOpen, { listboxRef, highlight })
3890
- ]
3891
- }
3892
- );
3893
- }
3894
- SelectContent.displayName = "Select.Content";
3895
- function HighlightOnOpen({
3896
- listboxRef,
3897
- highlight
3898
- }) {
3899
- const { isOpen, query, selected } = useSelectContext();
3900
- const selectedRef = React34.useRef(selected);
3901
- selectedRef.current = selected;
3902
- React34.useLayoutEffect(() => {
3903
- if (!isOpen) return;
3904
- const options = enabledOptions(listboxRef.current);
3905
- const first = options.find((item) => selectedRef.current.includes(item.dataset.value ?? ""));
3906
- highlight.set(first?.dataset.value);
3907
- first?.scrollIntoView?.({ block: "nearest" });
3908
- return () => highlight.set(void 0);
3909
- }, [isOpen, listboxRef, highlight]);
3910
- React34.useLayoutEffect(() => {
3911
- if (query !== "") highlight.set(enabledOptions(listboxRef.current)[0]?.dataset.value);
3912
- }, [query, listboxRef, highlight]);
3913
- return null;
3914
- }
3915
- function SelectGroup({ className, ...rest }) {
3916
- return /* @__PURE__ */ jsx28(MenuGroup, { ...rest, className: cx(Select_default.group, className) });
3917
- }
3918
- SelectGroup.displayName = "Select.Group";
3919
- function SelectSeparator({ className, ...rest }) {
3920
- return /* @__PURE__ */ jsx28(Divider, { ...rest, className: cx(menu_default.separator, Select_default.separator, className) });
3921
- }
3922
- SelectSeparator.displayName = "Select.Separator";
3923
- var Select = {
3924
- Root: SelectRoot,
3925
- Trigger: SelectTrigger,
3926
- Value: SelectValue,
3927
- TriggerIcon: SelectTriggerIcon,
3928
- Content: SelectContent,
3929
- Item: SelectItem,
3930
- ItemIcon: SelectItemIcon,
3931
- ItemText: SelectItemText,
3932
- ItemDescription: SelectItemDescription,
3933
- ItemMeta: SelectItemMeta,
3934
- Group: SelectGroup,
3935
- Separator: SelectSeparator
3936
- };
3937
-
3938
- export {
3939
- ControlSizeProvider,
3940
- useOptionalControlSize,
3941
- useControlSize,
3942
- cx,
3943
- toDataAttributes,
3944
- fieldSurfaceClass,
3945
- fieldTierClass,
3946
- fieldTriggerClass,
3947
- iconLayout,
3948
- prefersReducedMotion,
3949
- motionDurationMs,
3950
- exitTimeoutMs,
3951
- usePresence,
3952
- visuallyHiddenClass,
3953
- VisuallyHidden,
3954
- useMergedRefs,
3955
- Slot,
3956
- touchTargetBlockClass,
3957
- textTone_default,
3958
- Spinner,
3959
- Button,
3960
- Divider,
3961
- Icon,
3962
- createIcon,
3963
- useEdgeOverflow,
3964
- ScrollContainer,
3965
- palette_default,
3966
- RollingNumber,
3967
- createComponentContext,
3968
- createImageSlot,
3969
- useControllableState,
3970
- overlayMotion_default,
3971
- Portal,
3972
- sheet_default,
3973
- useNestedSurfaceDepth,
3974
- SurfaceDepthProvider,
3975
- useStageDepth,
3976
- focusInto,
3977
- focusBack,
3978
- activeElement,
3979
- LayerProvider,
3980
- useLayer,
3981
- FloatingPanel,
3982
- FloatingTrigger,
3983
- COMPACT_QUERY,
3984
- useMediaQuery,
3985
- AnchorRectProvider,
3986
- readCssLengthPx,
3987
- getViewportPadPx,
3988
- useScrollLock,
3989
- useSwipeDismiss,
3990
- useFloatingLayer,
3991
- rovingIndex,
3992
- gridIndex,
3993
- controlSizes,
3994
- stepDown,
3995
- variants,
3996
- tones,
3997
- paletteColors,
3998
- dataStates,
3999
- textTones,
4000
- enterMotion_default,
4001
- Hint,
4002
- choiceInputClass,
4003
- choiceVisualClass,
4004
- ChoiceField,
4005
- ChoiceLabel,
4006
- Label,
4007
- formatLabel,
4008
- useFieldFrame,
4009
- FieldFrame,
4010
- FieldCounter,
4011
- Checkbox,
4012
- COLOR_PRESETS,
4013
- useSwatchOptions,
4014
- swatchClass,
4015
- swatchTierClass,
4016
- SwatchFill,
4017
- SwatchContent,
4018
- SwatchChip,
4019
- sameColor,
4020
- ColorSwatches,
4021
- EmptyPage,
4022
- matchIndex,
4023
- HighlightMatch,
4024
- highlightChildren,
4025
- optionDomId,
4026
- enabledOptions,
4027
- useCreateStore,
4028
- useStoreSlice,
4029
- handleListboxKeyDown,
4030
- menu_default,
4031
- MenuGroup,
4032
- resolveValue,
4033
- DEFAULT_PROGRESS_SEGMENTS_LABELS,
4034
- resolveSegments,
4035
- ProgressBar,
4036
- getPasswordStrength,
4037
- Input,
4038
- Thumbnail,
4039
- Select
4040
- };