@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
@@ -1,35 +1,36 @@
1
+ "use client";
2
+ import {
3
+ spring2
4
+ } from "./components-3ey0hzpb.js";
1
5
  import {
2
6
  cn2
3
- } from "./components-ezxhrmer.js";
7
+ } from "./components-jcnjay5g.js";
4
8
  import {
5
- GooIndicator
6
- } from "./components-chacnk61.js";
9
+ GooIndicator2
10
+ } from "./components-pw06rbxq.js";
7
11
  import {
8
12
  FluidHoverHighlight2
9
- } from "./components-kvr7f9hy.js";
13
+ } from "./components-qdm3yh26.js";
10
14
  import {
11
- IndexedRows,
12
- useRowIndex
13
- } from "./components-ta7shw28.js";
15
+ IndexedRows2,
16
+ useRowIndex2
17
+ } from "./components-r8eqs7gz.js";
14
18
  import {
15
- useShape
16
- } from "./components-cv16mryv.js";
19
+ useShape2
20
+ } from "./components-78x40gee.js";
17
21
  import {
18
22
  useSize2
19
- } from "./components-0sn7ypjw.js";
23
+ } from "./components-h83az0bz.js";
20
24
  import {
21
- useControllableState
22
- } from "./components-n7mjr357.js";
25
+ useControllableState2
26
+ } from "./components-tz1fv35x.js";
23
27
  import {
24
28
  useFluidHover2,
25
29
  useRegisterFluidHoverItem2
26
- } from "./components-59efxjd9.js";
30
+ } from "./components-yhgq0qxx.js";
27
31
  import {
28
32
  SizeProvider2
29
- } from "./components-jjw69c4c.js";
30
- import {
31
- spring2
32
- } from "./components-1v7rxytx.js";
33
+ } from "./components-dcc02hs2.js";
33
34
 
34
35
  // components/inputs/switch/index.tsx
35
36
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
@@ -75,12 +76,15 @@ var Switch2 = forwardRef(({
75
76
  onToggle,
76
77
  onCheckedChange,
77
78
  disabled = false,
79
+ name,
80
+ value,
81
+ required = false,
78
82
  thumbTransition,
79
83
  size,
80
84
  className,
81
85
  ...props
82
86
  }, ref) => {
83
- const [isChecked, setChecked] = useControllableState(checked, defaultChecked, onCheckedChange);
87
+ const [isChecked, setChecked] = useControllableState2(checked, defaultChecked, onCheckedChange);
84
88
  const toggle = useCallback(() => {
85
89
  setChecked((prev) => !prev);
86
90
  onToggle?.();
@@ -88,7 +92,7 @@ var Switch2 = forwardRef(({
88
92
  const labelId = useId();
89
93
  const descriptionId = useId();
90
94
  const group = useContext(SwitchGroupContext);
91
- const index = useRowIndex();
95
+ const index = useRowIndex2();
92
96
  const rowRef = useRef(null);
93
97
  useRegisterFluidHoverItem2(disabled ? undefined : group?.registerItem, index, rowRef);
94
98
  const end = trackSide === "end" || !!group;
@@ -174,6 +178,53 @@ var Switch2 = forwardRef(({
174
178
  }
175
179
  pointerStart.current = null;
176
180
  }, [setDragX]);
181
+ const trackClass = cn2("relative shrink-0 rounded-full outline-none cursor-pointer", "transition-colors duration-fast", "focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", isChecked ? hovered ? "bg-brand-hover" : "bg-brand" : hovered ? "bg-accent-hover" : "bg-accent");
182
+ const thumbElement = /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
183
+ className: "pointer-events-none absolute inset-0",
184
+ children: /* @__PURE__ */ jsx(GooIndicator2, {
185
+ rect: thumb,
186
+ className: "rounded-full bg-thumb",
187
+ shadow: "shadow-thumb",
188
+ transition: dragX === null ? thumbTransition ?? spring2.moderate : false
189
+ })
190
+ });
191
+ if (label === undefined && !group) {
192
+ return /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
193
+ ref: (node) => {
194
+ rowRef.current = node;
195
+ if (typeof ref === "function")
196
+ ref(node);
197
+ else if (ref)
198
+ ref.current = node;
199
+ },
200
+ checked: isChecked,
201
+ onCheckedChange: () => {
202
+ if (didDrag.current)
203
+ return;
204
+ toggle();
205
+ },
206
+ disabled,
207
+ name,
208
+ value,
209
+ required,
210
+ onPointerEnter: (e) => {
211
+ if (e.pointerType === "mouse")
212
+ setHovered(true);
213
+ },
214
+ onPointerLeave: () => setHovered(false),
215
+ onPointerDown: handlePointerDown,
216
+ onPointerMove: handlePointerMove,
217
+ onPointerUp: handlePointerUp,
218
+ onPointerCancel: handlePointerCancel,
219
+ className: cn2(trackClass, "touch-none", disabled && "opacity-50 pointer-events-none", className),
220
+ style: {
221
+ width: m.trackWidth,
222
+ height: m.trackHeight
223
+ },
224
+ ...props,
225
+ children: thumbElement
226
+ });
227
+ }
177
228
  return /* @__PURE__ */ jsxs("div", {
178
229
  ref: (node) => {
179
230
  rowRef.current = node;
@@ -201,25 +252,20 @@ var Switch2 = forwardRef(({
201
252
  children: [
202
253
  /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
203
254
  checked: isChecked,
204
- "aria-labelledby": labelId,
255
+ "aria-labelledby": label === undefined ? undefined : labelId,
205
256
  "aria-describedby": description ? descriptionId : undefined,
206
257
  disabled,
258
+ name,
259
+ value,
260
+ required,
207
261
  tabIndex: 0,
208
- className: cn2("relative shrink-0 rounded-full outline-none cursor-pointer", end && "order-last", "transition-colors duration-fast", "focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", isChecked ? hovered ? "bg-brand-hover" : "bg-brand" : hovered ? "bg-accent-hover" : "bg-accent"),
262
+ className: cn2(trackClass, end && "order-last"),
209
263
  style: {
210
264
  width: m.trackWidth,
211
265
  height: m.trackHeight
212
266
  },
213
267
  onClick: (e) => e.stopPropagation(),
214
- children: /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
215
- className: "pointer-events-none absolute inset-0",
216
- children: /* @__PURE__ */ jsx(GooIndicator, {
217
- rect: thumb,
218
- className: "rounded-full bg-thumb",
219
- shadow: "shadow-thumb",
220
- transition: dragX === null ? thumbTransition ?? spring2.moderate : false
221
- })
222
- })
268
+ children: thumbElement
223
269
  }),
224
270
  /* @__PURE__ */ jsxs("span", {
225
271
  className: cn2("flex min-w-0 flex-col gap-1", end && "flex-1"),
@@ -247,7 +293,7 @@ Switch2.displayName = "Switch";
247
293
  var SwitchGroup2 = forwardRef(({ children, size, className, ...props }, ref) => {
248
294
  const containerRef = useRef(null);
249
295
  const hover = useFluidHover2(containerRef, { gapClick: false });
250
- const shape = useShape();
296
+ const shape = useShape2();
251
297
  const count = Children.toArray(children).filter(isValidElement).length;
252
298
  const group = /* @__PURE__ */ jsx(SwitchGroupContext.Provider, {
253
299
  value: { registerItem: hover.registerItem, activeIndex: hover.activeIndex, count },
@@ -270,7 +316,7 @@ var SwitchGroup2 = forwardRef(({ children, size, className, ...props }, ref) =>
270
316
  hover,
271
317
  className: cn2("z-0", shape.container)
272
318
  }),
273
- /* @__PURE__ */ jsx(IndexedRows, {
319
+ /* @__PURE__ */ jsx(IndexedRows2, {
274
320
  children
275
321
  })
276
322
  ]
@@ -1,21 +1,22 @@
1
+ "use client";
1
2
  import {
2
- useShape
3
- } from "./components-cv16mryv.js";
3
+ useShape2
4
+ } from "./components-78x40gee.js";
4
5
  import {
5
6
  useSize2
6
- } from "./components-0sn7ypjw.js";
7
+ } from "./components-h83az0bz.js";
7
8
  import {
8
9
  cn2
9
- } from "./components-ezxhrmer.js";
10
+ } from "./components-jcnjay5g.js";
10
11
  import {
11
12
  button_default
12
- } from "./components-b2wyq2cq.js";
13
+ } from "./components-7d4r7hh1.js";
13
14
  import {
14
- useIcon
15
- } from "./components-zrkzcayz.js";
15
+ useIcon2
16
+ } from "./components-jqpefjsn.js";
16
17
  import {
17
18
  tooltip_default
18
- } from "./components-ng72k97e.js";
19
+ } from "./components-q03cktx8.js";
19
20
  import {
20
21
  SidebarTrigger2,
21
22
  SidebarInput2,
@@ -23,13 +24,13 @@ import {
23
24
  SidebarMenuItem2,
24
25
  SidebarMenuButton2,
25
26
  sidebar_default
26
- } from "./components-qmmjx1qw.js";
27
+ } from "./components-bn42vq6d.js";
27
28
  import {
28
29
  MenuItem2,
29
30
  DropdownMenu2,
30
31
  DropdownTrigger2,
31
32
  DropdownContent2
32
- } from "./components-a86dytt0.js";
33
+ } from "./components-c96g82th.js";
33
34
 
34
35
  // blocks/sidebar-app/index.tsx
35
36
  import { useState } from "react";
@@ -69,7 +70,7 @@ var NAV_SECTIONS = [
69
70
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
70
71
  function SidebarSearchField({ placeholder = "Search…", shortcut = "⌘K", ...props }) {
71
72
  const iconSize = useSize2().icon;
72
- const SearchIcon = useIcon("search");
73
+ const SearchIcon = useIcon2("search");
73
74
  return /* @__PURE__ */ jsxs2("div", {
74
75
  className: "group/search relative",
75
76
  children: [
@@ -100,7 +101,7 @@ var SIDEBAR_MENU_POPUP = `min-w-[240px] w-[calc(var(--anchor-width)_+_10px)] ${S
100
101
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
101
102
  function SidebarUserFooter({ name, avatar, menu, className }) {
102
103
  const iconSize = useSize2().icon;
103
- const ChevronsUpDown = useIcon("chevrons-up-down");
104
+ const ChevronsUpDown = useIcon2("chevrons-up-down");
104
105
  return /* @__PURE__ */ jsx3(SidebarMenu2, {
105
106
  "aria-label": "User",
106
107
  className: cn2(className),
@@ -153,7 +154,7 @@ function SidebarWorkspaceHeader({
153
154
  defaultCheckedIndex
154
155
  }) {
155
156
  const iconSize = useSize2().icon;
156
- const ChevronDown = useIcon("chevron-down");
157
+ const ChevronDown = useIcon2("chevron-down");
157
158
  const tileSlot = /* @__PURE__ */ jsx4("span", {
158
159
  "aria-hidden": true,
159
160
  className: "pointer-events-none absolute left-1.5 top-1/2 -translate-y-1/2",
@@ -210,7 +211,7 @@ function SidebarWorkspaceHeader({
210
211
  });
211
212
  }
212
213
  function WorkspaceTile({ children, className }) {
213
- const shape = useShape();
214
+ const shape = useShape2();
214
215
  return /* @__PURE__ */ jsx4("span", {
215
216
  className: cn2("flex size-5 shrink-0 items-center justify-center bg-foreground text-micro-compact weight-semibold text-background", shape.bgRadius >= 20 ? "rounded-full" : "rounded-md", className),
216
217
  children
@@ -220,14 +221,14 @@ function WorkspaceTile({ children, className }) {
220
221
  // blocks/sidebar-app/index.tsx
221
222
  import { jsx as jsx5, jsxs as jsxs5, Fragment } from "react/jsx-runtime";
222
223
  function AppSidebar({ variant, side, className, value, onValueChange }) {
223
- const PlusIcon = useIcon("plus");
224
- const PencilIcon = useIcon("pencil");
225
- const MoreVerticalIcon = useIcon("more-vertical");
226
- const LinkIcon = useIcon("link");
227
- const UserIcon = useIcon("user");
228
- const SettingsIcon = useIcon("settings");
229
- const ArrowLeftIcon = useIcon("arrow-left");
230
- const MoonIcon = useIcon("moon");
224
+ const PlusIcon = useIcon2("plus");
225
+ const PencilIcon = useIcon2("pencil");
226
+ const MoreVerticalIcon = useIcon2("more-vertical");
227
+ const LinkIcon = useIcon2("link");
228
+ const UserIcon = useIcon2("user");
229
+ const SettingsIcon = useIcon2("settings");
230
+ const ArrowLeftIcon = useIcon2("arrow-left");
231
+ const MoonIcon = useIcon2("moon");
231
232
  return /* @__PURE__ */ jsxs5(sidebar_default, {
232
233
  variant,
233
234
  side,
@@ -0,0 +1,20 @@
1
+ // components/inputs/select/variants.ts
2
+ import { cva } from "class-variance-authority";
3
+ var triggerVariants2 = cva([
4
+ "group inline-flex items-center justify-between outline-none cursor-pointer",
5
+ "transition-all duration-fast",
6
+ "disabled:opacity-50 disabled:pointer-events-none",
7
+ "focus-visible:ring-1 focus-visible:ring-focus-ring"
8
+ ], {
9
+ variants: {
10
+ variant: {
11
+ bordered: "border border-border bg-transparent text-foreground hover:bg-hover",
12
+ borderless: "border border-transparent bg-transparent text-foreground hover:bg-hover"
13
+ }
14
+ },
15
+ defaultVariants: {
16
+ variant: "bordered"
17
+ }
18
+ });
19
+
20
+ export { triggerVariants2 };
@@ -1,25 +1,39 @@
1
+ "use client";
2
+ import {
3
+ fieldIconClasses2,
4
+ fieldAdornmentClasses2,
5
+ FIELD_ADORNMENT_ICON2,
6
+ FIELD_ACTION2,
7
+ FIELD_ACTION_RADIUS2,
8
+ fieldActionClasses2
9
+ } from "./components-124epb7f.js";
10
+ import {
11
+ useShape2
12
+ } from "./components-78x40gee.js";
1
13
  import {
2
14
  useSize2
3
- } from "./components-0sn7ypjw.js";
15
+ } from "./components-h83az0bz.js";
4
16
  import {
5
17
  cn2
6
- } from "./components-ezxhrmer.js";
18
+ } from "./components-jcnjay5g.js";
7
19
  import {
8
- fieldIconClasses,
9
- FieldStateContext,
10
- useFieldBox,
11
- focusControlOnPress
12
- } from "./components-raknhppb.js";
20
+ FieldStateContext2,
21
+ useFieldBox2,
22
+ focusControlOnPress2
23
+ } from "./components-6zng858q.js";
13
24
  import {
14
- useControllableState
15
- } from "./components-n7mjr357.js";
25
+ useControllableState2
26
+ } from "./components-tz1fv35x.js";
16
27
  import {
17
28
  useFluidHover2,
18
29
  useRegisterFluidHoverItem2
19
- } from "./components-59efxjd9.js";
30
+ } from "./components-yhgq0qxx.js";
20
31
  import {
21
32
  SizeProvider2
22
- } from "./components-jjw69c4c.js";
33
+ } from "./components-dcc02hs2.js";
34
+ import {
35
+ Label2
36
+ } from "./components-adkarj8n.js";
23
37
 
24
38
  // components/inputs/input/index.tsx
25
39
  import { Field } from "@base-ui/react/field";
@@ -27,6 +41,7 @@ import {
27
41
  createContext,
28
42
  forwardRef,
29
43
  useContext,
44
+ useLayoutEffect,
30
45
  useMemo,
31
46
  useRef
32
47
  } from "react";
@@ -40,29 +55,40 @@ function useInputGroup() {
40
55
  }
41
56
  var Input2 = forwardRef(({
42
57
  icon: Icon,
58
+ startAdornment,
59
+ endAdornment,
43
60
  value: valueProp,
44
61
  defaultValue = "",
45
62
  onChange: onChangeProp,
46
63
  variant = "borderless",
47
64
  invalid,
48
65
  disabled,
66
+ readOnly,
67
+ required,
68
+ type = "text",
69
+ onSelect,
49
70
  size,
50
71
  className,
51
72
  ...props
52
73
  }, ref) => {
53
- const [value, onChange] = useControllableState(valueProp, defaultValue, onChangeProp);
74
+ const [value, onChange] = useControllableState2(valueProp, defaultValue, onChangeProp);
54
75
  const inputRef = useRef(null);
55
- const box = useFieldBox({ variant, invalid, disabled, size });
76
+ const box = useFieldBox2({ variant, invalid, disabled, readOnly, required, size });
56
77
  const { size: sizeClasses, props: boxProps } = box;
78
+ const keepSelection = useSelectionAcrossType(inputRef, type);
57
79
  return /* @__PURE__ */ jsxs("div", {
58
- onMouseDown: focusControlOnPress(inputRef),
80
+ onMouseDown: focusControlOnPress2(inputRef),
59
81
  ...boxProps,
60
82
  className: cn2(boxProps.className, "flex items-center", sizeClasses.gap, sizeClasses.control, className),
61
83
  children: [
62
84
  Icon && /* @__PURE__ */ jsx(Icon, {
63
85
  size: sizeClasses.icon,
64
86
  strokeWidth: 1.5,
65
- className: fieldIconClasses
87
+ className: fieldIconClasses2
88
+ }),
89
+ /* @__PURE__ */ jsx(InputAdornment2, {
90
+ size,
91
+ children: startAdornment
66
92
  }),
67
93
  /* @__PURE__ */ jsx(Field.Control, {
68
94
  ref: (node) => {
@@ -73,39 +99,85 @@ var Input2 = forwardRef(({
73
99
  else if (ref)
74
100
  ref.current = input;
75
101
  },
76
- type: "text",
102
+ type,
103
+ onSelect: (e) => {
104
+ keepSelection(e.currentTarget);
105
+ onSelect?.(e);
106
+ },
77
107
  value,
78
108
  onChange: (e) => onChange(e.target.value),
79
109
  disabled: box.disabled,
110
+ readOnly: box.readOnly,
111
+ required: box.required,
80
112
  "aria-invalid": box.invalid || undefined,
81
- className: cn2("w-full rounded-none bg-transparent text-foreground placeholder:text-muted-foreground outline-none font-[inherit]", sizeClasses.text, "weight-normal"),
113
+ className: cn2("w-full min-w-0 rounded-none bg-transparent text-foreground placeholder:text-muted-foreground outline-none font-[inherit]", sizeClasses.text, "weight-normal"),
82
114
  ...props
115
+ }),
116
+ /* @__PURE__ */ jsx(InputAdornment2, {
117
+ size,
118
+ children: endAdornment
83
119
  })
84
120
  ]
85
121
  });
86
122
  });
87
123
  Input2.displayName = "Input";
88
- var Label2 = forwardRef(({ children, invalid, size, className, ...props }, ref) => {
124
+ function useSelectionAcrossType(input, type) {
125
+ const selection = useRef([null, null]);
126
+ const lastType = useRef(type);
127
+ useLayoutEffect(() => {
128
+ if (lastType.current === type)
129
+ return;
130
+ lastType.current = type;
131
+ const el = input.current;
132
+ const [start, end] = selection.current;
133
+ if (!el || start === null || el.ownerDocument.activeElement !== el)
134
+ return;
135
+ const restore = () => {
136
+ try {
137
+ el.setSelectionRange(start, end);
138
+ } catch {}
139
+ };
140
+ restore();
141
+ const frame = requestAnimationFrame(restore);
142
+ return () => cancelAnimationFrame(frame);
143
+ }, [input, type]);
144
+ return (el) => {
145
+ selection.current = [el.selectionStart, el.selectionEnd];
146
+ };
147
+ }
148
+ function InputAdornment2({ children, size, className }) {
89
149
  const sizeClasses = useSize2(size);
90
- const compact = sizeClasses.variant === "compact";
91
- return /* @__PURE__ */ jsxs("label", {
150
+ if (children == null || children === false || children === "")
151
+ return null;
152
+ const node = /* @__PURE__ */ jsx("span", {
153
+ className: cn2(fieldAdornmentClasses2, FIELD_ADORNMENT_ICON2[sizeClasses.variant], sizeClasses.gap, sizeClasses.text, className),
154
+ children
155
+ });
156
+ return size ? /* @__PURE__ */ jsx(SizeProvider2, {
157
+ size,
158
+ children: node
159
+ }) : node;
160
+ }
161
+ var InputAction2 = forwardRef(({ label, icon: Icon, children, size, className, onMouseDown, ...props }, ref) => {
162
+ const sizeClasses = useSize2(size);
163
+ const shape = useShape2();
164
+ return /* @__PURE__ */ jsx("button", {
92
165
  ref,
93
- className: cn2("inline-grid", sizeClasses.text, "data-[disabled]:opacity-50", compact ? "pl-2" : "pl-2.5", className),
166
+ type: "button",
167
+ "aria-label": label,
168
+ onMouseDown: (e) => {
169
+ onMouseDown?.(e);
170
+ e.preventDefault();
171
+ },
172
+ className: cn2(fieldActionClasses2, FIELD_ACTION2[sizeClasses.variant], FIELD_ACTION_RADIUS2[shape.variant], className),
94
173
  ...props,
95
- children: [
96
- /* @__PURE__ */ jsx("span", {
97
- className: "col-start-1 row-start-1 invisible weight-semibold",
98
- "aria-hidden": "true",
99
- children
100
- }),
101
- /* @__PURE__ */ jsx("span", {
102
- className: cn2("col-start-1 row-start-1", invalid ? "text-destructive" : "text-muted-foreground", "weight-normal"),
103
- children
104
- })
105
- ]
174
+ children: Icon ? /* @__PURE__ */ jsx(Icon, {
175
+ size: sizeClasses.icon,
176
+ strokeWidth: 1.5
177
+ }) : children
106
178
  });
107
179
  });
108
- Label2.displayName = "Label";
180
+ InputAction2.displayName = "InputAction";
109
181
  var InputGroup2 = forwardRef(({ children, size, className, ...props }, ref) => {
110
182
  const containerRef = useRef(null);
111
183
  const { activeIndex, handlers, registerItem } = useFluidHover2(containerRef);
@@ -160,7 +232,7 @@ var InputField = forwardRef(({ label, labelHidden, index, error, disabled, child
160
232
  children: label
161
233
  })
162
234
  }),
163
- /* @__PURE__ */ jsx(FieldStateContext.Provider, {
235
+ /* @__PURE__ */ jsx(FieldStateContext2.Provider, {
164
236
  value: fieldState,
165
237
  children: children ?? /* @__PURE__ */ jsx(Input2, {
166
238
  invalid: !!error,
@@ -180,4 +252,4 @@ InputField.displayName = "InputField";
180
252
  Object.assign(InputGroup2, { Field: InputField });
181
253
  var input_default = Input2;
182
254
 
183
- export { Input2, Label2, InputGroup2, input_default };
255
+ export { Input2, InputAdornment2, InputAction2, InputGroup2, input_default };
@@ -1,51 +1,54 @@
1
+ "use client";
1
2
  import {
2
- useMorphOrigin,
3
- useMorph
4
- } from "./components-hqeq3w9q.js";
3
+ useMorphOrigin2,
4
+ useMorph2
5
+ } from "./components-awra5sff.js";
5
6
  import {
6
7
  cn2
7
- } from "./components-ezxhrmer.js";
8
+ } from "./components-jcnjay5g.js";
8
9
  import {
9
10
  FluidHoverHighlight2
10
- } from "./components-kvr7f9hy.js";
11
+ } from "./components-qdm3yh26.js";
11
12
  import {
12
- MorphSurface
13
- } from "./components-0q0sqfh4.js";
13
+ MorphSurface2
14
+ } from "./components-4y816hwp.js";
14
15
  import {
15
- shapeMap
16
- } from "./components-cv16mryv.js";
16
+ popupScrollAreaClass2,
17
+ popupViewportClass2,
18
+ isDisabledRow2
19
+ } from "./components-h6p86be3.js";
20
+ import {
21
+ shapeMap2
22
+ } from "./components-78x40gee.js";
17
23
  import {
18
24
  useSize2
19
- } from "./components-0sn7ypjw.js";
25
+ } from "./components-h83az0bz.js";
26
+ import {
27
+ SURFACE_BG2,
28
+ SURFACE_SHADOW2
29
+ } from "./components-vf45j12c.js";
20
30
  import {
21
- SURFACE_BG,
22
- SURFACE_SHADOW,
23
31
  useSurface2,
24
32
  SurfaceProvider2
25
- } from "./components-zx6b6yby.js";
33
+ } from "./components-dhgk6mbt.js";
26
34
  import {
27
- useControllableState
28
- } from "./components-n7mjr357.js";
35
+ useControllableState2
36
+ } from "./components-tz1fv35x.js";
29
37
  import {
30
38
  useFluidHover2
31
- } from "./components-59efxjd9.js";
39
+ } from "./components-yhgq0qxx.js";
32
40
  import {
33
41
  ScrollArea2
34
- } from "./components-hawvy2qz.js";
42
+ } from "./components-2z48g4fp.js";
35
43
  import {
36
44
  SizeProvider2
37
- } from "./components-jjw69c4c.js";
45
+ } from "./components-dcc02hs2.js";
38
46
  import {
39
47
  DropdownContext,
40
48
  MenuItem2,
41
49
  DropdownLabel2,
42
50
  DropdownSeparator2
43
- } from "./components-a86dytt0.js";
44
- import {
45
- popupScrollAreaClass,
46
- popupViewportClass,
47
- isDisabledRow
48
- } from "./components-vynjtrk6.js";
51
+ } from "./components-c96g82th.js";
49
52
 
50
53
  // components/overlays/context-menu/index.tsx
51
54
  import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu";
@@ -59,7 +62,7 @@ import {
59
62
  useRef
60
63
  } from "react";
61
64
  import { jsx, jsxs } from "react/jsx-runtime";
62
- var shape = shapeMap.rounded;
65
+ var shape = shapeMap2.rounded;
63
66
  var ContextMenuContext = createContext({ open: false, origin: { current: {} } });
64
67
  var ShortcutContext = createContext(undefined);
65
68
  function RowShortcut() {
@@ -116,11 +119,11 @@ var ContextMenuItem2 = forwardRef(({ shortcut, ...props }, ref) => /* @__PURE__
116
119
  ContextMenuItem2.displayName = "ContextMenuItem";
117
120
  var ContextMenuContent2 = forwardRef(({ from = "pointer", effect, hideSource, tier = "moderate", container, className, children }, ref) => {
118
121
  const { open, origin } = useContext(ContextMenuContext);
119
- const morph = useMorph(open, origin, { from, effect, hideSource, tier });
122
+ const morph = useMorph2(open, origin, { from, effect, hideSource, tier });
120
123
  useImperativeHandle(ref, () => morph.popup, [morph.popup]);
121
124
  const level = Math.min(useSurface2() + 2, 8);
122
125
  const containerRef = useRef(null);
123
- const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow });
126
+ const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow2 });
124
127
  const { activeIndex, setActiveIndex, handlers, registerItem, remeasure } = hover;
125
128
  useEffect(() => {
126
129
  if (open)
@@ -151,15 +154,15 @@ var ContextMenuContent2 = forwardRef(({ from = "pointer", effect, hideSource, ti
151
154
  className: "relative select-none outline-none",
152
155
  children: /* @__PURE__ */ jsx(SurfaceProvider2, {
153
156
  value: level,
154
- children: /* @__PURE__ */ jsx(MorphSurface, {
157
+ children: /* @__PURE__ */ jsx(MorphSurface2, {
155
158
  morph,
156
- bg: SURFACE_BG[level],
157
- shadow: SURFACE_SHADOW[3],
159
+ bg: SURFACE_BG2[level],
160
+ shadow: SURFACE_SHADOW2[3],
158
161
  radius: shape.container,
159
162
  className: cn2("flex w-56 max-h-[min(480px,var(--available-height))] flex-col overflow-hidden", shape.container, className),
160
163
  children: /* @__PURE__ */ jsx(ScrollArea2, {
161
- className: popupScrollAreaClass,
162
- viewportClassName: cn2(popupViewportClass, "scroll-fade"),
164
+ className: popupScrollAreaClass2,
165
+ viewportClassName: cn2(popupViewportClass2, "scroll-fade"),
163
166
  children: /* @__PURE__ */ jsxs("div", {
164
167
  ref: containerRef,
165
168
  className: "relative flex flex-col p-1",
@@ -184,8 +187,8 @@ var ContextMenuContent2 = forwardRef(({ from = "pointer", effect, hideSource, ti
184
187
  });
185
188
  ContextMenuContent2.displayName = "ContextMenuContent";
186
189
  function ContextMenu2({ open, defaultOpen = false, onOpenChange, disabled = false, size, children }) {
187
- const [current, setCurrent] = useControllableState(open, defaultOpen, onOpenChange);
188
- const { origin, capture } = useMorphOrigin();
190
+ const [current, setCurrent] = useControllableState2(open, defaultOpen, onOpenChange);
191
+ const { origin, capture } = useMorphOrigin2();
189
192
  const ctx = useMemo(() => ({ open: current, origin }), [current, origin]);
190
193
  const root = /* @__PURE__ */ jsx(ContextMenuContext.Provider, {
191
194
  value: ctx,