@alikhalilll/ui 1.2.0 → 1.2.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 (97) hide show
  1. package/README.md +68 -45
  2. package/dist/assets/styles.css +2 -74
  3. package/dist/chunks/{ADrawerContent.vue_vue_type_script_setup_true_lang-BivIZvV1.mjs → ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs} +15 -15
  4. package/dist/chunks/ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs.map +1 -0
  5. package/dist/chunks/AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BrBsDiHc.mjs +113 -0
  6. package/dist/chunks/AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BrBsDiHc.mjs.map +1 -0
  7. package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-D4odgAna.mjs +1606 -0
  8. package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-D4odgAna.mjs.map +1 -0
  9. package/dist/chunks/useEventScrollLock-BcP8fg-L.mjs +241 -0
  10. package/dist/chunks/useEventScrollLock-BcP8fg-L.mjs.map +1 -0
  11. package/dist/drawer.mjs +1 -1
  12. package/dist/entries/drawer/components/ADrawer.vue.d.ts +31 -0
  13. package/dist/entries/drawer/components/ADrawer.vue.d.ts.map +1 -0
  14. package/dist/entries/drawer/components/ADrawerContent.vue.d.ts +33 -0
  15. package/dist/entries/drawer/components/ADrawerContent.vue.d.ts.map +1 -0
  16. package/dist/entries/drawer/components/ADrawerOverlay.vue.d.ts +9 -0
  17. package/dist/entries/drawer/components/ADrawerOverlay.vue.d.ts.map +1 -0
  18. package/dist/entries/drawer/components/ADrawerTrigger.vue.d.ts +15 -0
  19. package/dist/entries/drawer/components/ADrawerTrigger.vue.d.ts.map +1 -0
  20. package/dist/entries/drawer/index.d.ts +5 -0
  21. package/dist/entries/drawer/index.d.ts.map +1 -0
  22. package/dist/entries/input/components/AInput.vue.d.ts +36 -0
  23. package/dist/entries/input/components/AInput.vue.d.ts.map +1 -0
  24. package/dist/entries/input/index.d.ts +2 -0
  25. package/dist/entries/input/index.d.ts.map +1 -0
  26. package/dist/entries/popover/components/APopover.vue.d.ts +24 -0
  27. package/dist/entries/popover/components/APopover.vue.d.ts.map +1 -0
  28. package/dist/entries/popover/components/APopoverContent.vue.d.ts +48 -0
  29. package/dist/entries/popover/components/APopoverContent.vue.d.ts.map +1 -0
  30. package/dist/entries/popover/components/APopoverOverlay.vue.d.ts +17 -0
  31. package/dist/entries/popover/components/APopoverOverlay.vue.d.ts.map +1 -0
  32. package/dist/entries/popover/components/APopoverTrigger.vue.d.ts +15 -0
  33. package/dist/entries/popover/components/APopoverTrigger.vue.d.ts.map +1 -0
  34. package/dist/entries/popover/composables/useEventScrollLock.d.ts +21 -0
  35. package/dist/entries/popover/composables/useEventScrollLock.d.ts.map +1 -0
  36. package/dist/entries/popover/index.d.ts +6 -0
  37. package/dist/entries/popover/index.d.ts.map +1 -0
  38. package/dist/entries/responsive-popover/components/AResponsivePopover.vue.d.ts +50 -0
  39. package/dist/entries/responsive-popover/components/AResponsivePopover.vue.d.ts.map +1 -0
  40. package/dist/entries/responsive-popover/components/AResponsivePopoverContent.vue.d.ts +39 -0
  41. package/dist/entries/responsive-popover/components/AResponsivePopoverContent.vue.d.ts.map +1 -0
  42. package/dist/entries/responsive-popover/components/AResponsivePopoverTrigger.vue.d.ts +20 -0
  43. package/dist/entries/responsive-popover/components/AResponsivePopoverTrigger.vue.d.ts.map +1 -0
  44. package/dist/entries/responsive-popover/composables/useResponsivePopoverContext.d.ts +10 -0
  45. package/dist/entries/responsive-popover/composables/useResponsivePopoverContext.d.ts.map +1 -0
  46. package/dist/entries/responsive-popover/index.d.ts +4 -0
  47. package/dist/entries/responsive-popover/index.d.ts.map +1 -0
  48. package/dist/entries/tell-input/components/ACountryFlag.vue.d.ts +30 -0
  49. package/dist/entries/tell-input/components/ACountryFlag.vue.d.ts.map +1 -0
  50. package/dist/entries/tell-input/components/ACountrySelect.vue.d.ts +140 -0
  51. package/dist/entries/tell-input/components/ACountrySelect.vue.d.ts.map +1 -0
  52. package/dist/entries/tell-input/components/ATellInput.vue.d.ts +145 -0
  53. package/dist/entries/tell-input/components/ATellInput.vue.d.ts.map +1 -0
  54. package/dist/entries/tell-input/composables/useCountryDetection.d.ts +44 -0
  55. package/dist/entries/tell-input/composables/useCountryDetection.d.ts.map +1 -0
  56. package/dist/entries/tell-input/composables/useCountryMatching.d.ts +44 -0
  57. package/dist/entries/tell-input/composables/useCountryMatching.d.ts.map +1 -0
  58. package/dist/entries/tell-input/composables/usePhoneValidation.d.ts +110 -0
  59. package/dist/entries/tell-input/composables/usePhoneValidation.d.ts.map +1 -0
  60. package/dist/entries/tell-input/composables/useTellInputValidation.d.ts +67 -0
  61. package/dist/entries/tell-input/composables/useTellInputValidation.d.ts.map +1 -0
  62. package/dist/entries/tell-input/composables/useTypingPhase.d.ts +50 -0
  63. package/dist/entries/tell-input/composables/useTypingPhase.d.ts.map +1 -0
  64. package/dist/entries/tell-input/index.d.ts +12 -0
  65. package/dist/entries/tell-input/index.d.ts.map +1 -0
  66. package/dist/entries/tell-input/utils/digits.d.ts +22 -0
  67. package/dist/entries/tell-input/utils/digits.d.ts.map +1 -0
  68. package/dist/entries/tell-input/utils/flag-url.d.ts +8 -0
  69. package/dist/entries/tell-input/utils/flag-url.d.ts.map +1 -0
  70. package/dist/entries/tell-input/utils/types.d.ts +120 -0
  71. package/dist/entries/tell-input/utils/types.d.ts.map +1 -0
  72. package/dist/index.d.ts +7 -1131
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.mjs +39 -33
  75. package/dist/popover.mjs +5 -4
  76. package/dist/responsive-popover.mjs +1 -1
  77. package/dist/tell-input.mjs +14 -9
  78. package/dist/utils/cn.d.ts +3 -0
  79. package/dist/utils/cn.d.ts.map +1 -0
  80. package/dist/utils/index.d.ts +3 -0
  81. package/dist/utils/index.d.ts.map +1 -0
  82. package/dist/{utils.d.ts → utils/sizes.d.ts} +18 -29
  83. package/dist/utils/sizes.d.ts.map +1 -0
  84. package/entries/tell-input/README.md +1 -0
  85. package/package.json +14 -10
  86. package/dist/chunks/ADrawerContent.vue_vue_type_script_setup_true_lang-BivIZvV1.mjs.map +0 -1
  87. package/dist/chunks/APopoverContent.vue_vue_type_script_setup_true_lang-o1XhV9DM.mjs +0 -132
  88. package/dist/chunks/APopoverContent.vue_vue_type_script_setup_true_lang-o1XhV9DM.mjs.map +0 -1
  89. package/dist/chunks/AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BYEb5UBL.mjs +0 -92
  90. package/dist/chunks/AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BYEb5UBL.mjs.map +0 -1
  91. package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-Bv_lLV_l.mjs +0 -1485
  92. package/dist/chunks/ATellInput.vue_vue_type_script_setup_true_lang-Bv_lLV_l.mjs.map +0 -1
  93. package/dist/drawer.d.ts +0 -116
  94. package/dist/input.d.ts +0 -65
  95. package/dist/popover.d.ts +0 -117
  96. package/dist/responsive-popover.d.ts +0 -124
  97. package/dist/tell-input.d.ts +0 -732
package/README.md CHANGED
@@ -31,25 +31,7 @@ Each README ships inside the npm tarball at `node_modules/@alikhalilll/ui/entrie
31
31
  pnpm add @alikhalilll/ui
32
32
  ```
33
33
 
34
- Peer dependency: `vue ^3.5.0`. Bundled deps: `reka-ui`, `vaul-vue`, `libphonenumber-js`, `lucide-vue-next`, `@vueuse/core`, `class-variance-authority`, `clsx`, `tailwind-merge`.
35
-
36
- ### Subpath imports (recommended)
37
-
38
- ```ts
39
- // Only the tell-input chunk ships into the bundle.
40
- import { ATellInput } from '@alikhalilll/ui/tell-input';
41
-
42
- // Main entry — bundlers still tree-shake unused exports via `sideEffects`.
43
- import { ATellInput, APopover } from '@alikhalilll/ui';
44
- ```
45
-
46
- Available subpaths: `/tell-input`, `/input`, `/popover`, `/drawer`, `/responsive-popover`, `/utils`.
47
-
48
- ## Setup
49
-
50
- Components style themselves with Tailwind utility classes (`bg-popover`, `text-muted-foreground`, …) resolving to CSS variables shipped at `@alikhalilll/ui/styles.css`. Three steps:
51
-
52
- ### 1. Import the tokens
34
+ Then import the stylesheet **once** in your app entry. That's it no Tailwind config, no `@theme` block, no `@source` directives. The shipped CSS is fully self-contained: design tokens + every utility class the components use are pre-compiled into a single ~21 KB vanilla CSS file.
53
35
 
54
36
  **Nuxt 3 / 4:**
55
37
 
@@ -71,41 +53,82 @@ import '@alikhalilll/ui/styles.css';
71
53
  createApp(App).mount('#app');
72
54
  ```
73
55
 
74
- Every variable is prefixed `--ak-ui-` guaranteed not to collide with your own CSS.
56
+ Peer dependency: `vue ^3.5.0`. Bundled deps: `reka-ui`, `vaul-vue`, `libphonenumber-js`, `lucide-vue-next`, `@vueuse/core`, `class-variance-authority`, `clsx`, `tailwind-merge`. **No CSS framework required** at the consumer end: the lib's stylesheet only declares its own classes (no preflight reset), so it coexists with Tailwind v4, UnoCSS, vanilla CSS, or nothing at all.
57
+
58
+ ### UnoCSS
59
+
60
+ Same import — no preset to install, no `--ak-ui-*` mapping to wire up. The components' classes are baked into the shipped stylesheet; UnoCSS keeps handling whatever utilities _your_ templates use.
61
+
62
+ ```ts
63
+ // nuxt.config.ts
64
+ export default defineNuxtConfig({
65
+ modules: ['@unocss/nuxt'],
66
+ css: ['@alikhalilll/ui/styles.css'],
67
+ });
68
+ ```
75
69
 
76
- ### 2. Map to Tailwind v4
70
+ **If you write `bg-popover` / `text-muted-foreground` / etc. yourself**, UnoCSS will try to generate those too — point them at the same tokens so the two outputs match:
71
+
72
+ ```ts
73
+ // uno.config.ts
74
+ import { defineConfig, presetWind4 } from 'unocss';
75
+
76
+ export default defineConfig({
77
+ presets: [presetWind4()],
78
+ theme: {
79
+ colors: {
80
+ background: 'hsl(var(--ak-ui-background))',
81
+ foreground: 'hsl(var(--ak-ui-foreground))',
82
+ popover: 'hsl(var(--ak-ui-popover))',
83
+ 'popover-foreground': 'hsl(var(--ak-ui-popover-foreground))',
84
+ muted: 'hsl(var(--ak-ui-muted))',
85
+ 'muted-foreground': 'hsl(var(--ak-ui-muted-foreground))',
86
+ accent: 'hsl(var(--ak-ui-accent))',
87
+ 'accent-foreground': 'hsl(var(--ak-ui-accent-foreground))',
88
+ destructive: 'hsl(var(--ak-ui-destructive))',
89
+ border: 'hsl(var(--ak-ui-border))',
90
+ input: 'hsl(var(--ak-ui-input))',
91
+ ring: 'hsl(var(--ak-ui-ring))',
92
+ },
93
+ },
94
+ });
95
+ ```
96
+
97
+ Whatever reset UnoCSS injects (`@unocss/reset/tailwind.css`, etc.) wins on root elements — the lib ships no preflight, so the two don't fight.
98
+
99
+ ### Workspaces / monorepos
100
+
101
+ If you consume this in a pnpm/yarn workspace **and** use Tailwind v4 in the app, Vite can double-emit the symlinked CSS file (once via `@alikhalilll/ui/styles.css`, once via the resolved filesystem path). The second copy lands after your app CSS in the cascade and the lib's `.hidden { display: none }` ends up clobbering your `md:flex` / `md:block` responsive rules — desktop navs and sidebars silently disappear. The dedupe-friendly form is to `@import` the lib stylesheet from inside your own app CSS, instead of listing it in `nuxt.config.css`:
77
102
 
78
103
  ```css
79
- @import 'tailwindcss';
104
+ /* assets/app.css */
80
105
  @import '@alikhalilll/ui/styles.css';
81
- @source '../node_modules/@alikhalilll/ui/dist/index.mjs';
82
-
83
- @theme inline {
84
- --color-background: hsl(var(--ak-ui-background));
85
- --color-foreground: hsl(var(--ak-ui-foreground));
86
- --color-popover: hsl(var(--ak-ui-popover));
87
- --color-popover-foreground: hsl(var(--ak-ui-popover-foreground));
88
- --color-muted: hsl(var(--ak-ui-muted));
89
- --color-muted-foreground: hsl(var(--ak-ui-muted-foreground));
90
- --color-accent: hsl(var(--ak-ui-accent));
91
- --color-accent-foreground: hsl(var(--ak-ui-accent-foreground));
92
- --color-destructive: hsl(var(--ak-ui-destructive));
93
- --color-destructive-foreground: hsl(var(--ak-ui-destructive-foreground));
94
- --color-border: hsl(var(--ak-ui-border));
95
- --color-input: hsl(var(--ak-ui-input));
96
- --color-ring: hsl(var(--ak-ui-ring));
97
- }
106
+ @import 'tailwindcss';
107
+ /* …your own rules… */
108
+ ```
109
+
110
+ ```ts
111
+ // nuxt.config.ts
112
+ export default defineNuxtConfig({
113
+ css: ['~/assets/app.css'], // <-- only your CSS; no separate lib import
114
+ });
98
115
  ```
99
116
 
100
- `@source` tells Tailwind v4 to scan the lib's compiled templates — it skips `node_modules` by default. Inside a pnpm workspace, point at the source so HMR works:
117
+ Vite inlines a single copy; the cascade stays sane. Outside a workspace setup this is unnecessary.
101
118
 
102
- ```css
103
- @source '../../packages/ui/index.ts';
104
- @source '../../packages/ui/entries/**/*.{vue,ts}';
105
- @source '../../packages/ui/utils/**/*.ts';
119
+ ### Subpath imports
120
+
121
+ ```ts
122
+ // Only the tell-input chunk ships into the bundle.
123
+ import { ATellInput } from '@alikhalilll/ui/tell-input';
124
+
125
+ // Main entry — bundlers still tree-shake unused exports via `sideEffects`.
126
+ import { ATellInput, APopover } from '@alikhalilll/ui';
106
127
  ```
107
128
 
108
- ### 3. Dark mode
129
+ Available subpaths: `/tell-input`, `/input`, `/popover`, `/drawer`, `/responsive-popover`, `/utils`.
130
+
131
+ ### Dark mode
109
132
 
110
133
  The lib ships both `.light` and `.dark` blocks. Toggle the class on `<html>` — portaled popovers and drawers inherit via the cascade.
111
134
 
@@ -1,74 +1,2 @@
1
- /*
2
- * @alikhalilll/ui — design tokens
3
- *
4
- * Every variable is prefixed `--ak-ui-` to avoid collisions with consumer CSS or other
5
- * libraries. The components themselves use Tailwind utility classes (`bg-popover`,
6
- * `text-destructive`, etc.) which the consumer wires to these variables via an
7
- * `@theme inline` block — see README.
8
- *
9
- * Override any variable in your own CSS to customize the theme — globally on `:root`,
10
- * or scoped to a wrapper class for per-tenant theming.
11
- */
12
-
13
- :root,
14
- .light {
15
- --ak-ui-background: 0 0% 100%;
16
- --ak-ui-foreground: 240 10% 3.9%;
17
-
18
- --ak-ui-card: 0 0% 100%;
19
- --ak-ui-card-foreground: 240 10% 3.9%;
20
-
21
- --ak-ui-popover: 0 0% 100%;
22
- --ak-ui-popover-foreground: 240 10% 3.9%;
23
-
24
- --ak-ui-primary: 240 5.9% 10%;
25
- --ak-ui-primary-foreground: 0 0% 98%;
26
-
27
- --ak-ui-secondary: 240 4.8% 95.9%;
28
- --ak-ui-secondary-foreground: 240 5.9% 10%;
29
-
30
- --ak-ui-muted: 240 4.8% 95.9%;
31
- --ak-ui-muted-foreground: 240 3.8% 46.1%;
32
-
33
- --ak-ui-accent: 240 4.8% 95.9%;
34
- --ak-ui-accent-foreground: 240 5.9% 10%;
35
-
36
- --ak-ui-destructive: 0 84.2% 60.2%;
37
- --ak-ui-destructive-foreground: 0 0% 98%;
38
-
39
- --ak-ui-border: 240 5.9% 90%;
40
- --ak-ui-input: 240 5.9% 90%;
41
- --ak-ui-ring: 240 5.9% 10%;
42
-
43
- --ak-ui-radius: 0.5rem;
44
- }
45
-
46
- .dark {
47
- --ak-ui-background: 240 10% 3.9%;
48
- --ak-ui-foreground: 0 0% 98%;
49
-
50
- --ak-ui-card: 240 10% 3.9%;
51
- --ak-ui-card-foreground: 0 0% 98%;
52
-
53
- --ak-ui-popover: 240 10% 3.9%;
54
- --ak-ui-popover-foreground: 0 0% 98%;
55
-
56
- --ak-ui-primary: 0 0% 98%;
57
- --ak-ui-primary-foreground: 240 5.9% 10%;
58
-
59
- --ak-ui-secondary: 240 3.7% 15.9%;
60
- --ak-ui-secondary-foreground: 0 0% 98%;
61
-
62
- --ak-ui-muted: 240 3.7% 15.9%;
63
- --ak-ui-muted-foreground: 240 5% 64.9%;
64
-
65
- --ak-ui-accent: 240 3.7% 15.9%;
66
- --ak-ui-accent-foreground: 0 0% 98%;
67
-
68
- --ak-ui-destructive: 0 62.8% 30.6%;
69
- --ak-ui-destructive-foreground: 0 0% 98%;
70
-
71
- --ak-ui-border: 240 3.7% 15.9%;
72
- --ak-ui-input: 240 3.7% 15.9%;
73
- --ak-ui-ring: 240 4.9% 83.9%;
74
- }
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-emerald-500:oklch(69.6% .17 162.48);--color-black:#000;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--radius-sm:.25rem;--radius-md:.375rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}.pointer-events-auto{pointer-events:auto}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start-2\.5{inset-inline-start:calc(var(--spacing) * 2.5)}.end-2{inset-inline-end:calc(var(--spacing) * 2)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.bottom-0{bottom:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-24{margin-top:calc(var(--spacing) * 24)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[43px\]{height:43px}.h-\[52px\]{height:52px}.h-\[60px\]{height:60px}.h-auto{height:auto}.h-full{height:100%}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[min\(22rem\,var\(--reka-popover-content-available-height\)\)\]{max-height:min(22rem, var(--reka-popover-content-available-height))}.w-6{width:calc(var(--spacing) * 6)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[100px\]{width:100px}.w-\[min\(20rem\,calc\(100vw-2rem\)\)\]{width:min(20rem,100vw - 2rem)}.w-full{width:100%}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-\[2\.5rem\]{max-width:2.5rem}.max-w-\[12rem\]{max-width:12rem}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.animate-spin{animation:var(--animate-spin)}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border,.border-border\/70{border-color:hsl(var(--ak-ui-border))}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, hsl(var(--ak-ui-border)) 70%, transparent)}}.border-destructive\/80{border-color:hsl(var(--ak-ui-destructive))}@supports (color:color-mix(in lab, red, red)){.border-destructive\/80{border-color:color-mix(in oklab, hsl(var(--ak-ui-destructive)) 80%, transparent)}}.border-emerald-500\/60{border-color:#00bb7f99}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/60{border-color:color-mix(in oklab, var(--color-emerald-500) 60%, transparent)}}.border-input{border-color:hsl(var(--ak-ui-input))}.bg-background{background-color:hsl(var(--ak-ui-background))}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.bg-black\/70{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.bg-muted,.bg-muted\/40{background-color:hsl(var(--ak-ui-muted))}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, hsl(var(--ak-ui-muted)) 40%, transparent)}}.bg-popover{background-color:hsl(var(--ak-ui-popover))}.bg-transparent{background-color:#0000}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.ps-1{padding-inline-start:calc(var(--spacing) * 1)}.ps-8{padding-inline-start:calc(var(--spacing) * 8)}.pe-14{padding-inline-end:calc(var(--spacing) * 14)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-destructive{color:hsl(var(--ak-ui-destructive))}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:hsl(var(--ak-ui-foreground))}.text-muted-foreground{color:hsl(var(--ak-ui-muted-foreground))}.text-popover-foreground{color:hsl(var(--ak-ui-popover-foreground))}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.accent-foreground{accent-color:hsl(var(--ak-ui-foreground))}.opacity-0{opacity:0}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-black\/15{--tw-shadow-color:#00000026}@supports (color:color-mix(in lab, red, red)){.shadow-black\/15{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 15%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/30{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.shadow-black\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-border\/40{--tw-ring-color:hsl(var(--ak-ui-border))}@supports (color:color-mix(in lab, red, red)){.ring-border\/40{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-border)) 40%, transparent)}}.ring-border\/70{--tw-ring-color:hsl(var(--ak-ui-border))}@supports (color:color-mix(in lab, red, red)){.ring-border\/70{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-border)) 70%, transparent)}}.ring-destructive\/20{--tw-ring-color:hsl(var(--ak-ui-destructive))}@supports (color:color-mix(in lab, red, red)){.ring-destructive\/20{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-destructive)) 20%, transparent)}}.ring-emerald-500\/20{--tw-ring-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.ring-emerald-500\/20{--tw-ring-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)}}.ring-offset-background{--tw-ring-offset-color:hsl(var(--ak-ui-background))}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--ak-ui-muted-foreground))}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-destructive\/40:focus-within{--tw-ring-color:hsl(var(--ak-ui-destructive))}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-destructive\/40:focus-within{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-destructive)) 40%, transparent)}}.focus-within\:ring-emerald-500\/40:focus-within{--tw-ring-color:#00bb7f66}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-emerald-500\/40:focus-within{--tw-ring-color:color-mix(in oklab, var(--color-emerald-500) 40%, transparent)}}.focus-within\:ring-ring:focus-within,.focus-within\:ring-ring\/40:focus-within{--tw-ring-color:hsl(var(--ak-ui-ring))}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/40:focus-within{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-ring)) 40%, transparent)}}.focus-within\:ring-ring\/50:focus-within{--tw-ring-color:hsl(var(--ak-ui-ring))}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/50:focus-within{--tw-ring-color:color-mix(in oklab, hsl(var(--ak-ui-ring)) 50%, transparent)}}.focus-within\:ring-offset-0:focus-within{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}@media (hover:hover){.hover\:bg-muted:hover,.hover\:bg-muted\/60:hover{background-color:hsl(var(--ak-ui-muted))}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, hsl(var(--ak-ui-muted)) 60%, transparent)}}}.focus-visible\:bg-muted:focus-visible,.focus-visible\:bg-muted\/60:focus-visible{background-color:hsl(var(--ak-ui-muted))}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-muted\/60:focus-visible{background-color:color-mix(in oklab, hsl(var(--ak-ui-muted)) 60%, transparent)}}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ak-ui-ring))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.has-\[input\:disabled\]\:cursor-not-allowed:has(:is(input:disabled)){cursor:not-allowed}.has-\[input\:disabled\]\:opacity-50:has(:is(input:disabled)){opacity:.5}.data-\[selected\]\:bg-muted[data-selected],.data-\[state\=open\]\:bg-muted[data-state=open]{background-color:hsl(var(--ak-ui-muted))}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:inline-block{display:inline-block}.md\:inline-flex{display:inline-flex}}:root,.light{--ak-ui-background:0 0% 100%;--ak-ui-foreground:240 10% 3.9%;--ak-ui-card:0 0% 100%;--ak-ui-card-foreground:240 10% 3.9%;--ak-ui-popover:0 0% 100%;--ak-ui-popover-foreground:240 10% 3.9%;--ak-ui-primary:240 5.9% 10%;--ak-ui-primary-foreground:0 0% 98%;--ak-ui-secondary:240 4.8% 95.9%;--ak-ui-secondary-foreground:240 5.9% 10%;--ak-ui-muted:240 4.8% 95.9%;--ak-ui-muted-foreground:240 3.8% 46.1%;--ak-ui-accent:240 4.8% 95.9%;--ak-ui-accent-foreground:240 5.9% 10%;--ak-ui-destructive:0 84.2% 60.2%;--ak-ui-destructive-foreground:0 0% 98%;--ak-ui-border:240 5.9% 90%;--ak-ui-input:240 5.9% 90%;--ak-ui-ring:240 5.9% 10%;--ak-ui-radius:.5rem}.dark{--ak-ui-background:240 10% 3.9%;--ak-ui-foreground:0 0% 98%;--ak-ui-card:240 10% 3.9%;--ak-ui-card-foreground:0 0% 98%;--ak-ui-popover:240 10% 3.9%;--ak-ui-popover-foreground:0 0% 98%;--ak-ui-primary:0 0% 98%;--ak-ui-primary-foreground:240 5.9% 10%;--ak-ui-secondary:240 3.7% 15.9%;--ak-ui-secondary-foreground:0 0% 98%;--ak-ui-muted:240 3.7% 15.9%;--ak-ui-muted-foreground:240 5% 64.9%;--ak-ui-accent:240 3.7% 15.9%;--ak-ui-accent-foreground:0 0% 98%;--ak-ui-destructive:0 62.8% 30.6%;--ak-ui-destructive-foreground:0 0% 98%;--ak-ui-border:240 3.7% 15.9%;--ak-ui-input:240 3.7% 15.9%;--ak-ui-ring:240 4.9% 83.9%}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
@@ -1,6 +1,6 @@
1
- import { defineComponent as d, openBlock as c, createBlock as p, unref as e, mergeProps as i, withCtx as l, renderSlot as m, createVNode as y, createElementVNode as b } from "vue";
2
- import { DrawerRoot as h, DrawerTrigger as x, DrawerOverlay as O, DrawerPortal as D, DrawerContent as v } from "vaul-vue";
3
- import { useForwardPropsEmits as B, useForwardProps as w } from "reka-ui";
1
+ import { defineComponent as d, openBlock as c, createBlock as p, unref as e, mergeProps as i, withCtx as l, renderSlot as m, createVNode as y, createElementVNode as h } from "vue";
2
+ import { DrawerRoot as x, DrawerTrigger as b, DrawerOverlay as O, DrawerPortal as D, DrawerContent as v } from "vaul-vue";
3
+ import { useForwardPropsEmits as w, useForwardProps as B } from "reka-ui";
4
4
  import { reactiveOmit as _ } from "@vueuse/core";
5
5
  import { c as g } from "./cn-B6yFEsav.mjs";
6
6
  const F = /* @__PURE__ */ d({
@@ -26,8 +26,8 @@ const F = /* @__PURE__ */ d({
26
26
  },
27
27
  emits: ["drag", "release", "close", "update:open", "update:activeSnapPoint", "animationEnd"],
28
28
  setup(t, { emit: o }) {
29
- const s = B(t, o);
30
- return (n, u) => (c(), p(e(h), i({ "data-slot": "drawer" }, e(s)), {
29
+ const r = w(t, o);
30
+ return (n, u) => (c(), p(e(x), i({ "data-slot": "drawer" }, e(r)), {
31
31
  default: l(() => [
32
32
  m(n.$slots, "default")
33
33
  ]),
@@ -41,10 +41,10 @@ const F = /* @__PURE__ */ d({
41
41
  as: {}
42
42
  },
43
43
  setup(t) {
44
- const a = w(t);
45
- return (r, s) => (c(), p(e(x), i({ "data-slot": "drawer-trigger" }, e(a)), {
44
+ const a = B(t);
45
+ return (s, r) => (c(), p(e(b), i({ "data-slot": "drawer-trigger" }, e(a)), {
46
46
  default: l(() => [
47
- m(r.$slots, "default")
47
+ m(s.$slots, "default")
48
48
  ]),
49
49
  _: 3
50
50
  }, 16));
@@ -58,10 +58,10 @@ const F = /* @__PURE__ */ d({
58
58
  class: { type: [Boolean, null, String, Object, Array] }
59
59
  },
60
60
  setup(t) {
61
- const o = t, a = _(o, "class"), r = w(a);
62
- return (s, n) => (c(), p(e(O), i({ "data-slot": "drawer-overlay" }, e(r), {
61
+ const o = t, a = _(o, "class"), s = B(a);
62
+ return (r, n) => (c(), p(e(O), i({ "data-slot": "drawer-overlay" }, e(s), {
63
63
  class: e(g)(
64
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/60 backdrop-blur-sm",
64
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/70",
65
65
  o.class
66
66
  )
67
67
  }), null, 16, ["class"]));
@@ -78,18 +78,18 @@ const F = /* @__PURE__ */ d({
78
78
  },
79
79
  emits: ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "openAutoFocus", "closeAutoFocus"],
80
80
  setup(t, { emit: o }) {
81
- const a = t, r = o, s = _(a, "class"), n = B(s, r);
81
+ const a = t, s = o, r = _(a, "class"), n = w(r, s);
82
82
  return (u, f) => (c(), p(e(D), null, {
83
83
  default: l(() => [
84
84
  y(A),
85
85
  y(e(v), i({ "data-slot": "drawer-content" }, { ...u.$attrs, ...e(n) }, {
86
86
  class: e(g)(
87
- "bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border outline-none",
87
+ "bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] shadow-2xl shadow-black/30 outline-none",
88
88
  a.class
89
89
  )
90
90
  }), {
91
91
  default: l(() => [
92
- f[0] || (f[0] = b("div", { class: "bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full" }, null, -1)),
92
+ f[0] || (f[0] = h("div", { class: "bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full" }, null, -1)),
93
93
  m(u.$slots, "default")
94
94
  ]),
95
95
  _: 3
@@ -105,4 +105,4 @@ export {
105
105
  A as b,
106
106
  E as c
107
107
  };
108
- //# sourceMappingURL=ADrawerContent.vue_vue_type_script_setup_true_lang-BivIZvV1.mjs.map
108
+ //# sourceMappingURL=ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs","sources":["../../entries/drawer/components/ADrawer.vue","../../entries/drawer/components/ADrawerTrigger.vue","../../entries/drawer/components/ADrawerOverlay.vue","../../entries/drawer/components/ADrawerContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { DrawerRoot, type DrawerRootEmits, type DrawerRootProps } from 'vaul-vue';\nimport { useForwardPropsEmits } from 'reka-ui';\n\nconst props = withDefaults(defineProps<DrawerRootProps>(), {\n shouldScaleBackground: true,\n});\nconst emits = defineEmits<DrawerRootEmits>();\nconst forwarded = useForwardPropsEmits(props, emits);\n</script>\n\n<template>\n <DrawerRoot data-slot=\"drawer\" v-bind=\"forwarded\">\n <slot />\n </DrawerRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { DrawerTrigger, type DrawerTriggerProps } from 'vaul-vue';\nimport { useForwardProps } from 'reka-ui';\n\nconst props = defineProps<DrawerTriggerProps>();\nconst forwarded = useForwardProps(props);\n</script>\n\n<template>\n <DrawerTrigger data-slot=\"drawer-trigger\" v-bind=\"forwarded\">\n <slot />\n </DrawerTrigger>\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { DrawerOverlay } from 'vaul-vue';\nimport type { DialogOverlayProps } from 'reka-ui';\nimport { reactiveOmit } from '@vueuse/core';\nimport { useForwardProps } from 'reka-ui';\nimport { cn } from '@/utils';\n\nconst props = defineProps<DialogOverlayProps & { class?: HTMLAttributes['class'] }>();\nconst delegated = reactiveOmit(props, 'class');\nconst forwarded = useForwardProps(delegated);\n</script>\n\n<template>\n <DrawerOverlay\n data-slot=\"drawer-overlay\"\n v-bind=\"forwarded\"\n :class=\"\n cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-40 bg-black/70',\n props.class\n )\n \"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { DrawerContent, DrawerPortal } from 'vaul-vue';\nimport type { DialogContentEmits, DialogContentProps } from 'reka-ui';\nimport { reactiveOmit } from '@vueuse/core';\nimport { useForwardPropsEmits } from 'reka-ui';\nimport { cn } from '@/utils';\nimport ADrawerOverlay from './ADrawerOverlay.vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps<DialogContentProps & { class?: HTMLAttributes['class'] }>();\nconst emits = defineEmits<DialogContentEmits>();\nconst delegated = reactiveOmit(props, 'class');\nconst forwarded = useForwardPropsEmits(delegated, emits);\n</script>\n\n<template>\n <DrawerPortal>\n <ADrawerOverlay />\n <DrawerContent\n data-slot=\"drawer-content\"\n v-bind=\"{ ...$attrs, ...forwarded }\"\n :class=\"\n cn(\n 'bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] shadow-2xl shadow-black/30 outline-none',\n props.class\n )\n \"\n >\n <div class=\"bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full\" />\n <slot />\n </DrawerContent>\n </DrawerPortal>\n</template>\n"],"names":["forwarded","useForwardPropsEmits","__props","__emit","_openBlock","_createBlock","_unref","_mergeProps","_renderSlot","_ctx","useForwardProps","props","delegated","reactiveOmit","cn","emits","DrawerPortal","_createVNode","ADrawerOverlay","DrawerContent","$attrs","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAMA,IAAYC,EAJJC,GAGAC,CACqC;sBAIjDC,EAAA,GAAAC,EAEaC,MAFbC,EAEa,EAFD,aAAU,SAAA,GAAiBD,EAAAN,CAAA,CAAS,GAAA;AAAA,iBAC9C,MAAQ;AAAA,QAARQ,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;ACRZ,UAAMT,IAAYU,EADJR,CACyB;sBAIrCE,EAAA,GAAAC,EAEgBC,MAFhBC,EAEgB,EAFD,aAAU,iBAAA,GAAyBD,EAAAN,CAAA,CAAS,GAAA;AAAA,iBACzD,MAAQ;AAAA,QAARQ,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;ACFZ,UAAME,IAAQT,GACRU,IAAYC,EAAaF,GAAO,OAAO,GACvCX,IAAYU,EAAgBE,CAAS;sBAIzCR,EAAA,GAAAC,EASEC,MATFC,EASE,EARA,aAAU,iBAAA,GACFD,EAAAN,CAAA,GAAS;AAAA,MAChB,OAAcM,EAAAQ,CAAA;AAAA;QAA8KH,EAAM;AAAA,MAAA;AAAA;;;;;;;;;;;;;;ACNvM,UAAMA,IAAQT,GACRa,IAAQZ,GACRS,IAAYC,EAAaF,GAAO,OAAO,GACvCX,IAAYC,EAAqBW,GAAWG,CAAK;2BAIrDV,EAeeC,EAAAU,CAAA,GAAA,MAAA;AAAA,iBAdb,MAAkB;AAAA,QAAlBC,EAAkBC,CAAA;AAAA,QAClBD,EAYgBX,EAAAa,CAAA,GAZhBZ,EAYgB,EAXd,aAAU,iBAAA,GAAgB,EAAA,GACba,EAAAA,QAAM,GAAKd,EAAAN,CAAA,KAAS;AAAA,UAChC,OAAgBM,EAAAQ,CAAA;AAAA;YAA2JH,EAAM;AAAA,UAAA;AAAA;qBAOlL,MAAgE;AAAA,4BAAhEU,EAAgE,OAAA,EAA3D,OAAM,mDAAA,GAAkD,MAAA,EAAA;AAAA,YAC7Db,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;;;;"}
@@ -0,0 +1,113 @@
1
+ import { provide as g, inject as b, defineComponent as m, useModel as $, computed as o, openBlock as c, createBlock as i, resolveDynamicComponent as y, withCtx as u, renderSlot as v, unref as f, mergeModels as S, normalizeClass as k } from "vue";
2
+ import { useMediaQuery as _ } from "@vueuse/core";
3
+ import { _ as h, c as A, u as B, a as O } from "./useEventScrollLock-BcP8fg-L.mjs";
4
+ import { _ as P, c as R, a as x } from "./ADrawerContent.vue_vue_type_script_setup_true_lang-W28CSzER.mjs";
5
+ const C = Symbol(
6
+ "AResponsivePopoverContext"
7
+ );
8
+ function D(a) {
9
+ g(C, a);
10
+ }
11
+ function L() {
12
+ return b(C, null);
13
+ }
14
+ const I = /* @__PURE__ */ m({
15
+ __name: "AResponsivePopover",
16
+ props: /* @__PURE__ */ S({
17
+ breakpoint: { default: "(min-width: 768px)" },
18
+ modal: { type: Boolean, default: !0 },
19
+ scrollLock: { default: "events" }
20
+ }, {
21
+ open: { type: Boolean },
22
+ openModifiers: {}
23
+ }),
24
+ emits: ["update:open"],
25
+ setup(a) {
26
+ const e = a, s = $(a, "open"), t = _(() => e.breakpoint), l = o(() => t.value ? h : P), n = o(() => e.modal === !1 ? !1 : e.scrollLock === "body");
27
+ return D({
28
+ open: o(() => s.value ?? !1),
29
+ isDesktop: o(() => t.value),
30
+ scrollLock: o(() => e.scrollLock)
31
+ }), (d, r) => (c(), i(y(l.value), {
32
+ open: s.value,
33
+ "onUpdate:open": r[0] || (r[0] = (p) => s.value = p),
34
+ modal: n.value,
35
+ "data-slot": "responsive-popover"
36
+ }, {
37
+ default: u(() => [
38
+ v(d.$slots, "default", { isDesktop: f(t) })
39
+ ]),
40
+ _: 3
41
+ }, 40, ["open", "modal"]));
42
+ }
43
+ }), N = /* @__PURE__ */ m({
44
+ __name: "AResponsivePopoverTrigger",
45
+ props: {
46
+ breakpoint: { default: "(min-width: 768px)" },
47
+ asChild: { type: Boolean }
48
+ },
49
+ setup(a) {
50
+ const e = a, s = _(() => e.breakpoint), t = o(() => s.value ? A : R);
51
+ return (l, n) => (c(), i(y(t.value), {
52
+ "as-child": e.asChild,
53
+ "data-slot": "responsive-popover-trigger"
54
+ }, {
55
+ default: u(() => [
56
+ v(l.$slots, "default")
57
+ ]),
58
+ _: 3
59
+ }, 8, ["as-child"]));
60
+ }
61
+ }), V = /* @__PURE__ */ m({
62
+ __name: "AResponsivePopoverContent",
63
+ props: {
64
+ breakpoint: { default: "(min-width: 768px)" },
65
+ class: { type: [Boolean, null, String, Object, Array] },
66
+ popoverClass: { type: [Boolean, null, String, Object, Array] },
67
+ drawerClass: { type: [Boolean, null, String, Object, Array] },
68
+ overlay: { type: Boolean, default: !1 },
69
+ align: { default: "start" },
70
+ sideOffset: { default: 4 }
71
+ },
72
+ setup(a) {
73
+ const e = a, s = L(), t = _(() => e.breakpoint), l = o(() => s?.isDesktop.value ?? t.value), n = o(() => s?.scrollLock.value ?? "events"), d = o(() => n.value === "body"), r = o(() => [
74
+ e.class,
75
+ l.value ? e.popoverClass : e.drawerClass
76
+ ]);
77
+ return B({
78
+ allowedScrollContainer: () => typeof document > "u" ? [] : Array.from(
79
+ document.querySelectorAll('[data-responsive-popover-scroll-container="true"]')
80
+ ),
81
+ active: o(() => !!s?.open.value && l.value && n.value === "events")
82
+ }), (p, w) => l.value ? (c(), i(f(O), {
83
+ key: 0,
84
+ overlay: e.overlay,
85
+ "overlay-lock-scroll": d.value,
86
+ align: e.align,
87
+ "side-offset": e.sideOffset,
88
+ class: k(r.value),
89
+ "data-slot": "responsive-popover-content",
90
+ "data-responsive-popover-scroll-container": "true"
91
+ }, {
92
+ default: u(() => [
93
+ v(p.$slots, "default")
94
+ ]),
95
+ _: 3
96
+ }, 8, ["overlay", "overlay-lock-scroll", "align", "side-offset", "class"])) : (c(), i(f(x), {
97
+ key: 1,
98
+ class: k(r.value),
99
+ "data-slot": "responsive-popover-content"
100
+ }, {
101
+ default: u(() => [
102
+ v(p.$slots, "default")
103
+ ]),
104
+ _: 3
105
+ }, 8, ["class"]));
106
+ }
107
+ });
108
+ export {
109
+ I as _,
110
+ V as a,
111
+ N as b
112
+ };
113
+ //# sourceMappingURL=AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BrBsDiHc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AResponsivePopoverContent.vue_vue_type_script_setup_true_lang-BrBsDiHc.mjs","sources":["../../entries/responsive-popover/composables/useResponsivePopoverContext.ts","../../entries/responsive-popover/components/AResponsivePopover.vue","../../entries/responsive-popover/components/AResponsivePopoverTrigger.vue","../../entries/responsive-popover/components/AResponsivePopoverContent.vue"],"sourcesContent":["import { inject, provide, type ComputedRef, type InjectionKey } from 'vue';\nimport type { ScrollLockMode } from '../components/AResponsivePopover.vue';\n\nexport interface ResponsivePopoverContext {\n open: ComputedRef<boolean>;\n isDesktop: ComputedRef<boolean>;\n scrollLock: ComputedRef<ScrollLockMode>;\n}\n\nconst RESPONSIVE_POPOVER_CONTEXT: InjectionKey<ResponsivePopoverContext> = Symbol(\n 'AResponsivePopoverContext'\n);\n\nexport function provideResponsivePopoverContext(ctx: ResponsivePopoverContext) {\n provide(RESPONSIVE_POPOVER_CONTEXT, ctx);\n}\n\nexport function useResponsivePopoverContext(): ResponsivePopoverContext | null {\n return inject(RESPONSIVE_POPOVER_CONTEXT, null);\n}\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopover } from '@/entries/popover';\nimport { ADrawer } from '@/entries/drawer';\nimport { provideResponsivePopoverContext } from '../composables/useResponsivePopoverContext';\n\nexport type ScrollLockMode = 'events' | 'body' | 'none';\n\nconst props = withDefaults(\n defineProps<{\n /** CSS media query for the desktop break. Below this width we render a vaul drawer. */\n breakpoint?: string;\n /**\n * @deprecated prefer `scrollLock`. Kept for back-compat: `modal=false` is a shorthand\n * for `scrollLock=\"none\"` (tooltip-style popover). `modal=true` (default) defers to\n * `scrollLock`, which controls how page scroll is blocked.\n */\n modal?: boolean;\n /**\n * How desktop page scroll is blocked while the popover is open:\n * - `'events'` (default) — wheel/touch/keyboard intercepted at document level.\n * Page scrollbar stays visible; `position: sticky` keeps working.\n * - `'body'` — legacy `document.body.style.overflow='hidden'` lock. Use when the\n * page must reflow as the scrollbar goes away.\n * - `'none'` — no page-scroll lock at all.\n *\n * Drawer (mobile) branch is unaffected — vaul-vue owns its own lock.\n */\n scrollLock?: ScrollLockMode;\n }>(),\n { breakpoint: '(min-width: 768px)', modal: true, scrollLock: 'events' }\n);\n\nconst open = defineModel<boolean>('open');\n\nconst isDesktop = useMediaQuery(() => props.breakpoint);\n\n/**\n * Pre-imported on both branches — do NOT lazy-load. Switching the component identity at runtime\n * means we still hydrate the right tree client-side.\n */\nconst Root = computed(() => (isDesktop.value ? APopover : ADrawer));\n\n/**\n * Only `scrollLock='body'` triggers reka-ui's `PopoverContentModal` (and its\n * `useBodyScrollLock`). For `'events'` we install our own document-level event lock in\n * `AResponsivePopoverContent`. For `'none'` nothing locks. Legacy `modal=false` still\n * forces non-modal regardless of `scrollLock`.\n */\nconst rekaModal = computed(() => {\n if (props.modal === false) return false;\n return props.scrollLock === 'body';\n});\n\nprovideResponsivePopoverContext({\n open: computed(() => open.value ?? false),\n isDesktop: computed(() => isDesktop.value),\n scrollLock: computed(() => props.scrollLock),\n});\n</script>\n\n<template>\n <component :is=\"Root\" v-model:open=\"open\" :modal=\"rekaModal\" data-slot=\"responsive-popover\">\n <slot :is-desktop=\"isDesktop\" />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopoverTrigger } from '@/entries/popover';\nimport { ADrawerTrigger } from '@/entries/drawer';\n\nconst props = withDefaults(\n defineProps<{\n breakpoint?: string;\n asChild?: boolean;\n }>(),\n { breakpoint: '(min-width: 768px)' }\n);\n\nconst isDesktop = useMediaQuery(() => props.breakpoint);\nconst Trigger = computed(() => (isDesktop.value ? APopoverTrigger : ADrawerTrigger));\n</script>\n\n<template>\n <component :is=\"Trigger\" :as-child=\"props.asChild\" data-slot=\"responsive-popover-trigger\">\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\nimport { computed } from 'vue';\nimport { useMediaQuery } from '@vueuse/core';\nimport { APopoverContent, useEventScrollLock } from '@/entries/popover';\nimport { ADrawerContent } from '@/entries/drawer';\nimport { useResponsivePopoverContext } from '../composables/useResponsivePopoverContext';\n\nconst props = withDefaults(\n defineProps<{\n breakpoint?: string;\n /** Classes applied on both branches. Avoid width / inset classes here. */\n class?: HTMLAttributes['class'];\n /** Classes applied only when the popover (desktop) branch is rendered. */\n popoverClass?: HTMLAttributes['class'];\n /** Classes applied only when the drawer (mobile) branch is rendered. */\n drawerClass?: HTMLAttributes['class'];\n /**\n * Render the dimmed overlay on the desktop popover branch. Defaults to `false` — popovers\n * on desktop are non-modal-looking by convention. The mobile drawer always has its own\n * overlay (vaul-vue's `DrawerOverlay`) regardless of this prop.\n */\n overlay?: boolean;\n align?: 'start' | 'center' | 'end';\n sideOffset?: number;\n }>(),\n {\n breakpoint: '(min-width: 768px)',\n align: 'start',\n sideOffset: 4,\n overlay: false,\n }\n);\n\nconst ctx = useResponsivePopoverContext();\n\n// Prefer the root's media query (so both layers agree). Fall back to a local one when this\n// component is used outside `AResponsivePopover` (unusual but supported).\nconst fallbackIsDesktop = useMediaQuery(() => props.breakpoint);\nconst isDesktop = computed(() => ctx?.isDesktop.value ?? fallbackIsDesktop.value);\n\nconst scrollLockMode = computed(() => ctx?.scrollLock.value ?? 'events');\nconst overlayLockScroll = computed(() => scrollLockMode.value === 'body');\n\nconst mergedClass = computed(() => [\n props.class,\n isDesktop.value ? props.popoverClass : props.drawerClass,\n]);\n\n// Sticky-safe scroll lock — only active while the popover is open on desktop and the root\n// asked for the event-based strategy. The getter resolves every responsive popover content\n// element currently in the DOM, which lets stacked popovers share the lock cleanly.\nuseEventScrollLock({\n allowedScrollContainer: () => {\n if (typeof document === 'undefined') return [];\n return Array.from(\n document.querySelectorAll<HTMLElement>('[data-responsive-popover-scroll-container=\"true\"]')\n );\n },\n active: computed(() => !!ctx?.open.value && isDesktop.value && scrollLockMode.value === 'events'),\n});\n</script>\n\n<template>\n <APopoverContent\n v-if=\"isDesktop\"\n :overlay=\"props.overlay\"\n :overlay-lock-scroll=\"overlayLockScroll\"\n :align=\"props.align\"\n :side-offset=\"props.sideOffset\"\n :class=\"mergedClass\"\n data-slot=\"responsive-popover-content\"\n data-responsive-popover-scroll-container=\"true\"\n >\n <slot />\n </APopoverContent>\n <ADrawerContent v-else :class=\"mergedClass\" data-slot=\"responsive-popover-content\">\n <slot />\n </ADrawerContent>\n</template>\n"],"names":["RESPONSIVE_POPOVER_CONTEXT","provideResponsivePopoverContext","ctx","provide","useResponsivePopoverContext","inject","props","__props","open","_useModel","isDesktop","useMediaQuery","Root","computed","APopover","ADrawer","rekaModal","_openBlock","_createBlock","_resolveDynamicComponent","$event","_renderSlot","_ctx","_unref","Trigger","APopoverTrigger","ADrawerTrigger","fallbackIsDesktop","scrollLockMode","overlayLockScroll","mergedClass","useEventScrollLock","APopoverContent","ADrawerContent"],"mappings":";;;;AASA,MAAMA,IAAqE;AAAA,EACzE;AACF;AAEO,SAASC,EAAgCC,GAA+B;AAC7E,EAAAC,EAAQH,GAA4BE,CAAG;AACzC;AAEO,SAASE,IAA+D;AAC7E,SAAOC,EAAOL,GAA4B,IAAI;AAChD;;;;;;;;;;;;;ACVA,UAAMM,IAAQC,GAyBRC,IAAOC,EAAoBF,GAAC,MAAM,GAElCG,IAAYC,EAAc,MAAML,EAAM,UAAU,GAMhDM,IAAOC,EAAS,MAAOH,EAAU,QAAQI,IAAWC,CAAQ,GAQ5DC,IAAYH,EAAS,MACrBP,EAAM,UAAU,KAAc,KAC3BA,EAAM,eAAe,MAC7B;AAED,WAAAL,EAAgC;AAAA,MAC9B,MAAMY,EAAS,MAAML,EAAK,SAAS,EAAK;AAAA,MACxC,WAAWK,EAAS,MAAMH,EAAU,KAAK;AAAA,MACzC,YAAYG,EAAS,MAAMP,EAAM,UAAU;AAAA,IAAA,CAC5C,cAICW,KAAAC,EAEYC,EAFIP,EAAA,KAAI,GAAA;AAAA,MAAU,MAAMJ,EAAA;AAAA,8CAAAA,EAAI,QAAAY;AAAA,MAAG,OAAOJ,EAAA;AAAA,MAAW,aAAU;AAAA,IAAA;iBACrE,MAAgC;AAAA,QAAhCK,EAAgCC,EAAA,QAAA,WAAA,EAAzB,WAAYC,EAAAb,CAAA,EAAA,CAAS;AAAA,MAAA;;;;;;;;;;;AC1DhC,UAAMJ,IAAQC,GAQRG,IAAYC,EAAc,MAAML,EAAM,UAAU,GAChDkB,IAAUX,EAAS,MAAOH,EAAU,QAAQe,IAAkBC,CAAe;sBAIjFT,KAAAC,EAEYC,EAFIK,EAAA,KAAO,GAAA;AAAA,MAAG,YAAUlB,EAAM;AAAA,MAAS,aAAU;AAAA,IAAA;iBAC3D,MAAQ;AAAA,QAARe,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;;;;;;;;;;;;ACZZ,UAAMhB,IAAQC,GA0BRL,IAAME,EAAA,GAINuB,IAAoBhB,EAAc,MAAML,EAAM,UAAU,GACxDI,IAAYG,EAAS,MAAMX,GAAK,UAAU,SAASyB,EAAkB,KAAK,GAE1EC,IAAiBf,EAAS,MAAMX,GAAK,WAAW,SAAS,QAAQ,GACjE2B,IAAoBhB,EAAS,MAAMe,EAAe,UAAU,MAAM,GAElEE,IAAcjB,EAAS,MAAM;AAAA,MACjCP,EAAM;AAAA,MACNI,EAAU,QAAQJ,EAAM,eAAeA,EAAM;AAAA,IAAA,CAC9C;AAKD,WAAAyB,EAAmB;AAAA,MACjB,wBAAwB,MAClB,OAAO,WAAa,MAAoB,CAAA,IACrC,MAAM;AAAA,QACX,SAAS,iBAA8B,mDAAmD;AAAA,MAAA;AAAA,MAG9F,QAAQlB,EAAS,MAAM,CAAC,CAACX,GAAK,KAAK,SAASQ,EAAU,SAASkB,EAAe,UAAU,QAAQ;AAAA,IAAA,CACjG,aAKSlB,EAAA,cADRQ,EAWkBK,EAAAS,CAAA,GAAA;AAAA;MATf,SAAS1B,EAAM;AAAA,MACf,uBAAqBuB,EAAA;AAAA,MACrB,OAAOvB,EAAM;AAAA,MACb,eAAaA,EAAM;AAAA,MACnB,SAAOwB,EAAA,KAAW;AAAA,MACnB,aAAU;AAAA,MACV,4CAAyC;AAAA,IAAA;iBAEzC,MAAQ;AAAA,QAART,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;wFAEVJ,EAEiBK,EAAAU,CAAA,GAAA;AAAA;MAFO,SAAOH,EAAA,KAAW;AAAA,MAAE,aAAU;AAAA,IAAA;iBACpD,MAAQ;AAAA,QAART,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}