@g4rcez/components 4.0.2 → 4.1.2

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 (337) hide show
  1. package/ai/SKILL.md +120 -153
  2. package/ai/docs/Alert.md +47 -48
  3. package/ai/docs/AnimatedList.md +88 -87
  4. package/ai/docs/Autocomplete.md +102 -106
  5. package/ai/docs/Button.md +33 -33
  6. package/ai/docs/Calendar.md +67 -101
  7. package/ai/docs/Card.md +59 -55
  8. package/ai/docs/Checkbox.md +77 -82
  9. package/ai/docs/CommandPalette.md +154 -172
  10. package/ai/docs/DatePicker.md +45 -64
  11. package/ai/docs/Dropdown.md +98 -126
  12. package/ai/docs/Empty.md +41 -44
  13. package/ai/docs/Expand.md +40 -54
  14. package/ai/docs/FileUpload.md +102 -109
  15. package/ai/docs/Form.md +35 -29
  16. package/ai/docs/FormReset.md +37 -37
  17. package/ai/docs/Heading.md +4 -6
  18. package/ai/docs/Input.md +73 -98
  19. package/ai/docs/InputField.md +67 -67
  20. package/ai/docs/List.md +88 -85
  21. package/ai/docs/Menu.md +62 -60
  22. package/ai/docs/Modal.md +129 -136
  23. package/ai/docs/MultiSelect.md +65 -84
  24. package/ai/docs/Notifications.md +96 -96
  25. package/ai/docs/PageCalendar.md +88 -97
  26. package/ai/docs/Polymorph.md +25 -41
  27. package/ai/docs/Progress.md +55 -51
  28. package/ai/docs/Radiobox.md +49 -41
  29. package/ai/docs/RenderOnView.md +26 -32
  30. package/ai/docs/Resizable.md +60 -65
  31. package/ai/docs/Select.md +158 -158
  32. package/ai/docs/Shortcut.md +14 -14
  33. package/ai/docs/Skeleton.md +56 -60
  34. package/ai/docs/Slider.md +26 -49
  35. package/ai/docs/Slot.md +15 -17
  36. package/ai/docs/Spinner.md +17 -15
  37. package/ai/docs/Stats.md +44 -42
  38. package/ai/docs/Step.md +60 -60
  39. package/ai/docs/Switch.md +44 -54
  40. package/ai/docs/Table.md +124 -136
  41. package/ai/docs/Tabs.md +90 -90
  42. package/ai/docs/Tag.md +63 -65
  43. package/ai/docs/TaskList.md +40 -50
  44. package/ai/docs/Textarea.md +47 -70
  45. package/ai/docs/Timeline.md +98 -96
  46. package/ai/docs/Toolbar.md +46 -46
  47. package/ai/docs/Tooltip.md +103 -103
  48. package/ai/docs/Typography.md +55 -55
  49. package/ai/docs/Wizard.md +104 -109
  50. package/ai/docs/index.md +116 -116
  51. package/dist/autocomplete-DcTNOwyg.js +393 -0
  52. package/dist/autocomplete-DcTNOwyg.js.map +1 -0
  53. package/dist/{calendar-B5lSd0ID.js → calendar-BJMHRoy2.js} +104 -105
  54. package/dist/calendar-BJMHRoy2.js.map +1 -0
  55. package/dist/components/core/button.d.ts.map +1 -1
  56. package/dist/components/core/button.js +10 -10
  57. package/dist/components/core/button.js.map +1 -1
  58. package/dist/components/core/button.jsx +79 -0
  59. package/dist/components/core/heading.jsx +4 -0
  60. package/dist/components/core/polymorph.d.ts +1 -1
  61. package/dist/components/core/polymorph.d.ts.map +1 -1
  62. package/dist/components/core/polymorph.jsx +5 -0
  63. package/dist/components/core/render-on-view.jsx +31 -0
  64. package/dist/components/core/resizable.jsx +51 -0
  65. package/dist/components/core/slot.d.ts.map +1 -1
  66. package/dist/components/core/slot.jsx +156 -0
  67. package/dist/components/core/tag.d.ts +1 -1
  68. package/dist/components/core/tag.d.ts.map +1 -1
  69. package/dist/components/core/tag.js +4 -4
  70. package/dist/components/core/tag.js.map +1 -1
  71. package/dist/components/core/tag.jsx +51 -0
  72. package/dist/components/core/typography.jsx +18 -0
  73. package/dist/components/display/alert.d.ts +1 -1
  74. package/dist/components/display/alert.d.ts.map +1 -1
  75. package/dist/components/display/alert.js +48 -46
  76. package/dist/components/display/alert.js.map +1 -1
  77. package/dist/components/display/alert.jsx +61 -0
  78. package/dist/components/display/calendar.js +6 -6
  79. package/dist/components/display/calendar.jsx +299 -0
  80. package/dist/components/display/card.js +2 -2
  81. package/dist/components/display/card.js.map +1 -1
  82. package/dist/components/display/card.jsx +43 -0
  83. package/dist/components/display/empty.jsx +11 -0
  84. package/dist/components/display/list.js +1 -1
  85. package/dist/components/display/list.js.map +1 -1
  86. package/dist/components/display/list.jsx +81 -0
  87. package/dist/components/display/notifications.d.ts +1 -1
  88. package/dist/components/display/notifications.d.ts.map +1 -1
  89. package/dist/components/display/notifications.js +3 -3
  90. package/dist/components/display/notifications.jsx +126 -0
  91. package/dist/components/display/progress.jsx +11 -0
  92. package/dist/components/display/shortcut.jsx +23 -0
  93. package/dist/components/display/skeleton.d.ts.map +1 -1
  94. package/dist/components/display/skeleton.jsx +19 -0
  95. package/dist/components/display/spinner.d.ts.map +1 -1
  96. package/dist/components/display/spinner.jsx +11 -0
  97. package/dist/components/display/stats.js +1 -1
  98. package/dist/components/display/stats.jsx +20 -0
  99. package/dist/components/display/step.jsx +131 -0
  100. package/dist/components/display/tabs.d.ts +1 -1
  101. package/dist/components/display/tabs.d.ts.map +1 -1
  102. package/dist/components/display/tabs.js +2 -2
  103. package/dist/components/display/tabs.jsx +125 -0
  104. package/dist/components/display/timeline.js +1 -1
  105. package/dist/components/display/timeline.jsx +25 -0
  106. package/dist/components/floating/command-palette.d.ts.map +1 -1
  107. package/dist/components/floating/command-palette.jsx +197 -0
  108. package/dist/components/floating/dropdown.d.ts.map +1 -1
  109. package/dist/components/floating/dropdown.js +25 -17
  110. package/dist/components/floating/dropdown.js.map +1 -1
  111. package/dist/components/floating/dropdown.jsx +56 -0
  112. package/dist/components/floating/expand.js +7 -7
  113. package/dist/components/floating/expand.js.map +1 -1
  114. package/dist/components/floating/expand.jsx +44 -0
  115. package/dist/components/floating/menu.js +10 -10
  116. package/dist/components/floating/menu.js.map +1 -1
  117. package/dist/components/floating/menu.jsx +147 -0
  118. package/dist/components/floating/modal.d.ts +4 -4
  119. package/dist/components/floating/modal.d.ts.map +1 -1
  120. package/dist/components/floating/modal.js +106 -102
  121. package/dist/components/floating/modal.js.map +1 -1
  122. package/dist/components/floating/modal.jsx +301 -0
  123. package/dist/components/floating/toolbar.jsx +5 -0
  124. package/dist/components/floating/tooltip.d.ts.map +1 -1
  125. package/dist/components/floating/tooltip.js +14 -14
  126. package/dist/components/floating/tooltip.js.map +1 -1
  127. package/dist/components/floating/tooltip.jsx +58 -0
  128. package/dist/components/floating/wizard.jsx +161 -0
  129. package/dist/components/form/autocomplete.d.ts.map +1 -1
  130. package/dist/components/form/autocomplete.js +6 -6
  131. package/dist/components/form/autocomplete.jsx +278 -0
  132. package/dist/components/form/checkbox.js +1 -1
  133. package/dist/components/form/checkbox.jsx +12 -0
  134. package/dist/components/form/date-picker.d.ts.map +1 -1
  135. package/dist/components/form/date-picker.js +5 -5
  136. package/dist/components/form/date-picker.jsx +115 -0
  137. package/dist/components/form/file-upload.d.ts.map +1 -1
  138. package/dist/components/form/file-upload.js +2 -2
  139. package/dist/components/form/file-upload.jsx +134 -0
  140. package/dist/components/form/form.js.map +1 -1
  141. package/dist/components/form/form.jsx +10 -0
  142. package/dist/components/form/formReset.jsx +17 -0
  143. package/dist/components/form/free-text.d.ts.map +1 -1
  144. package/dist/components/form/free-text.jsx +41 -0
  145. package/dist/components/form/input-field.d.ts +11 -11
  146. package/dist/components/form/input-field.d.ts.map +1 -1
  147. package/dist/components/form/input-field.jsx +58 -0
  148. package/dist/components/form/input.js +1 -1
  149. package/dist/components/form/input.jsx +36 -0
  150. package/dist/components/form/multi-select.d.ts.map +1 -1
  151. package/dist/components/form/multi-select.jsx +336 -0
  152. package/dist/components/form/radiobox.js +1 -1
  153. package/dist/components/form/radiobox.jsx +6 -0
  154. package/dist/components/form/select.js +3 -3
  155. package/dist/components/form/select.jsx +42 -0
  156. package/dist/components/form/slider.jsx +45 -0
  157. package/dist/components/form/switch.js +2 -2
  158. package/dist/components/form/switch.js.map +1 -1
  159. package/dist/components/form/switch.jsx +46 -0
  160. package/dist/components/form/task-list.jsx +26 -0
  161. package/dist/components/form/textarea.jsx +12 -0
  162. package/dist/components/index.d.ts +0 -1
  163. package/dist/components/index.d.ts.map +1 -1
  164. package/dist/components/index.js +44 -0
  165. package/dist/components/page-calendar/calendar-header.jsx +83 -0
  166. package/dist/components/page-calendar/day-view.jsx +94 -0
  167. package/dist/components/page-calendar/event-pill.d.ts.map +1 -1
  168. package/dist/components/page-calendar/event-pill.jsx +25 -0
  169. package/dist/components/page-calendar/index.js +2 -0
  170. package/dist/components/page-calendar/month-view.jsx +46 -0
  171. package/dist/components/page-calendar/page-calendar.jsx +41 -0
  172. package/dist/components/page-calendar/page-calendar.types.js +1 -0
  173. package/dist/components/page-calendar/page-calendar.utils.js +93 -0
  174. package/dist/components/page-calendar/week-view.jsx +71 -0
  175. package/dist/components/table/filter.jsx +141 -0
  176. package/dist/components/table/group.jsx +68 -0
  177. package/dist/components/table/index.d.ts +2 -3
  178. package/dist/components/table/index.d.ts.map +1 -1
  179. package/dist/components/table/index.jsx +60 -0
  180. package/dist/components/table/inner-table.d.ts +2 -3
  181. package/dist/components/table/inner-table.d.ts.map +1 -1
  182. package/dist/components/table/inner-table.jsx +102 -0
  183. package/dist/components/table/metadata.jsx +36 -0
  184. package/dist/components/table/pagination.d.ts +3 -1
  185. package/dist/components/table/pagination.d.ts.map +1 -1
  186. package/dist/components/table/pagination.jsx +74 -0
  187. package/dist/components/table/row.d.ts +4 -5
  188. package/dist/components/table/row.d.ts.map +1 -1
  189. package/dist/components/table/row.jsx +49 -0
  190. package/dist/components/table/sort.d.ts.map +1 -1
  191. package/dist/components/table/sort.jsx +109 -0
  192. package/dist/components/table/table-lib.d.ts +1 -1
  193. package/dist/components/table/table-lib.d.ts.map +1 -1
  194. package/dist/components/table/table-lib.js +83 -0
  195. package/dist/components/table/table.context.jsx +4 -0
  196. package/dist/components/table/table.js +3 -3
  197. package/dist/components/table/thead.jsx +103 -0
  198. package/dist/config/context.js +12 -0
  199. package/dist/config/default-translations.d.ts +4 -0
  200. package/dist/config/default-translations.d.ts.map +1 -1
  201. package/dist/config/default-translations.jsx +87 -0
  202. package/dist/config/default-tweaks.js +4 -0
  203. package/dist/constants.js +2 -0
  204. package/dist/{date-picker-DwNo22lx.js → date-picker-Bnl07nd8.js} +8 -6
  205. package/dist/date-picker-Bnl07nd8.js.map +1 -0
  206. package/dist/{dom-Dl8XH0CK.js → dom-CyQHY7ID.js} +66 -61
  207. package/dist/dom-CyQHY7ID.js.map +1 -0
  208. package/dist/{file-upload-Brf2NkLr.js → file-upload-93d5DR4q.js} +139 -129
  209. package/dist/file-upload-93d5DR4q.js.map +1 -0
  210. package/dist/{floating-ui.react-QNHG9W4N.js → floating-ui.react-M2PGXLDp.js} +8 -8
  211. package/dist/floating-ui.react-M2PGXLDp.js.map +1 -0
  212. package/dist/{fns-D2eyJKd5.js → fns-C7Dt27Qd.js} +2 -2
  213. package/dist/fns-C7Dt27Qd.js.map +1 -0
  214. package/dist/hooks/use-click-outside.js +17 -0
  215. package/dist/hooks/use-color-parser.js +9 -0
  216. package/dist/hooks/use-components-provider.jsx +22 -0
  217. package/dist/hooks/use-debounce.d.ts +3 -3
  218. package/dist/hooks/use-debounce.d.ts.map +1 -1
  219. package/dist/hooks/use-debounce.js +12 -0
  220. package/dist/hooks/use-floating-ref.js +6 -0
  221. package/dist/hooks/use-form.d.ts +14 -13
  222. package/dist/hooks/use-form.d.ts.map +1 -1
  223. package/dist/hooks/use-form.js +563 -0
  224. package/dist/hooks/use-hover.js +18 -0
  225. package/dist/hooks/use-input-id.js +5 -0
  226. package/dist/hooks/use-is-coarse-device.js +12 -0
  227. package/dist/hooks/use-locale.js +10 -0
  228. package/dist/hooks/use-media-query.js +25 -0
  229. package/dist/hooks/use-on-event.js +7 -0
  230. package/dist/hooks/use-parent.js +21 -0
  231. package/dist/hooks/use-preferences.js +23 -0
  232. package/dist/hooks/use-previous.js +9 -0
  233. package/dist/hooks/use-reactive.js +9 -0
  234. package/dist/hooks/use-remove-scroll.d.ts.map +1 -1
  235. package/dist/hooks/use-remove-scroll.js +48 -0
  236. package/dist/hooks/use-resize-observer.js +17 -0
  237. package/dist/hooks/use-stable-ref.js +9 -0
  238. package/dist/hooks/use-swipe.js +17 -0
  239. package/dist/hooks/use-translations.d.ts +4 -0
  240. package/dist/hooks/use-translations.d.ts.map +1 -1
  241. package/dist/hooks/use-translations.js +9 -0
  242. package/dist/hooks/use-tweaks.js +9 -0
  243. package/dist/hooks/use-window-size.js +14 -0
  244. package/dist/index-BJ1ayTam.js +126 -0
  245. package/dist/index-BJ1ayTam.js.map +1 -0
  246. package/dist/index-C-PuFUZi.js.map +1 -1
  247. package/dist/{index-BelDtX5M.js → index-DDeQW0JW.js} +399 -404
  248. package/dist/index-DDeQW0JW.js.map +1 -0
  249. package/dist/index-DE4shK8D.js +215 -0
  250. package/dist/index-DE4shK8D.js.map +1 -0
  251. package/dist/{index-DJSMaZR4.js → index-DlJ_2RBL.js} +2 -2
  252. package/dist/index-DlJ_2RBL.js.map +1 -0
  253. package/dist/index.css +1 -1
  254. package/dist/index.esm-BaIwleSE.js.map +1 -1
  255. package/dist/index.js +20 -8177
  256. package/dist/index.js.map +1 -1
  257. package/dist/{input-CrGrSnUt.js → input-_MVxmIpu.js} +116 -114
  258. package/dist/input-_MVxmIpu.js.map +1 -0
  259. package/dist/{input-field-5vYcz5tT.js → input-field-CDCOODOl.js} +63 -47
  260. package/dist/input-field-CDCOODOl.js.map +1 -0
  261. package/dist/lib/combi-keys.js +60 -0
  262. package/dist/lib/dict.d.ts +1 -4
  263. package/dist/lib/dict.d.ts.map +1 -1
  264. package/dist/lib/dict.js +28 -0
  265. package/dist/lib/dom.d.ts +3 -2
  266. package/dist/lib/dom.d.ts.map +1 -1
  267. package/dist/lib/dom.js +66 -0
  268. package/dist/lib/fns.js +46 -0
  269. package/dist/lib/fzf.d.ts.map +1 -1
  270. package/dist/lib/fzf.js +115 -0
  271. package/dist/lib/keyboard-area.js +14 -0
  272. package/dist/notifications-Dp0ydKJS.js +2576 -0
  273. package/dist/notifications-Dp0ydKJS.js.map +1 -0
  274. package/dist/polymorph-B5n9fs_K.js.map +1 -1
  275. package/dist/preset/plugin.tailwind.d.ts.map +1 -1
  276. package/dist/preset/plugin.tailwind.js +20 -18
  277. package/dist/preset/preset.tailwind.js +24 -25
  278. package/dist/preset/src/styles/common.js +6 -3
  279. package/dist/preset/src/styles/dark.d.ts.map +1 -1
  280. package/dist/preset/src/styles/dark.js +9 -5
  281. package/dist/preset/src/styles/design-tokens.js +68 -89
  282. package/dist/preset/src/styles/light.d.ts.map +1 -1
  283. package/dist/preset/src/styles/light.js +9 -5
  284. package/dist/preset/src/styles/theme.js +7 -4
  285. package/dist/preset/src/styles/theme.types.d.ts +2 -1
  286. package/dist/preset/src/styles/theme.types.d.ts.map +1 -1
  287. package/dist/preset/src/styles/theme.types.js +2 -1
  288. package/dist/skeleton-BjJobYYf.js +24 -0
  289. package/dist/skeleton-BjJobYYf.js.map +1 -0
  290. package/dist/slot-CRyweuj0.js.map +1 -1
  291. package/dist/styles/common.js +6 -3
  292. package/dist/styles/dark.d.ts.map +1 -1
  293. package/dist/styles/dark.js +9 -5
  294. package/dist/styles/design-tokens.js +68 -89
  295. package/dist/styles/light.d.ts.map +1 -1
  296. package/dist/styles/light.js +9 -5
  297. package/dist/styles/theme.js +7 -4
  298. package/dist/styles/theme.types.d.ts +2 -1
  299. package/dist/styles/theme.types.d.ts.map +1 -1
  300. package/dist/styles/theme.types.js +2 -1
  301. package/dist/tabs-B0g7YtQv.js +123 -0
  302. package/dist/tabs-B0g7YtQv.js.map +1 -0
  303. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  304. package/dist/types.d.ts +2 -2
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +1 -0
  307. package/dist/{context-BFXNJVn2.js → use-translations-DSltA7H_.js} +38 -30
  308. package/dist/use-translations-DSltA7H_.js.map +1 -0
  309. package/package.json +99 -86
  310. package/ai/docs/TransferList.md +0 -142
  311. package/dist/autocomplete-Cn9Z2hLq.js +0 -375
  312. package/dist/autocomplete-Cn9Z2hLq.js.map +0 -1
  313. package/dist/calendar-B5lSd0ID.js.map +0 -1
  314. package/dist/components/form/transfer-list.d.ts +0 -14
  315. package/dist/components/form/transfer-list.d.ts.map +0 -1
  316. package/dist/components/form/transfer-list.js +0 -55
  317. package/dist/components/form/transfer-list.js.map +0 -1
  318. package/dist/context-BFXNJVn2.js.map +0 -1
  319. package/dist/date-picker-DwNo22lx.js.map +0 -1
  320. package/dist/dom-Dl8XH0CK.js.map +0 -1
  321. package/dist/file-upload-Brf2NkLr.js.map +0 -1
  322. package/dist/floating-ui.react-QNHG9W4N.js.map +0 -1
  323. package/dist/fns-D2eyJKd5.js.map +0 -1
  324. package/dist/index-BelDtX5M.js.map +0 -1
  325. package/dist/index-DJSMaZR4.js.map +0 -1
  326. package/dist/index-Z-fZHxfJ.js +0 -335
  327. package/dist/index-Z-fZHxfJ.js.map +0 -1
  328. package/dist/input-CrGrSnUt.js.map +0 -1
  329. package/dist/input-field-5vYcz5tT.js.map +0 -1
  330. package/dist/notifications-cUdVPs-B.js +0 -2786
  331. package/dist/notifications-cUdVPs-B.js.map +0 -1
  332. package/dist/skeleton-D75GFBV6.js +0 -10
  333. package/dist/skeleton-D75GFBV6.js.map +0 -1
  334. package/dist/tabs-S00a8qq8.js +0 -106
  335. package/dist/tabs-S00a8qq8.js.map +0 -1
  336. package/dist/use-translations-BwLKTrZv.js +0 -10
  337. package/dist/use-translations-BwLKTrZv.js.map +0 -1
@@ -1,33 +1,33 @@
1
1
  import { jsxs as F, jsx as t } from "react/jsx-runtime";
2
- import { u as Pe, n as Re, d as ke, i as Le, c as Te, F as De, k as Ee, l as Ne } from "../../floating-ui.react-QNHG9W4N.js";
3
- import { c as Fe } from "../../index-DJSMaZR4.js";
2
+ import { u as Pe, n as Re, d as Le, j as Ne, c as Te, F as ke, l as De, m as Ee } from "../../floating-ui.react-M2PGXLDp.js";
3
+ import { c as Fe } from "../../index-DlJ_2RBL.js";
4
4
  import { e as He } from "../../X.es-BJ1O93El.js";
5
5
  import { S as Oe } from "../../slot-CRyweuj0.js";
6
- import $, { useState as E, useLayoutEffect as Se, useContext as ze, forwardRef as Ie, useRef as L, useId as U, useEffect as _, useImperativeHandle as Ye, Fragment as je, useCallback as Be } from "react";
7
- import { i as Ae } from "../../fns-D2eyJKd5.js";
8
- import { c as N, m as Ge } from "../../dom-Dl8XH0CK.js";
9
- import { C as Ke } from "../../context-BFXNJVn2.js";
10
- import { Button as W } from "../core/button.js";
11
- import { m as P, A as X } from "../../proxy-BZcQiBrp.js";
12
- import { a as Z } from "../../index-t1qLJTt5.js";
6
+ import $, { useState as D, useLayoutEffect as Se, useContext as Ie, forwardRef as ze, useRef as N, useId as W, useEffect as q, useImperativeHandle as Ye, Fragment as je, useCallback as Be } from "react";
7
+ import { i as Ae } from "../../fns-C7Dt27Qd.js";
8
+ import { c as E, m as Ge } from "../../dom-CyQHY7ID.js";
9
+ import { C as Ke, u as Qe } from "../../use-translations-DSltA7H_.js";
10
+ import { Button as X } from "../core/button.js";
11
+ import { m as P, A as Z } from "../../proxy-BZcQiBrp.js";
12
+ import { a as _ } from "../../index-t1qLJTt5.js";
13
13
  import { u as T } from "../../use-motion-value-eGwNuWuw.js";
14
- import { M as Qe } from "../../index-0YMC-_Lt.js";
15
- const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) => {
16
- const [a, o] = E(r);
14
+ import { M as Ve } from "../../index-0YMC-_Lt.js";
15
+ const Je = (e, n) => Ae() ? n : window.matchMedia(e).matches, Ue = (e, n = !0) => {
16
+ const [a, o] = D(n);
17
17
  return Se(() => {
18
- const n = window.matchMedia(e), i = () => o(Ve(e, r));
19
- return i(), n.addListener ? (n.addListener(i), () => n.removeListener ? n.removeListener(i) : void 0) : (n.addEventListener("change", i), () => n.removeEventListener("change", i));
18
+ const r = window.matchMedia(e), i = () => o(Je(e, n));
19
+ return i(), r.addListener ? (r.addListener(i), () => r.removeListener ? r.removeListener(i) : void 0) : (r.addEventListener("change", i), () => r.removeEventListener("change", i));
20
20
  }, [e]), a;
21
- }, Ue = () => ze(Ke).floatingRef ?? void 0, q = $.createContext(async () => !1), ht = () => $.useContext(q), s = "500ms", We = {
21
+ }, We = () => Ie(Ke).floatingRef ?? void 0, ee = $.createContext(async () => !1), pt = () => $.useContext(ee), s = "500ms", Xe = {
22
22
  exit: { x: ["0%", "-30%"], opacity: 0, animationDuration: s },
23
23
  enter: { x: ["-30%", "0%"], opacity: 1, animationDuration: s },
24
24
  initial: { x: ["-30%", "0%"], opacity: 0.8, animationDuration: s }
25
- }, Xe = {
25
+ }, Ze = {
26
26
  enter: { x: "0%", opacity: 1, animationDuration: s },
27
27
  exit: { x: ["0%", "30%"], opacity: 0, animationDuration: s },
28
28
  initial: { x: ["30%", "0%"], opacity: 0.8, animationDuration: s }
29
29
  }, B = {
30
- drawer: (e) => e === "left" ? We : Xe,
30
+ drawer: (e) => e === "left" ? Xe : Ze,
31
31
  sheet: {
32
32
  enter: { opacity: 1, y: "0%", animationDuration: s, transformOrigin: "bottom" },
33
33
  exit: { opacity: 0.4, y: "10%", animationDuration: s, transformOrigin: "bottom" },
@@ -38,31 +38,31 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
38
38
  enter: { opacity: 1, scale: [1.05, 1], animationDuration: s },
39
39
  initial: { opacity: 0.5, scale: 0.95, animationDuration: s, transition: { duration: 0.5, ease: "easeInOut" } }
40
40
  }
41
- }, Ze = Fe(
42
- "z-floating border border-floating-border ring-0 outline-0 appearance-none flex flex-col gap-4 flex-nowrap min-w-xs bg-floating-background",
41
+ }, _e = Fe(
42
+ "z-floating flex min-w-xs appearance-none flex-col flex-nowrap gap-4 border border-floating-border bg-floating-background outline-0 ring-0",
43
43
  {
44
44
  variants: {
45
45
  type: {
46
- drawer: "max-h-screen max-w-[90%] absolute w-fit h-screen min-h-0",
47
- dialog: "max-h-[calc(100lvh-10%)] relative container h-min rounded-lg py-4",
48
- sheet: "w-screen absolute bottom-0 max-h-[calc(100vh-15%)] max-h-[calc(100svh-5%)] h-screen pt-6 pb-4 rounded-t-lg"
46
+ drawer: "absolute h-screen max-h-screen min-h-0 w-fit max-w-[90%]",
47
+ dialog: "container relative h-min max-h-[calc(100lvh-10%)] rounded-lg py-4",
48
+ sheet: "absolute bottom-0 h-screen max-h-[calc(100svh-5%)] max-h-[calc(100vh-15%)] w-screen rounded-t-lg pb-4 pt-6"
49
49
  },
50
50
  position: {
51
51
  none: "",
52
- right: "py-4 absolute right-0 top-0 rounded-l-lg",
53
- left: "py-4 absolute left-0 top-0 rounded-r-lg"
52
+ right: "absolute right-0 top-0 rounded-l-lg py-4",
53
+ left: "absolute left-0 top-0 rounded-r-lg py-4"
54
54
  }
55
55
  },
56
56
  defaultVariants: { position: "right", type: "dialog" }
57
57
  }
58
- ), ee = { top: 0, left: 0, right: 0, bottom: 0 }, te = (e) => e * 0.6, $e = (e) => {
59
- const r = (a, o) => {
58
+ ), te = { top: 0, left: 0, right: 0, bottom: 0 }, oe = (e) => e * 0.6, $e = (e) => {
59
+ const n = (a, o) => {
60
60
  if (e.parent.current) {
61
61
  if (a.stopPropagation(), a.stopImmediatePropagation(), e.sheet) {
62
- const w = e.parent.current.getBoundingClientRect(), d = e.value.get() || w.height, v = Math.abs(d - o.delta.y), H = window.outerHeight, C = te(H);
62
+ const w = e.parent.current.getBoundingClientRect(), d = e.value.get() || w.height, v = Math.abs(d - o.delta.y), H = window.outerHeight, C = oe(H);
63
63
  return v >= C ? e.value.set(v) : (document.activeElement instanceof HTMLElement && document.activeElement?.blur(), e.onChange(!1), setTimeout(() => e.value.set(void 0), 350));
64
64
  }
65
- const n = e.parent.current, i = e.value.get() || n.getBoundingClientRect().width, l = e.position === "right" ? -o.delta.x : o.delta.x, p = Math.abs(i + l);
65
+ const r = e.parent.current, i = e.value.get() || r.getBoundingClientRect().width, l = e.position === "right" ? -o.delta.x : o.delta.x, p = Math.abs(i + l);
66
66
  return e.value.set(p);
67
67
  }
68
68
  };
@@ -72,18 +72,20 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
72
72
  draggable: !0,
73
73
  dragListener: !0,
74
74
  dragMomentum: !0,
75
+ tabIndex: -1,
75
76
  type: "button",
76
77
  animate: !1,
77
78
  dragElastic: 0,
78
79
  dragPropagation: !0,
79
80
  initial: !1,
80
- onDrag: r,
81
+ onDrag: n,
81
82
  dragSnapToOrigin: !0,
82
83
  dragDirectionLock: !0,
84
+ "aria-hidden": "true",
83
85
  drag: e.sheet ? "y" : "x",
84
- dragConstraints: ee,
86
+ dragConstraints: te,
85
87
  whileDrag: { cursor: "grabbing" },
86
- className: N(
88
+ className: E(
87
89
  "absolute isolate z-calendar rounded-lg",
88
90
  e.sheet ? "cursor-row-resize" : "cursor-col-resize bg-floating-border",
89
91
  e.sheet ? "top-1 flex h-3 w-full justify-center py-2" : e.position === "left" ? "right-5 top-1/2 h-10 w-2" : "left-2 top-1/2 h-10 w-2"
@@ -91,16 +93,16 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
91
93
  children: e.sheet ? /* @__PURE__ */ t("div", { className: "h-2 w-1/4 rounded-lg bg-floating-border" }) : null
92
94
  }
93
95
  );
94
- }, D = { drawer: "right", sheet: "none", dialog: "none" }, _e = (e, r, a, o) => {
95
- const n = a || "dialog";
96
- return e ? a === "drawer" ? o ?? D.drawer : D[n] : r ? D[n] : D.sheet;
97
- }, qe = [], oe = Ie(
96
+ }, k = { drawer: "right", sheet: "none", dialog: "none" }, qe = (e, n, a, o) => {
97
+ const r = a || "dialog";
98
+ return e ? a === "drawer" ? o ?? k.drawer : k[r] : n ? k[r] : k.sheet;
99
+ }, et = [], ne = ze(
98
100
  ({
99
101
  open: e,
100
- title: r,
102
+ title: n,
101
103
  footer: a,
102
104
  asChild: o,
103
- trigger: n,
105
+ trigger: r,
104
106
  children: i,
105
107
  onChange: l,
106
108
  ariaTitle: p,
@@ -111,71 +113,71 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
111
113
  closable: H = !0,
112
114
  forceType: C = !1,
113
115
  layoutId: A = void 0,
114
- overlayClassName: re = "",
116
+ overlayClassName: ae = "",
115
117
  type: M = "dialog",
116
- position: ae,
117
- overlayClickClose: ie = !1,
118
- closeOnFocusOut: se = !1,
119
- interactions: ce = qe,
120
- ...le
121
- }, de) => {
122
- const ue = Ue(), G = L(null), O = L(null), K = U(), ge = U(), S = Je("(min-width: 64rem)"), z = _e(S, C, M, ae), I = S || C ? B[M] : B.sheet, fe = typeof I == "function" ? I(z) : I, g = S || C ? M : "sheet", me = g !== "dialog", c = Pe({ open: e, onOpenChange: l, strategy: "fixed" }), he = Re(c.context, {}), pe = ke(c.context, { role: "dialog" }), ve = Le(c.context, {
118
+ position: ie,
119
+ overlayClickClose: se = !1,
120
+ closeOnFocusOut: ce = !1,
121
+ interactions: le = et,
122
+ ...de
123
+ }, ue) => {
124
+ const ge = Qe(), me = We(), G = N(null), O = N(null), K = W(), Q = W(), S = Ue("(min-width: 64rem)"), I = qe(S, C, M, ie), z = S || C ? B[M] : B.sheet, fe = typeof z == "function" ? z(I) : z, m = S || C ? M : "sheet", he = m !== "dialog", c = Pe({ open: e, onOpenChange: l, strategy: "fixed" }), pe = Re(c.context, {}), ve = Le(c.context, { role: "dialog" }), be = Ne(c.context, {
123
125
  bubbles: !0,
124
126
  escapeKey: !0,
125
127
  outsidePress: (h) => {
126
128
  const u = h.target;
127
- return ie && !!u?.isConnected;
129
+ return se && !!u?.isConnected;
128
130
  }
129
- }), Q = Te([he, ve, pe].concat(ce)), xe = n, f = T(void 0), m = T(void 0), x = L(!1), V = L(0);
130
- _(() => {
131
- f.set(void 0), m.set(void 0);
132
- }, [g, f, m]);
133
- const be = () => l(!1);
134
- Ye(de, () => ({ context: c.context, floating: O.current }), [
131
+ }), V = Te([pe, be, ve].concat(le)), f = T(void 0), b = T(void 0), x = N(!1), J = N(0);
132
+ q(() => {
133
+ f.set(void 0), b.set(void 0);
134
+ }, [m, f, b]);
135
+ const xe = () => l(!1);
136
+ Ye(ue, () => ({ context: c.context, floating: O.current }), [
135
137
  c.context,
136
138
  O
137
139
  ]);
138
- const ye = g === "sheet" ? {
140
+ const ye = m === "sheet" ? {
139
141
  drag: "y",
140
142
  animate: !1,
141
143
  dragElastic: 0,
142
144
  initial: !1,
143
- dragConstraints: ee,
145
+ dragConstraints: te,
144
146
  draggable: !0,
145
147
  dragListener: !0,
146
148
  dragMomentum: !0,
147
149
  onDrag: (h, u) => {
148
- const Y = c.refs.floating.current.getBoundingClientRect(), j = f.get() || Y.height, y = Math.abs(j - u.delta.y), Ce = window.outerHeight, Me = te(Ce);
150
+ const Y = c.refs.floating.current.getBoundingClientRect(), j = f.get() || Y.height, y = Math.abs(j - u.delta.y), Ce = window.outerHeight, Me = oe(Ce);
149
151
  return y >= Me ? f.set(y) : (document.activeElement instanceof HTMLElement && document.activeElement?.blur(), l?.(!1), setTimeout(() => f.set(void 0), 350));
150
152
  },
151
153
  dragPropagation: !0,
152
154
  dragSnapToOrigin: !0,
153
155
  dragDirectionLock: !0,
154
156
  whileDrag: { cursor: "grabbing" }
155
- } : { animate: v, initial: !1 }, J = T(void 0), k = T(void 0), we = o ? Oe : P.button;
157
+ } : { animate: v, initial: !1 }, U = T(void 0), L = T(void 0), we = o ? Oe : P.button;
156
158
  return /* @__PURE__ */ F(je, { children: [
157
- n ? /* @__PURE__ */ t(we, { ref: c.refs.setReference, ...Q.getReferenceProps(), layoutId: A, type: "button", children: xe }) : null,
158
- /* @__PURE__ */ t(Qe, { reducedMotion: v ? "user" : "always", children: /* @__PURE__ */ t(De, { preserveTabOrder: !0, root: ue, children: /* @__PURE__ */ t(X, { mode: "wait", propagate: !0, children: e ? /* @__PURE__ */ t(
159
- Ee,
159
+ r ? /* @__PURE__ */ t(we, { ref: c.refs.setReference, ...V.getReferenceProps(), layoutId: A, type: "button", children: r }) : null,
160
+ /* @__PURE__ */ t(Ve, { reducedMotion: v ? "user" : "always", children: /* @__PURE__ */ t(ke, { preserveTabOrder: !0, root: me, children: /* @__PURE__ */ t(Z, { mode: "wait", propagate: !0, children: e ? /* @__PURE__ */ t(
161
+ De,
160
162
  {
161
163
  lockScroll: !0,
162
- className: N(
164
+ className: E(
163
165
  "inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80",
164
- g === "drawer" ? "" : "items-start justify-center pt-10 lg:p-10",
165
- re
166
+ m === "drawer" ? "" : "items-start justify-center pt-10 lg:p-10",
167
+ ae
166
168
  ),
167
- children: /* @__PURE__ */ t(Ne, { guards: !0, modal: !0, closeOnFocusOut: se, context: c.context, children: /* @__PURE__ */ t(X, { propagate: !0, children: /* @__PURE__ */ F(
169
+ children: /* @__PURE__ */ t(Ee, { guards: !0, modal: !0, closeOnFocusOut: ce, context: c.context, children: /* @__PURE__ */ t(Z, { propagate: !0, children: /* @__PURE__ */ F(
168
170
  P.div,
169
171
  {
170
- ...le,
171
- ...r ? {
172
+ ...de,
173
+ ...n ? {
172
174
  "aria-labelledby": K,
173
- "aria-describedby": ge
175
+ "aria-describedby": Q
174
176
  } : { "aria-label": p },
175
- ...Q.getFloatingProps({
177
+ ...V.getFloatingProps({
176
178
  "aria-modal": e,
177
179
  ref: Ge(c.refs.setFloating, O),
178
- className: N(Ze({ position: z, type: g }), R, "isolate overscroll-contain")
180
+ className: E(_e({ position: I, type: m }), R, "isolate overscroll-contain")
179
181
  }),
180
182
  exit: "exit",
181
183
  layout: !0,
@@ -184,61 +186,63 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
184
186
  layoutId: A,
185
187
  variants: fe,
186
188
  "data-component": "modal",
187
- style: g === "drawer" ? { width: f } : { height: f, y: m },
189
+ style: m === "drawer" ? { width: f } : { height: f, y: b },
188
190
  children: [
189
- me && d ? /* @__PURE__ */ t(
191
+ he && d ? /* @__PURE__ */ t(
190
192
  $e,
191
193
  {
192
194
  onChange: l,
193
195
  value: f,
194
- sheet: g === "sheet",
195
- position: z,
196
+ sheet: m === "sheet",
197
+ position: I,
196
198
  parent: c.refs.floating
197
199
  }
198
200
  ) : null,
199
- r ? /* @__PURE__ */ t(P.header, { ...ye, className: "relative isolate w-full", children: r ? /* @__PURE__ */ t(
201
+ n ? /* @__PURE__ */ t(P.header, { ...ye, className: "relative isolate w-full", children: n ? /* @__PURE__ */ t(
200
202
  "h2",
201
203
  {
202
204
  id: K,
203
205
  className: "block select-text border-b border-floating-border px-8 pb-2 text-3xl font-medium leading-relaxed",
204
- children: r
206
+ children: n
205
207
  }
206
208
  ) : null }) : null,
207
209
  /* @__PURE__ */ t(
208
210
  P.section,
209
211
  {
210
212
  ref: G,
213
+ id: n ? Q : void 0,
211
214
  "data-component": "modal-body",
212
- className: N("flex-1 select-text overflow-y-auto px-8 py-1", w),
215
+ className: E("flex-1 select-text overflow-y-auto px-8 py-1", w),
213
216
  onTouchEnd: async () => {
214
- if (k.set(void 0), J.set(void 0), x.current) {
215
- const h = m.get() || 0, u = window.innerHeight * 0.2;
216
- h > u ? (await Z(m, window.innerHeight, { duration: 0.2, ease: "easeIn" }).finished, l(!1)) : Z(m, 0, { type: "spring", bounce: 0, duration: 0.3 }), x.current = !1;
217
+ if (L.set(void 0), U.set(void 0), x.current) {
218
+ const h = b.get() || 0, u = window.innerHeight * 0.2, g = b;
219
+ h > u ? (await _(g, window.innerHeight, { duration: 0.2, ease: "easeIn" }).finished, l(!1)) : _(g, 0, { type: "spring", bounce: 0, duration: 0.3 }), x.current = !1;
217
220
  }
218
221
  },
219
222
  onTouchStart: (h) => {
220
223
  const u = h.changedTouches[0];
221
- J.set(u.pageY), k.set(u.pageY), x.current = !1;
224
+ U.set(u.pageY), L.set(u.pageY), x.current = !1;
222
225
  },
223
226
  onTouchMove: (h) => {
224
- const b = h.changedTouches[0].pageY, Y = k.get() || b, j = G.current?.scrollTop || 0;
225
- if (!x.current && j <= 0 && b > Y && g === "sheet" && (x.current = !0, V.current = b), x.current) {
226
- const y = b - V.current;
227
- y < 0 ? m.set(y * 0.2) : m.set(y);
227
+ const g = h.changedTouches[0].pageY, Y = L.get() || g, j = G.current?.scrollTop || 0;
228
+ if (!x.current && j <= 0 && g > Y && m === "sheet" && (x.current = !0, J.current = g), x.current) {
229
+ const y = g - J.current;
230
+ y < 0 ? b.set(y * 0.2) : b.set(y);
228
231
  }
229
- k.set(b);
232
+ L.set(g);
230
233
  },
231
234
  children: i
232
235
  }
233
236
  ),
234
237
  a ? /* @__PURE__ */ t("footer", { className: "w-full select-text border-t border-floating-border px-8 pt-4", children: a }) : null,
235
- H ? /* @__PURE__ */ t("nav", { className: "absolute right-4 top-1 z-floating", children: /* @__PURE__ */ t(
238
+ H ? /* @__PURE__ */ t("div", { className: "absolute right-4 top-1 z-floating", children: /* @__PURE__ */ t(
236
239
  "button",
237
240
  {
238
241
  type: "button",
239
- onClick: be,
242
+ onClick: xe,
243
+ "aria-label": ge.closeButton,
240
244
  className: "p-1 opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger",
241
- children: /* @__PURE__ */ t(He, {})
245
+ children: /* @__PURE__ */ t(He, { "aria-hidden": "true" })
242
246
  }
243
247
  ) }) : null
244
248
  ]
@@ -249,15 +253,15 @@ const Ve = (e, r) => Ae() ? r : window.matchMedia(e).matches, Je = (e, r = !0) =
249
253
  ] });
250
254
  }
251
255
  );
252
- let ne = async (e) => (typeof window < "u" && console.warn("ConfirmationProvider is not mounted"), !1);
253
- oe.confirm = (e) => ne(e);
254
- const pt = ({ children: e }) => {
255
- const [r, a] = E(!1), [o, n] = E({}), [i, l] = E(() => {
256
- }), p = Be((d) => (n(d), a(!0), new Promise((v) => {
256
+ let re = async (e) => (typeof window < "u" && console.warn("ConfirmationProvider is not mounted"), !1);
257
+ ne.confirm = (e) => re(e);
258
+ const vt = ({ children: e }) => {
259
+ const [n, a] = D(!1), [o, r] = D({}), [i, l] = D(() => {
260
+ }), p = Be((d) => (r(d), a(!0), new Promise((v) => {
257
261
  l(() => v);
258
262
  })), []);
259
- _(() => {
260
- ne = p;
263
+ q(() => {
264
+ re = p;
261
265
  }, [p]);
262
266
  const R = () => {
263
267
  a(!1);
@@ -268,12 +272,12 @@ const pt = ({ children: e }) => {
268
272
  const d = o.cancel?.value ?? !1;
269
273
  i(d ?? !1);
270
274
  };
271
- return /* @__PURE__ */ F(q.Provider, { value: p, children: [
275
+ return /* @__PURE__ */ F(ee.Provider, { value: p, children: [
272
276
  e,
273
277
  /* @__PURE__ */ t(
274
- oe,
278
+ ne,
275
279
  {
276
- open: r,
280
+ open: n,
277
281
  type: "dialog",
278
282
  closable: !1,
279
283
  onChange: a,
@@ -281,8 +285,8 @@ const pt = ({ children: e }) => {
281
285
  title: o.title || "Confirmation",
282
286
  className: "container max-w-dialog lg:max-w-96",
283
287
  footer: /* @__PURE__ */ F("div", { className: "flex justify-end gap-2", children: [
284
- /* @__PURE__ */ t(W, { theme: o.cancel?.theme || "ghost-muted", onClick: w, children: o.cancel?.text || "Cancel" }),
285
- /* @__PURE__ */ t(W, { autoFocus: !0, theme: o.confirm?.theme || "primary", onClick: R, children: o.confirm?.text || "Confirm" })
288
+ /* @__PURE__ */ t(X, { theme: o.cancel?.theme || "ghost-muted", onClick: w, children: o.cancel?.text || "Cancel" }),
289
+ /* @__PURE__ */ t(X, { autoFocus: !0, theme: o.confirm?.theme || "primary", onClick: R, children: o.confirm?.text || "Confirm" })
286
290
  ] }),
287
291
  children: /* @__PURE__ */ t("div", { className: "py-2 text-foreground", children: o.description })
288
292
  }
@@ -290,8 +294,8 @@ const pt = ({ children: e }) => {
290
294
  ] });
291
295
  };
292
296
  export {
293
- oe as Modal,
294
- pt as ModalConfirmProvider,
295
- ht as useConfirm
297
+ ne as Modal,
298
+ vt as ModalConfirmProvider,
299
+ pt as useConfirm
296
300
  };
297
301
  //# sourceMappingURL=modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sources":["../../../src/hooks/use-media-query.ts","../../../src/hooks/use-floating-ref.ts","../../../src/components/floating/modal.tsx"],"sourcesContent":["import { useLayoutEffect, useState } from \"react\";\nimport { isSsr } from \"../lib/fns\";\n\nconst getMatches = (query: string, defaultValue: boolean): boolean => {\n if (isSsr()) {\n return defaultValue;\n }\n return window.matchMedia(query).matches;\n};\n\nexport const useMediaQuery = (query: string, defaultValue: boolean = true) => {\n const [matches, setMatches] = useState(defaultValue);\n\n useLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n const onChange = () => setMatches(getMatches(query, defaultValue));\n onChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(onChange);\n return () => {\n return matchMedia.removeListener ? matchMedia.removeListener(onChange) : undefined;\n };\n }\n matchMedia.addEventListener(\"change\", onChange);\n return () => matchMedia.removeEventListener(\"change\", onChange);\n }, [query]);\n\n return matches;\n};\n","import { useContext } from \"react\";\nimport { Context } from \"../config/context\";\n\nexport const useFloatingRef = () => {\n const ctx = useContext(Context);\n return ctx.floatingRef ?? undefined;\n};\n","\"use client\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n type ElementProps,\n} from \"@floating-ui/react\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"@phosphor-icons/react\";\nimport {\n AnimatePresence,\n HTMLMotionProps,\n motion,\n MotionConfig,\n MotionValue,\n PanInfo,\n TargetAndTransition,\n useMotionValue,\n animate,\n} from \"motion/react\";\nimport { Slot } from \"../core/slot\";\nimport React, {\n ForwardedRef,\n forwardRef,\n Fragment,\n PropsWithChildren,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMediaQuery } from \"../../hooks/use-media-query\";\nimport { css, mergeRefs } from \"../../lib/dom\";\nimport { Label, Nil, Override } from \"../../types\";\nimport { useFloatingRef } from \"../../hooks/use-floating-ref\";\nimport { Button, ButtonProps } from \"../core/button\";\n\ntype AnimationLabels = \"initial\" | \"enter\" | \"exit\";\n\nconst ConfirmContext = React.createContext<(options: ConfirmOptions) => Promise<boolean>>(async () => false);\n\nexport const useConfirm = () => React.useContext(ConfirmContext);\n\nexport type ModalType = \"dialog\" | \"drawer\" | \"sheet\";\n\nexport type DrawerPosition = \"left\" | \"right\";\n\ntype Animations = {\n sheet: Record<AnimationLabels, TargetAndTransition>;\n dialog: Record<AnimationLabels, TargetAndTransition>;\n drawer: (type: DrawerPosition) => Record<AnimationLabels, TargetAndTransition>;\n};\n\nconst animationDuration = \"500ms\";\n\nconst drawerLeft: Record<string, TargetAndTransition> = {\n exit: { x: [\"0%\", \"-30%\"], opacity: 0, animationDuration },\n enter: { x: [\"-30%\", \"0%\"], opacity: 1, animationDuration },\n initial: { x: [\"-30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst drawerRight: Record<string, TargetAndTransition> = {\n enter: { x: \"0%\", opacity: 1, animationDuration },\n exit: { x: [\"0%\", \"30%\"], opacity: 0, animationDuration },\n initial: { x: [\"30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst animations: Animations = {\n drawer: (type) => (type === \"left\" ? drawerLeft : drawerRight),\n sheet: {\n enter: { opacity: 1, y: \"0%\", animationDuration, transformOrigin: \"bottom\" },\n exit: { opacity: 0.4, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n initial: { opacity: 0.7, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n },\n dialog: {\n exit: { opacity: 0, scale: 0.95, animationDuration },\n enter: { opacity: 1, scale: [1.05, 1], animationDuration },\n initial: { opacity: 0.5, scale: 0.95, animationDuration, transition: { duration: 0.5, ease: \"easeInOut\" } },\n },\n};\n\nconst variants = cva(\n \"z-floating border border-floating-border ring-0 outline-0 appearance-none flex flex-col gap-4 flex-nowrap min-w-xs bg-floating-background\",\n {\n variants: {\n type: {\n drawer: \"max-h-screen max-w-[90%] absolute w-fit h-screen min-h-0\",\n dialog: \"max-h-[calc(100lvh-10%)] relative container h-min rounded-lg py-4\",\n sheet: \"w-screen absolute bottom-0 max-h-[calc(100vh-15%)] max-h-[calc(100svh-5%)] h-screen pt-6 pb-4 rounded-t-lg\",\n },\n position: {\n none: \"\",\n right: \"py-4 absolute right-0 top-0 rounded-l-lg\",\n left: \"py-4 absolute left-0 top-0 rounded-r-lg\",\n },\n },\n defaultVariants: { position: \"right\", type: \"dialog\" },\n }\n);\n\nexport type ModalProps = Override<\n HTMLMotionProps<\"div\">,\n ({ title: Label; ariaTitle?: string } | { ariaTitle: string; title?: Label }) & {\n open: boolean;\n onChange: (nextState: boolean) => void;\n } & Partial<{\n footer: Label;\n type: ModalType;\n animated: boolean;\n asChild: boolean;\n layoutId: string;\n resizer: boolean;\n className: string;\n closable: boolean;\n forceType: boolean;\n bodyClassName: string;\n overlayClassName: string;\n position: DrawerPosition;\n overlayClickClose: boolean;\n closeOnFocusOut: boolean;\n role: \"dialog\";\n interactions: ElementProps[];\n trigger: Label | React.FC<any>;\n }>\n>;\n\ntype DraggableProps = {\n sheet: boolean;\n position: DrawerPosition;\n parent: React.RefObject<HTMLElement>;\n onChange: (nextState: boolean) => void;\n value: MotionValue<number | undefined>;\n};\n\nconst dragConstraints = { top: 0, left: 0, right: 0, bottom: 0 };\n\nconst calculateClose = (n: number) => n * 0.6;\n\nconst Draggable = (props: DraggableProps) => {\n const onDrag = (e: Event, info: PanInfo) => {\n if (props.parent.current) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n if (props.sheet) {\n const div = props.parent.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = props.value.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return props.value.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n props.onChange(false);\n return setTimeout(() => props.value.set(undefined), 350);\n }\n const div = props.parent.current as HTMLElement;\n const v = props.value.get() || div.getBoundingClientRect().width;\n const delta = props.position === \"right\" ? -info.delta.x : info.delta.x;\n const value = Math.abs(v + delta);\n return props.value.set(value);\n }\n };\n\n return (\n <motion.button\n draggable\n dragListener\n dragMomentum\n type=\"button\"\n animate={false}\n dragElastic={0}\n dragPropagation\n initial={false}\n onDrag={onDrag}\n dragSnapToOrigin\n dragDirectionLock\n drag={props.sheet ? \"y\" : \"x\"}\n dragConstraints={dragConstraints}\n whileDrag={{ cursor: \"grabbing\" }}\n className={css(\n \"absolute isolate z-calendar rounded-lg\",\n props.sheet ? \"cursor-row-resize\" : \"cursor-col-resize bg-floating-border\",\n props.sheet\n ? \"top-1 flex h-3 w-full justify-center py-2\"\n : props.position === \"left\"\n ? \"right-5 top-1/2 h-10 w-2\"\n : \"left-2 top-1/2 h-10 w-2\"\n )}\n >\n {props.sheet ? <div className=\"h-2 w-1/4 rounded-lg bg-floating-border\" /> : null}\n </motion.button>\n );\n};\n\nconst positions = { drawer: \"right\", sheet: \"none\", dialog: \"none\" } as const;\n\nconst fetchPosition = (isDesktop: Nil<boolean>, forceType: Nil<boolean>, propsType: Nil<ModalType>, propsPosition: Nil<DrawerPosition>) => {\n const type = propsType || \"dialog\";\n if (isDesktop) return propsType === \"drawer\" ? (propsPosition ?? positions.drawer) : positions[type];\n return forceType ? positions[type] : positions.sheet;\n};\n\nexport type ModalRef = { context: any; floating: HTMLElement | null };\n\nconst noop: any[] = [];\n\ntype ModalComponent = React.FC<ModalProps> & {\n confirm: <T>(options: ConfirmOptions) => Promise<T>;\n};\n\nexport const Modal: ModalComponent = forwardRef<ModalRef, PropsWithChildren<ModalProps>>(\n (\n {\n open,\n title,\n footer,\n asChild,\n trigger,\n children,\n onChange,\n ariaTitle,\n className,\n bodyClassName,\n resizer = true,\n animated = true,\n closable = true,\n forceType = false,\n layoutId = undefined,\n overlayClassName = \"\",\n type: _type = \"dialog\",\n position: propsPosition,\n overlayClickClose = false,\n closeOnFocusOut = false,\n interactions: outInteractions = noop,\n ...props\n }: PropsWithChildren<ModalProps>,\n externalRef: ForwardedRef<ModalRef>\n ) => {\n const root = useFloatingRef();\n const innerContent = useRef<HTMLDivElement>(null);\n const removeScrollRef = useRef<HTMLDivElement>(null);\n const headingId = useId();\n const descriptionId = useId();\n const isDesktop = useMediaQuery(\"(min-width: 64rem)\");\n const position = fetchPosition(isDesktop, forceType, _type, propsPosition);\n const func = isDesktop ? animations[_type] : forceType ? animations[_type] : animations.sheet;\n const animation = typeof func === \"function\" ? func(position as DrawerPosition) : func;\n const type = isDesktop ? _type : forceType ? _type : \"sheet\";\n const useResizer = type !== \"dialog\";\n\n const floating = useFloating({ open, onOpenChange: onChange, strategy: \"fixed\" });\n const click = useClick(floating.context, {});\n const role = useRole(floating.context, { role: \"dialog\" });\n const dismiss = useDismiss(floating.context, {\n bubbles: true,\n escapeKey: true,\n outsidePress: (event) => {\n const target = event.target as Node;\n return overlayClickClose && !!target?.isConnected;\n },\n });\n\n const interactions = useInteractions([click, dismiss, role].concat(outInteractions));\n\n const Trigger = trigger as any;\n\n const floatingSize = useMotionValue<number | undefined>(undefined);\n const sheetY = useMotionValue<number | undefined>(undefined);\n const isDragging = useRef(false);\n const dragStart = useRef(0);\n\n useEffect(() => {\n floatingSize.set(undefined);\n sheetY.set(undefined);\n }, [type, floatingSize, sheetY]);\n\n const onClose = () => onChange(false);\n\n useImperativeHandle(externalRef, () => ({ context: floating.context, floating: removeScrollRef.current }), [\n floating.context,\n removeScrollRef,\n ]);\n\n const onDragHeader = (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {\n const div = floating.refs.floating.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = floatingSize.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return floatingSize.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n onChange?.(false);\n return setTimeout(() => floatingSize.set(undefined), 350);\n };\n\n const draggableMotionProps =\n type === \"sheet\"\n ? ({\n drag: \"y\",\n animate: false,\n dragElastic: 0,\n initial: false,\n dragConstraints,\n draggable: true,\n dragListener: true,\n dragMomentum: true,\n onDrag: onDragHeader,\n dragPropagation: true,\n dragSnapToOrigin: true,\n dragDirectionLock: true,\n whileDrag: { cursor: \"grabbing\" },\n } as const)\n : { animate: animated, initial: false };\n\n const scrollInitial = useMotionValue<number | undefined>(undefined);\n const scroll = useMotionValue<number | undefined>(undefined);\n\n const Component = asChild ? Slot : motion.button;\n\n return (\n <Fragment>\n {trigger ? (\n <Component ref={floating.refs.setReference} {...interactions.getReferenceProps()} layoutId={layoutId} type=\"button\">\n {Trigger}\n </Component>\n ) : null}\n <MotionConfig reducedMotion={animated ? \"user\" : \"always\"}>\n <FloatingPortal preserveTabOrder root={root}>\n <AnimatePresence mode=\"wait\" propagate>\n {open ? (\n <FloatingOverlay\n lockScroll\n className={css(\n \"inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80\",\n type === \"drawer\" ? \"\" : \"items-start justify-center pt-10 lg:p-10\",\n overlayClassName\n )}\n >\n <FloatingFocusManager guards modal closeOnFocusOut={closeOnFocusOut} context={floating.context}>\n <AnimatePresence propagate>\n <motion.div\n {...props}\n {...(title\n ? {\n \"aria-labelledby\": headingId,\n \"aria-describedby\": descriptionId,\n }\n : { \"aria-label\": ariaTitle })}\n {...interactions.getFloatingProps({\n \"aria-modal\": open,\n ref: mergeRefs(floating.refs.setFloating, removeScrollRef) as any,\n className: css(variants({ position, type }), className, \"isolate overscroll-contain\"),\n })}\n exit=\"exit\"\n layout={true}\n animate=\"enter\"\n initial=\"initial\"\n layoutId={layoutId}\n variants={animation}\n data-component=\"modal\"\n style={type === \"drawer\" ? { width: floatingSize } : { height: floatingSize, y: sheetY }}\n >\n {useResizer && resizer ? (\n <Draggable\n onChange={onChange}\n value={floatingSize}\n sheet={type === \"sheet\"}\n position={position as DrawerPosition}\n parent={floating.refs.floating as any}\n />\n ) : null}\n {title ? (\n <motion.header {...draggableMotionProps} className=\"relative isolate w-full\">\n {title ? (\n <h2\n id={headingId}\n className=\"block select-text border-b border-floating-border px-8 pb-2 text-3xl font-medium leading-relaxed\"\n >\n {title}\n </h2>\n ) : null}\n </motion.header>\n ) : null}\n <motion.section\n ref={innerContent}\n data-component=\"modal-body\"\n className={css(\"flex-1 select-text overflow-y-auto px-8 py-1\", bodyClassName)}\n onTouchEnd={async () => {\n scroll.set(undefined);\n scrollInitial.set(undefined);\n\n if (isDragging.current) {\n const currentY = sheetY.get() || 0;\n const threshold = window.innerHeight * 0.2;\n\n if (currentY > threshold) {\n await animate(sheetY as any, window.innerHeight, { duration: 0.2, ease: \"easeIn\" })\n .finished;\n onChange(false);\n } else {\n animate(sheetY as any, 0, { type: \"spring\", bounce: 0, duration: 0.3 });\n }\n isDragging.current = false;\n }\n }}\n onTouchStart={(e) => {\n const touch = e.changedTouches[0];\n scrollInitial.set(touch.pageY);\n scroll.set(touch.pageY);\n isDragging.current = false;\n }}\n onTouchMove={(e) => {\n const touch = e.changedTouches[0];\n const y = touch.pageY;\n const prevY = scroll.get() || y;\n const scrollTop = innerContent.current?.scrollTop || 0;\n\n if (!isDragging.current && scrollTop <= 0 && y > prevY && type === \"sheet\") {\n isDragging.current = true;\n dragStart.current = y;\n }\n\n if (isDragging.current) {\n const delta = y - dragStart.current;\n if (delta < 0) {\n sheetY.set(delta * 0.2);\n } else {\n sheetY.set(delta);\n }\n }\n\n scroll.set(y);\n }}\n >\n {children}\n </motion.section>\n {footer ? (\n <footer className=\"w-full select-text border-t border-floating-border px-8 pt-4\">{footer}</footer>\n ) : null}\n {closable ? (\n <nav className=\"absolute right-4 top-1 z-floating\">\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1 opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger\"\n >\n <XIcon />\n </button>\n </nav>\n ) : null}\n </motion.div>\n </AnimatePresence>\n </FloatingFocusManager>\n </FloatingOverlay>\n ) : null}\n </AnimatePresence>\n </FloatingPortal>\n </MotionConfig>\n </Fragment>\n );\n }\n) as any;\n\ntype ButtonConfirmationAction = {\n value?: any;\n text?: Label;\n theme?: ButtonProps[\"theme\"];\n};\n\nexport type ConfirmOptions = {\n title?: Label;\n description?: Label;\n cancel?: ButtonConfirmationAction;\n confirm?: ButtonConfirmationAction;\n};\n\ntype ConfirmContextType = (options: ConfirmOptions) => Promise<boolean>;\n\nlet confirmGlobal: ConfirmContextType = async <T extends any>(options: ConfirmOptions): Promise<T> => {\n if (typeof window !== \"undefined\") {\n console.warn(\"ConfirmationProvider is not mounted\");\n }\n return false as T;\n};\n\nModal.confirm = <T extends any>(options: ConfirmOptions): Promise<T> => confirmGlobal(options) as any;\n\nexport const ModalConfirmProvider = ({ children }: { children: React.ReactNode }) => {\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState<Partial<ConfirmOptions>>({});\n const [resolve, setResolve] = useState<(value: boolean) => void>(() => {});\n\n const confirmAction = useCallback((opts: ConfirmOptions): Promise<boolean> => {\n setOptions(opts);\n setOpen(true);\n return new Promise((res) => {\n setResolve(() => res);\n });\n }, []);\n\n useEffect(() => {\n confirmGlobal = confirmAction;\n }, [confirmAction]);\n\n const onConfirm = () => {\n setOpen(false);\n const value = options.confirm?.value ?? true;\n resolve(value ?? true);\n };\n\n const onCancel = () => {\n setOpen(false);\n const value = options.cancel?.value ?? false;\n resolve(value ?? false);\n };\n\n return (\n <ConfirmContext.Provider value={confirmAction}>\n {children}\n <Modal\n open={open}\n type=\"dialog\"\n closable={false}\n onChange={setOpen}\n overlayClickClose={false}\n title={options.title || \"Confirmation\"}\n className=\"container max-w-dialog lg:max-w-96\"\n footer={\n <div className=\"flex justify-end gap-2\">\n <Button theme={options.cancel?.theme || \"ghost-muted\"} onClick={onCancel}>\n {options.cancel?.text || \"Cancel\"}\n </Button>\n <Button autoFocus theme={options.confirm?.theme || \"primary\"} onClick={onConfirm}>\n {options.confirm?.text || \"Confirm\"}\n </Button>\n </div>\n }\n >\n <div className=\"py-2 text-foreground\">{options.description}</div>\n </Modal>\n </ConfirmContext.Provider>\n );\n};\n"],"names":["getMatches","query","defaultValue","isSsr","useMediaQuery","matches","setMatches","useState","useLayoutEffect","matchMedia","onChange","useFloatingRef","useContext","Context","ConfirmContext","React","useConfirm","animationDuration","drawerLeft","drawerRight","animations","type","variants","cva","dragConstraints","calculateClose","n","Draggable","props","onDrag","e","info","rect","v","result","max","screenHeightToClose","div","delta","value","jsx","motion","css","positions","fetchPosition","isDesktop","forceType","propsType","propsPosition","noop","Modal","forwardRef","open","title","footer","asChild","trigger","children","ariaTitle","className","bodyClassName","resizer","animated","closable","layoutId","overlayClassName","_type","overlayClickClose","closeOnFocusOut","outInteractions","externalRef","root","innerContent","useRef","removeScrollRef","headingId","useId","descriptionId","position","func","animation","useResizer","floating","useFloating","click","useClick","role","useRole","dismiss","useDismiss","event","target","interactions","useInteractions","Trigger","floatingSize","useMotionValue","sheetY","isDragging","dragStart","useEffect","onClose","useImperativeHandle","draggableMotionProps","_","scrollInitial","scroll","Component","Slot","Fragment","MotionConfig","FloatingPortal","AnimatePresence","FloatingOverlay","FloatingFocusManager","jsxs","mergeRefs","currentY","threshold","animate","touch","y","prevY","scrollTop","XIcon","confirmGlobal","options","ModalConfirmProvider","setOpen","setOptions","resolve","setResolve","confirmAction","useCallback","opts","res","onConfirm","onCancel","Button"],"mappings":"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"}
1
+ {"version":3,"file":"modal.js","sources":["../../../src/hooks/use-media-query.ts","../../../src/hooks/use-floating-ref.ts","../../../src/components/floating/modal.tsx"],"sourcesContent":["import { useLayoutEffect, useState } from \"react\";\nimport { isSsr } from \"../lib/fns\";\n\nconst getMatches = (query: string, defaultValue: boolean): boolean => {\n if (isSsr()) {\n return defaultValue;\n }\n return window.matchMedia(query).matches;\n};\n\nexport const useMediaQuery = (query: string, defaultValue: boolean = true) => {\n const [matches, setMatches] = useState(defaultValue);\n\n useLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n const onChange = () => setMatches(getMatches(query, defaultValue));\n onChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(onChange);\n return () => {\n return matchMedia.removeListener ? matchMedia.removeListener(onChange) : undefined;\n };\n }\n matchMedia.addEventListener(\"change\", onChange);\n return () => matchMedia.removeEventListener(\"change\", onChange);\n }, [query]);\n\n return matches;\n};\n","import { useContext } from \"react\";\nimport { Context } from \"../config/context\";\n\nexport const useFloatingRef = () => {\n const ctx = useContext(Context);\n return ctx.floatingRef ?? undefined;\n};\n","\"use client\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n type ElementProps,\n type FloatingContext,\n} from \"@floating-ui/react\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"@phosphor-icons/react\";\nimport {\n AnimatePresence,\n HTMLMotionProps,\n motion,\n MotionConfig,\n MotionValue,\n PanInfo,\n TargetAndTransition,\n useMotionValue,\n animate,\n} from \"motion/react\";\nimport { Slot } from \"../core/slot\";\nimport React, {\n ForwardedRef,\n forwardRef,\n Fragment,\n PropsWithChildren,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMediaQuery } from \"../../hooks/use-media-query\";\nimport { css, mergeRefs } from \"../../lib/dom\";\nimport { Label, Nil, Override } from \"../../types\";\nimport { useFloatingRef } from \"../../hooks/use-floating-ref\";\nimport { useTranslations } from \"../../hooks/use-translations\";\nimport { Button, ButtonProps } from \"../core/button\";\n\ntype AnimationLabels = \"initial\" | \"enter\" | \"exit\";\n\nconst ConfirmContext = React.createContext<(options: ConfirmOptions) => Promise<boolean>>(async () => false);\n\nexport const useConfirm = () => React.useContext(ConfirmContext);\n\nexport type ModalType = \"dialog\" | \"drawer\" | \"sheet\";\n\nexport type DrawerPosition = \"left\" | \"right\";\n\ntype Animations = {\n sheet: Record<AnimationLabels, TargetAndTransition>;\n dialog: Record<AnimationLabels, TargetAndTransition>;\n drawer: (type: DrawerPosition) => Record<AnimationLabels, TargetAndTransition>;\n};\n\nconst animationDuration = \"500ms\";\n\nconst drawerLeft: Record<string, TargetAndTransition> = {\n exit: { x: [\"0%\", \"-30%\"], opacity: 0, animationDuration },\n enter: { x: [\"-30%\", \"0%\"], opacity: 1, animationDuration },\n initial: { x: [\"-30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst drawerRight: Record<string, TargetAndTransition> = {\n enter: { x: \"0%\", opacity: 1, animationDuration },\n exit: { x: [\"0%\", \"30%\"], opacity: 0, animationDuration },\n initial: { x: [\"30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst animations: Animations = {\n drawer: (type) => (type === \"left\" ? drawerLeft : drawerRight),\n sheet: {\n enter: { opacity: 1, y: \"0%\", animationDuration, transformOrigin: \"bottom\" },\n exit: { opacity: 0.4, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n initial: { opacity: 0.7, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n },\n dialog: {\n exit: { opacity: 0, scale: 0.95, animationDuration },\n enter: { opacity: 1, scale: [1.05, 1], animationDuration },\n initial: { opacity: 0.5, scale: 0.95, animationDuration, transition: { duration: 0.5, ease: \"easeInOut\" } },\n },\n};\n\nconst variants = cva(\n \"z-floating flex min-w-xs appearance-none flex-col flex-nowrap gap-4 border border-floating-border bg-floating-background outline-0 ring-0\",\n {\n variants: {\n type: {\n drawer: \"absolute h-screen max-h-screen min-h-0 w-fit max-w-[90%]\",\n dialog: \"container relative h-min max-h-[calc(100lvh-10%)] rounded-lg py-4\",\n sheet: \"absolute bottom-0 h-screen max-h-[calc(100svh-5%)] max-h-[calc(100vh-15%)] w-screen rounded-t-lg pb-4 pt-6\",\n },\n position: {\n none: \"\",\n right: \"absolute right-0 top-0 rounded-l-lg py-4\",\n left: \"absolute left-0 top-0 rounded-r-lg py-4\",\n },\n },\n defaultVariants: { position: \"right\", type: \"dialog\" },\n }\n);\n\nexport type ModalProps = Override<\n HTMLMotionProps<\"div\">,\n ({ title: Label; ariaTitle?: string } | { ariaTitle: string; title?: Label }) & {\n open: boolean;\n onChange: (nextState: boolean) => void;\n } & Partial<{\n footer: Label;\n type: ModalType;\n animated: boolean;\n asChild: boolean;\n layoutId: string;\n resizer: boolean;\n className: string;\n closable: boolean;\n forceType: boolean;\n bodyClassName: string;\n overlayClassName: string;\n position: DrawerPosition;\n overlayClickClose: boolean;\n closeOnFocusOut: boolean;\n role: \"dialog\";\n interactions: ElementProps[];\n trigger: Label;\n }>\n>;\n\ntype DraggableProps = {\n sheet: boolean;\n position: DrawerPosition;\n parent: React.MutableRefObject<HTMLElement | null>;\n onChange: (nextState: boolean) => void;\n value: MotionValue<number | undefined>;\n};\n\nconst dragConstraints = { top: 0, left: 0, right: 0, bottom: 0 };\n\nconst calculateClose = (n: number) => n * 0.6;\n\nconst Draggable = (props: DraggableProps) => {\n const onDrag = (e: Event, info: PanInfo) => {\n if (props.parent.current) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n if (props.sheet) {\n const div = props.parent.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = props.value.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return props.value.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n props.onChange(false);\n return setTimeout(() => props.value.set(undefined), 350);\n }\n const div = props.parent.current as HTMLElement;\n const v = props.value.get() || div.getBoundingClientRect().width;\n const delta = props.position === \"right\" ? -info.delta.x : info.delta.x;\n const value = Math.abs(v + delta);\n return props.value.set(value);\n }\n };\n\n return (\n <motion.button\n draggable\n dragListener\n dragMomentum\n tabIndex={-1}\n type=\"button\"\n animate={false}\n dragElastic={0}\n dragPropagation\n initial={false}\n onDrag={onDrag}\n dragSnapToOrigin\n dragDirectionLock\n aria-hidden=\"true\"\n drag={props.sheet ? \"y\" : \"x\"}\n dragConstraints={dragConstraints}\n whileDrag={{ cursor: \"grabbing\" }}\n className={css(\n \"absolute isolate z-calendar rounded-lg\",\n props.sheet ? \"cursor-row-resize\" : \"cursor-col-resize bg-floating-border\",\n props.sheet\n ? \"top-1 flex h-3 w-full justify-center py-2\"\n : props.position === \"left\"\n ? \"right-5 top-1/2 h-10 w-2\"\n : \"left-2 top-1/2 h-10 w-2\"\n )}\n >\n {props.sheet ? <div className=\"h-2 w-1/4 rounded-lg bg-floating-border\" /> : null}\n </motion.button>\n );\n};\n\nconst positions = { drawer: \"right\", sheet: \"none\", dialog: \"none\" } as const;\n\nconst fetchPosition = (isDesktop: Nil<boolean>, forceType: Nil<boolean>, propsType: Nil<ModalType>, propsPosition: Nil<DrawerPosition>) => {\n const type = propsType || \"dialog\";\n if (isDesktop) return propsType === \"drawer\" ? (propsPosition ?? positions.drawer) : positions[type];\n return forceType ? positions[type] : positions.sheet;\n};\n\nexport type ModalRef = { context: FloatingContext; floating: HTMLElement | null };\n\nconst noop: ElementProps[] = [];\n\ntype ModalComponent = React.FC<ModalProps> & {\n confirm: <T>(options: ConfirmOptions) => Promise<T>;\n};\n\nexport const Modal: ModalComponent = forwardRef<ModalRef, PropsWithChildren<ModalProps>>(\n (\n {\n open,\n title,\n footer,\n asChild,\n trigger,\n children,\n onChange,\n ariaTitle,\n className,\n bodyClassName,\n resizer = true,\n animated = true,\n closable = true,\n forceType = false,\n layoutId = undefined,\n overlayClassName = \"\",\n type: _type = \"dialog\",\n position: propsPosition,\n overlayClickClose = false,\n closeOnFocusOut = false,\n interactions: outInteractions = noop,\n ...props\n }: PropsWithChildren<ModalProps>,\n externalRef: ForwardedRef<ModalRef>\n ) => {\n const t = useTranslations();\n const root = useFloatingRef();\n const innerContent = useRef<HTMLDivElement>(null);\n const removeScrollRef = useRef<HTMLDivElement>(null);\n const headingId = useId();\n const descriptionId = useId();\n const isDesktop = useMediaQuery(\"(min-width: 64rem)\");\n const position = fetchPosition(isDesktop, forceType, _type, propsPosition);\n const func = isDesktop ? animations[_type] : forceType ? animations[_type] : animations.sheet;\n const animation = typeof func === \"function\" ? func(position as DrawerPosition) : func;\n const type = isDesktop ? _type : forceType ? _type : \"sheet\";\n const useResizer = type !== \"dialog\";\n\n const floating = useFloating({ open, onOpenChange: onChange, strategy: \"fixed\" });\n const click = useClick(floating.context, {});\n const role = useRole(floating.context, { role: \"dialog\" });\n const dismiss = useDismiss(floating.context, {\n bubbles: true,\n escapeKey: true,\n outsidePress: (event) => {\n const target = event.target as Node;\n return overlayClickClose && !!target?.isConnected;\n },\n });\n\n const interactions = useInteractions([click, dismiss, role].concat(outInteractions));\n\n const floatingSize = useMotionValue<number | undefined>(undefined);\n const sheetY = useMotionValue<number | undefined>(undefined);\n const isDragging = useRef(false);\n const dragStart = useRef(0);\n\n useEffect(() => {\n floatingSize.set(undefined);\n sheetY.set(undefined);\n }, [type, floatingSize, sheetY]);\n\n const onClose = () => onChange(false);\n\n useImperativeHandle(externalRef, () => ({ context: floating.context, floating: removeScrollRef.current }), [\n floating.context,\n removeScrollRef,\n ]);\n\n const onDragHeader = (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {\n const div = floating.refs.floating.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = floatingSize.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return floatingSize.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n onChange?.(false);\n return setTimeout(() => floatingSize.set(undefined), 350);\n };\n\n const draggableMotionProps =\n type === \"sheet\"\n ? ({\n drag: \"y\",\n animate: false,\n dragElastic: 0,\n initial: false,\n dragConstraints,\n draggable: true,\n dragListener: true,\n dragMomentum: true,\n onDrag: onDragHeader,\n dragPropagation: true,\n dragSnapToOrigin: true,\n dragDirectionLock: true,\n whileDrag: { cursor: \"grabbing\" },\n } as const)\n : { animate: animated, initial: false };\n\n const scrollInitial = useMotionValue<number | undefined>(undefined);\n const scroll = useMotionValue<number | undefined>(undefined);\n\n const Component = asChild ? Slot : motion.button;\n\n return (\n <Fragment>\n {trigger ? (\n <Component ref={floating.refs.setReference} {...interactions.getReferenceProps()} layoutId={layoutId} type=\"button\">\n {trigger}\n </Component>\n ) : null}\n <MotionConfig reducedMotion={animated ? \"user\" : \"always\"}>\n <FloatingPortal preserveTabOrder root={root}>\n <AnimatePresence mode=\"wait\" propagate>\n {open ? (\n <FloatingOverlay\n lockScroll\n className={css(\n \"inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80\",\n type === \"drawer\" ? \"\" : \"items-start justify-center pt-10 lg:p-10\",\n overlayClassName\n )}\n >\n <FloatingFocusManager guards modal closeOnFocusOut={closeOnFocusOut} context={floating.context}>\n <AnimatePresence propagate>\n <motion.div\n {...props}\n {...(title\n ? {\n \"aria-labelledby\": headingId,\n \"aria-describedby\": descriptionId,\n }\n : { \"aria-label\": ariaTitle })}\n {...interactions.getFloatingProps({\n \"aria-modal\": open,\n ref: mergeRefs<HTMLDivElement>(floating.refs.setFloating, removeScrollRef),\n className: css(variants({ position, type }), className, \"isolate overscroll-contain\"),\n })}\n exit=\"exit\"\n layout={true}\n animate=\"enter\"\n initial=\"initial\"\n layoutId={layoutId}\n variants={animation}\n data-component=\"modal\"\n style={type === \"drawer\" ? { width: floatingSize } : { height: floatingSize, y: sheetY }}\n >\n {useResizer && resizer ? (\n <Draggable\n onChange={onChange}\n value={floatingSize}\n sheet={type === \"sheet\"}\n position={position as DrawerPosition}\n parent={floating.refs.floating}\n />\n ) : null}\n {title ? (\n <motion.header {...draggableMotionProps} className=\"relative isolate w-full\">\n {title ? (\n <h2\n id={headingId}\n className=\"block select-text border-b border-floating-border px-8 pb-2 text-3xl font-medium leading-relaxed\"\n >\n {title}\n </h2>\n ) : null}\n </motion.header>\n ) : null}\n <motion.section\n ref={innerContent}\n id={title ? descriptionId : undefined}\n data-component=\"modal-body\"\n className={css(\"flex-1 select-text overflow-y-auto px-8 py-1\", bodyClassName)}\n onTouchEnd={async () => {\n scroll.set(undefined);\n scrollInitial.set(undefined);\n\n if (isDragging.current) {\n const currentY = sheetY.get() || 0;\n const threshold = window.innerHeight * 0.2;\n const sheetYNumeric = sheetY as MotionValue<number>;\n if (currentY > threshold) {\n await animate(sheetYNumeric, window.innerHeight, { duration: 0.2, ease: \"easeIn\" })\n .finished;\n onChange(false);\n } else {\n animate(sheetYNumeric, 0, { type: \"spring\", bounce: 0, duration: 0.3 });\n }\n isDragging.current = false;\n }\n }}\n onTouchStart={(e) => {\n const touch = e.changedTouches[0];\n scrollInitial.set(touch.pageY);\n scroll.set(touch.pageY);\n isDragging.current = false;\n }}\n onTouchMove={(e) => {\n const touch = e.changedTouches[0];\n const y = touch.pageY;\n const prevY = scroll.get() || y;\n const scrollTop = innerContent.current?.scrollTop || 0;\n\n if (!isDragging.current && scrollTop <= 0 && y > prevY && type === \"sheet\") {\n isDragging.current = true;\n dragStart.current = y;\n }\n\n if (isDragging.current) {\n const delta = y - dragStart.current;\n if (delta < 0) {\n sheetY.set(delta * 0.2);\n } else {\n sheetY.set(delta);\n }\n }\n\n scroll.set(y);\n }}\n >\n {children}\n </motion.section>\n {footer ? (\n <footer className=\"w-full select-text border-t border-floating-border px-8 pt-4\">{footer}</footer>\n ) : null}\n {closable ? (\n <div className=\"absolute right-4 top-1 z-floating\">\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={t.closeButton}\n className=\"p-1 opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger\"\n >\n <XIcon aria-hidden=\"true\" />\n </button>\n </div>\n ) : null}\n </motion.div>\n </AnimatePresence>\n </FloatingFocusManager>\n </FloatingOverlay>\n ) : null}\n </AnimatePresence>\n </FloatingPortal>\n </MotionConfig>\n </Fragment>\n );\n }\n) as unknown as ModalComponent;\n\ntype ButtonConfirmationAction = {\n value?: unknown;\n text?: Label;\n theme?: ButtonProps[\"theme\"];\n};\n\nexport type ConfirmOptions = {\n title?: Label;\n description?: Label;\n cancel?: ButtonConfirmationAction;\n confirm?: ButtonConfirmationAction;\n};\n\ntype ConfirmContextType = (options: ConfirmOptions) => Promise<boolean>;\n\nlet confirmGlobal: ConfirmContextType = async <T,>(_: ConfirmOptions): Promise<T> => {\n if (typeof window !== \"undefined\") {\n console.warn(\"ConfirmationProvider is not mounted\");\n }\n return false as unknown as T;\n};\n\nModal.confirm = <T,>(options: ConfirmOptions): Promise<T> => confirmGlobal(options) as unknown as Promise<T>;\n\nexport const ModalConfirmProvider = ({ children }: { children: React.ReactNode }) => {\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState<Partial<ConfirmOptions>>({});\n const [resolve, setResolve] = useState<(value: boolean) => void>(() => {});\n\n const confirmAction = useCallback((opts: ConfirmOptions): Promise<boolean> => {\n setOptions(opts);\n setOpen(true);\n return new Promise((res) => {\n setResolve(() => res);\n });\n }, []);\n\n useEffect(() => {\n confirmGlobal = confirmAction;\n }, [confirmAction]);\n\n const onConfirm = () => {\n setOpen(false);\n const value = (options.confirm?.value as boolean) ?? true;\n resolve(value ?? true);\n };\n\n const onCancel = () => {\n setOpen(false);\n const value = (options.cancel?.value as boolean) ?? false;\n resolve(value ?? false);\n };\n\n return (\n <ConfirmContext.Provider value={confirmAction}>\n {children}\n <Modal\n open={open}\n type=\"dialog\"\n closable={false}\n onChange={setOpen}\n overlayClickClose={false}\n title={options.title || \"Confirmation\"}\n className=\"container max-w-dialog lg:max-w-96\"\n footer={\n <div className=\"flex justify-end gap-2\">\n <Button theme={options.cancel?.theme || \"ghost-muted\"} onClick={onCancel}>\n {options.cancel?.text || \"Cancel\"}\n </Button>\n <Button autoFocus theme={options.confirm?.theme || \"primary\"} onClick={onConfirm}>\n {options.confirm?.text || \"Confirm\"}\n </Button>\n </div>\n }\n >\n <div className=\"py-2 text-foreground\">{options.description}</div>\n </Modal>\n </ConfirmContext.Provider>\n );\n};\n"],"names":["getMatches","query","defaultValue","isSsr","useMediaQuery","matches","setMatches","useState","useLayoutEffect","matchMedia","onChange","useFloatingRef","useContext","Context","ConfirmContext","React","useConfirm","animationDuration","drawerLeft","drawerRight","animations","type","variants","cva","dragConstraints","calculateClose","n","Draggable","props","onDrag","e","info","rect","v","result","max","screenHeightToClose","div","delta","value","jsx","motion","css","positions","fetchPosition","isDesktop","forceType","propsType","propsPosition","noop","Modal","forwardRef","open","title","footer","asChild","trigger","children","ariaTitle","className","bodyClassName","resizer","animated","closable","layoutId","overlayClassName","_type","overlayClickClose","closeOnFocusOut","outInteractions","externalRef","t","useTranslations","root","innerContent","useRef","removeScrollRef","headingId","useId","descriptionId","position","func","animation","useResizer","floating","useFloating","click","useClick","role","useRole","dismiss","useDismiss","event","target","interactions","useInteractions","floatingSize","useMotionValue","sheetY","isDragging","dragStart","useEffect","onClose","useImperativeHandle","draggableMotionProps","_","scrollInitial","scroll","Component","Slot","Fragment","MotionConfig","FloatingPortal","AnimatePresence","FloatingOverlay","FloatingFocusManager","jsxs","mergeRefs","currentY","threshold","sheetYNumeric","animate","touch","y","prevY","scrollTop","XIcon","confirmGlobal","options","ModalConfirmProvider","setOpen","setOptions","resolve","setResolve","confirmAction","useCallback","opts","res","onConfirm","onCancel","Button"],"mappings":"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"}