@youcan/celeste 0.15.0 → 0.17.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 (393) hide show
  1. package/ai/README.md +1 -1
  2. package/ai/component-registry.json +922 -78
  3. package/ai/icons.json +2 -2
  4. package/ai/tokens.json +2 -2
  5. package/dist/celeste.css +406 -121
  6. package/dist/cjs/chunks/BubbleSelect.cjs +3 -3
  7. package/dist/cjs/chunks/CollapsibleRoot.cjs +1 -1
  8. package/dist/cjs/chunks/Collection.cjs +7 -1
  9. package/dist/cjs/chunks/ComboboxContent.cjs +9 -5
  10. package/dist/cjs/chunks/ComboboxGroup.cjs +2 -2
  11. package/dist/cjs/chunks/ComboboxInput.cjs +10 -6
  12. package/dist/cjs/chunks/ComboboxItem.cjs +4 -3
  13. package/dist/cjs/chunks/ComboboxLabel.cjs +1 -1
  14. package/dist/cjs/chunks/ComboboxRoot.cjs +69 -14
  15. package/dist/cjs/chunks/ComboboxSeparator.cjs +1 -1
  16. package/dist/cjs/chunks/ConfigProvider.cjs +1 -1
  17. package/dist/cjs/chunks/DialogClose.cjs +1 -1
  18. package/dist/cjs/chunks/DialogDescription.cjs +1 -1
  19. package/dist/cjs/chunks/DialogPortal.cjs +22 -19
  20. package/dist/cjs/chunks/DialogRoot.cjs +1 -1
  21. package/dist/cjs/chunks/DialogTitle.cjs +1 -1
  22. package/dist/cjs/chunks/DialogTrigger.cjs +1 -1
  23. package/dist/cjs/chunks/DismissableLayer.cjs +19 -9
  24. package/dist/cjs/chunks/DrawerClose.cjs +40 -0
  25. package/dist/cjs/chunks/DrawerDescription.cjs +37 -0
  26. package/dist/cjs/chunks/DrawerRoot.cjs +366 -0
  27. package/dist/cjs/chunks/DrawerTitle.cjs +37 -0
  28. package/dist/cjs/chunks/DropdownMenuPortal.cjs +2 -2
  29. package/dist/cjs/chunks/DropdownMenuRoot.cjs +1 -1
  30. package/dist/cjs/chunks/FocusScope.cjs +18 -9
  31. package/dist/cjs/chunks/Label.cjs +1 -1
  32. package/dist/cjs/chunks/MenuAnchor.cjs +1 -1
  33. package/dist/cjs/chunks/MenuContentImpl.cjs +2 -2
  34. package/dist/cjs/chunks/MenuGroup.cjs +1 -1
  35. package/dist/cjs/chunks/MenuItemImpl.cjs +3 -2
  36. package/dist/cjs/chunks/MenuRoot.cjs +2 -2
  37. package/dist/cjs/chunks/MenuSub.cjs +1 -1
  38. package/dist/cjs/chunks/PaginationRoot.cjs +1 -1
  39. package/dist/cjs/chunks/PinInputRoot.cjs +1 -1
  40. package/dist/cjs/chunks/PopoverRoot.cjs +1 -1
  41. package/dist/cjs/chunks/PopperAnchor.cjs +1 -1
  42. package/dist/cjs/chunks/PopperArrow.cjs +2 -2
  43. package/dist/cjs/chunks/PopperContent.cjs +2 -2
  44. package/dist/cjs/chunks/PopperRoot.cjs +1 -1
  45. package/dist/cjs/chunks/Presence.cjs +6 -5
  46. package/dist/cjs/chunks/Primitive.cjs +3 -3
  47. package/dist/cjs/chunks/ProgressIndicator.cjs +2 -2
  48. package/dist/cjs/chunks/RadioGroupRoot.cjs +1 -1
  49. package/dist/cjs/chunks/RovingFocusGroup.cjs +1 -1
  50. package/dist/cjs/chunks/RovingFocusItem.cjs +1 -1
  51. package/dist/cjs/chunks/SelectGroup.cjs +1 -1
  52. package/dist/cjs/chunks/SelectItemAlignedPosition.cjs +8 -4
  53. package/dist/cjs/chunks/TabsRoot.cjs +1 -1
  54. package/dist/cjs/chunks/Teleport.cjs +1 -1
  55. package/dist/cjs/chunks/ToggleGroupRoot.cjs +2 -2
  56. package/dist/cjs/chunks/TooltipProvider.cjs +1 -1
  57. package/dist/cjs/chunks/TooltipRoot.cjs +2 -2
  58. package/dist/cjs/chunks/VisuallyHidden.cjs +1 -1
  59. package/dist/cjs/chunks/VisuallyHiddenInput.cjs +2 -2
  60. package/dist/cjs/chunks/calendar.cjs +11 -11
  61. package/dist/cjs/chunks/checkbox.cjs +4 -4
  62. package/dist/cjs/chunks/clamp.cjs +1 -1
  63. package/dist/cjs/chunks/collapsible-content.cjs +1 -1
  64. package/dist/cjs/chunks/collapsible-trigger.cjs +1 -1
  65. package/dist/cjs/chunks/combobox-anchor.cjs +1 -1
  66. package/dist/cjs/chunks/combobox-empty.cjs +1 -1
  67. package/dist/cjs/chunks/combobox-list.cjs +2 -2
  68. package/dist/cjs/chunks/combobox-trigger.cjs +1 -1
  69. package/dist/cjs/chunks/components.cjs +43 -7
  70. package/dist/cjs/chunks/content-divider.cjs +2 -2
  71. package/dist/cjs/chunks/counter-input.cjs +67 -23
  72. package/dist/cjs/chunks/createContext.cjs +1 -1
  73. package/dist/cjs/chunks/dialog-body.cjs +46 -0
  74. package/dist/cjs/chunks/dialog-close.cjs +31 -0
  75. package/dist/cjs/chunks/dialog-content.cjs +39 -0
  76. package/dist/cjs/chunks/dialog-description.cjs +37 -0
  77. package/dist/cjs/chunks/dialog-footer.cjs +46 -0
  78. package/dist/cjs/chunks/dialog-header.cjs +39 -0
  79. package/dist/cjs/chunks/dialog-title.cjs +37 -0
  80. package/dist/cjs/chunks/dialog-trigger.cjs +31 -0
  81. package/dist/cjs/chunks/dialog.cjs +76 -0
  82. package/dist/cjs/chunks/digit-input-slot.cjs +28 -7
  83. package/dist/cjs/chunks/drawer-body.cjs +73 -0
  84. package/dist/cjs/chunks/drawer-close.cjs +27 -0
  85. package/dist/cjs/chunks/drawer-content.cjs +1201 -0
  86. package/dist/cjs/chunks/drawer-description.cjs +40 -0
  87. package/dist/cjs/chunks/drawer-footer.cjs +30 -0
  88. package/dist/cjs/chunks/drawer-header.cjs +75 -0
  89. package/dist/cjs/chunks/drawer-title.cjs +40 -0
  90. package/dist/cjs/chunks/drawer-trigger.cjs +75 -0
  91. package/dist/cjs/chunks/drawer.cjs +54 -0
  92. package/dist/cjs/chunks/dropdown-menu-content.cjs +4 -4
  93. package/dist/cjs/chunks/dropdown-menu-group.cjs +1 -1
  94. package/dist/cjs/chunks/dropdown-menu-item.cjs +2 -2
  95. package/dist/cjs/chunks/dropdown-menu-label.cjs +2 -2
  96. package/dist/cjs/chunks/dropdown-menu-separator.cjs +2 -2
  97. package/dist/cjs/chunks/dropdown-menu-sub-content.cjs +2 -2
  98. package/dist/cjs/chunks/dropdown-menu-sub-trigger.cjs +2 -2
  99. package/dist/cjs/chunks/dropdown-menu-sub.cjs +1 -1
  100. package/dist/cjs/chunks/dropdown-menu-trigger.cjs +1 -1
  101. package/dist/cjs/chunks/getActiveElement.cjs +1 -1
  102. package/dist/cjs/chunks/handleAndDispatchCustomEvent.cjs +1 -1
  103. package/dist/cjs/chunks/isValueEqualOrExist.cjs +1 -1
  104. package/dist/cjs/chunks/modal-content.cjs +11 -6
  105. package/dist/cjs/chunks/nullish.cjs +1 -1
  106. package/dist/cjs/chunks/pagination-content.cjs +2 -2
  107. package/dist/cjs/chunks/pagination-ellipsis.cjs +1 -1
  108. package/dist/cjs/chunks/pagination-first.cjs +1 -1
  109. package/dist/cjs/chunks/pagination-item.cjs +1 -1
  110. package/dist/cjs/chunks/pagination-last.cjs +1 -1
  111. package/dist/cjs/chunks/pagination-next.cjs +1 -1
  112. package/dist/cjs/chunks/pagination-previous.cjs +1 -1
  113. package/dist/cjs/chunks/popover-content.cjs +8 -8
  114. package/dist/cjs/chunks/popover-trigger.cjs +3 -2
  115. package/dist/cjs/chunks/radio-group-item.cjs +5 -5
  116. package/dist/cjs/chunks/range-calendar.cjs +11 -11
  117. package/dist/cjs/chunks/scroll-area.cjs +3 -3
  118. package/dist/cjs/chunks/scroll-bar.cjs +12 -12
  119. package/dist/cjs/chunks/segmented-control-item.cjs +2 -2
  120. package/dist/cjs/chunks/select-content.cjs +4 -4
  121. package/dist/cjs/chunks/select-item.cjs +3 -3
  122. package/dist/cjs/chunks/select-label.cjs +1 -1
  123. package/dist/cjs/chunks/select-separator.cjs +1 -1
  124. package/dist/cjs/chunks/select-trigger.cjs +3 -3
  125. package/dist/cjs/chunks/select-value.cjs +1 -1
  126. package/dist/cjs/chunks/slider.cjs +9 -9
  127. package/dist/cjs/chunks/switch.cjs +2 -2
  128. package/dist/cjs/chunks/tab-menu-content.cjs +1 -1
  129. package/dist/cjs/chunks/tab-menu-item.cjs +1 -1
  130. package/dist/cjs/chunks/tab-menu-list.cjs +1 -1
  131. package/dist/cjs/chunks/tooltip-content.cjs +28 -16
  132. package/dist/cjs/chunks/tooltip-trigger.cjs +5 -5
  133. package/dist/cjs/chunks/useArrowNavigation.cjs +1 -1
  134. package/dist/cjs/chunks/useCalendar.cjs +34 -11
  135. package/dist/cjs/chunks/useComposing.cjs +20 -1
  136. package/dist/cjs/chunks/useDirection.cjs +1 -1
  137. package/dist/cjs/chunks/useEmitAsProps.cjs +1 -1
  138. package/dist/cjs/chunks/useFocusGuards.cjs +1 -1
  139. package/dist/cjs/chunks/useFormControl.cjs +1 -1
  140. package/dist/cjs/chunks/useForwardExpose.cjs +1 -1
  141. package/dist/cjs/chunks/useForwardProps.cjs +1 -1
  142. package/dist/cjs/chunks/useForwardPropsEmits.cjs +1 -1
  143. package/dist/cjs/chunks/useForwardScopeId.cjs +1 -1
  144. package/dist/cjs/chunks/useHideOthers.cjs +1 -1
  145. package/dist/cjs/chunks/useId.cjs +1 -1
  146. package/dist/cjs/chunks/useKbd.cjs +1 -1
  147. package/dist/cjs/chunks/useLocale.cjs +1 -1
  148. package/dist/cjs/chunks/useNonce.cjs +1 -1
  149. package/dist/cjs/chunks/usePrimitiveElement.cjs +1 -1
  150. package/dist/cjs/chunks/useSize.cjs +1 -1
  151. package/dist/cjs/chunks/useTypeahead.cjs +1 -1
  152. package/dist/cjs/chunks/utils.cjs +1 -1
  153. package/dist/cjs/chunks/utils2.cjs +1 -1
  154. package/dist/cjs/chunks/utils3.cjs +1 -1
  155. package/dist/cjs/context.cjs +6 -0
  156. package/dist/cjs/dialog-body.cjs +2 -0
  157. package/dist/cjs/dialog-close.cjs +2 -0
  158. package/dist/cjs/dialog-content.cjs +2 -0
  159. package/dist/cjs/dialog-description.cjs +2 -0
  160. package/dist/cjs/dialog-footer.cjs +2 -0
  161. package/dist/cjs/dialog-header.cjs +2 -0
  162. package/dist/cjs/dialog-title.cjs +2 -0
  163. package/dist/cjs/dialog-trigger.cjs +2 -0
  164. package/dist/cjs/dialog.cjs +2 -0
  165. package/dist/cjs/drawer-body.cjs +2 -0
  166. package/dist/cjs/drawer-close.cjs +2 -0
  167. package/dist/cjs/drawer-content.cjs +2 -0
  168. package/dist/cjs/drawer-description.cjs +2 -0
  169. package/dist/cjs/drawer-footer.cjs +2 -0
  170. package/dist/cjs/drawer-header.cjs +2 -0
  171. package/dist/cjs/drawer-title.cjs +2 -0
  172. package/dist/cjs/drawer-trigger.cjs +2 -0
  173. package/dist/cjs/drawer.cjs +2 -0
  174. package/dist/cjs/index.cjs +43 -7
  175. package/dist/components/dialog/context.d.ts +14 -0
  176. package/dist/components/dialog/dialog-body.d.ts +19 -0
  177. package/dist/components/dialog/dialog-close.d.ts +15 -0
  178. package/dist/components/dialog/dialog-content.d.ts +19 -0
  179. package/dist/components/dialog/dialog-description.d.ts +17 -0
  180. package/dist/components/dialog/dialog-footer.d.ts +19 -0
  181. package/dist/components/dialog/dialog-header.d.ts +13 -0
  182. package/dist/components/dialog/dialog-title.d.ts +17 -0
  183. package/dist/components/dialog/dialog-trigger.d.ts +15 -0
  184. package/dist/components/dialog/dialog.d.ts +28 -0
  185. package/dist/components/dialog/index.d.ts +18 -0
  186. package/dist/components/digit-input/digit-input.d.ts +3 -3
  187. package/dist/components/drawer/drawer-body.d.ts +18 -0
  188. package/dist/components/drawer/drawer-close.d.ts +16 -0
  189. package/dist/components/drawer/drawer-content.d.ts +32 -0
  190. package/dist/components/drawer/drawer-description.d.ts +18 -0
  191. package/dist/components/drawer/drawer-footer.d.ts +17 -0
  192. package/dist/components/drawer/drawer-header.d.ts +24 -0
  193. package/dist/components/drawer/drawer-title.d.ts +18 -0
  194. package/dist/components/drawer/drawer-trigger.d.ts +16 -0
  195. package/dist/components/drawer/drawer.d.ts +30 -0
  196. package/dist/components/drawer/index.d.ts +18 -0
  197. package/dist/components/index.d.ts +2 -0
  198. package/dist/components/modal/modal-content.d.ts +2 -2
  199. package/dist/es/chunks/BubbleSelect.js +3 -3
  200. package/dist/es/chunks/CollapsibleRoot.js +1 -1
  201. package/dist/es/chunks/Collection.js +7 -1
  202. package/dist/es/chunks/ComboboxContent.js +11 -7
  203. package/dist/es/chunks/ComboboxGroup.js +2 -2
  204. package/dist/es/chunks/ComboboxInput.js +10 -6
  205. package/dist/es/chunks/ComboboxItem.js +4 -3
  206. package/dist/es/chunks/ComboboxLabel.js +1 -1
  207. package/dist/es/chunks/ComboboxRoot.js +69 -14
  208. package/dist/es/chunks/ComboboxSeparator.js +1 -1
  209. package/dist/es/chunks/ConfigProvider.js +1 -1
  210. package/dist/es/chunks/DialogClose.js +1 -1
  211. package/dist/es/chunks/DialogDescription.js +1 -1
  212. package/dist/es/chunks/DialogPortal.js +23 -20
  213. package/dist/es/chunks/DialogRoot.js +1 -1
  214. package/dist/es/chunks/DialogTitle.js +1 -1
  215. package/dist/es/chunks/DialogTrigger.js +1 -1
  216. package/dist/es/chunks/DismissableLayer.js +14 -10
  217. package/dist/es/chunks/DrawerClose.js +35 -0
  218. package/dist/es/chunks/DrawerDescription.js +32 -0
  219. package/dist/es/chunks/DrawerRoot.js +325 -0
  220. package/dist/es/chunks/DrawerTitle.js +32 -0
  221. package/dist/es/chunks/DropdownMenuPortal.js +2 -2
  222. package/dist/es/chunks/DropdownMenuRoot.js +1 -1
  223. package/dist/es/chunks/FocusScope.js +13 -10
  224. package/dist/es/chunks/Label.js +1 -1
  225. package/dist/es/chunks/MenuAnchor.js +1 -1
  226. package/dist/es/chunks/MenuContentImpl.js +3 -3
  227. package/dist/es/chunks/MenuGroup.js +1 -1
  228. package/dist/es/chunks/MenuItemImpl.js +3 -2
  229. package/dist/es/chunks/MenuRoot.js +2 -2
  230. package/dist/es/chunks/MenuSub.js +1 -1
  231. package/dist/es/chunks/PaginationRoot.js +1 -1
  232. package/dist/es/chunks/PinInputRoot.js +1 -1
  233. package/dist/es/chunks/PopoverRoot.js +1 -1
  234. package/dist/es/chunks/PopperAnchor.js +1 -1
  235. package/dist/es/chunks/PopperArrow.js +2 -2
  236. package/dist/es/chunks/PopperContent.js +2 -2
  237. package/dist/es/chunks/PopperRoot.js +1 -1
  238. package/dist/es/chunks/Presence.js +6 -5
  239. package/dist/es/chunks/Primitive.js +3 -3
  240. package/dist/es/chunks/ProgressIndicator.js +2 -2
  241. package/dist/es/chunks/RadioGroupRoot.js +1 -1
  242. package/dist/es/chunks/RovingFocusGroup.js +1 -1
  243. package/dist/es/chunks/RovingFocusItem.js +1 -1
  244. package/dist/es/chunks/SelectGroup.js +1 -1
  245. package/dist/es/chunks/SelectItemAlignedPosition.js +9 -5
  246. package/dist/es/chunks/TabsRoot.js +1 -1
  247. package/dist/es/chunks/Teleport.js +1 -1
  248. package/dist/es/chunks/ToggleGroupRoot.js +2 -2
  249. package/dist/es/chunks/TooltipProvider.js +1 -1
  250. package/dist/es/chunks/TooltipRoot.js +2 -2
  251. package/dist/es/chunks/VisuallyHidden.js +1 -1
  252. package/dist/es/chunks/VisuallyHiddenInput.js +2 -2
  253. package/dist/es/chunks/calendar.js +11 -11
  254. package/dist/es/chunks/checkbox.js +4 -4
  255. package/dist/es/chunks/clamp.js +1 -1
  256. package/dist/es/chunks/collapsible-content.js +1 -1
  257. package/dist/es/chunks/collapsible-trigger.js +1 -1
  258. package/dist/es/chunks/combobox-anchor.js +1 -1
  259. package/dist/es/chunks/combobox-empty.js +1 -1
  260. package/dist/es/chunks/combobox-list.js +2 -2
  261. package/dist/es/chunks/combobox-trigger.js +1 -1
  262. package/dist/es/chunks/components.js +43 -7
  263. package/dist/es/chunks/content-divider.js +2 -2
  264. package/dist/es/chunks/counter-input.js +68 -24
  265. package/dist/es/chunks/createContext.js +1 -1
  266. package/dist/es/chunks/dialog-body.js +39 -0
  267. package/dist/es/chunks/dialog-close.js +26 -0
  268. package/dist/es/chunks/dialog-content.js +34 -0
  269. package/dist/es/chunks/dialog-description.js +30 -0
  270. package/dist/es/chunks/dialog-footer.js +39 -0
  271. package/dist/es/chunks/dialog-header.js +34 -0
  272. package/dist/es/chunks/dialog-title.js +30 -0
  273. package/dist/es/chunks/dialog-trigger.js +26 -0
  274. package/dist/es/chunks/dialog.js +71 -0
  275. package/dist/es/chunks/digit-input-slot.js +28 -7
  276. package/dist/es/chunks/drawer-body.js +65 -0
  277. package/dist/es/chunks/drawer-close.js +22 -0
  278. package/dist/es/chunks/drawer-content.js +1193 -0
  279. package/dist/es/chunks/drawer-description.js +33 -0
  280. package/dist/es/chunks/drawer-footer.js +23 -0
  281. package/dist/es/chunks/drawer-header.js +69 -0
  282. package/dist/es/chunks/drawer-title.js +33 -0
  283. package/dist/es/chunks/drawer-trigger.js +70 -0
  284. package/dist/es/chunks/drawer.js +49 -0
  285. package/dist/es/chunks/dropdown-menu-content.js +4 -4
  286. package/dist/es/chunks/dropdown-menu-group.js +1 -1
  287. package/dist/es/chunks/dropdown-menu-item.js +2 -2
  288. package/dist/es/chunks/dropdown-menu-label.js +2 -2
  289. package/dist/es/chunks/dropdown-menu-separator.js +2 -2
  290. package/dist/es/chunks/dropdown-menu-sub-content.js +2 -2
  291. package/dist/es/chunks/dropdown-menu-sub-trigger.js +2 -2
  292. package/dist/es/chunks/dropdown-menu-sub.js +1 -1
  293. package/dist/es/chunks/dropdown-menu-trigger.js +1 -1
  294. package/dist/es/chunks/getActiveElement.js +1 -1
  295. package/dist/es/chunks/handleAndDispatchCustomEvent.js +1 -1
  296. package/dist/es/chunks/isValueEqualOrExist.js +1 -1
  297. package/dist/es/chunks/modal-content.js +12 -7
  298. package/dist/es/chunks/nullish.js +1 -1
  299. package/dist/es/chunks/pagination-content.js +2 -2
  300. package/dist/es/chunks/pagination-ellipsis.js +1 -1
  301. package/dist/es/chunks/pagination-first.js +1 -1
  302. package/dist/es/chunks/pagination-item.js +1 -1
  303. package/dist/es/chunks/pagination-last.js +1 -1
  304. package/dist/es/chunks/pagination-next.js +1 -1
  305. package/dist/es/chunks/pagination-previous.js +1 -1
  306. package/dist/es/chunks/popover-content.js +9 -9
  307. package/dist/es/chunks/popover-trigger.js +3 -2
  308. package/dist/es/chunks/radio-group-item.js +5 -5
  309. package/dist/es/chunks/range-calendar.js +11 -11
  310. package/dist/es/chunks/scroll-area.js +3 -3
  311. package/dist/es/chunks/scroll-bar.js +12 -12
  312. package/dist/es/chunks/segmented-control-item.js +2 -2
  313. package/dist/es/chunks/select-content.js +4 -4
  314. package/dist/es/chunks/select-item.js +3 -3
  315. package/dist/es/chunks/select-label.js +1 -1
  316. package/dist/es/chunks/select-separator.js +1 -1
  317. package/dist/es/chunks/select-trigger.js +3 -3
  318. package/dist/es/chunks/select-value.js +1 -1
  319. package/dist/es/chunks/slider.js +9 -9
  320. package/dist/es/chunks/switch.js +2 -2
  321. package/dist/es/chunks/tab-menu-content.js +1 -1
  322. package/dist/es/chunks/tab-menu-item.js +1 -1
  323. package/dist/es/chunks/tab-menu-list.js +1 -1
  324. package/dist/es/chunks/tooltip-content.js +28 -16
  325. package/dist/es/chunks/tooltip-trigger.js +6 -6
  326. package/dist/es/chunks/useArrowNavigation.js +1 -1
  327. package/dist/es/chunks/useCalendar.js +34 -11
  328. package/dist/es/chunks/useComposing.js +21 -2
  329. package/dist/es/chunks/useDirection.js +1 -1
  330. package/dist/es/chunks/useEmitAsProps.js +1 -1
  331. package/dist/es/chunks/useFocusGuards.js +1 -1
  332. package/dist/es/chunks/useFormControl.js +1 -1
  333. package/dist/es/chunks/useForwardExpose.js +1 -1
  334. package/dist/es/chunks/useForwardProps.js +1 -1
  335. package/dist/es/chunks/useForwardPropsEmits.js +1 -1
  336. package/dist/es/chunks/useForwardScopeId.js +1 -1
  337. package/dist/es/chunks/useHideOthers.js +1 -1
  338. package/dist/es/chunks/useId.js +1 -1
  339. package/dist/es/chunks/useKbd.js +1 -1
  340. package/dist/es/chunks/useLocale.js +1 -1
  341. package/dist/es/chunks/useNonce.js +1 -1
  342. package/dist/es/chunks/usePrimitiveElement.js +1 -1
  343. package/dist/es/chunks/useSize.js +1 -1
  344. package/dist/es/chunks/useTypeahead.js +1 -1
  345. package/dist/es/chunks/utils.js +1 -1
  346. package/dist/es/chunks/utils2.js +1 -1
  347. package/dist/es/chunks/utils3.js +1 -1
  348. package/dist/es/context.js +5 -0
  349. package/dist/es/dialog-body.js +2 -0
  350. package/dist/es/dialog-close.js +2 -0
  351. package/dist/es/dialog-content.js +2 -0
  352. package/dist/es/dialog-description.js +2 -0
  353. package/dist/es/dialog-footer.js +2 -0
  354. package/dist/es/dialog-header.js +2 -0
  355. package/dist/es/dialog-title.js +2 -0
  356. package/dist/es/dialog-trigger.js +2 -0
  357. package/dist/es/dialog.js +2 -0
  358. package/dist/es/drawer-body.js +2 -0
  359. package/dist/es/drawer-close.js +2 -0
  360. package/dist/es/drawer-content.js +2 -0
  361. package/dist/es/drawer-description.js +2 -0
  362. package/dist/es/drawer-footer.js +2 -0
  363. package/dist/es/drawer-header.js +2 -0
  364. package/dist/es/drawer-title.js +2 -0
  365. package/dist/es/drawer-trigger.js +2 -0
  366. package/dist/es/drawer.js +2 -0
  367. package/dist/es/index.js +26 -8
  368. package/package.json +4 -4
  369. package/src/components/dialog/context.ts +4 -0
  370. package/src/components/dialog/dialog-body.vue +30 -0
  371. package/src/components/dialog/dialog-close.vue +16 -0
  372. package/src/components/dialog/dialog-content.vue +23 -0
  373. package/src/components/dialog/dialog-description.vue +28 -0
  374. package/src/components/dialog/dialog-footer.vue +32 -0
  375. package/src/components/dialog/dialog-header.vue +29 -0
  376. package/src/components/dialog/dialog-title.vue +28 -0
  377. package/src/components/dialog/dialog-trigger.vue +16 -0
  378. package/src/components/dialog/dialog.vue +38 -0
  379. package/src/components/dialog/index.ts +18 -0
  380. package/src/components/dialog/stories/dialog.stories.ts +74 -0
  381. package/src/components/drawer/drawer-body.vue +30 -0
  382. package/src/components/drawer/drawer-close.vue +14 -0
  383. package/src/components/drawer/drawer-content.vue +259 -0
  384. package/src/components/drawer/drawer-description.vue +29 -0
  385. package/src/components/drawer/drawer-footer.vue +27 -0
  386. package/src/components/drawer/drawer-header.vue +95 -0
  387. package/src/components/drawer/drawer-title.vue +29 -0
  388. package/src/components/drawer/drawer-trigger.vue +14 -0
  389. package/src/components/drawer/drawer.vue +29 -0
  390. package/src/components/drawer/index.ts +18 -0
  391. package/src/components/drawer/stories/drawer.stories.ts +78 -0
  392. package/src/components/index.ts +2 -0
  393. package/src/components/modal/modal-content.vue +41 -17
@@ -0,0 +1,259 @@
1
+ <script setup lang="ts">
2
+ import type { DrawerContentEmits, DrawerContentProps as RekaDrawerContentProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import clsx from 'clsx';
6
+ import {
7
+ DrawerContent,
8
+ DrawerHandle,
9
+ DrawerOverlay,
10
+ DrawerPortal,
11
+ useForwardPropsEmits,
12
+ } from 'reka-ui';
13
+
14
+ export interface DrawerContentProps extends RekaDrawerContentProps {
15
+ class?: HTMLAttributes['class'];
16
+ }
17
+
18
+ defineOptions({
19
+ inheritAttrs: false,
20
+ });
21
+
22
+ const props = defineProps<DrawerContentProps>();
23
+
24
+ const emits = defineEmits<DrawerContentEmits>();
25
+
26
+ const forwarded = useForwardPropsEmits(reactiveOmit(props, 'class'), emits);
27
+ </script>
28
+
29
+ <template>
30
+ <DrawerPortal>
31
+ <DrawerOverlay class="celeste-drawer-overlay" />
32
+ <DrawerContent
33
+ :class="clsx('celeste-drawer-content', props.class)"
34
+ v-bind="{ ...forwarded, ...$attrs }"
35
+ >
36
+ <DrawerHandle class="celeste-drawer-handle" />
37
+ <slot />
38
+ </DrawerContent>
39
+ </DrawerPortal>
40
+ </template>
41
+
42
+ <style scoped>
43
+ .celeste-drawer-overlay {
44
+ position: fixed;
45
+ z-index: 50;
46
+ transition: opacity 450ms cubic-bezier(0.32, 0.72, 0, 1);
47
+ opacity: calc(1 - var(--drawer-swipe-progress, 0));
48
+ background: var(--color-overlay-overlay);
49
+ inset: 0;
50
+ backdrop-filter: blur(10px);
51
+
52
+ &[data-state='open'] {
53
+ animation: celeste-drawer-fade-in 450ms cubic-bezier(0.32, 0.72, 0, 1);
54
+ }
55
+
56
+ &[data-state='closed'] {
57
+ animation: celeste-drawer-fade-out 300ms cubic-bezier(0.32, 0.72, 0, 1) forwards;
58
+ }
59
+
60
+ &[data-swiping] {
61
+ transition-duration: 0ms;
62
+ }
63
+ }
64
+
65
+ .celeste-drawer-content {
66
+ --drawer-duration: 450ms;
67
+ --drawer-ease: cubic-bezier(0.32, 0.72, 0, 1);
68
+
69
+ display: flex;
70
+ position: fixed;
71
+ z-index: 50;
72
+ flex-direction: column;
73
+ transition: transform var(--drawer-duration) var(--drawer-ease);
74
+ outline: none;
75
+ background-color: var(--color-bg-white-0);
76
+ box-shadow: var(--shadow-regular-md);
77
+
78
+ &[data-swiping] {
79
+ transition-duration: 0ms;
80
+ }
81
+
82
+ &[data-swipe-direction='right'],
83
+ &[data-swipe-direction='left'] {
84
+ top: 0;
85
+ bottom: 0;
86
+ width: 100%;
87
+ max-width: 400px;
88
+ transform: translateX(var(--drawer-swipe-movement-x, 0%));
89
+ }
90
+
91
+ &[data-swipe-direction='right'] {
92
+ right: 0;
93
+ border-left: 1px solid var(--color-stroke-soft-200);
94
+
95
+ &[data-state='open'] {
96
+ animation: celeste-drawer-in-right var(--drawer-duration) var(--drawer-ease);
97
+ }
98
+
99
+ &[data-state='closed'] {
100
+ animation: celeste-drawer-out-right 300ms var(--drawer-ease) forwards;
101
+ }
102
+ }
103
+
104
+ &[data-swipe-direction='left'] {
105
+ left: 0;
106
+ border-right: 1px solid var(--color-stroke-soft-200);
107
+
108
+ &[data-state='open'] {
109
+ animation: celeste-drawer-in-left var(--drawer-duration) var(--drawer-ease);
110
+ }
111
+
112
+ &[data-state='closed'] {
113
+ animation: celeste-drawer-out-left 300ms var(--drawer-ease) forwards;
114
+ }
115
+ }
116
+
117
+ &[data-swipe-direction='down'],
118
+ &[data-swipe-direction='up'] {
119
+ right: 0;
120
+ left: 0;
121
+ max-height: calc(100dvh - var(--spacing-48));
122
+ transform: translateY(calc(var(--drawer-snap-point-offset, 0%) + var(--drawer-swipe-movement-y, 0%)));
123
+ }
124
+
125
+ &[data-swipe-direction='down'] {
126
+ bottom: 0;
127
+ border-top: 1px solid var(--color-stroke-soft-200);
128
+ border-radius: var(--radius-20) var(--radius-20) 0 0;
129
+
130
+ &[data-state='open'] {
131
+ animation: celeste-drawer-in-down var(--drawer-duration) var(--drawer-ease);
132
+ }
133
+
134
+ &[data-state='closed'] {
135
+ animation: celeste-drawer-out-down 300ms var(--drawer-ease) forwards;
136
+ }
137
+ }
138
+
139
+ &[data-swipe-direction='up'] {
140
+ top: 0;
141
+ border-bottom: 1px solid var(--color-stroke-soft-200);
142
+ border-radius: 0 0 var(--radius-20) var(--radius-20);
143
+
144
+ &[data-state='open'] {
145
+ animation: celeste-drawer-in-up var(--drawer-duration) var(--drawer-ease);
146
+ }
147
+
148
+ &[data-state='closed'] {
149
+ animation: celeste-drawer-out-up 300ms var(--drawer-ease) forwards;
150
+ }
151
+ }
152
+ }
153
+
154
+ .celeste-drawer-handle {
155
+ display: none;
156
+ flex-shrink: 0;
157
+ align-self: center;
158
+ width: 32px;
159
+ height: 4px;
160
+ margin: var(--spacing-8) 0 0;
161
+ border-radius: var(--radius-full);
162
+ background-color: var(--color-bg-soft-200);
163
+ cursor: grab;
164
+ }
165
+
166
+ .celeste-drawer-content[data-swipe-direction='down'] .celeste-drawer-handle {
167
+ display: block;
168
+ }
169
+
170
+ .celeste-drawer-content[data-swipe-direction='up'] .celeste-drawer-handle {
171
+ display: block;
172
+ order: 1;
173
+ margin: 0 0 var(--spacing-8);
174
+ }
175
+
176
+ @media (prefers-reduced-motion: reduce) {
177
+ .celeste-drawer-overlay,
178
+ .celeste-drawer-content {
179
+ transition-duration: 0ms;
180
+ animation-duration: 1ms !important;
181
+ }
182
+ }
183
+
184
+ @keyframes celeste-drawer-fade-in {
185
+ from {
186
+ opacity: 0;
187
+ }
188
+ }
189
+
190
+ @keyframes celeste-drawer-fade-out {
191
+ to {
192
+ opacity: 0;
193
+ }
194
+ }
195
+
196
+ @keyframes celeste-drawer-in-right {
197
+ from {
198
+ transform: translateX(100%);
199
+ }
200
+ }
201
+
202
+ @keyframes celeste-drawer-out-right {
203
+ from {
204
+ transform: translateX(var(--drawer-swipe-movement-x, 0%));
205
+ }
206
+
207
+ to {
208
+ transform: translateX(100%);
209
+ }
210
+ }
211
+
212
+ @keyframes celeste-drawer-in-left {
213
+ from {
214
+ transform: translateX(-100%);
215
+ }
216
+ }
217
+
218
+ @keyframes celeste-drawer-out-left {
219
+ from {
220
+ transform: translateX(var(--drawer-swipe-movement-x, 0%));
221
+ }
222
+
223
+ to {
224
+ transform: translateX(-100%);
225
+ }
226
+ }
227
+
228
+ @keyframes celeste-drawer-in-down {
229
+ from {
230
+ transform: translateY(100%);
231
+ }
232
+ }
233
+
234
+ @keyframes celeste-drawer-out-down {
235
+ from {
236
+ transform: translateY(calc(var(--drawer-snap-point-offset, 0%) + var(--drawer-swipe-movement-y, 0%)));
237
+ }
238
+
239
+ to {
240
+ transform: translateY(100%);
241
+ }
242
+ }
243
+
244
+ @keyframes celeste-drawer-in-up {
245
+ from {
246
+ transform: translateY(-100%);
247
+ }
248
+ }
249
+
250
+ @keyframes celeste-drawer-out-up {
251
+ from {
252
+ transform: translateY(calc(var(--drawer-snap-point-offset, 0%) + var(--drawer-swipe-movement-y, 0%)));
253
+ }
254
+
255
+ to {
256
+ transform: translateY(-100%);
257
+ }
258
+ }
259
+ </style>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import type { DrawerDescriptionProps as RekaDrawerDescriptionProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import clsx from 'clsx';
6
+ import { DrawerDescription } from 'reka-ui';
7
+
8
+ export interface DrawerDescriptionProps extends RekaDrawerDescriptionProps {
9
+ class?: HTMLAttributes['class'];
10
+ }
11
+
12
+ const props = defineProps<DrawerDescriptionProps>();
13
+
14
+ const delegated = reactiveOmit(props, 'class');
15
+ </script>
16
+
17
+ <template>
18
+ <DrawerDescription :class="clsx('celeste-drawer-description', props.class)" v-bind="delegated">
19
+ <slot />
20
+ </DrawerDescription>
21
+ </template>
22
+
23
+ <style scoped>
24
+ .celeste-drawer-description {
25
+ margin: 0;
26
+ color: var(--color-text-sub-600);
27
+ font: var(--paragraph-sm);
28
+ }
29
+ </style>
@@ -0,0 +1,27 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue';
3
+ import clsx from 'clsx';
4
+
5
+ export interface DrawerFooterProps {
6
+ class?: HTMLAttributes['class'];
7
+ }
8
+
9
+ const props = defineProps<DrawerFooterProps>();
10
+ </script>
11
+
12
+ <template>
13
+ <div :class="clsx('celeste-drawer-footer', props.class)">
14
+ <slot />
15
+ </div>
16
+ </template>
17
+
18
+ <style scoped>
19
+ .celeste-drawer-footer {
20
+ display: flex;
21
+ flex-shrink: 0;
22
+ align-items: center;
23
+ padding: var(--spacing-20);
24
+ border-top: 1px solid var(--color-stroke-soft-200);
25
+ gap: var(--spacing-16);
26
+ }
27
+ </style>
@@ -0,0 +1,95 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue';
3
+ import clsx from 'clsx';
4
+ import { DrawerClose } from 'reka-ui';
5
+ import CompactButton from '@/components/button/compact-button.vue';
6
+ import DrawerDescription from './drawer-description.vue';
7
+ import DrawerTitle from './drawer-title.vue';
8
+
9
+ export interface DrawerHeaderProps {
10
+ title: string;
11
+ description?: string;
12
+ icon?: string;
13
+ dismissible?: boolean;
14
+ divider?: boolean;
15
+ class?: HTMLAttributes['class'];
16
+ }
17
+
18
+ const props = withDefaults(defineProps<DrawerHeaderProps>(), {
19
+ dismissible: true,
20
+ });
21
+ </script>
22
+
23
+ <template>
24
+ <div
25
+ :class="clsx('celeste-drawer-header', props.class)"
26
+ :data-size="description ? 'lg' : 'sm'"
27
+ :data-divider="divider"
28
+ >
29
+ <span v-if="icon" class="icon">
30
+ <i :class="icon" />
31
+ </span>
32
+ <div class="content">
33
+ <DrawerTitle>{{ title }}</DrawerTitle>
34
+ <DrawerDescription v-if="description">
35
+ {{ description }}
36
+ </DrawerDescription>
37
+ </div>
38
+ <slot name="actions" />
39
+ <DrawerClose v-if="dismissible" as-child>
40
+ <CompactButton
41
+ icon="i-celeste-close-line"
42
+ variant="ghost"
43
+ size="lg"
44
+ />
45
+ </DrawerClose>
46
+ </div>
47
+ </template>
48
+
49
+ <style scoped>
50
+ .celeste-drawer-header {
51
+ display: flex;
52
+ flex-shrink: 0;
53
+ align-items: center;
54
+ padding: var(--spacing-20);
55
+ gap: var(--spacing-12);
56
+
57
+ &[data-size='lg'] {
58
+ align-items: flex-start;
59
+ gap: var(--spacing-16);
60
+ }
61
+
62
+ &[data-divider='true'] {
63
+ border-bottom: 1px solid var(--color-stroke-soft-200);
64
+ }
65
+
66
+ .icon {
67
+ display: flex;
68
+ flex-shrink: 0;
69
+ align-items: center;
70
+ justify-content: center;
71
+ color: var(--color-text-sub-600);
72
+
73
+ i {
74
+ width: 24px;
75
+ height: 24px;
76
+ }
77
+ }
78
+
79
+ &[data-size='lg'] .icon {
80
+ padding: var(--spacing-12);
81
+ border: 1px solid var(--color-stroke-soft-200);
82
+ border-radius: var(--radius-full);
83
+ background-color: var(--color-bg-white-0);
84
+ box-shadow: var(--shadow-regular-xs);
85
+ }
86
+
87
+ .content {
88
+ display: flex;
89
+ flex: 1;
90
+ flex-direction: column;
91
+ min-width: 0;
92
+ gap: var(--spacing-4);
93
+ }
94
+ }
95
+ </style>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import type { DrawerTitleProps as RekaDrawerTitleProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import clsx from 'clsx';
6
+ import { DrawerTitle } from 'reka-ui';
7
+
8
+ export interface DrawerTitleProps extends RekaDrawerTitleProps {
9
+ class?: HTMLAttributes['class'];
10
+ }
11
+
12
+ const props = defineProps<DrawerTitleProps>();
13
+
14
+ const delegated = reactiveOmit(props, 'class');
15
+ </script>
16
+
17
+ <template>
18
+ <DrawerTitle :class="clsx('celeste-drawer-title', props.class)" v-bind="delegated">
19
+ <slot />
20
+ </DrawerTitle>
21
+ </template>
22
+
23
+ <style scoped>
24
+ .celeste-drawer-title {
25
+ margin: 0;
26
+ color: var(--color-text-strong-950);
27
+ font: var(--label-lg);
28
+ }
29
+ </style>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import type { DrawerTriggerProps as RekaDrawerTriggerProps } from 'reka-ui';
3
+ import { DrawerTrigger } from 'reka-ui';
4
+
5
+ export interface DrawerTriggerProps extends RekaDrawerTriggerProps {}
6
+
7
+ const props = defineProps<DrawerTriggerProps>();
8
+ </script>
9
+
10
+ <template>
11
+ <DrawerTrigger v-bind="props">
12
+ <slot />
13
+ </DrawerTrigger>
14
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import type { DrawerRootEmits, DrawerRootProps } from 'reka-ui';
3
+ import { reactiveOmit } from '@vueuse/core';
4
+ import { DrawerRoot, useForwardPropsEmits } from 'reka-ui';
5
+
6
+ export type DrawerSide = 'right' | 'left' | 'bottom' | 'top';
7
+
8
+ export interface DrawerProps extends Omit<DrawerRootProps, 'swipeDirection'> {
9
+ side?: DrawerSide;
10
+ }
11
+
12
+ const props = withDefaults(defineProps<DrawerProps>(), {
13
+ side: 'right',
14
+ open: undefined,
15
+ modal: true,
16
+ });
17
+
18
+ const emits = defineEmits<DrawerRootEmits>();
19
+
20
+ const directions = { right: 'right', left: 'left', bottom: 'down', top: 'up' } as const;
21
+
22
+ const forwarded = useForwardPropsEmits(reactiveOmit(props, 'side'), emits);
23
+ </script>
24
+
25
+ <template>
26
+ <DrawerRoot v-bind="forwarded" :swipe-direction="directions[side]">
27
+ <slot />
28
+ </DrawerRoot>
29
+ </template>
@@ -0,0 +1,18 @@
1
+ export * from './drawer-body.vue';
2
+ export { default as DrawerBody } from './drawer-body.vue';
3
+ export * from './drawer-close.vue';
4
+ export { default as DrawerClose } from './drawer-close.vue';
5
+ export * from './drawer-content.vue';
6
+ export { default as DrawerContent } from './drawer-content.vue';
7
+ export * from './drawer-description.vue';
8
+ export { default as DrawerDescription } from './drawer-description.vue';
9
+ export * from './drawer-footer.vue';
10
+ export { default as DrawerFooter } from './drawer-footer.vue';
11
+ export * from './drawer-header.vue';
12
+ export { default as DrawerHeader } from './drawer-header.vue';
13
+ export * from './drawer-title.vue';
14
+ export { default as DrawerTitle } from './drawer-title.vue';
15
+ export * from './drawer-trigger.vue';
16
+ export { default as DrawerTrigger } from './drawer-trigger.vue';
17
+ export * from './drawer.vue';
18
+ export { default as Drawer } from './drawer.vue';
@@ -0,0 +1,78 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import Button from '@/components/button/button.vue';
3
+ import DrawerBody from '../drawer-body.vue';
4
+ import DrawerClose from '../drawer-close.vue';
5
+ import DrawerContent from '../drawer-content.vue';
6
+ import DrawerFooter from '../drawer-footer.vue';
7
+ import DrawerHeader from '../drawer-header.vue';
8
+ import DrawerTrigger from '../drawer-trigger.vue';
9
+ import Drawer from '../drawer.vue';
10
+
11
+ const meta: Meta<typeof Drawer> = {
12
+ title: 'Components/Drawer',
13
+ component: Drawer,
14
+ argTypes: {
15
+ side: { control: 'select', options: ['right', 'left', 'bottom', 'top'] },
16
+ },
17
+ args: { side: 'right' },
18
+ };
19
+
20
+ export default meta;
21
+
22
+ type Story = StoryObj<typeof Drawer>;
23
+
24
+ const render: Story['render'] = args => ({
25
+ components: { Drawer, DrawerTrigger, DrawerContent, DrawerHeader, DrawerBody, DrawerFooter, DrawerClose, Button },
26
+ setup() {
27
+ return { args, items: Array.from({ length: 24 }, (_, i) => `Item ${i + 1}`) };
28
+ },
29
+ template: `
30
+ <Drawer v-bind="args">
31
+ <DrawerTrigger as-child>
32
+ <Button variant="stroke" intent="neutral">Open drawer</Button>
33
+ </DrawerTrigger>
34
+ <DrawerContent>
35
+ <DrawerHeader title="Virtual card" description="Manage the card and its recent transactions." icon="i-celeste-history-line" divider />
36
+ <DrawerBody>
37
+ <ul style="margin: 0; padding: 20px; display: grid; gap: 12px; list-style: none;">
38
+ <li v-for="item in items" :key="item">{{ item }}</li>
39
+ </ul>
40
+ </DrawerBody>
41
+ <DrawerFooter>
42
+ <DrawerClose as-child>
43
+ <Button intent="neutral" variant="stroke" style="flex: 1">Cancel</Button>
44
+ </DrawerClose>
45
+ <Button style="flex: 1">Continue</Button>
46
+ </DrawerFooter>
47
+ </DrawerContent>
48
+ </Drawer>
49
+ `,
50
+ });
51
+
52
+ export const Right: Story = { render };
53
+
54
+ export const Left: Story = { render, args: { side: 'left' } };
55
+
56
+ export const Bottom: Story = { render, args: { side: 'bottom' } };
57
+
58
+ export const Top: Story = { render, args: { side: 'top' } };
59
+
60
+ export const SmallHeader: Story = {
61
+ render: args => ({
62
+ components: { Drawer, DrawerTrigger, DrawerContent, DrawerHeader, DrawerBody, Button },
63
+ setup() {
64
+ return { args };
65
+ },
66
+ template: `
67
+ <Drawer v-bind="args">
68
+ <DrawerTrigger as-child>
69
+ <Button variant="stroke" intent="neutral">Open drawer</Button>
70
+ </DrawerTrigger>
71
+ <DrawerContent>
72
+ <DrawerHeader title="Insert title here" icon="i-celeste-history-line" />
73
+ <DrawerBody />
74
+ </DrawerContent>
75
+ </Drawer>
76
+ `,
77
+ }),
78
+ };
@@ -10,7 +10,9 @@ export * from './combobox';
10
10
  export * from './content-divider';
11
11
  export * from './counter-input';
12
12
  export * from './date-picker';
13
+ export * from './dialog';
13
14
  export * from './digit-input';
15
+ export * from './drawer';
14
16
  export * from './dropdown-menu';
15
17
  export * from './file-upload';
16
18
  export * from './hint-text';
@@ -2,7 +2,7 @@
2
2
  import type { DialogContentEmits, DialogContentProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import clsx from 'clsx';
5
- import { DialogContent as ModalContent, DialogOverlay as ModalOverlay, DialogPortal as ModalPortal, useForwardPropsEmits } from 'reka-ui';
5
+ import { injectDialogRootContext, DialogContent as ModalContent, DialogOverlay as ModalOverlay, DialogPortal as ModalPortal, useForwardPropsEmits } from 'reka-ui';
6
6
  import { useDelegatedProps } from '@/composables/use-delegated-props';
7
7
 
8
8
  const props = defineProps<DialogContentProps & {
@@ -13,41 +13,65 @@ const emits = defineEmits<DialogContentEmits>();
13
13
 
14
14
  const delegatedProps = useDelegatedProps(props, 'class');
15
15
  const forwarded = useForwardPropsEmits(delegatedProps, emits);
16
+ const root = injectDialogRootContext();
16
17
  </script>
17
18
 
18
19
  <template>
19
20
  <ModalPortal>
20
- <ModalOverlay class="celeste-modal-overlay" />
21
- <Transition name="fade">
22
- <ModalContent
23
- v-bind="forwarded"
24
- :class="clsx('celeste-modal-content', props.class)"
25
- >
26
- <slot />
27
- </ModalContent>
28
- </Transition>
21
+ <component :is="root.modal.value ? ModalOverlay : 'div'" :class="root.modal.value ? 'celeste-modal-overlay' : 'celeste-modal-viewport'">
22
+ <Transition name="fade">
23
+ <ModalContent
24
+ v-bind="forwarded"
25
+ :class="clsx('celeste-modal-content', props.class)"
26
+ >
27
+ <slot />
28
+ </ModalContent>
29
+ </Transition>
30
+ </component>
29
31
  </ModalPortal>
30
32
  </template>
31
33
 
32
34
  <style scoped lang="scss">
33
- .celeste-modal-overlay {
35
+ .celeste-modal-overlay,
36
+ .celeste-modal-viewport {
37
+ display: flex;
34
38
  position: fixed;
35
39
  z-index: 50;
40
+ flex-direction: column;
41
+ padding: var(--spacing-16);
42
+ overflow-y: auto;
43
+ inset: 0;
44
+ }
45
+
46
+ .celeste-modal-overlay {
36
47
  background: var(--color-overlay-overlay);
37
48
  backdrop-filter: blur(5px);
38
- inset: 0;
49
+
50
+ &[data-state='open'] {
51
+ animation: celeste-fade-in var(--animation-fast) ease-out;
52
+ }
53
+
54
+ &[data-state='closed'] {
55
+ animation: celeste-fade-out var(--animation-fast) ease-in;
56
+ }
57
+ }
58
+
59
+ .celeste-modal-viewport {
60
+ pointer-events: none;
61
+
62
+ .celeste-modal-content {
63
+ pointer-events: auto;
64
+ }
39
65
  }
40
66
 
41
67
  .celeste-modal-content {
42
- position: fixed;
43
- z-index: 51;
44
- top: 50%;
45
- left: 50%;
68
+ position: relative;
69
+ max-width: 100%;
70
+ margin: auto;
46
71
  border: 1px solid var(--color-stroke-soft-200);
47
72
  border-radius: var(--radius-20);
48
73
  background: var(--color-bg-white-0);
49
74
  box-shadow: var(--shadow-regular-md);
50
- translate: -50% -50%;
51
75
  }
52
76
 
53
77
  .fade-enter-active,