@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
@@ -0,0 +1,366 @@
1
+ /*
2
+ * Ported from Fluid Functionalism — github.com/mickadesign/fluid-functionalism
3
+ * `registry/base/dialog.tsx` @ b3587bdbd83fc66c2a6aae3817ffb856cb09260b
4
+ * MIT License © 2026 Micka Touillaud — fluidfunctionalism.com (notice: LICENSE.fluid-functionalism)
5
+ * Local modifications:
6
+ * - `"use client"` directive dropped (no RSC here).
7
+ * - `framer-motion` → `motion/react`; `@/lib/{utils,icon-context,springs,shape-context,
8
+ * size-context,surface-context,surface-classes}` rewritten to `../../../lib/*`;
9
+ * `@/components/ui/button` → `../../button`.
10
+ * - `DialogProps`: every member re-declared with the FF docs API-table text (modo's parser
11
+ * lists only members declared in the interface body and needs a description on each);
12
+ * same for `DialogSlotProps` and `DialogContentProps`.
13
+ * - modo item: TSDoc (from the FF "Dialog" docs page) on the root `Dialog`, the compound
14
+ * statics attached as `Dialog.Trigger = …` (expando properties, so TypeScript types
15
+ * `<Dialog.Content>` without a cast and modo's check-items sees them), upstream's named
16
+ * exports kept, and a default export.
17
+ * - FF's "With a sidebar" docs example is not ported: Sidebar is omitted from this port.
18
+ * A "Surfaces inside a dialog" example (a Select popover lifting off the dialog's own
19
+ * level) stands in for it — it makes the same point the sidebar dialog made about
20
+ * composing inside an `xl` panel, using only items this port ships.
21
+ * - Styling reads DS tokens (AGENTS.md styling): `text-[Npx]` →
22
+ * `text-<role>[-compact]`; inline `fontVariationSettings` and `font-bold`
23
+ * → `weight-*`; the `bg-black/40` / `dark:bg-black/80` backdrop → `bg-scrim`.
24
+ * - The panel morphs out of its trigger through the shared morph layer
25
+ * (`lib/use-morph.ts` + `MorphSurface`, goo by default on `spring.goo`;
26
+ * `Dialog.Content` takes `from` / `effect` / `hideSource` / `tier`), and the
27
+ * backdrop's opacity follows the morph's progress. The popup is a
28
+ * transparent, centered box; its level is painted by the morph's surface
29
+ * layers and the padding sits on their content box. `Dialog` holds the open
30
+ * state itself (`useControllableState`) to feed the morph, and scopes
31
+ * `Morph.Part` pairs to the dialog.
32
+ * - The trigger / close slot shape moved to `lib/slot.ts`, shared with the
33
+ * other overlays.
34
+ */
35
+
36
+ import { Dialog as DialogPrimitive } from '@base-ui/react/dialog'
37
+ import { motion } from 'motion/react'
38
+ import {
39
+ createContext,
40
+ forwardRef,
41
+ type HTMLAttributes,
42
+ type ReactNode,
43
+ type RefObject,
44
+ useContext,
45
+ useId,
46
+ useImperativeHandle,
47
+ useMemo,
48
+ } from 'react'
49
+ import { useIcon } from '../../../lib/icon-context'
50
+ import { MorphSurface } from '../../../lib/morph-layers'
51
+ import { MorphPartScope } from '../../../lib/morph-part'
52
+ import { useShape } from '../../../lib/shape-context'
53
+ import { useSize, useSizeVariant } from '../../../lib/size-context'
54
+ import { type SlotProps, slotRender } from '../../../lib/slot'
55
+ import { SURFACE_BG, SURFACE_SHADOW } from '../../../lib/surface-classes'
56
+ import { SurfaceProvider, useSurface } from '../../../lib/surface-context'
57
+ import { useControllableState } from '../../../lib/use-controllable-state'
58
+ import { type MorphOrigin, useMorph, useMorphOrigin } from '../../../lib/use-morph'
59
+ import { cn } from '../../../lib/utils'
60
+ import { Button } from '../../button'
61
+
62
+ const DIALOG_OFFSET = 4
63
+
64
+ type DialogSlotProps = SlotProps
65
+
66
+ const DialogContext = createContext<{ open: boolean; origin: RefObject<MorphOrigin> }>({
67
+ open: false,
68
+ origin: { current: {} },
69
+ })
70
+
71
+ /** The open state and origin `DialogState` provides, for content built on another Base UI popup (Sheet). */
72
+ const useDialogState = () => useContext(DialogContext)
73
+
74
+ const DialogTrigger = forwardRef<HTMLButtonElement, DialogSlotProps>(({ render, asChild, children, ...props }, ref) => {
75
+ const el = slotRender(render, asChild, children)
76
+ return el ? (
77
+ <DialogPrimitive.Trigger ref={ref} render={el} {...props} />
78
+ ) : (
79
+ <DialogPrimitive.Trigger ref={ref} {...props}>
80
+ {children}
81
+ </DialogPrimitive.Trigger>
82
+ )
83
+ })
84
+ DialogTrigger.displayName = 'DialogTrigger'
85
+
86
+ const DialogClose = forwardRef<HTMLButtonElement, DialogSlotProps>(({ render, asChild, children, ...props }, ref) => {
87
+ const el = slotRender(render, asChild, children)
88
+ return el ? (
89
+ <DialogPrimitive.Close ref={ref} render={el} {...props} />
90
+ ) : (
91
+ <DialogPrimitive.Close ref={ref} {...props}>
92
+ {children}
93
+ </DialogPrimitive.Close>
94
+ )
95
+ })
96
+ DialogClose.displayName = 'DialogClose'
97
+
98
+ interface DialogContentProps extends HTMLAttributes<HTMLDivElement> {
99
+ /** Width: 400, 540, or 880. Compact regions narrow each by 1 notch: 360,
100
+ * 480, 800. `xl` is the canvas for composed layouts — a sidebar beside a
101
+ * panel — which usually pair it with `className="p-0"` and a fixed
102
+ * height. Defaults to `"sm"`. */
103
+ size?: 'sm' | 'lg' | 'xl'
104
+ /** Portal target. When set, the overlay and panel render inside this element
105
+ * (positioned `absolute`) instead of covering the viewport (`fixed`). Pair
106
+ * with a `position: relative; overflow: hidden` container — and usually
107
+ * `<Dialog modal={false}>` — to scope a dialog to a bounded region, e.g. a
108
+ * docs preview. Defaults to the document body / full-viewport behaviour. */
109
+ container?: HTMLElement | null
110
+ /** The ✕ in the top-right corner. Drop it when the content has its own
111
+ * way out, e.g. a command menu that closes on Escape and on a pick.
112
+ * Defaults to `true`. */
113
+ showCloseButton?: boolean
114
+ /** Where the panel sits: centered, or anchored 12dvh from the top so a
115
+ * panel whose height follows its content (a command menu) keeps its top
116
+ * edge still. Defaults to `"center"`. */
117
+ position?: 'center' | 'top'
118
+ /** Where the panel grows from (see Morph): the pressed trigger (its center when none), the press point, its own center, a viewport edge, or a ref to any element. Defaults to `'trigger'`. */
119
+ from?: 'trigger' | 'pointer' | 'center' | 'top' | 'right' | 'bottom' | 'left' | RefObject<HTMLElement | null>
120
+ /** How it grows (see Morph): with the liquid goo neck, a plain morph, a slide or a fade. Defaults to `'goo'`. */
121
+ effect?: 'goo' | 'morph' | 'slide' | 'fade'
122
+ /** Hide the trigger while open, so it reads as turning into the panel. Defaults to `false`. */
123
+ hideSource?: boolean
124
+ /** Spring tier of a plain morph, slide or fade; goo runs on its own `spring.goo`. Defaults to `'slow'`. */
125
+ tier?: 'moderate' | 'slow'
126
+ /** Dialog content. Everything inside reads the dialog's surface level as its substrate. */
127
+ children?: ReactNode
128
+ }
129
+
130
+ const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(
131
+ (
132
+ {
133
+ className,
134
+ children,
135
+ size = 'sm',
136
+ container,
137
+ showCloseButton = true,
138
+ position = 'center',
139
+ from,
140
+ effect,
141
+ hideSource,
142
+ tier,
143
+ ...props
144
+ },
145
+ ref,
146
+ ) => {
147
+ const XIcon = useIcon('x')
148
+ const shape = useShape()
149
+ const substrate = useSurface()
150
+ const dialogLevel = Math.min(substrate + DIALOG_OFFSET, 8)
151
+ // The size ladder narrows the dialog one notch in compact regions —
152
+ // width only, the padding stays put (see Sizes).
153
+ const compact = useSize().variant === 'compact'
154
+ const { open, origin } = useDialogState()
155
+ const morph = useMorph(open, origin, { from, effect, hideSource, tier })
156
+ useImperativeHandle(ref, () => morph.popup as HTMLDivElement, [morph.popup])
157
+
158
+ return (
159
+ <DialogPrimitive.Portal container={container ?? undefined}>
160
+ <DialogPrimitive.Backdrop
161
+ render={<motion.div style={{ opacity: morph.progress }} />}
162
+ className={cn(container ? 'absolute' : 'fixed', 'inset-0 z-50 bg-scrim')}
163
+ />
164
+ <DialogPrimitive.Popup
165
+ ref={morph.popupRef}
166
+ {...props}
167
+ className={cn(
168
+ container ? 'absolute' : 'fixed',
169
+ 'left-1/2 z-50 w-[calc(100%-2rem)] -translate-x-1/2 focus:outline-none',
170
+ position === 'top' ? 'top-[12dvh]' : 'top-1/2 -translate-y-1/2',
171
+ size === 'sm' && (compact ? 'max-w-[360px]' : 'max-w-[400px]'),
172
+ size === 'lg' && (compact ? 'max-w-[480px]' : 'max-w-[540px]'),
173
+ size === 'xl' && (compact ? 'max-w-[800px]' : 'max-w-[880px]'),
174
+ )}
175
+ >
176
+ <SurfaceProvider value={dialogLevel}>
177
+ <MorphSurface
178
+ morph={morph}
179
+ bg={SURFACE_BG[dialogLevel]}
180
+ shadow={SURFACE_SHADOW[dialogLevel]}
181
+ radius={shape.container}
182
+ className={cn('p-6', className)}
183
+ >
184
+ {children}
185
+ {showCloseButton && (
186
+ <DialogPrimitive.Close
187
+ render={
188
+ <Button variant="ghost" size="icon-sm" className="absolute right-3 top-3">
189
+ <XIcon />
190
+ <span className="sr-only">Close</span>
191
+ </Button>
192
+ }
193
+ />
194
+ )}
195
+ </MorphSurface>
196
+ </SurfaceProvider>
197
+ </DialogPrimitive.Popup>
198
+ </DialogPrimitive.Portal>
199
+ )
200
+ },
201
+ )
202
+ DialogContent.displayName = 'DialogContent'
203
+
204
+ function DialogHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {
205
+ return <div className={cn('flex flex-col gap-1.5 mb-4', className)} {...props} />
206
+ }
207
+
208
+ function DialogFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {
209
+ return <div className={cn('flex justify-end gap-2 mt-6', className)} {...props} />
210
+ }
211
+
212
+ const DialogTitle = forwardRef<HTMLHeadingElement, HTMLAttributes<HTMLHeadingElement>>(
213
+ ({ className, ...props }, ref) => {
214
+ // The title role of the type scale — see Sizes.
215
+ const compact = useSizeVariant() === 'compact'
216
+ return (
217
+ <DialogPrimitive.Title
218
+ ref={ref}
219
+ className={cn(
220
+ compact ? 'text-title-compact' : 'text-title',
221
+ 'weight-bold text-foreground leading-tight',
222
+ className,
223
+ )}
224
+ {...props}
225
+ />
226
+ )
227
+ },
228
+ )
229
+ DialogTitle.displayName = 'DialogTitle'
230
+
231
+ const DialogDescription = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(
232
+ ({ className, ...props }, ref) => {
233
+ const compact = useSizeVariant() === 'compact'
234
+ return (
235
+ <DialogPrimitive.Description
236
+ ref={ref}
237
+ className={cn(compact ? 'text-body-compact' : 'text-body', 'text-muted-foreground', className)}
238
+ {...props}
239
+ />
240
+ )
241
+ },
242
+ )
243
+ DialogDescription.displayName = 'DialogDescription'
244
+
245
+ interface DialogStateProps {
246
+ open?: boolean
247
+ defaultOpen?: boolean
248
+ onOpenChange?: (open: boolean) => void
249
+ children: (root: {
250
+ open: boolean
251
+ onOpenChange: (next: boolean, details: { trigger?: Element; event?: Event }) => void
252
+ }) => ReactNode
253
+ }
254
+
255
+ /**
256
+ * A dialog's open state, held here (not in Base UI's Root) because the morph
257
+ * reads it, and the open event tells it which trigger was pressed. Also
258
+ * scopes `Morph.Part` pairs. AlertDialog shares it.
259
+ */
260
+ function DialogState({ open, defaultOpen = false, onOpenChange, children }: DialogStateProps) {
261
+ const [current, setCurrent] = useControllableState(open, defaultOpen, onOpenChange)
262
+ const { origin, capture } = useMorphOrigin()
263
+ const id = useId()
264
+ const ctx = useMemo(() => ({ open: current, origin }), [current, origin])
265
+ const parts = useMemo(() => ({ id, open: current }), [id, current])
266
+
267
+ return (
268
+ <DialogContext.Provider value={ctx}>
269
+ <MorphPartScope.Provider value={parts}>
270
+ {children({
271
+ open: current,
272
+ onOpenChange: (next, details) => {
273
+ if (next) capture(details)
274
+ setCurrent(next)
275
+ },
276
+ })}
277
+ </MorphPartScope.Provider>
278
+ </DialogContext.Provider>
279
+ )
280
+ }
281
+
282
+ interface DialogProps {
283
+ /** Controlled open state. */
284
+ open?: boolean
285
+ /** Initial open state, for an uncontrolled dialog. Defaults to `false`. */
286
+ defaultOpen?: boolean
287
+ /** Called when the dialog opens or closes. */
288
+ onOpenChange?: (open: boolean) => void
289
+ /** Traps focus and locks page scroll while open. Defaults to `true`. */
290
+ modal?: boolean
291
+ /** The trigger and the content — `Dialog.Trigger` plus a `Dialog.Content`. */
292
+ children?: ReactNode
293
+ }
294
+
295
+ /**
296
+ * 3 widths, grown out of whatever opened them.
297
+ *
298
+ * The panel lifts 4 surface levels off whatever substrate it opens on and
299
+ * re-provides that level, so a dropdown or select inside it keeps climbing
300
+ * the ladder instead of melting into the dialog. Width comes from
301
+ * `Dialog.Content`'s `size` — 400, 540 or 880, each one notch narrower in
302
+ * compact regions. The panel grows out of its trigger through the shared
303
+ * morph (see Morph): goo by default on `spring.goo`, or from the press
304
+ * point, its own center, a viewport edge or any element, and the backdrop
305
+ * fades with it. `Morph.Part` pairs an element in the trigger with its twin
306
+ * in the panel, so a card's image or title flies into the dialog.
307
+ * `position="top"` anchors the panel 12dvh down so a content-sized panel (a
308
+ * command menu) keeps its top edge still. Built on Base UI's Dialog: open
309
+ * state is controlled with `open` / `onOpenChange` or left to `defaultOpen`.
310
+ *
311
+ * Statics:
312
+ * - `Dialog.Trigger` — the control that opens it. `render={<Button/>}` or
313
+ * Radix-style `asChild` with a single child both work.
314
+ * - `Dialog.Content` — the panel: `size`, `position`, `showCloseButton`,
315
+ * `container`, and the morph options `from`, `effect`, `hideSource`,
316
+ * `tier`.
317
+ * - `Dialog.Header` / `Dialog.Footer` — the stacked title block, and the
318
+ * right-aligned action row.
319
+ * - `Dialog.Title` / `Dialog.Description` — the labelled heading and its
320
+ * supporting line, wired to the panel for screen readers.
321
+ * - `Dialog.Close` — dismisses it; same `render` / `asChild` shape as the
322
+ * trigger. `Dialog.Content` renders its own ✕ unless
323
+ * `showCloseButton={false}`.
324
+ *
325
+ * @example {@include ./examples.mdx}
326
+ */
327
+ function Dialog({ children, open, defaultOpen, onOpenChange, modal }: DialogProps) {
328
+ return (
329
+ <DialogState open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>
330
+ {root => (
331
+ <DialogPrimitive.Root {...root} modal={modal}>
332
+ {children}
333
+ </DialogPrimitive.Root>
334
+ )}
335
+ </DialogState>
336
+ )
337
+ }
338
+
339
+ Dialog.Trigger = DialogTrigger
340
+ Dialog.Content = DialogContent
341
+ Dialog.Header = DialogHeader
342
+ Dialog.Footer = DialogFooter
343
+ Dialog.Title = DialogTitle
344
+ Dialog.Description = DialogDescription
345
+ Dialog.Close = DialogClose
346
+
347
+ export type {
348
+ DialogContentProps,
349
+ DialogProps,
350
+ DialogSlotProps as DialogTriggerProps,
351
+ DialogSlotProps as DialogCloseProps,
352
+ }
353
+ export {
354
+ Dialog,
355
+ DialogClose,
356
+ DialogContent,
357
+ DialogDescription,
358
+ DialogFooter,
359
+ DialogHeader,
360
+ DialogState,
361
+ DialogTitle,
362
+ DialogTrigger,
363
+ useDialogState,
364
+ }
365
+
366
+ export default Dialog