@iamfiro/design 0.0.0-stage → 0.3.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 (416) hide show
  1. package/AGENTS.md +82 -0
  2. package/README.md +15 -2
  3. package/agents/INDEX.md +157 -0
  4. package/agents/accordion/AGENTS.md +279 -0
  5. package/agents/action-bar/AGENTS.md +90 -0
  6. package/agents/alert/AGENTS.md +212 -0
  7. package/agents/alert-dialog/AGENTS.md +193 -0
  8. package/agents/app-shell/AGENTS.md +409 -0
  9. package/agents/area-chart/AGENTS.md +183 -0
  10. package/agents/aspect-ratio/AGENTS.md +143 -0
  11. package/agents/avatar/AGENTS.md +130 -0
  12. package/agents/badge/AGENTS.md +217 -0
  13. package/agents/bar-chart/AGENTS.md +386 -0
  14. package/agents/bar-list/AGENTS.md +223 -0
  15. package/agents/brand-icon/AGENTS.md +82 -0
  16. package/agents/breadcrumb/AGENTS.md +133 -0
  17. package/agents/button/AGENTS.md +195 -0
  18. package/agents/card/AGENTS.md +141 -0
  19. package/agents/card-frame/AGENTS.md +227 -0
  20. package/agents/chat-bubble/AGENTS.md +266 -0
  21. package/agents/chat-composer/AGENTS.md +251 -0
  22. package/agents/checkbox/AGENTS.md +113 -0
  23. package/agents/code-block/AGENTS.md +144 -0
  24. package/agents/color-dot/AGENTS.md +120 -0
  25. package/agents/color-picker/AGENTS.md +224 -0
  26. package/agents/colors/AGENTS.md +168 -0
  27. package/agents/combobox/AGENTS.md +218 -0
  28. package/agents/command-menu/AGENTS.md +169 -0
  29. package/agents/comment/AGENTS.md +206 -0
  30. package/agents/context-menu/AGENTS.md +303 -0
  31. package/agents/copy-button/AGENTS.md +84 -0
  32. package/agents/count-badge/AGENTS.md +115 -0
  33. package/agents/countdown/AGENTS.md +101 -0
  34. package/agents/data-grid/AGENTS.md +460 -0
  35. package/agents/date-picker/AGENTS.md +197 -0
  36. package/agents/delta/AGENTS.md +114 -0
  37. package/agents/description-list/AGENTS.md +251 -0
  38. package/agents/dialog/AGENTS.md +391 -0
  39. package/agents/drawer/AGENTS.md +471 -0
  40. package/agents/dropdown-menu/AGENTS.md +322 -0
  41. package/agents/dropzone/AGENTS.md +116 -0
  42. package/agents/elapsed/AGENTS.md +160 -0
  43. package/agents/empty-state/AGENTS.md +203 -0
  44. package/agents/file-chip/AGENTS.md +79 -0
  45. package/agents/file-icon/AGENTS.md +66 -0
  46. package/agents/file-upload/AGENTS.md +168 -0
  47. package/agents/filter-chips/AGENTS.md +167 -0
  48. package/agents/flag/AGENTS.md +67 -0
  49. package/agents/funnel-chart/AGENTS.md +131 -0
  50. package/agents/highlight/AGENTS.md +119 -0
  51. package/agents/hover-card/AGENTS.md +271 -0
  52. package/agents/icon-stack/AGENTS.md +120 -0
  53. package/agents/icon-tile/AGENTS.md +94 -0
  54. package/agents/inline-diff/AGENTS.md +211 -0
  55. package/agents/input/AGENTS.md +261 -0
  56. package/agents/kanban/AGENTS.md +352 -0
  57. package/agents/kbd/AGENTS.md +160 -0
  58. package/agents/layout/AGENTS.md +351 -0
  59. package/agents/line-chart/AGENTS.md +393 -0
  60. package/agents/link/AGENTS.md +53 -0
  61. package/agents/list/AGENTS.md +392 -0
  62. package/agents/marker/AGENTS.md +142 -0
  63. package/agents/masked-text/AGENTS.md +127 -0
  64. package/agents/menubar/AGENTS.md +276 -0
  65. package/agents/multi-select/AGENTS.md +159 -0
  66. package/agents/navigation-menu/AGENTS.md +315 -0
  67. package/agents/notice-stack/AGENTS.md +101 -0
  68. package/agents/number-stepper/AGENTS.md +96 -0
  69. package/agents/otp-input/AGENTS.md +162 -0
  70. package/agents/pagination/AGENTS.md +189 -0
  71. package/agents/phone-input/AGENTS.md +131 -0
  72. package/agents/pie-chart/AGENTS.md +243 -0
  73. package/agents/popover/AGENTS.md +190 -0
  74. package/agents/progress/AGENTS.md +273 -0
  75. package/agents/progress-tracker/AGENTS.md +305 -0
  76. package/agents/rating/AGENTS.md +165 -0
  77. package/agents/relative-time/AGENTS.md +103 -0
  78. package/agents/resizable/AGENTS.md +390 -0
  79. package/agents/scaled-preview/AGENTS.md +111 -0
  80. package/agents/scatter-chart/AGENTS.md +160 -0
  81. package/agents/scroll-area/AGENTS.md +271 -0
  82. package/agents/search-input/AGENTS.md +105 -0
  83. package/agents/segmented-control/AGENTS.md +153 -0
  84. package/agents/select/AGENTS.md +159 -0
  85. package/agents/selector-button/AGENTS.md +122 -0
  86. package/agents/sidebar/AGENTS.md +201 -0
  87. package/agents/skeleton/AGENTS.md +166 -0
  88. package/agents/slider/AGENTS.md +181 -0
  89. package/agents/social-login-button/AGENTS.md +156 -0
  90. package/agents/spark-chart/AGENTS.md +257 -0
  91. package/agents/sparkbar/AGENTS.md +92 -0
  92. package/agents/spinner/AGENTS.md +123 -0
  93. package/agents/split-view/AGENTS.md +290 -0
  94. package/agents/stat/AGENTS.md +138 -0
  95. package/agents/status-icon/AGENTS.md +243 -0
  96. package/agents/step-list/AGENTS.md +313 -0
  97. package/agents/table/AGENTS.md +286 -0
  98. package/agents/tabs/AGENTS.md +305 -0
  99. package/agents/tag-input/AGENTS.md +246 -0
  100. package/agents/time-picker/AGENTS.md +228 -0
  101. package/agents/timeline/AGENTS.md +1018 -0
  102. package/agents/toast/AGENTS.md +266 -0
  103. package/agents/toggle-group/AGENTS.md +216 -0
  104. package/agents/toolbar/AGENTS.md +277 -0
  105. package/agents/tooltip/AGENTS.md +154 -0
  106. package/agents/tracker/AGENTS.md +158 -0
  107. package/agents/tree-diagram/AGENTS.md +260 -0
  108. package/agents/tree-view/AGENTS.md +329 -0
  109. package/agents/typography/AGENTS.md +396 -0
  110. package/lib/components/Accordion/Accordion2.js +135 -0
  111. package/lib/components/ActionBar/ActionBar2.js +65 -0
  112. package/lib/components/Alert/Alert2.js +131 -0
  113. package/lib/components/AppShell/AppShell2.js +94 -0
  114. package/lib/components/AreaChart/AreaChart.js +59 -0
  115. package/lib/components/BarChart/BarChart2.js +243 -0
  116. package/lib/components/BarList/BarList2.js +172 -0
  117. package/lib/components/Breadcrumb/Breadcrumb2.js +87 -0
  118. package/lib/components/Calendar/Calendar2.js +309 -0
  119. package/lib/components/Calendar/DatePicker2.js +229 -0
  120. package/lib/components/Calendar/date.js +121 -0
  121. package/lib/components/Card/Card2.js +104 -0
  122. package/lib/components/CardFrame/CardFrame2.js +72 -0
  123. package/lib/components/Chart/ChartParts.js +150 -0
  124. package/lib/components/Chart/chart2.js +96 -0
  125. package/lib/components/Chart/useChartInteraction.js +94 -0
  126. package/lib/components/ChatBubble/ChatBubble2.js +174 -0
  127. package/lib/components/ChatBubble/formatChatTime.js +53 -0
  128. package/lib/components/ChatComposer/ChatComposer2.js +153 -0
  129. package/lib/components/CodeBlock/CodeBlock2.js +93 -0
  130. package/lib/components/CodeBlock/highlight.js +114 -0
  131. package/lib/components/ColorPicker/ColorPicker2.js +610 -0
  132. package/lib/components/ColorPicker/color.js +180 -0
  133. package/lib/components/ColorPicker/presets.js +75 -0
  134. package/lib/components/Combobox/Combobox2.js +229 -0
  135. package/lib/components/CommandMenu/CommandMenu.js +267 -0
  136. package/lib/components/Comment/Comment2.js +134 -0
  137. package/lib/components/ContextMenu/ContextMenu2.js +168 -0
  138. package/lib/components/DataGrid/DataGrid2.js +1996 -0
  139. package/lib/components/DataGrid/GridPopover.js +154 -0
  140. package/lib/components/DataGrid/anchor.js +50 -0
  141. package/lib/components/DataGrid/model.js +558 -0
  142. package/lib/components/DataGrid/panels.js +703 -0
  143. package/lib/components/DataGrid/typeMeta.js +76 -0
  144. package/lib/components/DataGrid/types.js +54 -0
  145. package/lib/components/DescriptionList/DescriptionList2.js +180 -0
  146. package/lib/components/Dialog/AlertDialog.js +118 -0
  147. package/lib/components/Dialog/Dialog2.js +109 -0
  148. package/lib/components/Dialog/modal.js +92 -0
  149. package/lib/components/Drawer/Drawer2.js +244 -0
  150. package/lib/components/DropdownMenu/DropdownMenu2.js +394 -0
  151. package/lib/components/DropdownMenu/menuCore.js +63 -0
  152. package/lib/components/Dropzone/Dropzone2.js +144 -0
  153. package/lib/components/EmptyState/EmptyState2.js +72 -0
  154. package/lib/components/FileChip/FileChip2.js +118 -0
  155. package/lib/components/FileUpload/FileUpload.js +258 -0
  156. package/lib/components/FilterChips/FilterChips2.js +101 -0
  157. package/lib/components/FunnelChart/FunnelChart2.js +283 -0
  158. package/lib/components/FunnelChart/funnel.js +69 -0
  159. package/lib/components/Highlight/Highlight2.js +100 -0
  160. package/lib/components/HoverCard/HoverCard.js +134 -0
  161. package/lib/components/InlineDiff/InlineDiff2.js +215 -0
  162. package/lib/components/InlineDiff/diff.js +126 -0
  163. package/lib/components/InlineDiff/useDiffReview.js +109 -0
  164. package/lib/components/Kanban/Kanban2.js +691 -0
  165. package/lib/components/Kanban/KanbanCard.js +159 -0
  166. package/lib/components/Kanban/move.js +69 -0
  167. package/lib/components/LineChart/LineChart2.js +342 -0
  168. package/lib/components/List/List2.js +133 -0
  169. package/lib/components/Listbox/Listbox2.js +163 -0
  170. package/lib/components/Marker/Marker2.js +82 -0
  171. package/lib/components/Menubar/Menubar2.js +223 -0
  172. package/lib/components/MultiSelect/MultiSelect2.js +204 -0
  173. package/lib/components/NavigationMenu/NavigationMenu2.js +481 -0
  174. package/lib/components/NoticeStack/NoticeStack2.js +178 -0
  175. package/lib/components/NumberStepper/NumberStepper2.js +129 -0
  176. package/lib/components/OtpInput/OtpInput2.js +122 -0
  177. package/lib/components/Pagination/Pagination2.js +210 -0
  178. package/lib/components/Pagination/paginationRange.js +53 -0
  179. package/lib/components/PhoneInput/PhoneInput.js +175 -0
  180. package/lib/components/PieChart/PieChart2.js +246 -0
  181. package/lib/components/PieChart/arc.js +66 -0
  182. package/lib/components/PieChart/useArcTween.js +94 -0
  183. package/lib/components/Popover/Popover2.js +112 -0
  184. package/lib/components/ProgressTracker/ProgressTracker2.js +226 -0
  185. package/lib/components/Rating/Rating2.js +186 -0
  186. package/lib/components/Resizable/Resizable2.js +236 -0
  187. package/lib/components/Resizable/layout.js +115 -0
  188. package/lib/components/ScaledPreview/ScaledPreview2.js +100 -0
  189. package/lib/components/ScatterChart/ScatterChart2.js +356 -0
  190. package/lib/components/ScatterChart/scatter.js +83 -0
  191. package/lib/components/ScrollArea/ScrollArea2.js +218 -0
  192. package/lib/components/Select/Select2.js +153 -0
  193. package/lib/components/Sidebar/Sidebar2.js +127 -0
  194. package/lib/components/Skeleton/Skeleton2.js +91 -0
  195. package/lib/components/Slider/Slider2.js +142 -0
  196. package/lib/components/SocialLoginButton/SocialLoginButton.js +85 -0
  197. package/lib/components/SparkChart/SparkChart2.js +217 -0
  198. package/lib/components/SparkChart/spark.js +76 -0
  199. package/lib/components/Sparkbar/Sparkbar2.js +111 -0
  200. package/lib/components/SplitView/SplitView2.js +95 -0
  201. package/lib/components/Stat/Stat2.js +164 -0
  202. package/lib/components/StepList/StepList2.js +131 -0
  203. package/lib/components/Table/Table2.js +104 -0
  204. package/lib/components/Tabs/Tabs2.js +131 -0
  205. package/lib/components/TagInput/TagInput2.js +360 -0
  206. package/lib/components/TimePicker/TimePicker2.js +388 -0
  207. package/lib/components/TimePicker/time.js +83 -0
  208. package/lib/components/Timeline/Timeline2.js +369 -0
  209. package/lib/components/Timeline/scale.js +83 -0
  210. package/lib/components/Toast/Toaster.js +212 -0
  211. package/lib/components/Toast/store.js +129 -0
  212. package/lib/components/ToggleGroup/ToggleGroup2.js +125 -0
  213. package/lib/components/Toolbar/Toolbar2.js +281 -0
  214. package/lib/components/Tracker/Tracker2.js +172 -0
  215. package/lib/components/TreeDiagram/TreeDiagram2.js +223 -0
  216. package/lib/components/TreeView/TreeView2.js +284 -0
  217. package/lib/hooks/timing.js +55 -0
  218. package/lib/hooks/useControllableState.js +49 -0
  219. package/lib/hooks/useCountdown.js +80 -0
  220. package/lib/hooks/useDigitInput.js +105 -0
  221. package/lib/hooks/useDismiss.js +71 -0
  222. package/lib/hooks/useElapsed.js +83 -0
  223. package/lib/hooks/useFloating.js +70 -0
  224. package/lib/hooks/useFocusTrap.js +61 -0
  225. package/lib/hooks/usePresence.js +60 -0
  226. package/lib/hooks/usePressToOpen.js +69 -0
  227. package/lib/hooks/useScrollLock.js +70 -0
  228. package/lib/hooks/useSelection.js +68 -0
  229. package/lib/index.js +178 -0
  230. package/lib/primitives/AspectRatio2.js +80 -0
  231. package/lib/primitives/BrandIcon.js +245 -0
  232. package/lib/primitives/ColorDot2.js +70 -0
  233. package/lib/primitives/CopyButton2.js +85 -0
  234. package/lib/primitives/CountBadge2.js +78 -0
  235. package/lib/primitives/Countdown2.js +65 -0
  236. package/lib/primitives/Delta2.js +67 -0
  237. package/lib/primitives/Elapsed.js +62 -0
  238. package/lib/primitives/FileIcon2.js +125 -0
  239. package/lib/primitives/Flag2.js +263 -0
  240. package/lib/primitives/IconStack2.js +85 -0
  241. package/lib/primitives/IconTile2.js +68 -0
  242. package/lib/primitives/Kbd2.js +88 -0
  243. package/lib/primitives/Layout2.js +118 -0
  244. package/lib/primitives/Link2.js +53 -0
  245. package/lib/primitives/MaskedText2.js +120 -0
  246. package/lib/primitives/Progress2.js +137 -0
  247. package/lib/primitives/RelativeTime.js +84 -0
  248. package/lib/primitives/SearchInput2.js +84 -0
  249. package/lib/primitives/SelectorButton2.js +97 -0
  250. package/lib/primitives/Spinner2.js +98 -0
  251. package/lib/primitives/StatusIcon2.js +126 -0
  252. package/lib/primitives/Swatch2.js +79 -0
  253. package/lib/primitives/Tooltip2.js +132 -0
  254. package/lib/primitives/Typography2.js +97 -0
  255. package/lib/primitives/formatCountdown.js +51 -0
  256. package/lib/primitives/formatElapsed.js +66 -0
  257. package/lib/primitives/formatRelativeTime.js +64 -0
  258. package/lib/primitives/hotkey.js +94 -0
  259. package/lib/primitives/index.js +352 -0
  260. package/lib/primitives/maskValue.js +65 -0
  261. package/lib/style.css +2 -0
  262. package/lib/types/components/Accordion/Accordion.d.ts +57 -0
  263. package/lib/types/components/ActionBar/ActionBar.d.ts +24 -0
  264. package/lib/types/components/Alert/Alert.d.ts +36 -0
  265. package/lib/types/components/AppShell/AppShell.d.ts +38 -0
  266. package/lib/types/components/AreaChart/AreaChart.d.ts +17 -0
  267. package/lib/types/components/BarChart/BarChart.d.ts +57 -0
  268. package/lib/types/components/BarList/BarList.d.ts +56 -0
  269. package/lib/types/components/Breadcrumb/Breadcrumb.d.ts +15 -0
  270. package/lib/types/components/Calendar/Calendar.d.ts +34 -0
  271. package/lib/types/components/Calendar/DatePicker.d.ts +45 -0
  272. package/lib/types/components/Calendar/date.d.ts +32 -0
  273. package/lib/types/components/Card/Card.d.ts +64 -0
  274. package/lib/types/components/CardFrame/CardFrame.d.ts +15 -0
  275. package/lib/types/components/Chart/ChartParts.d.ts +38 -0
  276. package/lib/types/components/Chart/chart.d.ts +46 -0
  277. package/lib/types/components/Chart/useChartInteraction.d.ts +39 -0
  278. package/lib/types/components/ChatBubble/ChatBubble.d.ts +61 -0
  279. package/lib/types/components/ChatBubble/formatChatTime.d.ts +2 -0
  280. package/lib/types/components/ChatComposer/ChatComposer.d.ts +42 -0
  281. package/lib/types/components/CodeBlock/CodeBlock.d.ts +18 -0
  282. package/lib/types/components/CodeBlock/highlight.d.ts +10 -0
  283. package/lib/types/components/ColorPicker/ColorPicker.d.ts +61 -0
  284. package/lib/types/components/ColorPicker/color.d.ts +48 -0
  285. package/lib/types/components/ColorPicker/presets.d.ts +7 -0
  286. package/lib/types/components/Combobox/Combobox.d.ts +48 -0
  287. package/lib/types/components/CommandMenu/CommandMenu.d.ts +51 -0
  288. package/lib/types/components/Comment/Comment.d.ts +45 -0
  289. package/lib/types/components/ContextMenu/ContextMenu.d.ts +40 -0
  290. package/lib/types/components/DataGrid/DataGrid.d.ts +43 -0
  291. package/lib/types/components/DataGrid/GridPopover.d.ts +43 -0
  292. package/lib/types/components/DataGrid/anchor.d.ts +5 -0
  293. package/lib/types/components/DataGrid/model.d.ts +61 -0
  294. package/lib/types/components/DataGrid/panels.d.ts +63 -0
  295. package/lib/types/components/DataGrid/typeMeta.d.ts +6 -0
  296. package/lib/types/components/DataGrid/types.d.ts +77 -0
  297. package/lib/types/components/DescriptionList/DescriptionList.d.ts +77 -0
  298. package/lib/types/components/Dialog/AlertDialog.d.ts +26 -0
  299. package/lib/types/components/Dialog/Dialog.d.ts +42 -0
  300. package/lib/types/components/Dialog/modal.d.ts +38 -0
  301. package/lib/types/components/Drawer/Drawer.d.ts +62 -0
  302. package/lib/types/components/DropdownMenu/DropdownMenu.d.ts +97 -0
  303. package/lib/types/components/DropdownMenu/menuCore.d.ts +23 -0
  304. package/lib/types/components/Dropzone/Dropzone.d.ts +30 -0
  305. package/lib/types/components/EmptyState/EmptyState.d.ts +26 -0
  306. package/lib/types/components/FileChip/FileChip.d.ts +32 -0
  307. package/lib/types/components/FileUpload/FileUpload.d.ts +52 -0
  308. package/lib/types/components/FilterChips/FilterChips.d.ts +37 -0
  309. package/lib/types/components/FunnelChart/FunnelChart.d.ts +38 -0
  310. package/lib/types/components/FunnelChart/funnel.d.ts +25 -0
  311. package/lib/types/components/Highlight/Highlight.d.ts +35 -0
  312. package/lib/types/components/HoverCard/HoverCard.d.ts +47 -0
  313. package/lib/types/components/InlineDiff/InlineDiff.d.ts +36 -0
  314. package/lib/types/components/InlineDiff/diff.d.ts +42 -0
  315. package/lib/types/components/InlineDiff/useDiffReview.d.ts +57 -0
  316. package/lib/types/components/Kanban/Kanban.d.ts +64 -0
  317. package/lib/types/components/Kanban/KanbanCard.d.ts +35 -0
  318. package/lib/types/components/Kanban/move.d.ts +25 -0
  319. package/lib/types/components/LineChart/LineChart.d.ts +85 -0
  320. package/lib/types/components/List/List.d.ts +62 -0
  321. package/lib/types/components/Listbox/Listbox.d.ts +60 -0
  322. package/lib/types/components/Marker/Marker.d.ts +28 -0
  323. package/lib/types/components/Menubar/Menubar.d.ts +50 -0
  324. package/lib/types/components/MultiSelect/MultiSelect.d.ts +38 -0
  325. package/lib/types/components/NavigationMenu/NavigationMenu.d.ts +101 -0
  326. package/lib/types/components/NoticeStack/NoticeStack.d.ts +41 -0
  327. package/lib/types/components/NumberStepper/NumberStepper.d.ts +32 -0
  328. package/lib/types/components/OtpInput/OtpInput.d.ts +31 -0
  329. package/lib/types/components/Pagination/Pagination.d.ts +54 -0
  330. package/lib/types/components/Pagination/paginationRange.d.ts +7 -0
  331. package/lib/types/components/PhoneInput/PhoneInput.d.ts +47 -0
  332. package/lib/types/components/PieChart/PieChart.d.ts +67 -0
  333. package/lib/types/components/PieChart/arc.d.ts +26 -0
  334. package/lib/types/components/PieChart/useArcTween.d.ts +15 -0
  335. package/lib/types/components/Popover/Popover.d.ts +28 -0
  336. package/lib/types/components/ProgressTracker/ProgressTracker.d.ts +64 -0
  337. package/lib/types/components/Rating/Rating.d.ts +42 -0
  338. package/lib/types/components/Resizable/Resizable.d.ts +50 -0
  339. package/lib/types/components/Resizable/layout.d.ts +31 -0
  340. package/lib/types/components/ScaledPreview/ScaledPreview.d.ts +38 -0
  341. package/lib/types/components/ScatterChart/ScatterChart.d.ts +81 -0
  342. package/lib/types/components/ScatterChart/scatter.d.ts +14 -0
  343. package/lib/types/components/ScrollArea/ScrollArea.d.ts +34 -0
  344. package/lib/types/components/Select/Select.d.ts +39 -0
  345. package/lib/types/components/Sidebar/Sidebar.d.ts +39 -0
  346. package/lib/types/components/Skeleton/Skeleton.d.ts +47 -0
  347. package/lib/types/components/Slider/Slider.d.ts +36 -0
  348. package/lib/types/components/SocialLoginButton/SocialLoginButton.d.ts +10 -0
  349. package/lib/types/components/SparkChart/SparkChart.d.ts +55 -0
  350. package/lib/types/components/SparkChart/spark.d.ts +16 -0
  351. package/lib/types/components/Sparkbar/Sparkbar.d.ts +39 -0
  352. package/lib/types/components/SplitView/SplitView.d.ts +31 -0
  353. package/lib/types/components/Stat/Stat.d.ts +58 -0
  354. package/lib/types/components/StepList/StepList.d.ts +61 -0
  355. package/lib/types/components/Table/Table.d.ts +39 -0
  356. package/lib/types/components/Tabs/Tabs.d.ts +47 -0
  357. package/lib/types/components/TagInput/TagInput.d.ts +46 -0
  358. package/lib/types/components/TimePicker/TimePicker.d.ts +43 -0
  359. package/lib/types/components/TimePicker/time.d.ts +15 -0
  360. package/lib/types/components/Timeline/Timeline.d.ts +154 -0
  361. package/lib/types/components/Timeline/scale.d.ts +22 -0
  362. package/lib/types/components/Toast/Toaster.d.ts +19 -0
  363. package/lib/types/components/Toast/index.d.ts +4 -0
  364. package/lib/types/components/Toast/store.d.ts +75 -0
  365. package/lib/types/components/ToggleGroup/ToggleGroup.d.ts +28 -0
  366. package/lib/types/components/Toolbar/Toolbar.d.ts +70 -0
  367. package/lib/types/components/Tracker/Tracker.d.ts +43 -0
  368. package/lib/types/components/TreeDiagram/TreeDiagram.d.ts +68 -0
  369. package/lib/types/components/TreeView/TreeView.d.ts +107 -0
  370. package/lib/types/components/index.d.ts +188 -0
  371. package/lib/types/hooks/index.d.ts +17 -0
  372. package/lib/types/hooks/timing.d.ts +29 -0
  373. package/lib/types/hooks/useControllableState.d.ts +5 -0
  374. package/lib/types/hooks/useCountdown.d.ts +19 -0
  375. package/lib/types/hooks/useDigitInput.d.ts +24 -0
  376. package/lib/types/hooks/useDismiss.d.ts +3 -0
  377. package/lib/types/hooks/useElapsed.d.ts +28 -0
  378. package/lib/types/hooks/useFloating.d.ts +21 -0
  379. package/lib/types/hooks/useFocusTrap.d.ts +7 -0
  380. package/lib/types/hooks/usePresence.d.ts +8 -0
  381. package/lib/types/hooks/usePressToOpen.d.ts +20 -0
  382. package/lib/types/hooks/useScrollLock.d.ts +2 -0
  383. package/lib/types/hooks/useSelection.d.ts +29 -0
  384. package/lib/types/index.d.ts +5 -0
  385. package/lib/types/primitives/AspectRatio.d.ts +14 -0
  386. package/lib/types/primitives/BrandIcon.d.ts +12 -0
  387. package/lib/types/primitives/ColorDot.d.ts +20 -0
  388. package/lib/types/primitives/CopyButton.d.ts +12 -0
  389. package/lib/types/primitives/CountBadge.d.ts +28 -0
  390. package/lib/types/primitives/Countdown.d.ts +21 -0
  391. package/lib/types/primitives/Delta.d.ts +33 -0
  392. package/lib/types/primitives/Elapsed.d.ts +23 -0
  393. package/lib/types/primitives/FileIcon.d.ts +17 -0
  394. package/lib/types/primitives/Flag.d.ts +15 -0
  395. package/lib/types/primitives/IconStack.d.ts +27 -0
  396. package/lib/types/primitives/IconTile.d.ts +24 -0
  397. package/lib/types/primitives/Kbd.d.ts +19 -0
  398. package/lib/types/primitives/Layout.d.ts +64 -0
  399. package/lib/types/primitives/Link.d.ts +12 -0
  400. package/lib/types/primitives/MaskedText.d.ts +28 -0
  401. package/lib/types/primitives/Progress.d.ts +52 -0
  402. package/lib/types/primitives/RelativeTime.d.ts +22 -0
  403. package/lib/types/primitives/SearchInput.d.ts +8 -0
  404. package/lib/types/primitives/SelectorButton.d.ts +23 -0
  405. package/lib/types/primitives/Spinner.d.ts +15 -0
  406. package/lib/types/primitives/StatusIcon.d.ts +40 -0
  407. package/lib/types/primitives/Swatch.d.ts +11 -0
  408. package/lib/types/primitives/Tooltip.d.ts +17 -0
  409. package/lib/types/primitives/Typography.d.ts +48 -0
  410. package/lib/types/primitives/formatCountdown.d.ts +2 -0
  411. package/lib/types/primitives/formatElapsed.d.ts +8 -0
  412. package/lib/types/primitives/formatRelativeTime.d.ts +16 -0
  413. package/lib/types/primitives/hotkey.d.ts +10 -0
  414. package/lib/types/primitives/index.d.ts +188 -0
  415. package/lib/types/primitives/maskValue.d.ts +24 -0
  416. package/package.json +55 -4
@@ -0,0 +1,7 @@
1
+ import { type RefObject } from 'react';
2
+ export declare const focusableIn: (root: HTMLElement) => HTMLElement[];
3
+ /**
4
+ * While `active`: moves focus into `ref` (to `initialFocus`, else the first focusable, else the
5
+ * container), keeps Tab / Shift+Tab inside, and returns focus to where it was when it ends.
6
+ */
7
+ export declare function useFocusTrap(ref: RefObject<HTMLElement | null>, active: boolean, initialFocus?: RefObject<HTMLElement | null>): void;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Keeps something mounted for `exitMs` after `open` turns false so it can play an exit
3
+ * animation. Render while `mounted`; style the exit with `closing` (e.g. data-state="closed").
4
+ */
5
+ export declare function usePresence(open: boolean, exitMs?: number): {
6
+ mounted: boolean;
7
+ closing: boolean;
8
+ };
@@ -0,0 +1,20 @@
1
+ import { type MouseEvent, type PointerEvent, type RefObject } from 'react';
2
+ export interface PressToOpenOptions {
3
+ open: boolean;
4
+ onOpen: () => void;
5
+ onClose: () => void;
6
+ /** The floating list; its options need `role="option"` and `data-index`. */
7
+ panelRef: RefObject<HTMLElement | null>;
8
+ /** Called with the option's `data-index` when a press-drag ends on it. */
9
+ onRelease: (index: number) => void;
10
+ disabled?: boolean;
11
+ }
12
+ /**
13
+ * Menu-style trigger: a mouse press opens the list at once, and dragging onto an option and
14
+ * letting go picks it (press-drag-release). A plain click leaves the list open. Keyboard and
15
+ * touch keep the usual click toggle.
16
+ */
17
+ export declare function usePressToOpen({ open, onOpen, onClose, panelRef, onRelease, disabled }: PressToOpenOptions): {
18
+ onPointerDown: (e: PointerEvent<HTMLElement>) => void;
19
+ onClick: (e: MouseEvent<HTMLElement>) => void;
20
+ };
@@ -0,0 +1,2 @@
1
+ /** Stops the page behind a modal from scrolling, without the layout jumping when the scrollbar hides. */
2
+ export declare function useScrollLock(active: boolean): void;
@@ -0,0 +1,29 @@
1
+ export type SelectionValue = string | number;
2
+ export interface SingleSelectionProps<V extends SelectionValue> {
3
+ type: 'single';
4
+ value?: V | null;
5
+ defaultValue?: V | null;
6
+ onValueChange?: (value: V | null) => void;
7
+ /** Single mode only: clicking the selected item again keeps it selected. */
8
+ required?: boolean;
9
+ }
10
+ export interface MultipleSelectionProps<V extends SelectionValue> {
11
+ type: 'multiple';
12
+ value?: V[];
13
+ defaultValue?: V[];
14
+ onValueChange?: (value: V[]) => void;
15
+ required?: never;
16
+ }
17
+ export type SelectionProps<V extends SelectionValue> = SingleSelectionProps<V> | MultipleSelectionProps<V>;
18
+ /**
19
+ * Single- or multi-select state shared by ToggleGroup, FilterChipGroup and Combobox.
20
+ * Internally always an array; the public value is `V | null` (single) or `V[]` (multiple).
21
+ */
22
+ export declare function useSelection<V extends SelectionValue>(props: SelectionProps<V>): {
23
+ selected: V[];
24
+ setSelected: (next: V[]) => void;
25
+ isSelected: (v: V) => boolean;
26
+ toggle: (v: V) => void;
27
+ clear: () => void;
28
+ multiple: boolean;
29
+ };
@@ -0,0 +1,5 @@
1
+ import './styles/tokens.css';
2
+ import './styles/base.css';
3
+ export * from './primitives';
4
+ export * from './components';
5
+ export * from './hooks';
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import './AspectRatio.css';
3
+ export interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
4
+ /** Width ÷ height: a number (`16 / 9`) or a `'16/9'` · `'16:9'` string. */
5
+ ratio?: number | string;
6
+ /** How a direct img / video child fills the frame. */
7
+ fit?: 'cover' | 'contain';
8
+ /** Corner radius from the token scale. */
9
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
10
+ /** subtle: the small gray fill (#f4f4f4), for placeholders and letterboxing. */
11
+ background?: 'none' | 'subtle';
12
+ }
13
+ /** Keeps its content at a fixed width-to-height ratio; the width comes from the parent. */
14
+ export declare function AspectRatio({ ratio, fit, radius, background, className, style, ...rest }: AspectRatioProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export declare const BRAND_NAMES: readonly ["gmail", "slack", "clickup", "figma", "github", "hubspot", "notion", "google-calendar", "google", "apple"];
2
+ export type BrandName = (typeof BRAND_NAMES)[number];
3
+ export interface BrandIconProps {
4
+ name: BrandName;
5
+ /** Width and height in px. */
6
+ size?: number;
7
+ /** Accessible name. Without it the icon is decorative (sits next to a text label). */
8
+ title?: string;
9
+ className?: string;
10
+ }
11
+ /** Full-colour logo of a third-party app, for integration lists and "connect apps" rows. */
12
+ export declare function BrandIcon({ name, size, title, className }: BrandIconProps): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import type { CSSProperties } from 'react';
2
+ import './ColorDot.css';
3
+ export type ColorDotVariant = 'solid' | 'soft' | 'dashed' | 'hatched';
4
+ export interface ColorDotProps {
5
+ /** A CSS custom property name (`--chart-1`) or any CSS color. */
6
+ color: string;
7
+ /** square: legends and tooltips · circle: status · line: line-series legends. */
8
+ shape?: 'square' | 'circle' | 'line';
9
+ /**
10
+ * solid: the color itself · soft: the light tint used by soft bars (TimelineBar) ·
11
+ * dashed: a dashed outline (planned, target) · hatched: diagonal stripes (estimated, unlimited).
12
+ */
13
+ variant?: ColorDotVariant;
14
+ /** Edge length in px. */
15
+ size?: number;
16
+ className?: string;
17
+ style?: CSSProperties;
18
+ }
19
+ /** A small color key that ties a label to a series or category (chart legends, tooltips). */
20
+ export declare function ColorDot({ color, shape, variant, size, className, style }: ColorDotProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { type ButtonProps } from './index';
2
+ import './CopyButton.css';
3
+ export interface CopyButtonProps extends Omit<ButtonProps, 'onClick' | 'onCopy' | 'icon' | 'children' | 'value'> {
4
+ /** Text placed on the clipboard. */
5
+ value: string;
6
+ /** Visible text next to the icon; omit for an icon-only button. */
7
+ label?: string;
8
+ copiedLabel?: string;
9
+ onCopy?: (value: string) => void;
10
+ }
11
+ /** Copies `value`; the icon morphs into a check for a moment. */
12
+ export declare function CopyButton({ value, label, copiedLabel, onCopy, variant, size, ...rest }: CopyButtonProps): import("react").JSX.Element;
@@ -0,0 +1,28 @@
1
+ import { type CSSProperties } from 'react';
2
+ import type { Tone } from './index';
3
+ import './CountBadge.css';
4
+ export type CountBadgeSize = 'sm' | 'md';
5
+ export type CountBadgeVariant = 'solid' | 'soft';
6
+ export interface CountBadgeProps {
7
+ /** The number to show. */
8
+ count: number;
9
+ /** Above this it reads "99+". */
10
+ max?: number;
11
+ /** Same tones as Badge. Defaults to accent. */
12
+ tone?: Tone;
13
+ /** solid: filled circle with white digits · soft: the status tint with coloured digits (like Badge). */
14
+ variant?: CountBadgeVariant;
15
+ /** sm 16px · md 18px high. Wider numbers stretch into a rounded capsule. */
16
+ size?: CountBadgeSize;
17
+ /** Still show the badge at 0 (hidden by default). */
18
+ showZero?: boolean;
19
+ /** Read by screen readers instead of the bare number, e.g. "승인 대기 1건". */
20
+ label?: string;
21
+ className?: string;
22
+ style?: CSSProperties;
23
+ }
24
+ /**
25
+ * A small filled circle with a number — unread or waiting items next to a section title, a tab or
26
+ * an icon. Digits are tabular; when the count changes the badge pops and the new number slides in.
27
+ */
28
+ export declare function CountBadge({ count, max, tone, variant, size, showZero, label, className, style, }: CountBadgeProps): import("react").JSX.Element | null;
@@ -0,0 +1,21 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import './Countdown.css';
3
+ export interface CountdownProps {
4
+ /** Seconds to count down from. A new value starts over. */
5
+ seconds: number;
6
+ /** false pauses where it is. */
7
+ running?: boolean;
8
+ /** Called once at 0. */
9
+ onComplete?: () => void;
10
+ /** Text for the remaining seconds. Defaults to "8초" / "1:05". */
11
+ format?: (remaining: number) => ReactNode;
12
+ /** Shown at 0 instead of "0초". */
13
+ doneLabel?: ReactNode;
14
+ className?: string;
15
+ style?: CSSProperties;
16
+ }
17
+ /**
18
+ * Remaining time as plain text with tabular figures, so it fits anywhere text does —
19
+ * inside a Badge ("요청 제한 · 8초"), a caption, a button. Ticks without reading the clock during render.
20
+ */
21
+ export declare function Countdown({ seconds, running, onComplete, format, doneLabel, className, style }: CountdownProps): import("react").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import './Delta.css';
3
+ export type DeltaDirection = 'up' | 'down' | 'none';
4
+ export type DeltaVariant = 'soft' | 'text';
5
+ export interface DeltaProps {
6
+ /** The signed change. 0 is neutral (gray, no sign). */
7
+ value: number;
8
+ /** Formats the size of the change; the sign is added for you. Gets the absolute value. */
9
+ format?: (absolute: number) => ReactNode;
10
+ /** Text after the number, e.g. "늦음", "지난주 대비". */
11
+ suffix?: ReactNode;
12
+ /**
13
+ * What a higher number means. better: up = green (sales, uptime) · worse: up = bad
14
+ * (duration, cost, errors) · neutral: always gray.
15
+ */
16
+ higherIs?: 'better' | 'worse' | 'neutral';
17
+ /** Tone used for a change for the worse. Orange by default; danger for alarming metrics. */
18
+ worseTone?: 'warning' | 'danger';
19
+ /** An up / down arrow before the number. */
20
+ arrow?: boolean;
21
+ /** soft: a small tinted badge · text: colored text only (inline in headers and sentences). */
22
+ variant?: DeltaVariant;
23
+ size?: 'sm' | 'md';
24
+ /** Read by screen readers instead of the visible text. */
25
+ 'aria-label'?: string;
26
+ className?: string;
27
+ style?: CSSProperties;
28
+ }
29
+ /**
30
+ * A signed change: "+12초" on soft orange when longer is worse, "−4초" on soft green.
31
+ * Real minus sign, tabular figures, so a column of deltas lines up.
32
+ */
33
+ export declare function Delta({ value, format, suffix, higherIs, worseTone, arrow, variant, size, 'aria-label': ariaLabel, className, style, }: DeltaProps): import("react").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import { type ElapsedInput } from '../hooks/useElapsed';
3
+ import './Countdown.css';
4
+ export interface ElapsedProps {
5
+ /** When the work started. Leave out for a stopwatch that starts at mount (or at `initial`). */
6
+ startedAt?: ElapsedInput;
7
+ /** false pauses where it is (the work is waiting or finished). */
8
+ running?: boolean;
9
+ /** When the work finished: shows the final duration and stops ticking. */
10
+ endedAt?: ElapsedInput;
11
+ /** Without `startedAt`: seconds to start the stopwatch from. */
12
+ initial?: number;
13
+ /** Text for the elapsed seconds. Defaults to "17:40"; `(s) => formatElapsed(s, 'text')` gives "17분 40초". */
14
+ format?: (elapsed: number) => ReactNode;
15
+ className?: string;
16
+ style?: CSSProperties;
17
+ }
18
+ /**
19
+ * Time since something started, counting up as plain text with tabular figures ("17:40") — for a
20
+ * header ("시작 오후 9:12 · 17:40"), a footer band, a Badge. Pauses with `running={false}`, freezes on
21
+ * `endedAt`, and never reads the clock during render.
22
+ */
23
+ export declare function Elapsed({ startedAt, running, endedAt, initial, format, className, style }: ElapsedProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import type { CSSProperties } from 'react';
2
+ import './FileIcon.css';
3
+ export type FileKind = 'pdf' | 'image' | 'sheet' | 'doc' | 'slide' | 'video' | 'audio' | 'archive' | 'code' | 'other';
4
+ /** Guesses the kind from a file name (`보고서.pdf`), an extension (`pdf`) or a MIME type (`image/png`). */
5
+ export declare function fileKind(nameOrType: string): FileKind;
6
+ export interface FileIconProps {
7
+ /** File name, extension or MIME type; picks the color. */
8
+ name?: string;
9
+ /** Overrides the guess from `name`. */
10
+ kind?: FileKind;
11
+ /** Pixel size. */
12
+ size?: number;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ }
16
+ /** A page glyph with a colored tab for the file type (red PDF, purple image, green sheet…). */
17
+ export declare function FileIcon({ name, kind, size, className, style }: FileIconProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import type { CSSProperties } from 'react';
2
+ import './Flag.css';
3
+ export type FlagCode = 'KR' | 'US' | 'JP' | 'CN' | 'VN' | 'GB' | 'DE' | 'FR';
4
+ export interface FlagProps {
5
+ /** ISO 3166-1 alpha-2 country code. */
6
+ code: FlagCode;
7
+ /** Width in px; the flag is always 3:2. */
8
+ size?: number;
9
+ /** Names the flag for screen readers. Without it the flag is decorative (a label sits next to it). */
10
+ label?: string;
11
+ className?: string;
12
+ style?: CSSProperties;
13
+ }
14
+ /** A small 3:2 country flag with softly rounded corners and a faint edge so white flags don't vanish. */
15
+ export declare function Flag({ code, size, label, className, style }: FlagProps): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import './IconStack.css';
3
+ export interface IconStackProps {
4
+ /** Icons, logos or avatars, front to back. Size them yourself (BrandIcon `size`, lucide `size`). */
5
+ icons: ReactNode[];
6
+ /** Width and height of each item in px. */
7
+ size?: number;
8
+ /** Items shown before the rest collapse into "+N". */
9
+ max?: number;
10
+ /** How far each item tucks under the previous one, in px. Defaults to a third of `size`. */
11
+ overlap?: number;
12
+ /** circle, or a rounded square for app logos. */
13
+ shape?: 'circle' | 'square';
14
+ /** Puts each icon on a small white tile (logos that need a backdrop). Without it the icon fills the item. */
15
+ tile?: boolean;
16
+ /** Custom "+N" item (AvatarGroup draws an Avatar). */
17
+ renderOverflow?: (hidden: number) => ReactNode;
18
+ /** Names the whole stack for screen readers ("Slack, Figma 외 2개"). Without it the stack is decorative. */
19
+ label?: string;
20
+ className?: string;
21
+ style?: CSSProperties;
22
+ }
23
+ /**
24
+ * A row of small overlapping icons, like AvatarGroup but for anything: app logos before a task,
25
+ * file types, people. Each item is cut out from the one behind it with a thin ring of the surface color.
26
+ */
27
+ export declare function IconStack({ icons, size, max, overlap, shape, tile, renderOverflow, label, className, style, }: IconStackProps): import("react").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import './IconTile.css';
3
+ export type IconTileTone = 'neutral' | 'surface' | 'accent' | 'success' | 'warning' | 'danger';
4
+ export interface IconTileProps {
5
+ /** An icon, or a letter / short text ("A", "문"). */
6
+ children: ReactNode;
7
+ /** Edge length in px; the icon scales with it. */
8
+ size?: number;
9
+ /**
10
+ * neutral: the small gray fill · surface: a white tile lifted by the chip shadow, for logos and
11
+ * multi-colour icons the gray would muddy · others: the soft status colours.
12
+ */
13
+ tone?: IconTileTone;
14
+ /** Fully round instead of a rounded square. */
15
+ round?: boolean;
16
+ className?: string;
17
+ style?: CSSProperties;
18
+ 'aria-label'?: string;
19
+ }
20
+ /**
21
+ * A small filled square holding an icon or a letter — the leading tile of list rows for things
22
+ * that aren't people (tools, sites, documents). People get `Avatar`.
23
+ */
24
+ export declare function IconTile({ children, size, tone, round, className, style, 'aria-label': ariaLabel }: IconTileProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from 'react';
2
+ import './Kbd.css';
3
+ export declare const isMac: boolean;
4
+ /** Turns a key name into its glyph: `mod` → ⌘ on Mac / Ctrl elsewhere, `enter` → ↵, `k` → K. */
5
+ export declare function formatKey(key: string): string;
6
+ export interface KbdProps {
7
+ /** Key names, e.g. ['mod', 'K'] or ['shift', 'enter']. Platform-aware via formatKey. */
8
+ keys?: string[];
9
+ /** Literal content instead of `keys`, e.g. <Kbd>⌘K</Kbd>. */
10
+ children?: ReactNode;
11
+ size?: 'sm' | 'md' | 'lg';
12
+ /** One cap for the whole combo ("⌘K") instead of one cap per key. */
13
+ combined?: boolean;
14
+ /** Text between caps, e.g. '+' or 'then'. */
15
+ separator?: ReactNode;
16
+ className?: string;
17
+ }
18
+ /** Keyboard key caps for shortcuts. */
19
+ export declare function Kbd({ keys, children, size, combined, separator, className }: KbdProps): import("react").JSX.Element;
@@ -0,0 +1,64 @@
1
+ import type { ComponentPropsWithRef, CSSProperties, ElementType, ReactNode } from 'react';
2
+ import './Layout.css';
3
+ /** Steps of the 4px spacing scale (`--s1` … `--s10`). */
4
+ export type Space = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10;
5
+ type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
6
+ type Justify = 'start' | 'center' | 'end' | 'between' | 'around';
7
+ type Polymorphic<E extends ElementType, P> = P & {
8
+ as?: E;
9
+ className?: string;
10
+ style?: CSSProperties;
11
+ children?: ReactNode;
12
+ } & Omit<ComponentPropsWithRef<E>, keyof P | 'as' | 'className' | 'style' | 'children'>;
13
+ export type BoxProps<E extends ElementType = 'div'> = Polymorphic<E, {
14
+ padding?: Space;
15
+ paddingX?: Space;
16
+ paddingY?: Space;
17
+ /** Corner radius from the token scale. */
18
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
19
+ /** surface: white · subtle: the small gray fill (#f4f4f4). */
20
+ background?: 'none' | 'surface' | 'subtle';
21
+ /** A soft lift instead of a border. */
22
+ elevated?: boolean;
23
+ }>;
24
+ /** A spacing / surface wrapper. Reach for Card when the box is a real content group. */
25
+ export declare function Box<E extends ElementType = 'div'>({ as, padding, paddingX, paddingY, radius, background, elevated, className, style, ...rest }: BoxProps<E>): import("react").JSX.Element;
26
+ type FlexProps = {
27
+ gap?: Space;
28
+ align?: Align;
29
+ justify?: Justify;
30
+ wrap?: boolean;
31
+ };
32
+ export type StackProps<E extends ElementType = 'div'> = Polymorphic<E, FlexProps>;
33
+ /** Children in a column with even gaps. */
34
+ export declare function Stack<E extends ElementType = 'div'>({ as, gap, align, justify, wrap, className, style, ...rest }: StackProps<E>): import("react").JSX.Element;
35
+ export type InlineProps<E extends ElementType = 'div'> = Polymorphic<E, FlexProps>;
36
+ /** Children in a row (wrapping by default) with even gaps — buttons, chips, meta lines. */
37
+ export declare function Inline<E extends ElementType = 'div'>({ as, gap, align, justify, wrap, className, style, ...rest }: InlineProps<E>): import("react").JSX.Element;
38
+ export type GridProps<E extends ElementType = 'div'> = Polymorphic<E, {
39
+ /** A fixed column count, or a full `grid-template-columns` string. */
40
+ columns?: number | string;
41
+ /** Responsive: as many columns as fit, each at least this wide (px). Overrides `columns`. */
42
+ minItemWidth?: number;
43
+ gap?: Space;
44
+ rowGap?: Space;
45
+ align?: 'start' | 'center' | 'end' | 'stretch';
46
+ /** Items rise in from below one after another (~70ms apart) when they mount. Change the grid's `key` to replay. */
47
+ stagger?: boolean;
48
+ }>;
49
+ /** Equal columns, or responsive auto-fill columns with `minItemWidth`. */
50
+ export declare function Grid<E extends ElementType = 'div'>({ as, columns, minItemWidth, gap, rowGap, align, stagger, className, style, ...rest }: GridProps<E>): import("react").JSX.Element;
51
+ export interface SeparatorProps {
52
+ orientation?: 'horizontal' | 'vertical';
53
+ /** Text in the middle, e.g. "또는". */
54
+ label?: ReactNode;
55
+ /** Space on both sides of the line. */
56
+ spacing?: Space;
57
+ /** Purely visual (default) or announced as a separator. */
58
+ decorative?: boolean;
59
+ className?: string;
60
+ style?: CSSProperties;
61
+ }
62
+ /** A hairline between groups. Prefer spacing first; use this when spacing alone isn't enough. */
63
+ export declare function Separator({ orientation, label, spacing, decorative, className, style }: SeparatorProps): import("react").JSX.Element;
64
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { AnchorHTMLAttributes } from 'react';
2
+ import './Link.css';
3
+ export type LinkVariant = 'accent' | 'inherit';
4
+ export interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
5
+ /**
6
+ * accent: blue text, for links in body copy · inherit: keeps the surrounding colour (muted event
7
+ * lines, captions) and only the underline says it's a link.
8
+ */
9
+ variant?: LinkVariant;
10
+ }
11
+ /** An inline text link with a soft underline that firms up on hover. */
12
+ export declare function Link({ variant, className, ...rest }: LinkProps): import("react").JSX.Element;
@@ -0,0 +1,28 @@
1
+ import type { CSSProperties } from 'react';
2
+ import { type MaskOptions } from './maskValue';
3
+ import './MaskedText.css';
4
+ export interface MaskedTextProps extends MaskOptions {
5
+ /** The full secret: account number, IBAN, key. */
6
+ value: string;
7
+ /** What the value is ("IBAN", "계좌번호"); read out by screen readers with the masked state. */
8
+ label?: string;
9
+ /** An eye button that shows / hides the full value. */
10
+ revealable?: boolean;
11
+ revealed?: boolean;
12
+ defaultRevealed?: boolean;
13
+ onRevealedChange?: (revealed: boolean) => void;
14
+ /** A CopyButton after the value. It always copies the full value, masked or not. */
15
+ copyable?: boolean;
16
+ /** What the copy button puts on the clipboard (default: `value`, e.g. without spaces). */
17
+ copyValue?: string;
18
+ /** Monospace (code font) instead of tabular figures in the surrounding font. */
19
+ mono?: boolean;
20
+ className?: string;
21
+ style?: CSSProperties;
22
+ }
23
+ /**
24
+ * A secret with only its ends visible — "DE89 •••• 3000". Figures are tabular (or monospace) so
25
+ * the width doesn't jump when revealed. Screen readers hear that it is masked and which ends show,
26
+ * never the bullets. Optional eye toggle (with tooltip) and CopyButton.
27
+ */
28
+ export declare function MaskedText({ value, label, revealable, revealed: revealedProp, defaultRevealed, onRevealedChange, copyable, copyValue, mono, visibleStart, visibleEnd, mask, groupSize, maskLength, className, style, }: MaskedTextProps): import("react").JSX.Element;
@@ -0,0 +1,52 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import './Progress.css';
3
+ export type ProgressTone = 'default' | 'accent' | 'success' | 'warning' | 'danger';
4
+ interface ProgressBaseProps {
5
+ /** 0…max. Leave undefined for an indeterminate (unknown length) bar. */
6
+ value?: number;
7
+ max?: number;
8
+ tone?: ProgressTone;
9
+ /** Text shown above the bar (linear) or under the ring (circle). */
10
+ label?: ReactNode;
11
+ /** Prints the percentage. */
12
+ showValue?: boolean;
13
+ formatValue?: (value: number, max: number) => ReactNode;
14
+ className?: string;
15
+ style?: CSSProperties;
16
+ 'aria-label'?: string;
17
+ /** Spoken value when the number alone isn't enough (e.g. "10명 중 8명"). */
18
+ 'aria-valuetext'?: string;
19
+ }
20
+ export interface ProgressSegment {
21
+ value: number;
22
+ /** Name of the part; also read out in the progressbar's value text. */
23
+ label?: string;
24
+ /** CSS variable (`--chart-1`) or any color. Defaults to `--chart-seq-1…5` in order (blue, strongest first). */
25
+ color?: string;
26
+ }
27
+ export interface ProgressProps extends ProgressBaseProps {
28
+ size?: 'sm' | 'md' | 'lg';
29
+ /**
30
+ * Splits the fill into parts of one total (usage by category). The filled length is the sum of
31
+ * the values; each part gets its own color with a small gap and the rest stays gray. Replaces `value`.
32
+ */
33
+ segments?: ProgressSegment[];
34
+ /** No limit: a striped track without a fill. `value` is still announced. */
35
+ unlimited?: boolean;
36
+ }
37
+ /**
38
+ * A bar that fills smoothly; without `value` it loops as an indeterminate bar.
39
+ * `segments` splits the fill into colored parts, `unlimited` shows a striped track.
40
+ */
41
+ export declare function Progress({ value, max, tone, size, label, showValue, formatValue, segments, unlimited, className, style, 'aria-label': ariaLabel, 'aria-valuetext': ariaValueText, }: ProgressProps): import("react").JSX.Element;
42
+ export interface ProgressCircleProps extends ProgressBaseProps {
43
+ /** Diameter in px. */
44
+ size?: number;
45
+ /** Ring width in px. */
46
+ thickness?: number;
47
+ /** Content in the middle; defaults to the percentage when `showValue`. */
48
+ children?: ReactNode;
49
+ }
50
+ /** A ring version of Progress, for compact spots (cards, uploads, quotas). */
51
+ export declare function ProgressCircle({ value, max, tone, size, thickness, label, showValue, formatValue, children, className, style, 'aria-label': ariaLabel, 'aria-valuetext': ariaValueText, }: ProgressCircleProps): import("react").JSX.Element;
52
+ export {};
@@ -0,0 +1,22 @@
1
+ import { type TextTone, type TextVariant } from './Typography';
2
+ import { type TooltipSide } from './Tooltip';
3
+ import { type DateInput } from './formatRelativeTime';
4
+ export interface RelativeTimeProps {
5
+ /** The moment to describe: a Date, an ISO string or a timestamp. */
6
+ date: DateInput;
7
+ /** Custom wording; defaults to Korean ("방금", "2분 전", "어제"…). */
8
+ format?: (date: Date, now: Date) => string;
9
+ /** Show the full date in a tooltip on hover. */
10
+ tooltip?: boolean;
11
+ tooltipSide?: TooltipSide;
12
+ /**
13
+ * Re-render this often (ms). By default the label wakes up exactly when its text would change
14
+ * (each minute in the first hour, then hourly). `false` renders once.
15
+ */
16
+ refreshInterval?: number | false;
17
+ variant?: TextVariant;
18
+ tone?: TextTone;
19
+ className?: string;
20
+ }
21
+ /** "2분 전" in a `<time dateTime>`, kept current while it's on screen, with the full date on hover. */
22
+ export declare function RelativeTime({ date, format, tooltip, tooltipSide, refreshInterval, variant, tone, className, }: RelativeTimeProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { type InputProps } from './index';
2
+ import './SearchInput.css';
3
+ export interface SearchInputProps extends Omit<InputProps, 'leading' | 'trailing' | 'type'> {
4
+ /** Letter that focuses the field with ⌘ (Mac) or Ctrl (others), shown as a key chip. */
5
+ shortcutKey?: string;
6
+ }
7
+ /** Search field: leading magnifier, trailing shortcut chip, and the shortcut focuses it. */
8
+ export declare const SearchInput: import("react").ForwardRefExoticComponent<SearchInputProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,23 @@
1
+ import { type ButtonHTMLAttributes, type ReactNode } from 'react';
2
+ import './SelectorButton.css';
3
+ export type SelectorButtonSize = 'sm' | 'md' | 'lg';
4
+ export interface SelectorButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
5
+ /** The current choice: workspace name, user name, page title. */
6
+ label: ReactNode;
7
+ /** A second, gray line (plan, e-mail, member count). */
8
+ description?: ReactNode;
9
+ /** Avatar, letter tile or icon on the left. */
10
+ leading?: ReactNode;
11
+ /** down (rotates while its menu is open) · updown · right · none. */
12
+ chevron?: 'down' | 'updown' | 'right' | 'none';
13
+ /** sm: compact row · md: sidebar header/footer row · lg: a page title. */
14
+ size?: SelectorButtonSize;
15
+ /** Stretch to the parent's width (the chevron sits at the far end). */
16
+ block?: boolean;
17
+ }
18
+ /**
19
+ * A quiet button that shows what is selected and opens a menu to change it: a workspace or
20
+ * account switcher, a title with a dropdown. Put it in `DropdownMenu`'s `trigger` — the
21
+ * down chevron turns while the menu is open.
22
+ */
23
+ export declare const SelectorButton: import("react").ForwardRefExoticComponent<SelectorButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,15 @@
1
+ import type { CSSProperties } from 'react';
2
+ import './Spinner.css';
3
+ export type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type SpinnerTone = 'default' | 'muted' | 'accent' | 'inverse' | 'inherit';
5
+ export interface SpinnerProps {
6
+ /** A named size or a pixel number. */
7
+ size?: SpinnerSize | number;
8
+ tone?: SpinnerTone;
9
+ /** Read by screen readers. */
10
+ label?: string;
11
+ className?: string;
12
+ style?: CSSProperties;
13
+ }
14
+ /** An arc spinning over a faint track. */
15
+ export declare function Spinner({ size, tone, label, className, style }: SpinnerProps): import("react").JSX.Element;