@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,42 +1,45 @@
1
+ "use client";
1
2
  import {
2
- useIcon
3
- } from "./components-zrkzcayz.js";
3
+ useIcon2
4
+ } from "./components-jqpefjsn.js";
4
5
  import {
5
- useReduceMotion
6
- } from "./components-men63rwj.js";
6
+ useReduceMotion2
7
+ } from "./components-de99ykt7.js";
7
8
  import {
8
- MorphSurface
9
- } from "./components-0q0sqfh4.js";
9
+ spring2
10
+ } from "./components-3ey0hzpb.js";
10
11
  import {
11
- useMorph
12
- } from "./components-hqeq3w9q.js";
12
+ useMorph2
13
+ } from "./components-awra5sff.js";
13
14
  import {
14
15
  cn2
15
- } from "./components-ezxhrmer.js";
16
+ } from "./components-jcnjay5g.js";
17
+ import {
18
+ MorphSurface2
19
+ } from "./components-4y816hwp.js";
16
20
  import {
17
- shapeMap,
18
- useShape
19
- } from "./components-cv16mryv.js";
21
+ shapeMap2,
22
+ useShape2
23
+ } from "./components-78x40gee.js";
20
24
  import {
21
25
  useSize2
22
- } from "./components-0sn7ypjw.js";
26
+ } from "./components-h83az0bz.js";
27
+ import {
28
+ SURFACE_BG2,
29
+ SURFACE_SHADOW2
30
+ } from "./components-vf45j12c.js";
23
31
  import {
24
- SURFACE_BG,
25
- SURFACE_SHADOW,
26
32
  useSurface2,
27
33
  SurfaceProvider2
28
- } from "./components-zx6b6yby.js";
34
+ } from "./components-dhgk6mbt.js";
29
35
  import {
30
- useControllableState
31
- } from "./components-n7mjr357.js";
36
+ useControllableState2
37
+ } from "./components-tz1fv35x.js";
32
38
  import {
33
39
  CommandListRoot2,
34
40
  CommandShortcut2,
35
41
  CommandList2
36
- } from "./components-39vmfq9s.js";
37
- import {
38
- spring2
39
- } from "./components-1v7rxytx.js";
42
+ } from "./components-vsa625vk.js";
40
43
 
41
44
  // components/inputs/search/index.tsx
42
45
  import { Autocomplete } from "@base-ui/react/autocomplete";
@@ -67,17 +70,17 @@ function Search2({
67
70
  tier = "moderate",
68
71
  className
69
72
  }) {
70
- const [query, setQuery] = useControllableState(value, defaultValue, onValueChange);
71
- const [isExpanded, setExpanded] = useControllableState(expanded, defaultExpanded, onExpandedChange);
73
+ const [query, setQuery] = useControllableState2(value, defaultValue, onValueChange);
74
+ const [isExpanded, setExpanded] = useControllableState2(expanded, defaultExpanded, onExpandedChange);
72
75
  const [suggesting, setSuggesting] = useState(false);
73
76
  const [settled, setSettled] = useState(isExpanded);
74
77
  const [rest, setRest] = useState(0);
75
- const reduced = useReduceMotion();
76
- const shape = useShape();
78
+ const reduced = useReduceMotion2();
79
+ const shape = useShape2();
77
80
  const size = useSize2();
78
81
  const level = Math.min(useSurface2() + 2, 8);
79
- const SearchIcon = useIcon("search");
80
- const XIcon = useIcon("x");
82
+ const SearchIcon = useIcon2("search");
83
+ const XIcon = useIcon2("x");
81
84
  const button = useRef(null);
82
85
  const field = useRef(null);
83
86
  const input = useRef(null);
@@ -85,7 +88,7 @@ function Search2({
85
88
  const suggestions = useMemo(() => items?.map((item) => typeof item === "string" ? { label: item } : item), [items]);
86
89
  const open = suggesting && isExpanded && settled;
87
90
  const lifted = isExpanded || settled;
88
- const morph = useMorph(open, origin, { from: field, effect, tier });
91
+ const morph = useMorph2(open, origin, { from: field, effect, tier });
89
92
  useLayoutEffect(() => {
90
93
  const el = button.current;
91
94
  if (!el)
@@ -175,7 +178,7 @@ function Search2({
175
178
  }),
176
179
  rest > 0 && /* @__PURE__ */ jsx(motion.div, {
177
180
  ref: field,
178
- className: cn2("absolute top-0 h-full overflow-hidden ring-1 transition-[box-shadow] duration-moderate", align === "end" ? "right-0" : "left-0", shape.input, lifted ? cn2("z-10 ring-transparent", SURFACE_BG[level], SURFACE_SHADOW[3]) : "ring-border group-hover/search:bg-muted/50"),
181
+ className: cn2("absolute top-0 h-full overflow-hidden ring-1 transition-[box-shadow] duration-moderate", align === "end" ? "right-0" : "left-0", shape.input, lifted ? cn2("z-10 ring-transparent", SURFACE_BG2[level], SURFACE_SHADOW2[3]) : "ring-border group-hover/search:bg-muted/50"),
179
182
  initial: false,
180
183
  animate: { width: isExpanded ? width : rest },
181
184
  transition: reduced ? { duration: 0 } : isExpanded ? spring2.slow : spring2.slow.exit,
@@ -239,11 +242,11 @@ function Search2({
239
242
  className: "relative outline-none",
240
243
  children: /* @__PURE__ */ jsx(SurfaceProvider2, {
241
244
  value: level,
242
- children: /* @__PURE__ */ jsx(MorphSurface, {
245
+ children: /* @__PURE__ */ jsx(MorphSurface2, {
243
246
  morph,
244
- bg: SURFACE_BG[level],
245
- shadow: SURFACE_SHADOW[3],
246
- radius: shapeMap.rounded.container,
247
+ bg: SURFACE_BG2[level],
248
+ shadow: SURFACE_SHADOW2[3],
249
+ radius: shapeMap2.rounded.container,
247
250
  className: "flex max-h-[min(300px,var(--available-height))] w-[var(--anchor-width)] flex-col overflow-hidden",
248
251
  children: /* @__PURE__ */ jsx(CommandList2, {
249
252
  emptyMessage,
@@ -1,87 +1,83 @@
1
+ "use client";
1
2
  import {
2
- opensInPlace,
3
- inPlaceOffset,
4
- useMorphOrigin,
5
- useMorph
6
- } from "./components-hqeq3w9q.js";
3
+ spring2
4
+ } from "./components-3ey0hzpb.js";
5
+ import {
6
+ opensInPlace2,
7
+ inPlaceOffset2,
8
+ useMorphOrigin2,
9
+ useMorph2
10
+ } from "./components-awra5sff.js";
7
11
  import {
8
12
  cn2
9
- } from "./components-ezxhrmer.js";
13
+ } from "./components-jcnjay5g.js";
10
14
  import {
11
15
  FluidHoverHighlight2
12
- } from "./components-kvr7f9hy.js";
16
+ } from "./components-qdm3yh26.js";
17
+ import {
18
+ shapeMap2,
19
+ useShape2
20
+ } from "./components-78x40gee.js";
21
+ import {
22
+ FocusRing2
23
+ } from "./components-8nwsqjn8.js";
24
+ import {
25
+ MorphSurface2
26
+ } from "./components-4y816hwp.js";
13
27
  import {
14
- MorphSurface
15
- } from "./components-0q0sqfh4.js";
28
+ popupScrollAreaClass2,
29
+ popupViewportClass2,
30
+ isDisabledRow2
31
+ } from "./components-h6p86be3.js";
16
32
  import {
17
- shapeMap,
18
- useShape
19
- } from "./components-cv16mryv.js";
33
+ RowOrderContext2,
34
+ useRowOrder2,
35
+ useRowSlot2
36
+ } from "./components-4bwsd46w.js";
20
37
  import {
21
38
  useSize2
22
- } from "./components-0sn7ypjw.js";
39
+ } from "./components-h83az0bz.js";
40
+ import {
41
+ SURFACE_BG2,
42
+ SURFACE_SHADOW2
43
+ } from "./components-vf45j12c.js";
23
44
  import {
24
- SURFACE_BG,
25
- SURFACE_SHADOW,
26
45
  useSurface2,
27
46
  SurfaceProvider2
28
- } from "./components-zx6b6yby.js";
47
+ } from "./components-dhgk6mbt.js";
29
48
  import {
30
49
  useFluidHover2,
31
50
  useRegisterFluidHoverItem2
32
- } from "./components-59efxjd9.js";
51
+ } from "./components-yhgq0qxx.js";
52
+ import {
53
+ useKeyboardNavGate2
54
+ } from "./components-tz4gaf1v.js";
33
55
  import {
34
56
  ScrollArea2
35
- } from "./components-hawvy2qz.js";
57
+ } from "./components-2z48g4fp.js";
36
58
  import {
37
59
  SizeProvider2
38
- } from "./components-jjw69c4c.js";
60
+ } from "./components-dcc02hs2.js";
39
61
  import {
40
- popupScrollAreaClass,
41
- popupViewportClass,
42
- POPUP_NAV_KEYS,
43
- isDisabledRow
44
- } from "./components-vynjtrk6.js";
45
- import {
46
- spring2
47
- } from "./components-1v7rxytx.js";
62
+ triggerVariants2
63
+ } from "./components-xdqmt6ed.js";
48
64
 
49
65
  // components/inputs/select/index.tsx
50
66
  import { Select as SelectPrimitive } from "@base-ui/react/select";
51
- import { cva } from "class-variance-authority";
52
67
  import { AnimatePresence, motion } from "motion/react";
53
68
  import {
54
69
  Children,
55
70
  createContext,
56
71
  forwardRef,
57
72
  isValidElement,
58
- useCallback as useCallback2,
73
+ useCallback,
59
74
  useContext,
60
- useEffect as useEffect2,
75
+ useEffect,
61
76
  useImperativeHandle,
62
77
  useMemo,
63
- useRef as useRef2,
78
+ useRef,
64
79
  useState
65
80
  } from "react";
66
-
67
- // lib/use-keyboard-nav-gate.ts
68
- import { useCallback, useEffect, useRef } from "react";
69
- function useKeyboardNavGate(open) {
70
- const keyboardNavRef = useRef(false);
71
- useEffect(() => {
72
- if (!open)
73
- return;
74
- const active = document.activeElement;
75
- keyboardNavRef.current = active instanceof HTMLElement && active.matches(":focus-visible");
76
- }, [open]);
77
- const trackKeyboardNav = useCallback((e) => {
78
- if (POPUP_NAV_KEYS.includes(e.key))
79
- keyboardNavRef.current = true;
80
- }, []);
81
- return { keyboardNavRef, trackKeyboardNav };
82
- }
83
-
84
- // components/inputs/select/index.tsx
85
81
  import { jsx, jsxs } from "react/jsx-runtime";
86
82
  var selectionAckMs = 300;
87
83
  var SelectContext = createContext(null);
@@ -92,7 +88,7 @@ function useSelectContext() {
92
88
  return ctx;
93
89
  }
94
90
  var SelectContentContext = createContext(null);
95
- var popupShape = shapeMap.rounded;
91
+ var popupShape = shapeMap2.rounded;
96
92
  function collectSelectItems(node, out = []) {
97
93
  Children.forEach(node, (child) => {
98
94
  if (!isValidElement(child))
@@ -101,7 +97,7 @@ function collectSelectItems(node, out = []) {
101
97
  if (typeof props.value === "string") {
102
98
  out.push({
103
99
  value: props.value,
104
- label: typeof props.children === "string" ? props.children : props.value
100
+ label: props.children ?? props.value
105
101
  });
106
102
  } else if (props.children) {
107
103
  collectSelectItems(props.children, out);
@@ -112,24 +108,24 @@ function collectSelectItems(node, out = []) {
112
108
  function Select2({ children, value, defaultValue, onValueChange, disabled = false, name, required, size }) {
113
109
  const [internalValue, setInternalValue] = useState(defaultValue ?? "");
114
110
  const [open, setOpen] = useState(false);
115
- const { origin, capture } = useMorphOrigin();
111
+ const { origin, capture } = useMorphOrigin2();
116
112
  const currentValue = value !== undefined ? value : internalValue;
117
113
  const items = useMemo(() => collectSelectItems(children), [children]);
118
- const handleValueChange = useCallback2((next) => {
114
+ const handleValueChange = useCallback((next) => {
119
115
  const v = next ?? "";
120
116
  if (value === undefined)
121
117
  setInternalValue(v);
122
118
  onValueChange?.(v);
123
119
  }, [value, onValueChange]);
124
- const ackTimeoutRef = useRef2(null);
125
- const cancelAckClose = useCallback2(() => {
120
+ const ackTimeoutRef = useRef(null);
121
+ const cancelAckClose = useCallback(() => {
126
122
  if (ackTimeoutRef.current !== null) {
127
123
  clearTimeout(ackTimeoutRef.current);
128
124
  ackTimeoutRef.current = null;
129
125
  }
130
126
  }, []);
131
- useEffect2(() => cancelAckClose, [cancelAckClose]);
132
- const handleOpenChange = useCallback2((nextOpen, eventDetails) => {
127
+ useEffect(() => cancelAckClose, [cancelAckClose]);
128
+ const handleOpenChange = useCallback((nextOpen, eventDetails) => {
133
129
  if (nextOpen)
134
130
  capture(eventDetails);
135
131
  if (!nextOpen && eventDetails.reason === "item-press") {
@@ -143,7 +139,9 @@ function Select2({ children, value, defaultValue, onValueChange, disabled = fals
143
139
  cancelAckClose();
144
140
  setOpen(nextOpen);
145
141
  }, [cancelAckClose, capture]);
146
- const ctx = useMemo(() => ({ value: currentValue, open, origin }), [currentValue, open, origin]);
142
+ const picked = items.find((item) => item.value === currentValue)?.label;
143
+ const textLabel = picked === undefined || typeof picked === "string" || typeof picked === "number";
144
+ const ctx = useMemo(() => ({ value: currentValue, open, origin, textLabel }), [currentValue, open, origin, textLabel]);
147
145
  const root = /* @__PURE__ */ jsx(SelectContext.Provider, {
148
146
  value: ctx,
149
147
  children: /* @__PURE__ */ jsx(SelectPrimitive.Root, {
@@ -165,24 +163,16 @@ function Select2({ children, value, defaultValue, onValueChange, disabled = fals
165
163
  }) : root;
166
164
  }
167
165
  Select2.displayName = "Select";
168
- var triggerVariants2 = cva([
169
- "group inline-flex items-center justify-between outline-none cursor-pointer",
170
- "transition-all duration-fast",
171
- "disabled:opacity-50 disabled:pointer-events-none",
172
- "focus-visible:ring-1 focus-visible:ring-focus-ring"
173
- ], {
174
- variants: {
175
- variant: {
176
- bordered: "border border-border bg-transparent text-foreground hover:bg-hover",
177
- borderless: "border border-transparent bg-transparent text-foreground hover:bg-hover"
178
- }
179
- },
180
- defaultVariants: {
181
- variant: "bordered"
182
- }
183
- });
184
- var SelectTrigger2 = forwardRef(({ className, variant, icon: Icon, placeholder = "Select…", error, size, ...props }, ref) => {
185
- const shape = useShape();
166
+ function SelectValue2({ placeholder = "Select…", className }) {
167
+ const { textLabel } = useSelectContext();
168
+ return /* @__PURE__ */ jsx(SelectPrimitive.Value, {
169
+ placeholder,
170
+ className: cn2("min-w-0 flex-1 text-left data-[placeholder]:text-muted-foreground", textLabel ? "truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1" : "flex items-center", className)
171
+ });
172
+ }
173
+ SelectValue2.displayName = "SelectValue";
174
+ var SelectTrigger2 = forwardRef(({ className, variant, icon: Icon, placeholder = "Select…", error, size, children, ...props }, ref) => {
175
+ const shape = useShape2();
186
176
  const sizeClasses = useSize2(size);
187
177
  const compact = sizeClasses.variant === "compact";
188
178
  return /* @__PURE__ */ jsxs("div", {
@@ -202,9 +192,8 @@ var SelectTrigger2 = forwardRef(({ className, variant, icon: Icon, placeholder =
202
192
  strokeWidth: 1.5,
203
193
  className: "shrink-0 text-muted-foreground transition-[color,stroke-width] duration-fast group-hover:text-foreground group-hover:stroke-[2]"
204
194
  }),
205
- /* @__PURE__ */ jsx(SelectPrimitive.Value, {
206
- placeholder,
207
- className: "min-w-0 flex-1 text-left truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1 data-[placeholder]:text-muted-foreground"
195
+ children ?? /* @__PURE__ */ jsx(SelectValue2, {
196
+ placeholder
208
197
  })
209
198
  ]
210
199
  }),
@@ -232,24 +221,35 @@ var SelectTrigger2 = forwardRef(({ className, variant, icon: Icon, placeholder =
232
221
  });
233
222
  });
234
223
  SelectTrigger2.displayName = "SelectTrigger";
235
- var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate", className, children }, ref) => {
224
+ var SelectContent2 = forwardRef(({
225
+ from,
226
+ effect,
227
+ hideSource,
228
+ tier = "moderate",
229
+ side = "bottom",
230
+ align = "start",
231
+ sideOffset = 6,
232
+ className,
233
+ children
234
+ }, ref) => {
236
235
  const { open, value, origin } = useSelectContext();
237
- const morph = useMorph(open, origin, { from, effect, hideSource, tier });
236
+ const rowOrder = useRowOrder2();
237
+ const morph = useMorph2(open, origin, { from, effect, hideSource, tier });
238
238
  useImperativeHandle(ref, () => morph.popup, [morph.popup]);
239
239
  const level = Math.min(useSurface2() + 2, 8);
240
240
  const shape = popupShape;
241
- const containerRef = useRef2(null);
242
- const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow });
241
+ const containerRef = useRef(null);
242
+ const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow2 });
243
243
  const { activeIndex, setActiveIndex, itemRects, isMeasured, handlers, registerItem, remeasure } = hover;
244
244
  const [focusedIndex, setFocusedIndex] = useState(null);
245
- const { keyboardNavRef, trackKeyboardNav } = useKeyboardNavGate(open);
245
+ const { keyboardNavRef, trackKeyboardNav } = useKeyboardNavGate2(open);
246
246
  const [checkedIndex, setCheckedIndex] = useState(undefined);
247
- useEffect2(() => {
247
+ useEffect(() => {
248
248
  if (!open)
249
249
  return;
250
250
  remeasure();
251
251
  }, [open, remeasure]);
252
- useEffect2(() => {
252
+ useEffect(() => {
253
253
  if (!open)
254
254
  return;
255
255
  let inner;
@@ -257,9 +257,8 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
257
257
  inner = requestAnimationFrame(() => {
258
258
  const container = containerRef.current;
259
259
  if (container) {
260
- const items = Array.from(container.querySelectorAll("[data-fluid-hover-index]"));
261
- const idx = items.findIndex((el) => el.getAttribute("data-value") === value);
262
- setCheckedIndex(idx !== -1 ? idx : undefined);
260
+ const row = Array.from(container.querySelectorAll("[data-fluid-hover-index]")).find((el) => el.getAttribute("data-value") === value);
261
+ setCheckedIndex(row ? Number(row.getAttribute("data-fluid-hover-index")) : undefined);
263
262
  }
264
263
  });
265
264
  });
@@ -268,7 +267,7 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
268
267
  cancelAnimationFrame(inner);
269
268
  };
270
269
  }, [open, value]);
271
- useEffect2(() => {
270
+ useEffect(() => {
272
271
  if (open)
273
272
  return;
274
273
  setCheckedIndex(undefined);
@@ -280,9 +279,9 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
280
279
  const contentCtx = useMemo(() => ({ registerItem, activeIndex, checkedIndex }), [registerItem, activeIndex, checkedIndex]);
281
280
  return /* @__PURE__ */ jsx(SelectPrimitive.Portal, {
282
281
  children: /* @__PURE__ */ jsx(SelectPrimitive.Positioner, {
283
- side: "bottom",
284
- align: "start",
285
- sideOffset: opensInPlace({ effect, hideSource }) ? inPlaceOffset : 6,
282
+ side,
283
+ align,
284
+ sideOffset: opensInPlace2({ effect, hideSource }) ? inPlaceOffset2 : sideOffset,
286
285
  alignItemWithTrigger: false,
287
286
  className: "z-50 outline-none",
288
287
  children: /* @__PURE__ */ jsx(SelectContentContext.Provider, {
@@ -314,15 +313,15 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
314
313
  className: "relative select-none outline-none",
315
314
  children: /* @__PURE__ */ jsx(SurfaceProvider2, {
316
315
  value: level,
317
- children: /* @__PURE__ */ jsx(MorphSurface, {
316
+ children: /* @__PURE__ */ jsx(MorphSurface2, {
318
317
  morph,
319
- bg: SURFACE_BG[level],
320
- shadow: SURFACE_SHADOW[3],
318
+ bg: SURFACE_BG2[level],
319
+ shadow: SURFACE_SHADOW2[3],
321
320
  radius: shape.container,
322
321
  className: cn2(`flex flex-col min-w-[var(--anchor-width)] max-h-[min(300px,var(--available-height))] overflow-hidden ${shape.container}`, className),
323
322
  children: /* @__PURE__ */ jsx(ScrollArea2, {
324
- className: popupScrollAreaClass,
325
- viewportClassName: cn2(popupViewportClass, "scroll-fade"),
323
+ className: popupScrollAreaClass2,
324
+ viewportClassName: cn2(popupViewportClass2, "scroll-fade"),
326
325
  children: /* @__PURE__ */ jsxs("div", {
327
326
  ref: containerRef,
328
327
  className: "relative flex flex-col p-1",
@@ -350,24 +349,14 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
350
349
  hidden: !open,
351
350
  className: shape.bg
352
351
  }),
353
- open && /* @__PURE__ */ jsx(AnimatePresence, {
354
- children: focusRect && /* @__PURE__ */ jsx(motion.div, {
355
- className: `absolute ${shape.focusRing} pointer-events-none z-20 border border-focus-ring`,
356
- initial: false,
357
- animate: {
358
- left: focusRect.left - 2,
359
- top: focusRect.top - 2,
360
- width: focusRect.width + 4,
361
- height: focusRect.height + 4
362
- },
363
- exit: { opacity: 0, transition: spring2.fast.exit },
364
- transition: {
365
- ...spring2.fast,
366
- opacity: { duration: spring2.fast.duration }
367
- }
368
- })
352
+ open && /* @__PURE__ */ jsx(FocusRing2, {
353
+ rect: focusRect,
354
+ shape: "rounded"
369
355
  }),
370
- children
356
+ /* @__PURE__ */ jsx(RowOrderContext2.Provider, {
357
+ value: rowOrder,
358
+ children
359
+ })
371
360
  ]
372
361
  })
373
362
  })
@@ -379,18 +368,19 @@ var SelectContent2 = forwardRef(({ from, effect, hideSource, tier = "moderate",
379
368
  });
380
369
  });
381
370
  SelectContent2.displayName = "SelectContent";
382
- var SelectItem2 = forwardRef(({ className, children, icon: Icon, value, index, disabled = false, ...props }, ref) => {
371
+ var SelectItem2 = forwardRef(({ className, children, icon: Icon, value, index: indexProp, textValue, disabled = false, ...props }, ref) => {
383
372
  const selectCtx = useSelectContext();
384
373
  const contentCtx = useContext(SelectContentContext);
385
- const internalRef = useRef2(null);
374
+ const internalRef = useRef(null);
386
375
  const shape = popupShape;
387
376
  const sizeClasses = useSize2();
388
377
  const compact = sizeClasses.variant === "compact";
389
- const hasMounted = useRef2(false);
390
- useEffect2(() => {
378
+ const hasMounted = useRef(false);
379
+ useEffect(() => {
391
380
  hasMounted.current = true;
392
381
  }, []);
393
382
  const registerItem = contentCtx?.registerItem;
383
+ const { index } = useRowSlot2(internalRef, indexProp);
394
384
  useRegisterFluidHoverItem2(registerItem, index, internalRef);
395
385
  const isActive = contentCtx?.activeIndex === index;
396
386
  const isChecked = selectCtx.value === value;
@@ -398,7 +388,7 @@ var SelectItem2 = forwardRef(({ className, children, icon: Icon, value, index, d
398
388
  return /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
399
389
  value,
400
390
  disabled,
401
- label: typeof children === "string" ? children : undefined,
391
+ label: textValue ?? (typeof children === "string" ? children : undefined),
402
392
  render: /* @__PURE__ */ jsx("div", {
403
393
  ref: (node) => {
404
394
  internalRef.current = node;
@@ -420,7 +410,7 @@ var SelectItem2 = forwardRef(({ className, children, icon: Icon, value, index, d
420
410
  }),
421
411
  /* @__PURE__ */ jsx(SelectPrimitive.ItemText, {
422
412
  render: /* @__PURE__ */ jsx("span", {
423
- className: "flex-1 min-w-0 truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1"
413
+ className: cn2("flex-1 min-w-0", typeof children === "string" || typeof children === "number" ? "truncate [text-box:trim-both_cap_alphabetic] py-1 -my-1" : "flex items-center")
424
414
  }),
425
415
  children
426
416
  }),
@@ -486,6 +476,7 @@ var SelectSeparator2 = forwardRef(({ className, ...props }, ref) => /* @__PURE__
486
476
  }));
487
477
  SelectSeparator2.displayName = "SelectSeparator";
488
478
  Select2.Trigger = SelectTrigger2;
479
+ Select2.Value = SelectValue2;
489
480
  Select2.Content = SelectContent2;
490
481
  Select2.Item = SelectItem2;
491
482
  Select2.Group = SelectGroup2;
@@ -493,4 +484,4 @@ Select2.Label = SelectLabel2;
493
484
  Select2.Separator = SelectSeparator2;
494
485
  var select_default = Select2;
495
486
 
496
- export { Select2, triggerVariants2, SelectTrigger2, SelectContent2, SelectItem2, SelectGroup2, SelectLabel2, SelectSeparator2, select_default };
487
+ export { Select2, SelectValue2, SelectTrigger2, SelectContent2, SelectItem2, SelectGroup2, SelectLabel2, SelectSeparator2, select_default };