@justanarthur/modo-ui 0.5.0 → 0.6.0-canary.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 (461) hide show
  1. package/DESIGN.md +608 -0
  2. package/README.md +61 -39
  3. package/blocks/sidebar-app/examples.mdx +33 -0
  4. package/blocks/sidebar-app/index.tsx +218 -0
  5. package/blocks/sidebar-app/inset-topbar.tsx +25 -0
  6. package/blocks/sidebar-app/menu-grid.ts +26 -0
  7. package/blocks/sidebar-app/nav-data.ts +36 -0
  8. package/blocks/sidebar-app/search-field.tsx +48 -0
  9. package/blocks/sidebar-app/user-footer.tsx +67 -0
  10. package/blocks/sidebar-app/workspace-header.tsx +129 -0
  11. package/components/AI/input-message/examples.mdx +124 -0
  12. package/components/AI/input-message/file-thumbnail.tsx +173 -0
  13. package/components/AI/input-message/index.tsx +1383 -0
  14. package/components/AI/thinking-indicator/examples.mdx +27 -0
  15. package/components/AI/thinking-indicator/index.tsx +210 -0
  16. package/components/accordion/examples.mdx +148 -0
  17. package/components/accordion/index.tsx +1034 -0
  18. package/components/avatar/examples.mdx +95 -0
  19. package/components/avatar/index.tsx +129 -0
  20. package/components/badge/change-demo.tsx +29 -0
  21. package/components/badge/examples.mdx +120 -0
  22. package/components/badge/index.tsx +225 -0
  23. package/components/badge/variants.ts +73 -0
  24. package/components/button/examples.mdx +164 -0
  25. package/components/button/index.tsx +416 -0
  26. package/components/button/loading-demo.tsx +25 -0
  27. package/components/button/variants.ts +166 -0
  28. package/components/card/examples.mdx +212 -0
  29. package/components/card/index.tsx +1037 -0
  30. package/components/copy/examples.mdx +87 -0
  31. package/components/copy/index.tsx +482 -0
  32. package/components/inputs/checkbox/examples.mdx +83 -0
  33. package/components/inputs/checkbox/index.tsx +611 -0
  34. package/components/inputs/checkbox/select-all-demo.tsx +48 -0
  35. package/components/inputs/color-picker/examples.mdx +72 -0
  36. package/components/inputs/color-picker/index.tsx +1955 -0
  37. package/components/inputs/color-picker/variants.ts +401 -0
  38. package/components/inputs/combobox/examples.mdx +273 -0
  39. package/components/inputs/combobox/index.tsx +1436 -0
  40. package/components/inputs/combobox/remote-demo.tsx +101 -0
  41. package/components/inputs/date-time/calendar/examples.mdx +34 -0
  42. package/components/inputs/date-time/calendar/index.tsx +351 -0
  43. package/components/inputs/date-time/calendar/use-month-window.ts +163 -0
  44. package/components/inputs/date-time/date-picker/examples.mdx +166 -0
  45. package/components/inputs/date-time/date-picker/index.tsx +385 -0
  46. package/components/inputs/date-time/date-picker/masked-date-input.tsx +336 -0
  47. package/components/inputs/date-time/date-range-picker/examples.mdx +29 -0
  48. package/components/inputs/date-time/date-range-picker/index.tsx +217 -0
  49. package/components/inputs/date-time/duration-picker/examples.mdx +16 -0
  50. package/components/inputs/date-time/duration-picker/index.tsx +189 -0
  51. package/components/inputs/date-time/month-picker/examples.mdx +16 -0
  52. package/components/inputs/date-time/month-picker/index.tsx +190 -0
  53. package/components/inputs/date-time/picker-shell.tsx +395 -0
  54. package/components/inputs/date-time/time-columns.tsx +91 -0
  55. package/components/inputs/date-time/time-picker/examples.mdx +26 -0
  56. package/components/inputs/date-time/time-picker/index.tsx +166 -0
  57. package/components/inputs/field/examples.mdx +113 -0
  58. package/components/inputs/field/index.tsx +267 -0
  59. package/components/inputs/file-dropzone/examples.mdx +73 -0
  60. package/components/inputs/file-dropzone/file-row.tsx +201 -0
  61. package/components/inputs/file-dropzone/index.tsx +296 -0
  62. package/components/inputs/file-dropzone/upload-demo.tsx +67 -0
  63. package/components/inputs/file-dropzone/variants.ts +94 -0
  64. package/components/inputs/input/examples.mdx +135 -0
  65. package/components/inputs/input/index.tsx +494 -0
  66. package/components/inputs/input/password-demo.tsx +30 -0
  67. package/components/inputs/label/examples.mdx +67 -0
  68. package/components/inputs/label/index.tsx +85 -0
  69. package/components/inputs/number-input/examples.mdx +56 -0
  70. package/components/inputs/number-input/index.tsx +214 -0
  71. package/components/inputs/radio/examples.mdx +77 -0
  72. package/components/inputs/radio/index.tsx +636 -0
  73. package/components/inputs/search/examples.mdx +74 -0
  74. package/components/inputs/search/index.tsx +333 -0
  75. package/components/inputs/select/examples.mdx +218 -0
  76. package/components/inputs/select/index.tsx +862 -0
  77. package/components/inputs/select/variants.ts +32 -0
  78. package/components/inputs/slider/examples.mdx +127 -0
  79. package/components/inputs/slider/index.tsx +1725 -0
  80. package/components/inputs/switch/examples.mdx +94 -0
  81. package/components/inputs/switch/index.tsx +504 -0
  82. package/components/inputs/textarea/examples.mdx +88 -0
  83. package/components/inputs/textarea/index.tsx +161 -0
  84. package/components/navigation/navigation-menu/examples.mdx +109 -0
  85. package/components/navigation/navigation-menu/index.tsx +613 -0
  86. package/components/navigation/pagination/examples.mdx +64 -0
  87. package/components/navigation/pagination/index.tsx +395 -0
  88. package/components/navigation/sidebar/examples.mdx +319 -0
  89. package/components/navigation/sidebar/index.tsx +453 -0
  90. package/components/navigation/sidebar/sidebar-core.tsx +1408 -0
  91. package/components/navigation/sidebar/sidebar-menu.tsx +1495 -0
  92. package/components/navigation/sidebar/sidebar.css +74 -0
  93. package/components/navigation/sidebar/variants.ts +55 -0
  94. package/components/navigation/tabs/examples.mdx +89 -0
  95. package/components/navigation/tabs/index.tsx +494 -0
  96. package/components/navigation/tabs-subtle/examples.mdx +49 -0
  97. package/components/navigation/tabs-subtle/index.tsx +512 -0
  98. package/components/overlays/alert-dialog/examples.mdx +123 -0
  99. package/components/overlays/alert-dialog/index.tsx +258 -0
  100. package/components/overlays/alert-dialog/pending-demo.tsx +36 -0
  101. package/components/overlays/command/examples.mdx +113 -0
  102. package/components/overlays/command/index.tsx +416 -0
  103. package/components/overlays/context-menu/examples.mdx +56 -0
  104. package/components/overlays/context-menu/index.tsx +279 -0
  105. package/components/overlays/dialog/examples.mdx +144 -0
  106. package/components/overlays/dialog/index.tsx +366 -0
  107. package/components/overlays/dropdown/dropdown-search.tsx +395 -0
  108. package/components/overlays/dropdown/examples.mdx +294 -0
  109. package/components/overlays/dropdown/index.tsx +1168 -0
  110. package/components/overlays/dropdown/menu-item.tsx +464 -0
  111. package/components/overlays/dropdown/menu-parts.tsx +660 -0
  112. package/components/overlays/popover/anchored-demo.tsx +59 -0
  113. package/components/overlays/popover/examples.mdx +180 -0
  114. package/components/overlays/popover/index.tsx +315 -0
  115. package/components/overlays/preview-card/examples.mdx +61 -0
  116. package/components/overlays/preview-card/index.tsx +204 -0
  117. package/components/overlays/sheet/examples.mdx +89 -0
  118. package/components/overlays/sheet/index.tsx +247 -0
  119. package/components/overlays/toast/examples.mdx +68 -0
  120. package/components/overlays/toast/global-demo.tsx +72 -0
  121. package/components/overlays/toast/index.tsx +474 -0
  122. package/components/overlays/toast/manager.ts +193 -0
  123. package/components/overlays/tooltip/examples.mdx +106 -0
  124. package/components/overlays/tooltip/index.tsx +519 -0
  125. package/components/progress/examples.mdx +59 -0
  126. package/components/progress/index.tsx +174 -0
  127. package/components/progress/progress.css +49 -0
  128. package/components/progress/step-demo.tsx +27 -0
  129. package/components/table/examples.mdx +184 -0
  130. package/components/table/index.tsx +510 -0
  131. package/components/table/sort-demo.tsx +61 -0
  132. package/dist/base.css +100 -0
  133. package/dist/blocks/sidebar-app/index.js +39 -26
  134. package/dist/components/AI/input-message/index.js +22 -16
  135. package/dist/components/AI/thinking-indicator/index.js +9 -6
  136. package/dist/components/accordion/index.js +16 -13
  137. package/dist/components/avatar/index.d.ts +46 -0
  138. package/dist/components/avatar/index.js +18 -0
  139. package/dist/components/badge/index.d.ts +18 -11
  140. package/dist/components/badge/index.js +11 -7
  141. package/dist/components/badge/variants.d.ts +33 -0
  142. package/dist/components/badge/variants.js +10 -0
  143. package/dist/components/button/index.d.ts +53 -17
  144. package/dist/components/button/index.js +10 -6
  145. package/dist/components/button/variants.d.ts +39 -0
  146. package/dist/components/button/variants.js +8 -0
  147. package/dist/components/card/index.d.ts +16 -3
  148. package/dist/components/card/index.js +16 -11
  149. package/dist/components/copy/index.js +13 -9
  150. package/dist/components/inputs/checkbox/index.d.ts +28 -9
  151. package/dist/components/inputs/checkbox/index.js +17 -13
  152. package/dist/components/inputs/color-picker/index.d.ts +13 -13
  153. package/dist/components/inputs/color-picker/index.js +25 -18
  154. package/dist/components/inputs/color-picker/variants.d.ts +61 -0
  155. package/dist/components/inputs/color-picker/variants.js +28 -0
  156. package/dist/components/inputs/combobox/index.d.ts +60 -17
  157. package/dist/components/inputs/combobox/index.js +26 -18
  158. package/dist/components/inputs/date-time/calendar/index.js +14 -11
  159. package/dist/components/inputs/date-time/date-picker/index.d.ts +53 -11
  160. package/dist/components/inputs/date-time/date-picker/index.js +33 -25
  161. package/dist/components/inputs/date-time/date-range-picker/index.d.ts +3 -3
  162. package/dist/components/inputs/date-time/date-range-picker/index.js +32 -24
  163. package/dist/components/inputs/date-time/duration-picker/index.d.ts +3 -3
  164. package/dist/components/inputs/date-time/duration-picker/index.js +32 -24
  165. package/dist/components/inputs/date-time/month-picker/index.d.ts +3 -3
  166. package/dist/components/inputs/date-time/month-picker/index.js +31 -23
  167. package/dist/components/inputs/date-time/time-picker/index.d.ts +3 -3
  168. package/dist/components/inputs/date-time/time-picker/index.js +32 -24
  169. package/dist/components/inputs/field/index.d.ts +116 -0
  170. package/dist/components/inputs/field/index.js +28 -0
  171. package/dist/components/inputs/file-dropzone/index.d.ts +165 -0
  172. package/dist/components/inputs/file-dropzone/index.js +32 -0
  173. package/dist/components/inputs/file-dropzone/variants.d.ts +35 -0
  174. package/dist/components/inputs/file-dropzone/variants.js +12 -0
  175. package/dist/components/inputs/input/index.d.ts +95 -13
  176. package/dist/components/inputs/input/index.js +17 -9
  177. package/dist/components/inputs/label/index.d.ts +32 -0
  178. package/dist/components/inputs/label/index.js +11 -0
  179. package/dist/components/inputs/number-input/index.d.ts +84 -0
  180. package/dist/components/inputs/number-input/index.js +20 -0
  181. package/dist/components/inputs/radio/index.d.ts +20 -5
  182. package/dist/components/inputs/radio/index.js +15 -12
  183. package/dist/components/inputs/search/index.js +25 -18
  184. package/dist/components/inputs/select/index.d.ts +41 -11
  185. package/dist/components/inputs/select/index.js +27 -14
  186. package/dist/components/inputs/select/variants.d.ts +5 -0
  187. package/dist/components/inputs/select/variants.js +6 -0
  188. package/dist/components/inputs/slider/index.js +7 -5
  189. package/dist/components/inputs/switch/index.d.ts +8 -2
  190. package/dist/components/inputs/switch/index.js +14 -12
  191. package/dist/components/inputs/textarea/index.d.ts +4 -0
  192. package/dist/components/inputs/textarea/index.js +8 -6
  193. package/dist/components/navigation/navigation-menu/index.d.ts +114 -0
  194. package/dist/components/navigation/navigation-menu/index.js +40 -0
  195. package/dist/components/navigation/pagination/index.d.ts +73 -0
  196. package/dist/components/navigation/pagination/index.js +39 -0
  197. package/dist/components/navigation/sidebar/index.d.ts +44 -21
  198. package/dist/components/navigation/sidebar/index.js +41 -31
  199. package/dist/components/navigation/sidebar/variants.d.ts +25 -0
  200. package/dist/components/navigation/sidebar/variants.js +28 -0
  201. package/dist/components/navigation/tabs/index.d.ts +8 -2
  202. package/dist/components/navigation/tabs/index.js +14 -10
  203. package/dist/components/navigation/tabs-subtle/index.js +12 -10
  204. package/dist/components/overlays/alert-dialog/index.d.ts +121 -15
  205. package/dist/components/overlays/alert-dialog/index.js +22 -13
  206. package/dist/components/overlays/command/index.js +24 -17
  207. package/dist/components/overlays/context-menu/index.d.ts +33 -17
  208. package/dist/components/overlays/context-menu/index.js +27 -18
  209. package/dist/components/overlays/dialog/index.js +17 -12
  210. package/dist/components/overlays/dropdown/index.d.ts +257 -31
  211. package/dist/components/overlays/dropdown/index.js +42 -17
  212. package/dist/components/overlays/popover/index.d.ts +31 -9
  213. package/dist/components/overlays/popover/index.js +12 -9
  214. package/dist/components/overlays/preview-card/index.js +11 -8
  215. package/dist/components/overlays/sheet/index.js +18 -13
  216. package/dist/components/overlays/toast/index.d.ts +123 -47
  217. package/dist/components/overlays/toast/index.js +18 -10
  218. package/dist/components/overlays/tooltip/index.d.ts +113 -21
  219. package/dist/components/overlays/tooltip/index.js +15 -6
  220. package/dist/components/progress/index.d.ts +56 -0
  221. package/dist/components/progress/index.js +15 -0
  222. package/dist/components/table/index.d.ts +63 -8
  223. package/dist/components/table/index.js +19 -9
  224. package/dist/index.d.ts +2201 -736
  225. package/dist/index.js +223 -82
  226. package/dist/lib/date-locale.d.ts +14 -0
  227. package/dist/lib/date-locale.js +16 -0
  228. package/dist/lib/field-classes.d.ts +144 -0
  229. package/dist/lib/field-classes.js +40 -0
  230. package/dist/lib/field-variants.d.ts +47 -0
  231. package/dist/lib/field-variants.js +26 -0
  232. package/dist/lib/fluid-hover-highlight.d.ts +112 -0
  233. package/dist/lib/fluid-hover-highlight.js +17 -0
  234. package/dist/lib/focus-ring.d.ts +18 -0
  235. package/dist/lib/focus-ring.js +10 -0
  236. package/dist/lib/goo-indicator.d.ts +46 -0
  237. package/dist/lib/goo-indicator.js +14 -0
  238. package/dist/lib/icon-context.d.ts +30 -0
  239. package/dist/lib/icon-context.js +12 -0
  240. package/dist/lib/inert.d.ts +9 -0
  241. package/dist/lib/inert.js +8 -0
  242. package/dist/lib/morph-layers.d.ts +93 -0
  243. package/dist/lib/morph-layers.js +13 -0
  244. package/dist/lib/morph-part.d.ts +21 -0
  245. package/dist/lib/morph-part.js +12 -0
  246. package/dist/lib/popup.d.ts +20 -0
  247. package/dist/lib/popup.js +12 -0
  248. package/dist/lib/reduced-motion.d.ts +9 -0
  249. package/dist/lib/reduced-motion.js +6 -0
  250. package/dist/lib/row-index.d.ts +10 -0
  251. package/dist/lib/row-index.js +8 -0
  252. package/dist/lib/row-order.d.ts +28 -0
  253. package/dist/lib/row-order.js +10 -0
  254. package/dist/lib/scroll-column.d.ts +27 -0
  255. package/dist/lib/scroll-column.js +18 -0
  256. package/dist/lib/shape-context.d.ts +30 -0
  257. package/dist/lib/shape-context.js +12 -0
  258. package/dist/lib/size-context.d.ts +94 -0
  259. package/dist/lib/size-context.js +20 -0
  260. package/dist/lib/size-scale.d.ts +79 -0
  261. package/dist/lib/size-scale.js +8 -0
  262. package/dist/lib/slot.d.ts +12 -0
  263. package/dist/lib/slot.js +6 -0
  264. package/dist/lib/springs.d.ts +44 -0
  265. package/dist/lib/springs.js +8 -0
  266. package/dist/lib/surface-classes.d.ts +19 -0
  267. package/dist/lib/surface-classes.js +10 -0
  268. package/dist/lib/surface-context.d.ts +9 -0
  269. package/dist/lib/surface-context.js +8 -0
  270. package/dist/lib/use-controllable-state.d.ts +2 -0
  271. package/dist/lib/use-controllable-state.js +6 -0
  272. package/dist/lib/use-fluid-hover.d.ts +138 -0
  273. package/dist/lib/use-fluid-hover.js +14 -0
  274. package/dist/lib/use-is-mobile.d.ts +2 -0
  275. package/dist/lib/use-is-mobile.js +6 -0
  276. package/dist/lib/use-keyboard-nav-gate.d.ts +20 -0
  277. package/dist/lib/use-keyboard-nav-gate.js +7 -0
  278. package/dist/lib/use-merge-split.d.ts +47 -0
  279. package/dist/lib/use-merge-split.js +15 -0
  280. package/dist/lib/use-morph.d.ts +101 -0
  281. package/dist/lib/use-morph.js +20 -0
  282. package/dist/lib/use-touch-primary.d.ts +2 -0
  283. package/dist/lib/use-touch-primary.js +6 -0
  284. package/dist/lib/utils.d.ts +3 -0
  285. package/dist/lib/utils.js +6 -0
  286. package/dist/preset.d.ts +17 -0
  287. package/dist/preset.js +22 -2
  288. package/dist/primitives/code/index.js +7 -5
  289. package/dist/primitives/craft/index.js +9 -6
  290. package/dist/primitives/fluid-hover/index.js +9 -8
  291. package/dist/primitives/morph/index.js +15 -10
  292. package/dist/primitives/motion/index.js +10 -8
  293. package/dist/primitives/scroll-area/index.js +4 -3
  294. package/dist/primitives/separator/index.d.ts +25 -0
  295. package/dist/primitives/separator/index.js +9 -0
  296. package/dist/primitives/sizes/index.js +6 -4
  297. package/dist/primitives/skeleton/index.d.ts +35 -0
  298. package/dist/primitives/skeleton/index.js +12 -0
  299. package/dist/primitives/surface/index.js +6 -4
  300. package/dist/shared/{components-3mkepka5.js → components-0jmqhx2k.js} +28 -25
  301. package/dist/shared/components-124epb7f.js +53 -0
  302. package/dist/shared/{components-gz8zf3ec.js → components-1k0wv53d.js} +15 -43
  303. package/dist/shared/components-26snnbs9.js +322 -0
  304. package/dist/shared/{components-2dxkv6zm.js → components-2c0qcfx4.js} +8 -7
  305. package/dist/shared/{components-473g814w.js → components-2mt9te6d.js} +243 -137
  306. package/dist/shared/{components-hawvy2qz.js → components-2z48g4fp.js} +9 -30
  307. package/dist/shared/components-34txk9rj.js +35 -0
  308. package/dist/shared/components-3h92d94m.js +23 -0
  309. package/dist/shared/{components-zfnmn5d4.js → components-3sp623ae.js} +36 -31
  310. package/dist/shared/{components-jwst3vtj.js → components-3wxkjgqn.js} +186 -76
  311. package/dist/shared/{components-s2bz1xpk.js → components-49bsynbw.js} +8 -5
  312. package/dist/shared/components-4bwsd46w.js +71 -0
  313. package/dist/shared/components-4n4f5m3e.js +297 -0
  314. package/dist/shared/{components-0q0sqfh4.js → components-4y816hwp.js} +27 -49
  315. package/dist/shared/components-52ngsgca.js +399 -0
  316. package/dist/shared/{components-y9y0g8er.js → components-52r5763g.js} +22 -19
  317. package/dist/shared/components-559tf7yb.js +28 -0
  318. package/dist/shared/components-5mkga9hj.js +440 -0
  319. package/dist/shared/{components-kwa6mrf9.js → components-5s0nfqvw.js} +14 -9
  320. package/dist/shared/{components-dk0gjr5a.js → components-60atskhp.js} +19 -18
  321. package/dist/shared/{components-rr7a6ja9.js → components-658b26nb.js} +21 -18
  322. package/dist/shared/{components-xxvdw7k1.js → components-65vwfjs6.js} +37 -34
  323. package/dist/shared/{components-frw34b65.js → components-6j2fh74k.js} +114 -123
  324. package/dist/shared/components-6zg1yft7.js +167 -0
  325. package/dist/shared/components-6zng858q.js +53 -0
  326. package/dist/shared/components-72w4ge68.js +64 -0
  327. package/dist/shared/{components-cv16mryv.js → components-78x40gee.js} +13 -7
  328. package/dist/shared/{components-b2wyq2cq.js → components-7d4r7hh1.js} +39 -57
  329. package/dist/shared/components-7ntvvegr.js +316 -0
  330. package/dist/shared/components-8nwsqjn8.js +34 -0
  331. package/dist/shared/{components-5xc2j8jz.js → components-8tt3xbb5.js} +19 -18
  332. package/dist/shared/{components-vc7vq5nz.js → components-9as3rf68.js} +6 -3
  333. package/dist/shared/components-9mys9jna.js +255 -0
  334. package/dist/shared/components-adkarj8n.js +35 -0
  335. package/dist/shared/{components-b3c5et5b.js → components-ae9fncz4.js} +32 -31
  336. package/dist/shared/{components-hqeq3w9q.js → components-awra5sff.js} +24 -16
  337. package/dist/shared/components-b1e239g3.js +28 -0
  338. package/dist/shared/{components-q5xj5c16.js → components-b1f2bjf1.js} +9 -8
  339. package/dist/shared/{components-qmmjx1qw.js → components-bn42vq6d.js} +71 -72
  340. package/dist/shared/components-c96g82th.js +1444 -0
  341. package/dist/shared/components-c9yr4ed1.js +44 -0
  342. package/dist/shared/components-d3shbwqq.js +95 -0
  343. package/dist/shared/{components-jjw69c4c.js → components-dcc02hs2.js} +7 -4
  344. package/dist/shared/{components-men63rwj.js → components-de99ykt7.js} +3 -2
  345. package/dist/shared/components-dhgk6mbt.js +16 -0
  346. package/dist/shared/components-drxrtnp2.js +25 -0
  347. package/dist/shared/{components-6p8tfcd6.js → components-ds9fqat9.js} +21 -18
  348. package/dist/shared/{components-mjthm1kf.js → components-egy4tyjt.js} +11 -8
  349. package/dist/shared/components-f0xfpkhh.js +82 -0
  350. package/dist/shared/components-f7h57m6t.js +59 -0
  351. package/dist/shared/{components-d6xtjht3.js → components-fjkpbg6n.js} +33 -30
  352. package/dist/shared/{components-gc5vtq2f.js → components-gh0qeey3.js} +63 -29
  353. package/dist/shared/{components-39jq9va1.js → components-gvbapfen.js} +29 -24
  354. package/dist/shared/{components-5vgpnxgy.js → components-gzesg7hy.js} +19 -16
  355. package/dist/shared/components-h6p86be3.js +19 -0
  356. package/dist/shared/components-h83az0bz.js +33 -0
  357. package/dist/shared/components-jjrj6ymn.js +104 -0
  358. package/dist/shared/{components-wvp1m52g.js → components-jp5v0m0f.js} +15 -14
  359. package/dist/shared/{components-zrkzcayz.js → components-jqpefjsn.js} +54 -6
  360. package/dist/shared/{components-1z6tdadk.js → components-k74j4hwh.js} +20 -17
  361. package/dist/shared/components-kswxnm3h.js +24 -0
  362. package/dist/shared/{components-jbbmdr74.js → components-mkkbbgb7.js} +36 -17
  363. package/dist/shared/{components-pbmqctfa.js → components-mpw667rb.js} +169 -65
  364. package/dist/shared/{components-s5ngg32c.js → components-paa08427.js} +121 -47
  365. package/dist/shared/{components-vfbhxf5r.js → components-pd42emw3.js} +6 -5
  366. package/dist/shared/{components-hw9yk32z.js → components-pmfszv7a.js} +35 -23
  367. package/dist/shared/{components-chacnk61.js → components-pw06rbxq.js} +19 -19
  368. package/dist/shared/components-q03cktx8.js +246 -0
  369. package/dist/shared/{components-kvr7f9hy.js → components-qdm3yh26.js} +19 -10
  370. package/dist/shared/{components-27nnvrwe.js → components-qs4rkqsj.js} +15 -14
  371. package/dist/shared/{components-s083f38z.js → components-r6gbmkew.js} +22 -21
  372. package/dist/shared/{components-ta7shw28.js → components-r8eqs7gz.js} +4 -4
  373. package/dist/shared/{components-sn1rxx1d.js → components-rm02h9nt.js} +12 -11
  374. package/dist/shared/{components-c6s6b43g.js → components-rrbpmfx4.js} +3 -2
  375. package/dist/shared/{components-n7mjr357.js → components-tz1fv35x.js} +3 -2
  376. package/dist/shared/components-tz4gaf1v.js +23 -0
  377. package/dist/shared/{components-zx6b6yby.js → components-vf45j12c.js} +4 -18
  378. package/dist/shared/{components-3ky44908.js → components-vfjc9jzz.js} +2 -3
  379. package/dist/shared/{components-39vmfq9s.js → components-vsa625vk.js} +21 -20
  380. package/dist/shared/components-wawnmkph.js +500 -0
  381. package/dist/shared/components-wktrrb4m.js +38 -0
  382. package/dist/shared/{components-8snj490h.js → components-wwd363me.js} +78 -32
  383. package/dist/shared/{components-5pnw8183.js → components-xcwvgcrd.js} +23 -22
  384. package/dist/shared/components-xdqmt6ed.js +20 -0
  385. package/dist/shared/{components-h2ajmhwn.js → components-y1w3a6wx.js} +107 -35
  386. package/dist/shared/{components-ar66gnt0.js → components-y6578b8h.js} +37 -34
  387. package/dist/shared/{components-59efxjd9.js → components-yhgq0qxx.js} +13 -12
  388. package/dist/shared/{components-jthe1pwb.js → components-yz84gpkq.js} +101 -404
  389. package/dist/shared/components-z3v0n0de.js +11 -0
  390. package/dist/shared/{components-7r3etddy.js → components-z9n19fyk.js} +19 -54
  391. package/dist/shared/components-zbvjzh1p.js +141 -0
  392. package/dist/styles.css +241 -16
  393. package/dist/tailwind.css +13 -0
  394. package/dist/tokens.css +34 -0
  395. package/index.ts +60 -0
  396. package/lib/date-locale.ts +50 -0
  397. package/lib/field-classes.ts +115 -0
  398. package/lib/field-variants.ts +117 -0
  399. package/lib/fluid-hover-highlight.tsx +139 -0
  400. package/lib/focus-ring.tsx +46 -0
  401. package/lib/goo-indicator.tsx +261 -0
  402. package/lib/icon-context.tsx +310 -0
  403. package/lib/inert.ts +22 -0
  404. package/lib/morph-layers.tsx +102 -0
  405. package/lib/morph-part.tsx +49 -0
  406. package/lib/popup.ts +52 -0
  407. package/lib/reduced-motion.ts +19 -0
  408. package/lib/row-index.tsx +29 -0
  409. package/lib/row-order.tsx +115 -0
  410. package/lib/scroll-column.tsx +244 -0
  411. package/lib/shape-context.tsx +124 -0
  412. package/lib/size-context.tsx +66 -0
  413. package/lib/size-scale.ts +115 -0
  414. package/lib/slot.ts +25 -0
  415. package/lib/springs.ts +62 -0
  416. package/lib/surface-classes.ts +58 -0
  417. package/lib/surface-context.tsx +21 -0
  418. package/lib/use-controllable-state.ts +44 -0
  419. package/lib/use-fluid-hover.ts +541 -0
  420. package/lib/use-is-mobile.ts +25 -0
  421. package/lib/use-keyboard-nav-gate.ts +45 -0
  422. package/lib/use-merge-split.tsx +209 -0
  423. package/lib/use-morph.ts +557 -0
  424. package/lib/use-touch-primary.tsx +43 -0
  425. package/lib/utils.ts +37 -0
  426. package/package.json +177 -4
  427. package/preset.ts +196 -0
  428. package/primitives/code/examples.mdx +27 -0
  429. package/primitives/code/index.tsx +80 -0
  430. package/primitives/craft/demos.tsx +173 -0
  431. package/primitives/craft/examples.mdx +138 -0
  432. package/primitives/craft/index.tsx +76 -0
  433. package/primitives/fluid-hover/examples.mdx +84 -0
  434. package/primitives/fluid-hover/index.tsx +316 -0
  435. package/primitives/morph/examples.mdx +135 -0
  436. package/primitives/morph/index.tsx +192 -0
  437. package/primitives/motion/examples.mdx +100 -0
  438. package/primitives/motion/index.tsx +160 -0
  439. package/primitives/scroll-area/examples.mdx +58 -0
  440. package/primitives/scroll-area/index.tsx +200 -0
  441. package/primitives/separator/examples.mdx +30 -0
  442. package/primitives/separator/index.tsx +53 -0
  443. package/primitives/sizes/examples.mdx +167 -0
  444. package/primitives/sizes/index.tsx +89 -0
  445. package/primitives/skeleton/examples.mdx +51 -0
  446. package/primitives/skeleton/index.tsx +72 -0
  447. package/primitives/skeleton/skeleton.css +15 -0
  448. package/primitives/surface/examples.mdx +173 -0
  449. package/primitives/surface/index.tsx +109 -0
  450. package/primitives/surface/surface.css +176 -0
  451. package/dist/shared/components-0sn7ypjw.js +0 -61
  452. package/dist/shared/components-1434p1mh.js +0 -123
  453. package/dist/shared/components-a86dytt0.js +0 -986
  454. package/dist/shared/components-gf5s6ap9.js +0 -42
  455. package/dist/shared/components-hyq23phv.js +0 -310
  456. package/dist/shared/components-ng72k97e.js +0 -128
  457. package/dist/shared/components-raknhppb.js +0 -64
  458. package/dist/shared/components-vynjtrk6.js +0 -19
  459. package/dist/shared/components-wy9jpqny.js +0 -146
  460. /package/dist/shared/{components-1v7rxytx.js → components-3ey0hzpb.js} +0 -0
  461. /package/dist/shared/{components-ezxhrmer.js → components-jcnjay5g.js} +0 -0
@@ -3,19 +3,24 @@ import {
3
3
  SheetIndent2,
4
4
  Sheet2,
5
5
  sheet_default
6
- } from "../../../shared/components-rr7a6ja9.js";
7
- import"../../../shared/components-zfnmn5d4.js";
8
- import"../../../shared/components-3ky44908.js";
9
- import"../../../shared/components-zrkzcayz.js";
10
- import"../../../shared/components-0q0sqfh4.js";
11
- import"../../../shared/components-hqeq3w9q.js";
12
- import"../../../shared/components-b2wyq2cq.js";
13
- import"../../../shared/components-n7mjr357.js";
14
- import"../../../shared/components-men63rwj.js";
15
- import"../../../shared/components-0sn7ypjw.js";
16
- import"../../../shared/components-cv16mryv.js";
17
- import"../../../shared/components-zx6b6yby.js";
18
- import"../../../shared/components-ezxhrmer.js";
6
+ } from "../../../shared/components-658b26nb.js";
7
+ import"../../../shared/components-3sp623ae.js";
8
+ import"../../../shared/components-vf45j12c.js";
9
+ import"../../../shared/components-dhgk6mbt.js";
10
+ import"../../../shared/components-vfjc9jzz.js";
11
+ import"../../../shared/components-4y816hwp.js";
12
+ import"../../../shared/components-b1e239g3.js";
13
+ import"../../../shared/components-jqpefjsn.js";
14
+ import"../../../shared/components-awra5sff.js";
15
+ import"../../../shared/components-7d4r7hh1.js";
16
+ import"../../../shared/components-f0xfpkhh.js";
17
+ import"../../../shared/components-tz1fv35x.js";
18
+ import"../../../shared/components-de99ykt7.js";
19
+ import"../../../shared/components-3ey0hzpb.js";
20
+ import"../../../shared/components-h83az0bz.js";
21
+ import"../../../shared/components-34txk9rj.js";
22
+ import"../../../shared/components-78x40gee.js";
23
+ import"../../../shared/components-jcnjay5g.js";
19
24
  export {
20
25
  Sheet2 as Sheet,
21
26
  SheetContent2 as SheetContent,
@@ -1,69 +1,134 @@
1
- import { ReactNode as ReactNode2 } from "react";
2
- import { ButtonHTMLAttributes, ReactElement, ReactNode } from "react";
1
+ import { ReactNode as ReactNode4 } from "react";
2
+ import { ComponentType } from "react";
3
+ interface IconComponentProps {
4
+ size?: number | string;
5
+ strokeWidth?: number | string;
6
+ className?: string;
7
+ }
8
+ type IconComponent = ComponentType<IconComponentProps>;
9
+ import { ButtonHTMLAttributes, ReactElement, ReactNode as ReactNode2 } from "react";
3
10
  interface SlotProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
11
  /** The element that becomes the control, e.g. a Button. */
5
12
  render?: ReactElement;
6
13
  /** Compose onto the single child instead. Both spellings work in both flavors. Defaults to `false`. */
7
14
  asChild?: boolean;
8
15
  /** Control content when there is no render element. */
9
- children?: ReactNode;
16
+ children?: ReactNode2;
10
17
  }
11
- import { ForwardRefExoticComponent as ForwardRefExoticComponent_tcubfn } from "react";
12
- import { RefAttributes as RefAttributes_miuf56 } from "react";
13
- import { JSX as JSX_1kxb } from "react";
18
+ import { ToastManager } from "@base-ui/react/toast";
19
+ import { ReactNode as ReactNode3 } from "react";
20
+ import { ToastManagerEvent as ToastManagerEvent_co995g } from "@base-ui/react";
14
21
  type ToastType = "success" | "loading" | "error" | "warning" | "info" | "action";
15
- type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
22
+ /** A button in the toast's body. */
23
+ interface ToastActionOptions {
24
+ label: ReactNode3;
25
+ onClick?: () => void;
26
+ }
16
27
  interface ToastOptions {
17
- title?: string;
18
- description?: string;
28
+ /** Reuse an id to replace a toast that is still showing. */
29
+ id?: string;
30
+ title?: ReactNode3;
31
+ description?: ReactNode3;
19
32
  type?: ToastType;
20
33
  /** Ms before it leaves; 0 keeps it until dismissed. */
21
34
  timeout?: number;
22
- action?: {
23
- label: string;
24
- onClick?: () => void;
25
- };
35
+ /** Same as `timeout`; `timeout` wins when both are set. */
36
+ duration?: number;
37
+ /** Replaces the state's icon in the pill: an icon component, or any node. */
38
+ icon?: IconComponent | ReactNode3;
39
+ /** A button in the body (`{ label, onClick }`), or any node. */
40
+ action?: ToastActionOptions | ReactNode3;
41
+ /** Runs once the toast starts to leave, however it was closed. */
42
+ onClose?: () => void;
43
+ /** `high` is announced at once by screen readers; `low` waits its turn. */
44
+ priority?: "low" | "high";
45
+ }
46
+ /** What a toast keeps beside Base UI's own fields. */
47
+ interface ToastData {
48
+ icon?: IconComponent | ReactNode3;
49
+ action?: ReactNode3;
50
+ }
51
+ type ToastInput = string | ToastOptions;
52
+ type ToastResult<T> = ToastInput | ((value: T) => ToastInput);
53
+ interface ToastPromiseOptions<T> {
54
+ loading: ToastInput;
55
+ success: ToastResult<T>;
56
+ error: ToastResult<unknown>;
26
57
  }
27
- /** Shows toasts from inside a `Toast`: `show`, the per-state shortcuts, `promise` and `close`. */
58
+ /** A shown toast: its id, and updating or dismissing it. */
59
+ interface ToastHandle {
60
+ id: string;
61
+ update: (options: ToastInput) => void;
62
+ dismiss: () => void;
63
+ }
64
+ /**
65
+ * Shows a toast from anywhere — an event handler, a fetch wrapper, code
66
+ * outside React — in the `Toast` mounted with `manager={toast}`. Returns a
67
+ * handle with the id, `update` and `dismiss`.
68
+ */
69
+ declare const toast: ((input: ToastInput) => ToastHandle) & {
70
+ /** A `success` toast. */
71
+ success: (input: ToastInput) => ToastHandle;
72
+ /** An `error` toast. */
73
+ error: (input: ToastInput) => ToastHandle;
74
+ /** A `warning` toast. */
75
+ warning: (input: ToastInput) => ToastHandle;
76
+ /** An `info` toast. */
77
+ info: (input: ToastInput) => ToastHandle;
78
+ /** A spinning `loading` toast. It stays while its type is `loading`; once updated to another type it leaves on its own `timeout` or the `Toast`'s. */
79
+ loading: (input: ToastInput) => ToastHandle;
80
+ /** Runs `promise` behind a `loading` toast that turns into its `success` or `error` toast. Returns the promise. */
81
+ promise: <T>(promise: Promise<T>, options: ToastPromiseOptions<T>) => Promise<T>;
82
+ /** Changes a toast that is showing. */
83
+ update: (id: string, input: ToastInput) => void;
84
+ /** Closes one toast, or every toast without an id. */
85
+ dismiss: (id?: string) => void;
86
+ " subscribe": (listener: (data: ToastManagerEvent_co995g) => void) => () => void;
87
+ };
88
+ /** What `<Toast manager>` takes: the global `toast`, or a manager from Base UI's `Toast.createToastManager()`. */
89
+ type ToastSource = Pick<ToastManager, " subscribe">;
90
+ import { ToastObject as ToastObject_9whgyu } from "@base-ui/react";
91
+ import { ForwardRefExoticComponent as ForwardRefExoticComponent_tcubfn } from "react";
92
+ import { RefAttributes as RefAttributes_miuf56 } from "react";
93
+ import { JSX as JSX_1kxb2 } from "react";
94
+ type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
95
+ /**
96
+ * Shows toasts from inside a `Toast`: `show`, the per-state shortcuts,
97
+ * `promise`, `update` and `close` (alias `dismiss`), plus the `toasts` showing.
98
+ * Under a `Toast` with `manager={toast}` it works on the same stack as the
99
+ * global `toast()`.
100
+ */
28
101
  declare function useToast(): {
29
- show: (o: ToastOptions) => string;
30
- success: (o: ToastOptions) => string;
31
- error: (o: ToastOptions) => string;
32
- warning: (o: ToastOptions) => string;
33
- info: (o: ToastOptions) => string;
34
- promise: <T>(promise: Promise<T>, o: {
35
- loading: ToastOptions;
36
- success: ToastOptions;
37
- error: ToastOptions;
38
- }) => Promise<T>;
102
+ toasts: ToastObject_9whgyu<ToastData>[];
103
+ show: (o: ToastInput) => string;
104
+ success: (o: ToastInput) => string;
105
+ error: (o: ToastInput) => string;
106
+ warning: (o: ToastInput) => string;
107
+ info: (o: ToastInput) => string;
108
+ promise: <T>(promise: Promise<T>, o: ToastPromiseOptions<T>) => Promise<T>;
109
+ update: (id: string, o: ToastInput) => void;
39
110
  close: (toastId?: string) => void;
111
+ dismiss: (toastId?: string) => void;
40
112
  };
41
- interface ToastTriggerProps extends Omit<SlotProps, "type"> {
113
+ interface ToastTriggerProps extends Omit<SlotProps, "type" | "title"> {
42
114
  /** The toast's title, in the pill. */
43
- title?: string;
115
+ title?: ReactNode4;
44
116
  /** Text for the body the pill melts into. */
45
- description?: string;
117
+ description?: ReactNode4;
46
118
  /** State: sets the icon and its color. Defaults to `'info'`. */
47
119
  type?: "success" | "loading" | "error" | "warning" | "info" | "action";
48
120
  /** Ms before it leaves; 0 keeps it until dismissed. Defaults to the `Toast`'s `timeout`. */
49
121
  timeout?: number;
50
- /** A button in the body. */
51
- action?: {
52
- label: string;
53
- onClick?: () => void;
54
- };
122
+ /** Replaces the state's icon in the pill: an icon component, or any node. */
123
+ icon?: IconComponent | ReactNode4;
124
+ /** A button in the body (`{ label, onClick }`), or any node. */
125
+ action?: ToastActionOptions | ReactNode4;
55
126
  /** Runs a task: the toast shows `title` while it is pending, then `success` or `error`. */
56
127
  promise?: () => Promise<unknown>;
57
128
  /** The toast once `promise` resolves. */
58
- success?: {
59
- title?: string;
60
- description?: string;
61
- };
129
+ success?: ToastOptions;
62
130
  /** The toast if `promise` rejects. */
63
- error?: {
64
- title?: string;
65
- description?: string;
66
- };
131
+ error?: ToastOptions;
67
132
  }
68
133
  declare const ToastTrigger: ForwardRefExoticComponent_tcubfn<ToastTriggerProps & RefAttributes_miuf56<HTMLButtonElement>>;
69
134
  interface ToastProps {
@@ -73,10 +138,12 @@ interface ToastProps {
73
138
  limit?: number;
74
139
  /** Ms a toast stays; hovering pauses it. Defaults to `6000`. */
75
140
  timeout?: number;
76
- /** The part of the app that can show toasts, with `Toast.Trigger`s or `useToast()`. */
77
- children?: ReactNode2;
141
+ /** Also renders the toasts this manager shows: pass the global `toast` so `toast()` calls from anywhere land here (mount one such `Toast` per app), or a manager from Base UI's `Toast.createToastManager()`. */
142
+ manager?: ToastSource;
143
+ /** The part of the app that can show toasts, with `Toast.Trigger`s or `useToast()`. Optional: a `Toast` with a `manager` can stand alone. */
144
+ children?: ReactNode4;
78
145
  }
79
- type Element_12xgc = JSX_1kxb["Element"];
146
+ type Element_12xgc2 = JSX_1kxb2["Element"];
80
147
  /**
81
148
  * Gooey toasts: a pill with the state's icon and title that melts into a body
82
149
  * with the details.
@@ -92,8 +159,17 @@ type Element_12xgc = JSX_1kxb["Element"];
92
159
  *
93
160
  * `Toast` wraps the part of the app that shows toasts and renders them at
94
161
  * its `position`. Show one with `Toast.Trigger`, or call `useToast()`
95
- * inside it: `show`, `success`, `error`, `warning`, `info`, `promise` and
96
- * `close`.
162
+ * inside it: `show`, `success`, `error`, `warning`, `info`, `promise`,
163
+ * `update` and `close`.
164
+ *
165
+ * Or mount one `<Toast manager={toast} />` near the root and call the global
166
+ * `toast()` from anywhere, inside React or not: `toast({ title, description,
167
+ * type, timeout, icon, action, onClose })`, `toast.success`, `.error`,
168
+ * `.warning`, `.info`, `.loading`, `.promise`, `.update(id, …)` and
169
+ * `.dismiss(id?)`. Each call returns a handle with the toast's `id`,
170
+ * `update` and `dismiss`; calls made before the `Toast` mounts wait for it.
171
+ * Titles and descriptions take any node, `icon` replaces the state's glyph,
172
+ * and `action` is a button (`{ label, onClick }`) or any node.
97
173
  *
98
174
  * Statics:
99
175
  * - `Toast.Trigger` — a control that shows a toast when pressed:
@@ -103,5 +179,5 @@ type Element_12xgc = JSX_1kxb["Element"];
103
179
  *
104
180
  * @example {@include ./examples.mdx}
105
181
  */
106
- declare function Toast({ position, limit, timeout, children }: ToastProps): Element_12xgc;
107
- export { Toast, ToastOptions, ToastPosition, ToastProps, ToastTrigger, ToastTriggerProps, ToastType, Toast as default, useToast };
182
+ declare function Toast({ position, limit, timeout, manager, children }: ToastProps): Element_12xgc2;
183
+ export { Toast, ToastActionOptions, ToastHandle, ToastInput, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProps, ToastSource, ToastTrigger, ToastTriggerProps, ToastType, Toast as default, toast, useToast };
@@ -1,21 +1,29 @@
1
1
  import {
2
+ toast2,
2
3
  useToast2,
3
4
  ToastTrigger2,
4
5
  Toast2,
5
6
  toast_default
6
- } from "../../../shared/components-jwst3vtj.js";
7
- import"../../../shared/components-3ky44908.js";
8
- import"../../../shared/components-0q0sqfh4.js";
9
- import"../../../shared/components-hqeq3w9q.js";
10
- import"../../../shared/components-b2wyq2cq.js";
11
- import"../../../shared/components-men63rwj.js";
12
- import"../../../shared/components-0sn7ypjw.js";
13
- import"../../../shared/components-cv16mryv.js";
14
- import"../../../shared/components-zx6b6yby.js";
15
- import"../../../shared/components-ezxhrmer.js";
7
+ } from "../../../shared/components-3wxkjgqn.js";
8
+ import"../../../shared/components-vf45j12c.js";
9
+ import"../../../shared/components-dhgk6mbt.js";
10
+ import"../../../shared/components-vfjc9jzz.js";
11
+ import"../../../shared/components-4y816hwp.js";
12
+ import"../../../shared/components-b1e239g3.js";
13
+ import"../../../shared/components-jqpefjsn.js";
14
+ import"../../../shared/components-awra5sff.js";
15
+ import"../../../shared/components-7d4r7hh1.js";
16
+ import"../../../shared/components-f0xfpkhh.js";
17
+ import"../../../shared/components-de99ykt7.js";
18
+ import"../../../shared/components-3ey0hzpb.js";
19
+ import"../../../shared/components-h83az0bz.js";
20
+ import"../../../shared/components-34txk9rj.js";
21
+ import"../../../shared/components-78x40gee.js";
22
+ import"../../../shared/components-jcnjay5g.js";
16
23
  export {
17
24
  Toast2 as Toast,
18
25
  ToastTrigger2 as ToastTrigger,
19
26
  toast_default as default,
27
+ toast2 as toast,
20
28
  useToast2 as useToast
21
29
  };
@@ -1,46 +1,124 @@
1
- import { ReactNode, RefObject } from "react";
1
+ import { HTMLAttributes, ReactElement as ReactElement2, ReactNode as ReactNode2, RefObject } from "react";
2
+ import { ButtonHTMLAttributes, ReactElement, ReactNode } from "react";
3
+ interface SlotProps extends ButtonHTMLAttributes<HTMLButtonElement> {
4
+ /** The element that becomes the control, e.g. a Button. */
5
+ render?: ReactElement;
6
+ /** Compose onto the single child instead. Both spellings work in both flavors. Defaults to `false`. */
7
+ asChild?: boolean;
8
+ /** Control content when there is no render element. */
9
+ children?: ReactNode;
10
+ }
2
11
  import { JSX as JSX_1kxb } from "react";
12
+ import { ForwardRefExoticComponent as ForwardRefExoticComponent_tcubfn } from "react";
13
+ import { RefAttributes as RefAttributes_miuf56 } from "react";
3
14
  type Element_12xgc = JSX_1kxb["Element"];
4
15
  declare function TooltipPortalContainer({ value, children }: {
5
16
  value: HTMLElement | null;
6
- children: ReactNode;
17
+ children: ReactNode2;
7
18
  }): Element_12xgc;
8
19
  interface TooltipProviderProps {
9
- children: ReactNode;
20
+ children: ReactNode2;
10
21
  /** Hover delay before tooltips open, in ms. Defaults to 200. */
11
- delayDuration?: number;
22
+ delay?: number;
23
+ /** Delay before a tooltip closes once the pointer leaves, in ms. Defaults to 0. */
24
+ closeDelay?: number;
12
25
  /** After a tooltip closes, adjacent tooltips opened within this window
13
26
  * skip the hover delay, in ms. Defaults to 300. */
27
+ timeout?: number;
28
+ /** Radix name for `delay`; `delay` wins when both are set. */
29
+ delayDuration?: number;
30
+ /** Radix name for `timeout`; `timeout` wins when both are set. A negative
31
+ * value, as some Radix configs use to turn the skip off, counts as 0. */
14
32
  skipDelayDuration?: number;
15
33
  }
16
34
  /** Groups descendant Tooltips so that once one opens, moving to an adjacent
17
35
  * trigger shows its tooltip instantly instead of re-waiting the full delay.
18
36
  * Wrap once at the app (or section) level; bare Tooltips still work without
19
- * it via a per-instance fallback. */
20
- declare function TooltipProvider({ children, delayDuration, skipDelayDuration }: TooltipProviderProps): Element_12xgc;
37
+ * it via a per-instance fallback. Takes Base UI's `delay` / `closeDelay` /
38
+ * `timeout`, or Radix's `delayDuration` / `skipDelayDuration`, so a Radix
39
+ * provider config can be spread into it. */
40
+ declare function TooltipProvider({ children, delay, closeDelay, timeout, delayDuration, skipDelayDuration }: TooltipProviderProps): Element_12xgc;
21
41
  type TooltipSide = "top" | "right" | "bottom" | "left";
42
+ type TooltipAlign = "start" | "center" | "end";
43
+ interface TooltipRootProps {
44
+ /** Controlled open state. While set, hover and focus only report through `onOpenChange`. */
45
+ open?: boolean;
46
+ /** Initial open state, for an uncontrolled tooltip. Defaults to `false`. */
47
+ defaultOpen?: boolean;
48
+ /** Called when hover, focus or Escape would open or close the tooltip. */
49
+ onOpenChange?: (open: boolean) => void;
50
+ /** Hover delay before this tooltip opens, in ms. Defaults to the surrounding TooltipProvider's, else 200. */
51
+ delay?: number;
52
+ /** Radix name for `delay`. */
53
+ delayDuration?: number;
54
+ /** Delay before it closes once the pointer leaves, in ms. Defaults to the surrounding TooltipProvider's, else 0. */
55
+ closeDelay?: number;
56
+ /** Follow the cursor along one axis while hovering the trigger (see Tooltip's `followCursor`). */
57
+ followCursor?: "x" | "y";
58
+ /** A `Tooltip.Trigger` and a `Tooltip.Content`. */
59
+ children?: ReactNode2;
60
+ }
61
+ /** The state of one compound tooltip: open state, what opened it, the delays and the cursor axis. */
62
+ declare function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, delay: delayProp, delayDuration, closeDelay, followCursor, children }: TooltipRootProps): Element_12xgc;
63
+ type TooltipTriggerProps = SlotProps;
64
+ /** The element the tooltip describes: `render={<Button/>}`, Radix-style `asChild`, or a plain button around `children`. */
65
+ declare const TooltipTrigger: ForwardRefExoticComponent_tcubfn<SlotProps & RefAttributes_miuf56<HTMLButtonElement>>;
66
+ interface TooltipContentProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "className"> {
67
+ /** The label. */
68
+ children?: ReactNode2;
69
+ /** An element to render the label as, inside the inverted surface; the label goes inside it. */
70
+ render?: ReactElement2;
71
+ /** Radix-style: the single child element is the label, rendered as-is inside the surface. Defaults to `false`. */
72
+ asChild?: boolean;
73
+ /** Preferred side of the trigger; flips when it would collide with the viewport edge. Defaults to `"top"`. */
74
+ side?: TooltipSide;
75
+ /** Alignment against the trigger along that side. Defaults to `"center"`. */
76
+ align?: TooltipAlign;
77
+ /** Distance in pixels between the tooltip and the trigger. Defaults to `8`. */
78
+ sideOffset?: number;
79
+ /** Shift in pixels along the alignment axis. Defaults to `0`. */
80
+ alignOffset?: number;
81
+ /** Classes for the label's surface. */
82
+ className?: string;
83
+ /** Classes for the portalled positioner — a z utility here lifts the tooltip above other fixed layers (default z-50). */
84
+ positionerClassName?: string;
85
+ /** Where the label grows from (see Morph): the trigger, the pointer, its own center, a viewport edge, or a ref to any element. Defaults to `'trigger'`. */
86
+ from?: "trigger" | "pointer" | "center" | "top" | "right" | "bottom" | "left" | RefObject<HTMLElement | null>;
87
+ /** How it grows (see Morph): with the liquid goo neck, a plain morph, a slide or a fade. `followCursor` tooltips always fade. Defaults to `'goo'`. */
88
+ effect?: "goo" | "morph" | "slide" | "fade";
89
+ /** Spring tier of a plain morph, slide or fade; goo runs on its own `spring.goo`. Defaults to `'moderate'`. */
90
+ tier?: "moderate" | "slow";
91
+ }
92
+ /** The inverted label, portalled and positioned next to the trigger, grown out of it through the morph. */
93
+ declare const TooltipContent: ForwardRefExoticComponent_tcubfn<TooltipContentProps & RefAttributes_miuf56<HTMLDivElement>>;
22
94
  interface TooltipProps {
23
- /** The content displayed inside the tooltip. */
24
- content: ReactNode;
25
- /** The trigger element. Must accept a ref. */
26
- children: React.ReactElement;
95
+ /** The content displayed inside the tooltip. Leave it out to use `Tooltip` as the root of a compound tooltip (`Tooltip.Trigger` + `Tooltip.Content` inside). */
96
+ content?: ReactNode2;
97
+ /** The trigger element, which must accept a ref; or, without `content`, the compound parts. */
98
+ children?: ReactNode2;
27
99
  /** Preferred side of the trigger to render the tooltip on. Defaults to `"top"`. */
28
100
  side?: TooltipSide;
29
- /** Distance in pixels between the tooltip and the trigger. Defaults to 8. */
101
+ /** Alignment against the trigger along that side. Defaults to `"center"`. */
102
+ align?: TooltipAlign;
103
+ /** Distance in pixels between the tooltip and the trigger. Defaults to `8`. */
30
104
  sideOffset?: number;
31
- /** Hover delay before this tooltip opens, in ms. Defaults to 200, or to the
32
- * ambient TooltipProvider's delayDuration when one is present. */
105
+ /** Hover delay before this tooltip opens, in ms. Defaults to 200, or to the ambient TooltipProvider's delay when one is present. */
33
106
  delayDuration?: number;
107
+ /** Base UI name for `delayDuration`. */
108
+ delay?: number;
109
+ /** Delay before it closes once the pointer leaves, in ms. Defaults to the ambient TooltipProvider's, else 0. */
110
+ closeDelay?: number;
34
111
  /** Additional classes applied to the tooltip content container. */
35
112
  className?: string;
36
- /** Extra classes for the portalled positioner element — pass a z utility
37
- * here to lift the whole tooltip above other fixed layers (default z-50). */
113
+ /** Extra classes for the portalled positioner element — pass a z utility here to lift the whole tooltip above other fixed layers (default z-50). */
38
114
  contentClassName?: string;
39
115
  /** When true, forces the tooltip open. When false, forces it closed. When undefined, uses default hover/focus behavior. */
40
116
  forceOpen?: boolean;
41
- /** Follow the cursor along one axis while hovering the trigger — for tall
42
- * or wide triggers (the Sidebar rail) where a centered tooltip sits far
43
- * from the pointer. The other axis stays anchored by `side`. */
117
+ /** Controlled open state, the Radix spelling of `forceOpen`. */
118
+ open?: boolean;
119
+ /** Initial open state, for an uncontrolled tooltip. Defaults to `false`. */
120
+ defaultOpen?: boolean;
121
+ /** Follow the cursor along one axis while hovering the trigger — for tall or wide triggers (the Sidebar rail) where a centered tooltip sits far from the pointer. The other axis stays anchored by `side`. */
44
122
  followCursor?: "x" | "y";
45
123
  /** Called when the tooltip's internal open state changes (before forceOpen is applied). */
46
124
  onOpenChange?: (open: boolean) => void;
@@ -62,14 +140,28 @@ interface TooltipProps {
62
140
  * `followCursor` tracks the pointer along one axis for tall or wide triggers,
63
141
  * while the other stays anchored by `side`. Built on Base UI's Tooltip.
64
142
  *
143
+ * Leave `content` out and `Tooltip` becomes the root of a compound tooltip:
144
+ * a `Tooltip.Trigger` and a `Tooltip.Content` inside it, the shape Radix
145
+ * code is written in. The label looks and moves the same either way.
146
+ *
65
147
  * Statics:
148
+ * - `Tooltip.Root` — `TooltipRoot`: the compound root on its own: `open`,
149
+ * `defaultOpen`, `onOpenChange`, `delay` (or `delayDuration`),
150
+ * `closeDelay`, `followCursor`.
151
+ * - `Tooltip.Trigger` — `TooltipTrigger`: the described element,
152
+ * `render={<Button/>}` or Radix-style `asChild`.
153
+ * - `Tooltip.Content` — `TooltipContent`: the label: `side`, `align`,
154
+ * `sideOffset`, `alignOffset`, `positionerClassName`, the morph options
155
+ * `from`, `effect`, `tier`, and `render` or Radix-style `asChild` for the
156
+ * label's own element; other props land on the popup.
66
157
  * - `Tooltip.Provider` — `TooltipProvider`: groups tooltips so moving from
67
158
  * one trigger to an adjacent one skips the hover delay, and the morph: the
68
- * next label shows in place.
159
+ * next label shows in place. `delay`, `closeDelay`, `timeout`, or Radix's
160
+ * `delayDuration` and `skipDelayDuration`.
69
161
  * - `Tooltip.PortalContainer` — `TooltipPortalContainer`: portal every
70
162
  * descendant tooltip into a given element instead of the body.
71
163
  *
72
164
  * @example {@include ./examples.mdx}
73
165
  */
74
- declare function Tooltip({ content, children, side, sideOffset, delayDuration, className, contentClassName, forceOpen, onOpenChange: onOpenChangeProp, followCursor, from, effect, tier }: TooltipProps): Element_12xgc;
75
- export { Tooltip, TooltipPortalContainer, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipSide, Tooltip as default };
166
+ declare function Tooltip({ content, children, side, align, sideOffset, delayDuration, delay, closeDelay, className, contentClassName, forceOpen, open, defaultOpen, onOpenChange, followCursor, from, effect, tier }: TooltipProps): Element_12xgc;
167
+ export { Tooltip, TooltipAlign, TooltipContent, TooltipContentProps, TooltipPortalContainer, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipRoot, TooltipRootProps, TooltipSide, TooltipTrigger, TooltipTriggerProps, Tooltip as default };
@@ -1,17 +1,26 @@
1
1
  import {
2
2
  TooltipPortalContainer2,
3
3
  TooltipProvider2,
4
+ TooltipRoot2,
5
+ TooltipTrigger2,
6
+ TooltipContent2,
4
7
  Tooltip2,
5
8
  tooltip_default
6
- } from "../../../shared/components-ng72k97e.js";
7
- import"../../../shared/components-0q0sqfh4.js";
8
- import"../../../shared/components-hqeq3w9q.js";
9
- import"../../../shared/components-men63rwj.js";
10
- import"../../../shared/components-cv16mryv.js";
11
- import"../../../shared/components-ezxhrmer.js";
9
+ } from "../../../shared/components-q03cktx8.js";
10
+ import"../../../shared/components-vfjc9jzz.js";
11
+ import"../../../shared/components-4y816hwp.js";
12
+ import"../../../shared/components-b1e239g3.js";
13
+ import"../../../shared/components-awra5sff.js";
14
+ import"../../../shared/components-de99ykt7.js";
15
+ import"../../../shared/components-3ey0hzpb.js";
16
+ import"../../../shared/components-78x40gee.js";
17
+ import"../../../shared/components-jcnjay5g.js";
12
18
  export {
13
19
  Tooltip2 as Tooltip,
20
+ TooltipContent2 as TooltipContent,
14
21
  TooltipPortalContainer2 as TooltipPortalContainer,
15
22
  TooltipProvider2 as TooltipProvider,
23
+ TooltipRoot2 as TooltipRoot,
24
+ TooltipTrigger2 as TooltipTrigger,
16
25
  tooltip_default as default
17
26
  };
@@ -0,0 +1,56 @@
1
+ import { ComponentPropsWithoutRef, ForwardRefExoticComponent, ReactNode, RefAttributes } from "react";
2
+ type SizeVariant = "default" | "compact";
3
+ interface SpinnerProps extends Omit<ComponentPropsWithoutRef<"span">, "children"> {
4
+ /** Pins the spinner to one step of the size ladder: one control tall (36px default, 28px compact), like a loading Button's. Defaults to the surrounding SizeProvider. */
5
+ size?: SizeVariant;
6
+ /** What is loading, read to assistive tech. Defaults to `"Loading"`. */
7
+ label?: string;
8
+ /** Classes for the box: a size off the ladder (`size-5` inline in text), a color. */
9
+ className?: string;
10
+ }
11
+ /** An indeterminate wait in a small space: Button's loading glyph on its own. */
12
+ declare const Spinner: ForwardRefExoticComponent<SpinnerProps & RefAttributes<HTMLSpanElement>>;
13
+ interface ProgressProps extends Omit<ComponentPropsWithoutRef<"div">, "children"> {
14
+ /** How far along the task is, between `min` and `max`. `null` is an indeterminate bar: a segment sweeping the track while the amount is unknown. Defaults to `null`. */
15
+ value?: number | null;
16
+ /** The value of an empty bar. Defaults to `0`. */
17
+ min?: number;
18
+ /** The value of a full bar. Defaults to `100`. */
19
+ max?: number;
20
+ /** A label above the bar, also its accessible name. Without one, give the bar an `aria-label`. */
21
+ label?: ReactNode;
22
+ /** Shows the value, formatted as a percentage, at the end of the label row. Defaults to `false`. */
23
+ showValue?: boolean;
24
+ /** Number format for the shown value and for assistive tech, as `Intl.NumberFormat` options. Defaults to a percentage. */
25
+ format?: Intl.NumberFormatOptions;
26
+ /** Pins the label row to one step of the size ladder. Defaults to the surrounding SizeProvider. */
27
+ size?: SizeVariant;
28
+ /** Classes for the root: a width, or `absolute inset-x-0 top-0` for a loading line along a region's top edge. */
29
+ className?: string;
30
+ }
31
+ type ProgressComponent = ForwardRefExoticComponent<ProgressProps & RefAttributes<HTMLDivElement>> & {
32
+ Spinner: typeof Spinner;
33
+ };
34
+ /**
35
+ * Shows how far along a task is, or that something is still working when
36
+ * nobody knows how far.
37
+ *
38
+ * A determinate bar (`value`) slides its fill to the new amount on the
39
+ * indicator spring, never stretching it, so the rounded end keeps its shape;
40
+ * an indeterminate one (`value={null}`) sweeps an ink segment along a recessed
41
+ * track. The fill is ink, not the brand blue: progress is information, not a
42
+ * selection. Base UI's Progress gives the bar its `progressbar` role, its
43
+ * values and their text for assistive tech; `label` names it and `showValue`
44
+ * prints the formatted value beside the label. Under reduced motion the fill
45
+ * jumps to its amount and the indeterminate bar breathes in place instead of
46
+ * travelling.
47
+ *
48
+ * Statics:
49
+ * - `Progress.Spinner` — the same wait in a small space: Button's loading
50
+ * glyph on its own, one control tall (`size`), `label` for assistive tech.
51
+ * Also exported as `Spinner`.
52
+ *
53
+ * @example {@include ./examples.mdx}
54
+ */
55
+ declare const Progress: ProgressComponent;
56
+ export { Progress, ProgressProps, Spinner, SpinnerProps, Progress as default };
@@ -0,0 +1,15 @@
1
+ import {
2
+ Spinner2,
3
+ Progress2,
4
+ progress_default
5
+ } from "../../shared/components-d3shbwqq.js";
6
+ import"../../shared/components-de99ykt7.js";
7
+ import"../../shared/components-3ey0hzpb.js";
8
+ import"../../shared/components-h83az0bz.js";
9
+ import"../../shared/components-34txk9rj.js";
10
+ import"../../shared/components-jcnjay5g.js";
11
+ export {
12
+ Progress2 as Progress,
13
+ Spinner2 as Spinner,
14
+ progress_default as default
15
+ };