@inntechcorp/it-design 4.0.0-beta.4 → 4.0.0-beta.5

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,105 @@
1
+ # Changelog
2
+
3
+ What changed between two builds, without reading git log. The log starts at
4
+ `4.0.0-beta.3`; earlier v4 history lives in git and [MIGRATION.md](MIGRATION.md)
5
+ carries the v3 to v4 story. Convention from here on: every version bump adds
6
+ its entry at the top, grouped as **Breaking / Added / Fixed**, one line per
7
+ change, written for the consumer (what they see, not which file moved).
8
+
9
+ ## 4.0.0-beta.5 (2026-09-02)
10
+
11
+ ### Added
12
+
13
+ - **CompletionPanel**: the forced post-login step (login-method migration's
14
+ front door). Eyebrow chip, hint, site-composed fields inside the panel's
15
+ form, and the grace/forced split: skip + deadline while `skippable`, the
16
+ forced sentence after.
17
+ - **HubSecurity**: the hub's Sign-in & security screen - its own Ayarlar
18
+ tab with identity/method rows, state badges and one action per row; the
19
+ list wears the hub row surface via `--itd-hub-security-bg` (falls back to
20
+ `--site-hub-security-bg`, then the shared balance-row token).
21
+ - **SignupPanel**: the registration ENGINE from the auth design canvas. The
22
+ panel takes the brand's field table (name/kind/required/step/options,
23
+ readonly facts, collapsed reveals, password confirm twins, the
24
+ auto-suggested nickname) and derives the screens itself: identity →
25
+ verify → credentials → profile, rendered as one form (`layout="single"`),
26
+ one step at a time (`layout="steps"`, site-controlled `step` with chip
27
+ progress), or with the code inside the form
28
+ (`verificationTiming="in_form"` - cells unlock when required fields are
29
+ filled and the code rides the payload). Wears the login shell.
30
+ - **LoginPanel v2** (the auth design canvas, additively): multi-identity
31
+ tabs (`identifiers` + per-identifier labels/placeholders), alternate
32
+ methods under an OR divider (`alternates`/`onAlternate`), the magic-link
33
+ waiting room (`step="link-sent"`), a passkey variant (`variant="passkey"`),
34
+ the password-fallback identity row (allow_password + `username` shows
35
+ the identifier as a fact with a change action), and the create-account
36
+ footer (`newHere`/`createAccount`/`onCreateAccount`) on the screens a new
37
+ visitor can land on. Sites passing yesterday's props render yesterday's
38
+ panel.
39
+
40
+ ### Fixed
41
+
42
+ - Opening a standalone Sheet no longer jumps a scrolled page to the top.
43
+ Every sheet now runs non-modal and holds the library's own scroll lock
44
+ (root `overflowY: hidden` + gutter compensation) instead of Vaul's
45
+ body `position: fixed`; the sheet also traps its own focus, on both the
46
+ standalone and embedded paths.
47
+
48
+ ## 4.0.0-beta.4 (2026-08-18)
49
+
50
+ ### Breaking
51
+
52
+ - The stock DARK theme now seeds from the Neutral preset (true grey), matching
53
+ light. It was Slate (blue-tinted) by accident of history; pass
54
+ `surfaceBase` with the Slate preset value to keep the old look.
55
+ - `useITD().brokenImage` / `changeBrokenImage` removed. Dead since v3.1.5;
56
+ Image renders its own broken state (`brokenWidth`/`brokenHeight`).
57
+
58
+ ### Added
59
+
60
+ - **LineChart**: themed chart layer over recharts. Series colors come from
61
+ `--itd-chart-series-*` tokens (semantic fallbacks: primary/success/error/
62
+ neutral), grid/ticks/tooltip/legend are DS surfaces, tokens are read
63
+ realm-aware from the chart's own document. `formatTooltipTitle(value, row)`
64
+ formats the tooltip title separately from the axis tick (falls back to
65
+ `formatXTick`). `mobile="expand"` swaps the chart for a tappable POSTER
66
+ on touch devices (dimmed preview + centered "open chart" button); tapping
67
+ opens a fullscreen fake-landscape viewer (CSS-rotated while portrait, with
68
+ a self-fading "rotate your phone" coach mark) panned by native horizontal
69
+ scroll, closed top-right - a pure view: filters and range pickers stay on
70
+ the page.
71
+ - **StatCard**: the back-office summary box. Amount value with count-up,
72
+ trend arrows or a custom glyph, info Popover (desktop) / bottom Sheet
73
+ (touch), multi-value mode where the labels switch the value, widths
74
+ reserved up front so the counter never resizes the box. Info popover width
75
+ overridable via `--itd-stat-card-info-max-width`.
76
+ - **Table sorting**: `sortable` on table/columns, controlled or uncontrolled
77
+ `sort`, client and `server` modes, locale-aware natural comparison, 3-state
78
+ cycle (asc / desc / off), `sortValue`/`sorter` escape hatches.
79
+ - **Table expansion**: rows identified by stable paths, controlled
80
+ `expandedKeys`, `loading` (spinner keeps rows in place, `inert` below) and
81
+ `emptyContent`, horizontal scroll with a keyboard-reachable scroller.
82
+ - **Badge override tokens**: `--itd-badge-text`, `--itd-badge-font-weight`
83
+ (the code-input instance-override pattern).
84
+ - `accentHeader` on Table; `overflow` on Tabs; `multipleOf` form validator.
85
+ - **COMPONENTS.md** (export to file to one-sentence index) and a THEMING.md
86
+ "Consumer pitfalls" section.
87
+
88
+ ### Fixed
89
+
90
+ - dist `.d.ts` no longer collapses 11 optional props to `undefined` (the
91
+ ghost "string is not assignable to undefined" consumer errors) - a paths
92
+ mapping poisoned declaration emit; pack-smoke now guards the bundle.
93
+ - `locked` no longer leaks to the DOM from Form.Control/Form.Item injection
94
+ (the React warning every form logged once per page).
95
+ - Alert keeps ALL loose children: interpolations like `Count: {n}` no longer
96
+ lose everything after the first text node, `{0}` renders, and an element
97
+ inside running text is content, not the icon.
98
+ - Inputs no longer lock up when `autoComplete` is unset; jackpot strip
99
+ arrows and fade restored; button padding ramp rejoined the size scale
100
+ (8/12/12/16/16/20); dead token scale removed.
101
+ - Global `a:hover` underline removed - the underline belongs to the link
102
+ variant. Table headers read as text at one type step below their cells.
103
+ - StatCard: currency values weigh semibold like the row; the selected
104
+ multi-mode label uses the theme's selected-item ink (brighter than hover
105
+ on dark).
package/MIGRATION.md CHANGED
@@ -143,6 +143,19 @@ temalı bir kırık görsel gerekiyorsa Image'in kendi prop'ları kullanılmalı
143
143
 
144
144
  ---
145
145
 
146
+ ## 9. Beta içi not: stok DARK tema artık nötr
147
+
148
+ `4.0.0-beta.4` itibarıyla tohum verilmeyen dark tema **Neutral** preset'inden
149
+ (saf gri) türer; önceki betalarda Slate (mavi tintli) idi. Light zaten nötrdü,
150
+ iki mod artık simetrik. Eski lacivert karakteri isteyen tüketici bunu açıkça
151
+ seçer:
152
+
153
+ ```tsx
154
+ <ITDProvider theme="dark" surfaceBase="oklch(0.44 0.04 260)" /* Slate */ >
155
+ ```
156
+
157
+ ---
158
+
146
159
  ## Özet: deprecated alias'lar (beta süresince çalışır)
147
160
 
148
161
  - `resources` → `locales`
package/README.md CHANGED
@@ -1,58 +1,77 @@
1
1
  # ITD Design System
2
2
 
3
- > Modern, accessible, and composable React component library
3
+ > Modern, erişilebilir ve kompozisyona dayalı React bileşen kütüphanesi
4
4
 
5
5
  [![Version](https://img.shields.io/npm/v/@inntechcorp/it-design)](https://www.npmjs.com/package/@inntechcorp/it-design)
6
6
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](./LICENSE)
7
7
  [![WCAG 2.1 AA](https://img.shields.io/badge/WCAG-2.1%20AA-green.svg)](https://www.w3.org/WAI/WCAG21/quickref/)
8
8
 
9
- **ITD Design System** is the production UI library behind Inn.Tech websites: theme-driven CSS (OKLCH, light/dark), shadcn-style composition, WCAG 2.1 AA accessibility.
9
+ **ITD Design System**, Inn.Tech sitelerinin ve panellerinin arkasındaki üretim UI
10
+ kütüphanesidir: iki tohumdan türeyen OKLCH tema motoru (light/dark), shadcn tarzı
11
+ kompozisyon, WCAG 2.1 AA erişilebilirlik, iframe/panel gömmelerinde doğru çalışan
12
+ realm-aware overlay'ler, site blokları (slider, oyun vitrinleri, footer, user hub,
13
+ sayfa editörü) ve panel bileşenleri (StatCard, Table, Charts).
10
14
 
11
- Upgrading from v3? See [MIGRATION.md](./MIGRATION.md).
15
+ v3'ten mi geliyorsunuz? [MIGRATION.md](./MIGRATION.md) ve aşağıdaki
16
+ "V4'e Geçiş Süreci" bölümüne bakın.
12
17
 
13
- ## Requirements
18
+ ## Sürümler
14
19
 
15
- - **React 19.1+** and **react-dom 19.1+** (peer dependencies)
16
- - **i18next** and **react-i18next** (peer dependencies; form validation messages come from an i18next namespace you register once, see step 3)
20
+ | npm tag | Sürüm | Kim için |
21
+ | -------- | ------------- | --------------------------------------------------- |
22
+ | `latest` | `3.1.x` | Mevcut v3 siteleri (bakım modunda) |
23
+ | `next` | `4.0.0-beta.x`| Aktif geliştirme hattı: tüm yeni bileşenler burada |
17
24
 
18
- npm 7+ installs peer dependencies automatically. With Yarn 1, add them yourself.
25
+ İki build arasında ne değiştiğini [CHANGELOG.md](./CHANGELOG.md) anlatır
26
+ (her sürümde Breaking / Added / Fixed olarak).
19
27
 
20
- ## Installation
28
+ ## Gereksinimler
29
+
30
+ - **React 19.1+** ve **react-dom 19.1+** (peer dependency)
31
+ - **i18next** ve **react-i18next** (peer dependency; form doğrulama mesajları
32
+ bir kez kaydettiğiniz i18next namespace'inden gelir, bkz. Hızlı Başlangıç 3. adım)
33
+
34
+ npm 7+ peer dependency'leri kendisi kurar. Yarn 1 kullanıyorsanız elle ekleyin.
35
+
36
+ ## Kurulum
21
37
 
22
38
  ```bash
23
- # npm
24
- npm install @inntechcorp/it-design
39
+ # v4 beta (onerilen: yeni projeler ve panel)
40
+ npm install @inntechcorp/it-design@next
25
41
 
26
- # yarn (add the peers explicitly)
27
- yarn add @inntechcorp/it-design react react-dom i18next react-i18next
42
+ # v3 (mevcut siteler)
43
+ npm install @inntechcorp/it-design
28
44
 
29
- # pnpm
30
- pnpm add @inntechcorp/it-design
45
+ # yarn (peer'lari elle ekleyin)
46
+ yarn add @inntechcorp/it-design@next react react-dom i18next react-i18next
31
47
  ```
32
48
 
33
- ## Quick Start
49
+ ## Hızlı Başlangıç
34
50
 
35
- **1. Import the stylesheet once, at your app root.** There is no runtime style injection; skipping this renders every component unstyled.
51
+ **1. Stylesheet'i uygulama kökünde bir kez import edin.** Runtime'da stil
52
+ enjeksiyonu yoktur; bu adımı atlarsanız her bileşen stilsiz render olur.
36
53
 
37
54
  ```tsx
38
55
  import '@inntechcorp/it-design/global.css';
39
56
  ```
40
57
 
41
- **2. Wrap your app in `ITDProvider`.** It already mounts the toast `Toaster` and the modal provider, do not add your own.
58
+ **2. Uygulamayı `ITDProvider` ile sarın.** Toast (`Toaster`) ve modal provider
59
+ kendisi mount eder, kendinizinkini eklemeyin.
42
60
 
43
61
  ```tsx
44
62
  import { ITDProvider } from '@inntechcorp/it-design';
45
63
 
46
64
  function App() {
47
65
  return (
48
- <ITDProvider theme="light" language="en" country="tr">
66
+ <ITDProvider theme="dark" language="tr" country="tr">
49
67
  <YourApp />
50
68
  </ITDProvider>
51
69
  );
52
70
  }
53
71
  ```
54
72
 
55
- **3. Initialize i18next before rendering any `<Form>`.** The library exports its locales for you to register:
73
+ **3. Herhangi bir `<Form>` render etmeden önce i18next'i başlatın.** Kütüphane
74
+ locale'lerini sizin kaydetmeniz için export eder:
56
75
 
57
76
  ```tsx
58
77
  import i18next from 'i18next';
@@ -60,34 +79,66 @@ import { initReactI18next } from 'react-i18next';
60
79
  import { locales } from '@inntechcorp/it-design';
61
80
 
62
81
  i18next.use(initReactI18next).init({
63
- lng: 'en',
82
+ lng: 'tr',
64
83
  fallbackLng: 'en',
65
- resources: locales, // tr + en, namespaces: itd, calendar
84
+ resources: locales, // tr + en, namespace'ler: itd, calendar
66
85
  ns: ['itd', 'calendar'],
67
86
  defaultNS: 'itd',
68
87
  interpolation: { escapeValue: false },
69
88
  });
70
89
  ```
71
90
 
72
- **4. Use a component:**
91
+ **4. Bileşen kullanın:**
73
92
 
74
93
  ```tsx
75
94
  import { Button, Input, Card, CardHeader, CardTitle, CardContent } from '@inntechcorp/it-design';
76
95
 
77
96
  <Card>
78
97
  <CardHeader>
79
- <CardTitle>Hello</CardTitle>
98
+ <CardTitle>Merhaba</CardTitle>
80
99
  </CardHeader>
81
100
  <CardContent>
82
- <Input placeholder="Enter text..." />
83
- <Button variant="filled">Save</Button>
101
+ <Input placeholder="Bir şeyler yazın..." />
102
+ <Button variant="filled">Kaydet</Button>
84
103
  </CardContent>
85
104
  </Card>;
86
105
  ```
87
106
 
88
- ## Fonts
107
+ ## Tema
108
+
109
+ Tüm renk sistemi **iki tohumdan** türer: `surfaceBase` (zemin karakteri) ve
110
+ `primaryBase` (marka rengi). ~130 token OKLCH matematiğiyle üretilir ve
111
+ on-color'lar kontrast ölçümünden geçer.
112
+
113
+ ```tsx
114
+ <ITDProvider
115
+ theme="dark"
116
+ surfaceBase="oklch(0.44 0.04 260)" // Slate preset'i: lacivert karakter
117
+ primaryBase="oklch(0.62 0.18 250)" // marka mavisi
118
+ >
119
+ ```
89
120
 
90
- The default `--itd-font-sans` stack leads with **Geist**, but the package ships no `@font-face` rules. Either load Geist yourself (for example with `next/font`) or override the variable, otherwise you silently fall back to the system font:
121
+ Bilinmesi gerekenler:
122
+
123
+ - **Stok tema her iki modda da nötr gridir.** Renk tonu (slate, midnight, marka
124
+ laciverti) her zaman bilinçli bir seçimdir, kaza değil. Hazır yüzey
125
+ preset'leri: `neutral`, `stone`, `gray`, `slate`, `zinc`, `midnight`.
126
+ - **Site pinleri** `customTheme` ile verilir (görünüm başına kesin değerler,
127
+ `{token}` referansları desteklenir). tweakcn/shadcn temaları
128
+ `importShadcnTheme` ile içeri alınabilir.
129
+ - **Instance-override token kalıbı:** bileşenlerin bir kısmı, tek instance'ı
130
+ tema dokunmadan özelleştirmek için dokümante CSS değişkenleri taşır
131
+ (`--itd-badge-text`, `--itd-stat-card-bg`, `--itd-chart-series-1..4`,
132
+ `--itd-stat-card-info-max-width` gibi). Her bileşenin token listesi kendi
133
+ CSS dosyasının başındadır.
134
+ - Yerleşim kuralları ve karar tablosu için:
135
+ [THEMING.md](./lib/helpers/theme/THEMING.md) (İngilizce).
136
+
137
+ ## Yazı Tipleri
138
+
139
+ Varsayılan `--itd-font-sans` yığını **Geist** ile başlar ama paket `@font-face`
140
+ kuralı taşımaz. Geist'i kendiniz yükleyin (örn. `next/font`) veya değişkeni
141
+ override edin; yoksa sessizce sistem fontuna düşersiniz:
91
142
 
92
143
  ```css
93
144
  :root {
@@ -95,20 +146,20 @@ The default `--itd-font-sans` stack leads with **Geist**, but the package ships
95
146
  }
96
147
  ```
97
148
 
98
- ## Routing
149
+ ## Yönlendirme (Routing)
99
150
 
100
- **The library brings no router.** `<Button href>`, `<ALink>`, link tabs and the
101
- accordion render real anchors, and with nothing configured the browser
102
- navigates them - a static site or a Next.js app needs no setup at all.
151
+ **Kütüphane router getirmez.** `<Button href>`, `<ALink>`, link sekmeleri ve
152
+ akordeon gerçek anchor render eder; hiçbir şey yapılandırılmazsa tarayıcı
153
+ navigasyonu çalışır (statik site veya Next.js için kurulum gerekmez).
103
154
 
104
- To navigate through your own router instead, hand ITD an adapter once:
155
+ Kendi router'ınızla gezinmek için ITD'ye bir kez adapter verin:
105
156
 
106
157
  ```tsx
107
- import { useLocation, useNavigate } from 'react-router-dom'; // or yours
158
+ import { useLocation, useNavigate } from 'react-router-dom'; // veya sizinki
108
159
 
109
160
  function Providers({ children }) {
110
- // build it INSIDE a component your router re-renders on navigation:
111
- // `location` is a value, and its identity is the reactivity signal
161
+ // Router'inizin navigasyonda yeniden render ettigi bir bilesenin ICINDE kurun:
162
+ // `location` bir deger ve kimligi reaktivite sinyalidir
112
163
  const location = useLocation();
113
164
  const navigate = useNavigate();
114
165
  const router = useMemo(
@@ -120,42 +171,109 @@ function Providers({ children }) {
120
171
  }
121
172
  ```
122
173
 
123
- `href` maps an app path to the rendered href (basenames, locale prefixes) and
124
- `Link` lets a framework's own component (next/link) take over navigation.
125
- The same seam is available directly: `useITDLocation`, `useITDNavigate`,
126
- `useITDSearchParams` and `ITDLink`.
174
+ `href` bir uygulama yolunu render edilecek href'e çevirir (basename, locale
175
+ öneki), `Link` ise navigasyonu framework'ün kendi bileşenine (next/link)
176
+ devretmenizi sağlar. Aynı dikiş doğrudan da kullanılabilir: `useITDLocation`,
177
+ `useITDNavigate`, `useITDSearchParams`, `ITDLink`.
127
178
 
128
- ## CSS entry points
179
+ ## CSS giriş noktaları
129
180
 
130
181
  ```tsx
131
- // Option 1: everything (recommended)
182
+ // Secenek 1: hepsi (onerilen)
132
183
  import '@inntechcorp/it-design/global.css';
133
184
 
134
- // Option 2: a la carte
135
- import '@inntechcorp/it-design/css/properties.css'; // registered custom properties
136
- import '@inntechcorp/it-design/css/reset.css'; // reset layer
137
- import '@inntechcorp/it-design/css/base.css'; // design tokens
138
- import '@inntechcorp/it-design/css/components.css'; // shared component transitions
139
- import '@inntechcorp/it-design/css/button.css'; // one file per component you use
140
- import '@inntechcorp/it-design/css/vendor.css'; // needed by TinyScrollbar + carousel blocks
141
- import '@inntechcorp/it-design/css/utilities.css'; // optional; skip if using Tailwind
185
+ // Secenek 2: a la carte
186
+ import '@inntechcorp/it-design/css/properties.css'; // kayitli custom property'ler
187
+ import '@inntechcorp/it-design/css/reset.css'; // reset katmani
188
+ import '@inntechcorp/it-design/css/base.css'; // tasarim token'lari
189
+ import '@inntechcorp/it-design/css/components.css'; // paylasilan gecis siniflari
190
+ import '@inntechcorp/it-design/css/button.css'; // kullandiginiz her bilesen icin bir dosya
191
+ import '@inntechcorp/it-design/css/vendor.css'; // TinyScrollbar + carousel bloklari icin
192
+ import '@inntechcorp/it-design/css/utilities.css'; // opsiyonel; Tailwind varsa atlayin
142
193
  ```
143
194
 
144
- Note that `components.css` holds only shared transition classes; each component's real styles live in its own file (`button.css`, `input.css`, `select.css`, ...). `global.css` bundles all of them, prefixed and minified, and is the recommended path.
145
-
146
- ## Components
147
-
148
- Layout and structure: `Card`, `Flex`, `Separator`, `Tabs`, `Accordion` · Forms: `Form`, `Field`, `Input`, `TextArea`, `Select`, `Checkbox`, `RadioGroup`, `Switch`, `Upload`, `DatePicker`, `RangePicker`, `Calendar`, `CodeInput`, `ColorInput`, `Amount` · Feedback: `Alert`, `Modal` (`useModal`), `Toaster`/`toast`, `Spin`, `Progress`, `Skeleton`, `Result`, `Badge` · Overlay: `Tooltip`, `Popover`, `HoverCard`, `DropdownMenu`, `ContextMenu`, `Sheet` · Data: `Table`, `Avatar`, `Image`, `TinyScrollbar` · plus the `blocks/` site sections (sliders, game carousels, footers, user hub, page editor). Browse them all in Storybook.
149
-
150
- ## Documentation
151
-
152
- - [Accessibility Guide](./ACCESSIBILITY.md) - WCAG compliance, keyboard navigation, screen reader support (ships with the package)
153
- - [Migration Guide](./MIGRATION.md) - v3 to v4 breaking changes (ships with the package)
154
- - [CSS Guide](./lib/GLOBAL-CSS-README.md) - modular CSS, design tokens, utilities (repo only)
155
- - Storybook - component playground; run `yarn storybook` in the repo
156
-
157
- ## License
195
+ `components.css` yalnızca paylaşılan geçiş sınıflarını tutar; her bileşenin
196
+ gerçek stilleri kendi dosyasındadır (`button.css`, `input.css`, `select.css`,
197
+ `chart.css`, ...). `global.css` hepsini paketler ve önerilen yoldur. Ayrıntı:
198
+ [Global CSS Kılavuzu](./lib/GLOBAL-CSS-README.md).
199
+
200
+ ## Bileşenler
201
+
202
+ - **Yerleşim ve yapı:** `Card`, `Flex`, `Separator`, `Tabs`, `Accordion`
203
+ - **Form:** `Form`, `Field`, `Input`, `TextArea`, `Select`, `Checkbox`,
204
+ `RadioGroup`, `Switch`, `Upload`, `DatePicker`, `RangePicker`, `Calendar`,
205
+ `CodeInput`, `ColorInput`, `Amount`
206
+ - **Geri bildirim:** `Alert`, `Modal` (`useModal`), `Toaster`/`toast`, `Spin`,
207
+ `Progress`, `Skeleton`, `Result`, `Badge`
208
+ - **Overlay:** `Tooltip`, `Popover`, `HoverCard`, `DropdownMenu`,
209
+ `ContextMenu`, `Dialog`, `Sheet`
210
+ - **Veri:** `Table` (sıralama, satır genişletme, loading/empty), `StatCard`
211
+ (panel özet kutusu), **Charts** (`LineChart`: token'lı seri renkleri,
212
+ Amount'lu tooltip, `mobile="expand"` ile mobilde tam ekran görüntüleyici),
213
+ `Avatar`, `Image`, `TinyScrollbar`
214
+ - **Site blokları:** `blocks/` altındaki sayfa bölümleri (slider'lar, oyun
215
+ vitrinleri, header/footer, user hub, turnuvalar, sayfa editörü köprüsü)
216
+
217
+ Dokunmatik cihaz davranışları (`hover` kapıları, StatCard'ın alt-sheet'i,
218
+ chart'ın tam ekran görüntüleyicisi) provider'ın işaretlediği `.itd-touch`
219
+ realm'inden okunur; ekstra kurulum gerekmez.
220
+
221
+ Eksiksiz envanter için: [COMPONENTS.md](./COMPONENTS.md) (İngilizce; export,
222
+ dosya ve tek cümlelik açıklama eşlemesi). Oynamak için: repo'da
223
+ `yarn storybook`.
224
+
225
+ ## V4'e Geçiş Süreci
226
+
227
+ Durum: v4 aktif geliştirmede ve **`next` tag'inde** yayınlanıyor; `latest` v3
228
+ hattında sabit. Beta süresince deprecated alias'lar çalışır, stable öncesi
229
+ kaldırılır.
230
+
231
+ Önerilen sıra:
232
+
233
+ 1. **Paketi beta'ya çekin:** `npm i @inntechcorp/it-design@next`
234
+ 2. **`global.css` import edin** (v4'te zorunlu; runtime stil enjeksiyonu yok).
235
+ 3. **[MIGRATION.md](./MIGRATION.md) kırılmalarını uygulayın:** kaldırılan
236
+ bileşenler (Notification, Collapse), kompozisyona geçenler (Tabs, Card,
237
+ Radio), yeniden adlandırılan export'lar, Modal hook API'si.
238
+ 4. **Tema tohumlarınızı seçin.** Stok tema nötr gridir; v3 sitenizin renk
239
+ karakterini korumak istiyorsanız `surfaceBase`/`primaryBase` ve gerekiyorsa
240
+ `customTheme` pinlerini verin.
241
+ 5. **Sürüm atlarken [CHANGELOG.md](./CHANGELOG.md) okuyun.** Kırılmalar her
242
+ girdinin en üstünde işaretlidir.
243
+
244
+ ## Yol Haritası
245
+
246
+ Stable 4.0.0 öncesi planlananlar:
247
+
248
+ - **Pagination** bileşeni
249
+ - **Yeni chart tipleri** (Bar, Area) aynı token paleti üzerinde
250
+ - **Table**: satır seçimi, yapışkan başlık gibi kalan CoreDataTable özellikleri
251
+ - **İkon registry'si**: sitelerin ikon setini tek yerden değiştirebilmesi
252
+ - **ToggleGroup** varyantları (default/solid/outline)
253
+ - Deprecated alias'ların kaldırılması ve stable yayın
254
+
255
+ ## Dokümantasyon
256
+
257
+ Paketle gelenler:
258
+
259
+ - [MIGRATION.md](./MIGRATION.md): v3'ten v4'e kırılmalar ve karşılıkları
260
+ - [CHANGELOG.md](./CHANGELOG.md): sürümler arası değişiklikler (İngilizce)
261
+ - [ACCESSIBILITY.md](./ACCESSIBILITY.md): WCAG uyumu, klavye navigasyonu,
262
+ ekran okuyucu desteği
263
+
264
+ Repo'da olanlar:
265
+
266
+ - [COMPONENTS.md](./COMPONENTS.md): bileşen envanteri (İngilizce)
267
+ - [THEMING.md](./lib/helpers/theme/THEMING.md): tema yerleşim kuralları ve
268
+ tüketici tuzakları (İngilizce)
269
+ - [Global CSS Kılavuzu](./lib/GLOBAL-CSS-README.md): modüler CSS, token'lar,
270
+ utility'ler
271
+ - [Site Blocks Contract](./lib/SITE-BLOCKS-CONTRACT.md): blok, site
272
+ entegrasyonu ve panel builder sözleşmesi (İngilizce)
273
+ - Storybook: repo'da `yarn storybook`
274
+
275
+ ## Lisans
158
276
 
159
277
  Copyright 2024 Inn.Tech LLC.
160
278
 
161
- Licensed under the [Apache License, Version 2.0](./LICENSE).
279
+ [Apache License, Version 2.0](./LICENSE) ile lisanslanmıştır.
@@ -1 +1 @@
1
- "use strict";var t=require("../../@radix-ui/react-dialog/dist/index.js"),e=require("react");function n(t){var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,Object.freeze(e)}var r=n(e);const a=e.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),o=()=>{const t=e.useContext(a);if(!t)throw new Error("useDrawerContext must be used within a Drawer.Root");return t};function i(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function u(){return s(/^iPad/)||s(/^Mac/)&&navigator.maxTouchPoints>1}function l(){return s(/^iPhone/)||u()}function s(t){return"undefined"!=typeof window&&null!=window.navigator?t.test(window.navigator.platform):void 0}!function(t){if("undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",e.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");const d="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;function c(...t){return(...e)=>{for(let n of t)"function"==typeof n&&n(...e)}}const f="undefined"!=typeof document&&window.visualViewport;function p(t){let e=window.getComputedStyle(t);return/(auto|scroll)/.test(e.overflow+e.overflowX+e.overflowY)}function m(t){for(p(t)&&(t=t.parentElement);t&&!p(t);)t=t.parentElement;return t||document.scrollingElement||document.documentElement}const v=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let h,g=0;function w(t={}){let{isDisabled:e}=t;d(()=>{if(!e)return g++,1===g&&l()&&(h=function(){let t,e=0,n=n=>{t=m(n.target),t===document.documentElement&&t===document.body||(e=n.changedTouches[0].pageY)},r=n=>{if(!t||t===document.documentElement||t===document.body)return void n.preventDefault();let r=n.changedTouches[0].pageY,a=t.scrollTop,o=t.scrollHeight-t.clientHeight;0!==o&&((a<=0&&r>e||a>=o&&r<e)&&n.preventDefault(),e=r)},a=t=>{let e=t.target;x(e)&&e!==document.activeElement&&(t.preventDefault(),e.style.transform="translateY(-2000px)",e.focus(),requestAnimationFrame(()=>{e.style.transform=""}))},o=t=>{let e=t.target;x(e)&&(e.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{e.style.transform="",f&&(f.height<window.innerHeight?requestAnimationFrame(()=>{b(e)}):f.addEventListener("resize",()=>b(e),{once:!0}))}))},i=()=>{window.scrollTo(0,0)},u=window.pageXOffset,l=window.pageYOffset,s=c(function(t,e,n){let r=t.style[e];return t.style[e]=n,()=>{t.style[e]=r}}(document.documentElement,"paddingRight",window.innerWidth-document.documentElement.clientWidth+"px"));window.scrollTo(0,0);let d=c(y(document,"touchstart",n,{passive:!1,capture:!0}),y(document,"touchmove",r,{passive:!1,capture:!0}),y(document,"touchend",a,{passive:!1,capture:!0}),y(document,"focus",o,!0),y(window,"scroll",i));return()=>{s(),d(),window.scrollTo(u,l)}}()),()=>{g--,0===g&&(null==h||h())}},[e])}function y(t,e,n,r){return t.addEventListener(e,n,r),()=>{t.removeEventListener(e,n,r)}}function b(t){let e=document.scrollingElement||document.documentElement;for(;t&&t!==e;){let e=m(t);if(e!==document.documentElement&&e!==document.body&&e!==t){let n=e.getBoundingClientRect().top,r=t.getBoundingClientRect().top;t.getBoundingClientRect().bottom>e.getBoundingClientRect().bottom+24&&(e.scrollTop+=r-n)}t=e.parentElement}}function x(t){return t instanceof HTMLInputElement&&!v.has(t.type)||t instanceof HTMLTextAreaElement||t instanceof HTMLElement&&t.isContentEditable}function P(...t){return r.useCallback(function(...t){return e=>t.forEach(t=>function(t,e){"function"==typeof t?t(e):null!=t&&(t.current=e)}(t,e))}(...t),t)}const R=new WeakMap;function E(t,e,n=!1){if(!t||1!==t.nodeType)return;let r={};Object.entries(e).forEach(([e,n])=>{e.startsWith("--")?t.style.setProperty(e,n):(r[e]=t.style[e],t.style[e]=n)}),n||R.set(t,r)}const O=t=>{switch(t){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return t}};function S(t,e){if(!t)return null;const n=window.getComputedStyle(t),r=n.transform||n.webkitTransform||n.mozTransform;let a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[O(e)?13:12]):(a=r.match(/^matrix\((.+)\)$/),a?parseFloat(a[1].split(", ")[O(e)?5:4]):null)}function T(t,e){if(!t)return()=>{};const n=t.style.cssText;return Object.assign(t.style,e),()=>{t.style.cssText=n}}const D={DURATION:.5,EASE:[.32,.72,0,1]},C=16,$="vaul-dragging";function A(t){const n=e.useRef(t);return e.useEffect(()=>{n.current=t}),e.useMemo(()=>(...t)=>null==n.current?void 0:n.current.call(n,...t),[])}function k({prop:t,defaultProp:n,onChange:r=()=>{}}){const[a,o]=function({defaultProp:t,onChange:n}){const r=e.useState(t),[a]=r,o=e.useRef(a),i=A(n);return e.useEffect(()=>{o.current!==a&&(i(a),o.current=a)},[a,o,i]),r}({defaultProp:n,onChange:r}),i=void 0!==t,u=i?t:a,l=A(r),s=e.useCallback(e=>{if(i){const n="function"==typeof e?e(t):e;n!==t&&l(n)}else o(e)},[i,t,o,l]);return[u,s]}let M=null;function B({open:n,onOpenChange:r,children:o,onDrag:u,onRelease:s,snapPoints:d,shouldScaleBackground:c=!1,setBackgroundColorOnScale:f=!0,closeThreshold:p=.25,scrollLockTimeout:m=100,dismissible:v=!0,handleOnly:h=!1,fadeFromIndex:g=d&&d.length-1,activeSnapPoint:y,setActiveSnapPoint:b,fixed:P,modal:T=!0,onClose:A,nested:B,noBodyStyles:F=!1,direction:I="bottom",defaultOpen:N=!1,disablePreventScroll:L=!0,snapToSequentialPoint:H=!1,preventScrollRestoration:z=!1,repositionInputs:j=!0,onAnimationEnd:W,container:q,autoFocus:U=!1}){var Y,X;const[V=!1,G]=k({defaultProp:N,prop:n,onChange:t=>{null==r||r(t),t||B||Ot(),setTimeout(()=>{null==W||W(t)},1e3*D.DURATION),t&&!T&&"undefined"!=typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),t||(document.body.style.pointerEvents="auto")}}),[J,K]=e.useState(!1),[Q,Z]=e.useState(!1),[_,tt]=e.useState(!1),et=e.useRef(null),nt=e.useRef(null),rt=e.useRef(null),at=e.useRef(null),ot=e.useRef(null),it=e.useRef(!1),ut=e.useRef(null),lt=e.useRef(0),st=e.useRef(!1),dt=e.useRef(!N),ct=e.useRef(0),ft=e.useRef(null),pt=e.useRef((null==(Y=ft.current)?void 0:Y.getBoundingClientRect().height)||0),mt=e.useRef((null==(X=ft.current)?void 0:X.getBoundingClientRect().width)||0),vt=e.useRef(0),ht=e.useCallback(t=>{d&&t===xt.length-1&&(nt.current=new Date)},[]),{activeSnapPoint:gt,activeSnapPointIndex:wt,setActiveSnapPoint:yt,onRelease:bt,snapPointsOffset:xt,onDrag:Pt,shouldFade:Rt,getPercentageDragged:Et}=function({activeSnapPointProp:t,setActiveSnapPointProp:n,snapPoints:r,drawerRef:a,overlayRef:o,fadeFromIndex:i,onSnapPointChange:u,direction:l="bottom",container:s,snapToSequentialPoint:d}){const[c,f]=k({prop:t,defaultProp:null==r?void 0:r[0],onChange:n}),[p,m]=e.useState("undefined"!=typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);e.useEffect(()=>{function t(){m({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);const v=e.useMemo(()=>c===(null==r?void 0:r[r.length-1])||null,[r,c]),h=e.useMemo(()=>{var t;return null!=(t=null==r?void 0:r.findIndex(t=>t===c))?t:null},[r,c]),g=r&&r.length>0&&(i||0===i)&&!Number.isNaN(i)&&r[i]===c||!r,w=e.useMemo(()=>{const t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"undefined"!=typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var e;return null!=(e=null==r?void 0:r.map(e=>{const n="string"==typeof e;let r=0;if(n&&(r=parseInt(e,10)),O(l)){const a=n?r:p?e*t.height:0;return p?"bottom"===l?t.height-a:-t.height+a:a}const a=n?r:p?e*t.width:0;return p?"right"===l?t.width-a:-t.width+a:a}))?e:[]},[r,p,s]),y=e.useMemo(()=>null!==h?null==w?void 0:w[h]:null,[w,h]),b=e.useCallback(t=>{var e;const n=null!=(e=null==w?void 0:w.findIndex(e=>e===t))?e:null;u(n),E(a.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(l)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`}),w&&n!==w.length-1&&void 0!==i&&n!==i&&n<i?E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"0"}):E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"1"}),f(null==r?void 0:r[Math.max(n,0)])},[a.current,r,w,i,o,f]);return e.useEffect(()=>{if(c||t){var e;const n=null!=(e=null==r?void 0:r.findIndex(e=>e===t||e===c))?e:-1;w&&-1!==n&&"number"==typeof w[n]&&b(w[n])}},[c,t,r,w,b]),{isLastSnapPoint:v,activeSnapPoint:c,shouldFade:g,getPercentageDragged:function(t,e){if(!r||"number"!=typeof h||!w||void 0===i)return null;const n=h===i-1;if(h>=i&&e)return 0;if(n&&!e)return 1;if(!g&&!n)return null;const a=n?h+1:h-1,o=n?w[a]-w[a-1]:w[a+1]-w[a],u=t/Math.abs(o);return n?1-u:u},setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:function({draggedDistance:t,closeDrawer:e,velocity:n,dismissible:a}){if(void 0===i)return;const u="bottom"===l||"right"===l?(null!=y?y:0)-t:(null!=y?y:0)+t,s=0===h,c=t>0;if(h===i-1&&E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`}),!d&&n>2&&!c)return void(a?e():b(w[0]));if(!d&&n>2&&c&&w&&r)return void b(w[r.length-1]);const f=null==w?void 0:w.reduce((t,e)=>"number"!=typeof t||"number"!=typeof e?t:Math.abs(e-u)<Math.abs(t-u)?e:t),p=O(l)?window.innerHeight:window.innerWidth;if(n>.4&&Math.abs(t)<.4*p){const t=c?1:-1;if(t>0&&v&&r)return void b(w[r.length-1]);if(s&&t<0&&a&&e(),null===h)return;return void b(w[h+t])}b(f)},onDrag:function({draggedDistance:t}){if(null===y)return;const e="bottom"===l||"right"===l?y-t:y+t;("bottom"===l||"right"===l)&&e<w[w.length-1]||("top"===l||"left"===l)&&e>w[w.length-1]||E(a.current,{transform:O(l)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},snapPointsOffset:w}}({snapPoints:d,activeSnapPointProp:y,setActiveSnapPointProp:b,drawerRef:ft,fadeFromIndex:g,overlayRef:et,onSnapPointChange:ht,direction:I,container:q,snapToSequentialPoint:H});w({isDisabled:!V||Q||!T||_||!J||!j||!L});const{restorePositionSetting:Ot}=function({isOpen:t,modal:n,nested:r,hasBeenOpened:a,preventScrollRestoration:o,noBodyStyles:u}){const[l,s]=e.useState(()=>"undefined"!=typeof window?window.location.href:""),d=e.useRef(0),c=e.useCallback(()=>{if(i()&&null===M&&t&&!u){M={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:t,innerHeight:e}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:-d.current+"px",left:-t+"px",right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const t=e-window.innerHeight;t&&d.current>=e&&(document.body.style.top=-(d.current+t)+"px")}),300)}},[t]),f=e.useCallback(()=>{if(i()&&null!==M&&!u){const t=-parseInt(document.body.style.top,10),e=-parseInt(document.body.style.left,10);Object.assign(document.body.style,M),window.requestAnimationFrame(()=>{o&&l!==window.location.href?s(window.location.href):window.scrollTo(e,t)}),M=null}},[l]);return e.useEffect(()=>{function t(){d.current=window.scrollY}return t(),window.addEventListener("scroll",t),()=>{window.removeEventListener("scroll",t)}},[]),e.useEffect(()=>{if(n)return()=>{"undefined"!=typeof document&&(document.querySelector("[data-vaul-drawer]")||f())}},[n,f]),e.useEffect(()=>{!r&&a&&(t?(!window.matchMedia("(display-mode: standalone)").matches&&c(),n||window.setTimeout(()=>{f()},500)):f())},[t,a,l,n,r,c,f]),{restorePositionSetting:f}}({isOpen:V,modal:T,nested:null!=B&&B,hasBeenOpened:J,preventScrollRestoration:z,noBodyStyles:F});function St(){return(window.innerWidth-26)/window.innerWidth}function Tt(t,e){var n;let r=t;const a=null==(n=window.getSelection())?void 0:n.toString(),o=ft.current?S(ft.current,I):null,i=new Date;if("SELECT"===r.tagName)return!1;if(r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===I||"left"===I)return!0;if(nt.current&&i.getTime()-nt.current.getTime()<500)return!1;if(null!==o&&("bottom"===I?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(ot.current&&i.getTime()-ot.current.getTime()<m&&0===o)return ot.current=i,!1;if(e)return ot.current=i,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return ot.current=new Date,!1;if("dialog"===r.getAttribute("role"))return!0}r=r.parentNode}return!0}function Dt(t){!function(){if(!Q||!ft.current)return;ft.current.classList.remove($),it.current=!1,Z(!1),at.current=new Date}(),null==A||A(),t||G(!1),setTimeout(()=>{d&&yt(d[0])},1e3*D.DURATION)}function Ct(){if(!ft.current)return;const t=document.querySelector("[data-vaul-drawer-wrapper]"),e=S(ft.current,I);E(ft.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`}),E(et.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"1"}),c&&e&&e>0&&V&&E(t,{borderRadius:"8px",overflow:"hidden",...O(I)?{transform:`scale(${St()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${St()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${D.DURATION}s`,transitionTimingFunction:`cubic-bezier(${D.EASE.join(",")})`},!0)}return e.useEffect(()=>{window.requestAnimationFrame(()=>{dt.current=!0})},[]),e.useEffect(()=>{var t;function e(){if(!ft.current||!j)return;if(x(document.activeElement)||st.current){var t;const e=(null==(t=window.visualViewport)?void 0:t.height)||0,n=window.innerHeight;let r=n-e;const a=ft.current.getBoundingClientRect().height||0,o=a>.8*n;vt.current||(vt.current=a);const i=ft.current.getBoundingClientRect().top;if(Math.abs(ct.current-r)>60&&(st.current=!st.current),d&&d.length>0&&xt&&wt){r+=xt[wt]||0}if(ct.current=r,a>e||st.current){const t=ft.current.getBoundingClientRect().height;let n=t;t>e&&(n=e-(o?i:26)),ft.current.style.height=P?t-Math.max(r,0)+"px":`${Math.max(n,e-i)}px`}else(function(){const t=navigator.userAgent;return"undefined"!=typeof window&&(/Firefox/.test(t)&&/Mobile/.test(t)||/FxiOS/.test(t))})()||(ft.current.style.height=`${vt.current}px`);d&&d.length>0&&!st.current?ft.current.style.bottom="0px":ft.current.style.bottom=`${Math.max(r,0)}px`}}return null==(t=window.visualViewport)||t.addEventListener("resize",e),()=>{var t;return null==(t=window.visualViewport)?void 0:t.removeEventListener("resize",e)}},[wt,d,xt]),e.useEffect(()=>(V&&(E(document.documentElement,{scrollBehavior:"auto"}),nt.current=new Date),()=>{!function(t,e){if(!t||1!==t.nodeType)return;let n=R.get(t);n&&(t.style[e]=n[e])}(document.documentElement,"scrollBehavior")}),[V]),e.useEffect(()=>{T||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[T]),e.createElement(t.Dialog,{defaultOpen:N,onOpenChange:t=>{(v||t)&&(t?K(!0):Dt(!0),G(t))},open:V},e.createElement(a.Provider,{value:{activeSnapPoint:gt,snapPoints:d,setActiveSnapPoint:yt,drawerRef:ft,overlayRef:et,onOpenChange:r,onPress:function(t){var e,n;(v||d)&&(ft.current&&!ft.current.contains(t.target)||(pt.current=(null==(e=ft.current)?void 0:e.getBoundingClientRect().height)||0,mt.current=(null==(n=ft.current)?void 0:n.getBoundingClientRect().width)||0,Z(!0),rt.current=new Date,l()&&window.addEventListener("touchend",()=>it.current=!1,{once:!0}),t.target.setPointerCapture(t.pointerId),lt.current=O(I)?t.pageY:t.pageX))},onRelease:function(t){if(!Q||!ft.current)return;ft.current.classList.remove($),it.current=!1,Z(!1),at.current=new Date;const e=S(ft.current,I);if(!t||!Tt(t.target,!1)||!e||Number.isNaN(e))return;if(null===rt.current)return;const n=at.current.getTime()-rt.current.getTime(),r=lt.current-(O(I)?t.pageY:t.pageX),a=Math.abs(r)/n;if(a>.05&&(tt(!0),setTimeout(()=>{tt(!1)},200)),d){return bt({draggedDistance:r*("bottom"===I||"right"===I?1:-1),closeDrawer:Dt,velocity:a,dismissible:v}),void(null==s||s(t,!0))}if("bottom"===I||"right"===I?r>0:r<0)return Ct(),void(null==s||s(t,!0));if(a>.4)return Dt(),void(null==s||s(t,!1));var o;const i=Math.min(null!=(o=ft.current.getBoundingClientRect().height)?o:0,window.innerHeight);var u;const l=Math.min(null!=(u=ft.current.getBoundingClientRect().width)?u:0,window.innerWidth),c="left"===I||"right"===I;if(Math.abs(e)>=(c?l:i)*p)return Dt(),void(null==s||s(t,!1));null==s||s(t,!0),Ct()},onDrag:function(t){var e;if(ft.current&&Q){const n="bottom"===I||"right"===I?1:-1,r=(lt.current-(O(I)?t.pageY:t.pageX))*n,a=r>0,o=d&&!v&&!a;if(o&&0===wt)return;const i=Math.abs(r),l=document.querySelector("[data-vaul-drawer-wrapper]");let s=i/("bottom"===I||"top"===I?pt.current:mt.current);const f=Et(i,a);if(null!==f&&(s=f),o&&s>=1)return;if(!it.current&&!Tt(t.target,a))return;if(ft.current.classList.add($),it.current=!0,E(ft.current,{transition:"none"}),E(et.current,{transition:"none"}),d&&Pt({draggedDistance:r}),a&&!d){const t=(e=r,8*(Math.log(e+1)-2)),a=Math.min(-1*t,0)*n;return void E(ft.current,{transform:O(I)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})}const p=1-s;if((Rt||g&&wt===g-1)&&(null==u||u(t,s),E(et.current,{opacity:`${p}`,transition:"none"},!0)),l&&et.current&&c){const t=Math.min(St()+s*(1-St()),1),e=8-8*s,n=Math.max(0,14-14*s);E(l,{borderRadius:`${e}px`,transform:O(I)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!d){const t=i*n;E(ft.current,{transform:O(I)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})}}},dismissible:v,shouldAnimate:dt,handleOnly:h,isOpen:V,isDragging:Q,shouldFade:Rt,closeDrawer:Dt,onNestedDrag:function(t,e){if(e<0)return;const n=(window.innerWidth-C)/window.innerWidth,r=n+e*(1-n),a=e*C-16;E(ft.current,{transform:O(I)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(t){const e=t?(window.innerWidth-C)/window.innerWidth:1,n=t?-16:0;ut.current&&window.clearTimeout(ut.current),E(ft.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(I)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`}),!t&&ft.current&&(ut.current=setTimeout(()=>{const t=S(ft.current,I);E(ft.current,{transition:"none",transform:O(I)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},500))},onNestedRelease:function(t,e){const n=O(I)?window.innerHeight:window.innerWidth,r=e?(n-C)/n:1,a=e?-16:0;e&&E(ft.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(I)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`})},keyboardIsOpen:st,modal:T,snapPointsOffset:xt,activeSnapPointIndex:wt,direction:I,shouldScaleBackground:c,setBackgroundColorOnScale:f,noBodyStyles:F,container:q,autoFocus:U}},o))}const F=e.forwardRef(function({...n},r){const{overlayRef:a,snapPoints:i,onRelease:u,shouldFade:l,isOpen:s,modal:d,shouldAnimate:c}=o(),f=P(r,a),p=i&&i.length>0;if(!d)return null;const m=e.useCallback(t=>u(t),[u]);return e.createElement(t.DialogOverlay,{onMouseUp:m,ref:f,"data-vaul-overlay":"","data-vaul-snap-points":s&&p?"true":"false","data-vaul-snap-points-overlay":s&&l?"true":"false","data-vaul-animate":(null==c?void 0:c.current)?"true":"false",...n})});F.displayName="Drawer.Overlay";const I=e.forwardRef(function({onPointerDownOutside:n,style:r,onOpenAutoFocus:a,...i},u){const{drawerRef:l,onPress:s,onRelease:d,onDrag:c,keyboardIsOpen:f,snapPointsOffset:p,activeSnapPointIndex:m,modal:v,isOpen:h,direction:g,snapPoints:w,container:y,handleOnly:b,shouldAnimate:x,autoFocus:R}=o(),[E,S]=e.useState(!1),C=P(u,l),$=e.useRef(null),A=e.useRef(null),k=e.useRef(!1),M=w&&w.length>0;!function(){const{direction:t,isOpen:n,shouldScaleBackground:r,setBackgroundColorOnScale:a,noBodyStyles:i}=o(),u=e.useRef(null),l=e.useMemo(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-26)/window.innerWidth}e.useEffect(()=>{if(n&&r){u.current&&clearTimeout(u.current);const e=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!e)return;a&&!i&&T(document.body,{background:"black"}),T(e,{transformOrigin:O(t)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${D.DURATION}s`,transitionTimingFunction:`cubic-bezier(${D.EASE.join(",")})`});const n=T(e,{borderRadius:"8px",overflow:"hidden",...O(t)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),u.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},1e3*D.DURATION)}}},[n,r,l])}();function B(t){$.current=null,k.current=!1,d(t)}return e.useEffect(()=>{M&&window.requestAnimationFrame(()=>{S(!0)})},[]),e.createElement(t.Content,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":E?"true":"false","data-vaul-snap-points":h&&M?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":(null==x?void 0:x.current)?"true":"false",...i,ref:C,style:p&&p.length>0?{"--snap-point-height":`${p[null!=m?m:0]}px`,...r}:r,onPointerDown:t=>{b||(null==i.onPointerDown||i.onPointerDown.call(i,t),$.current={x:t.pageX,y:t.pageY},s(t))},onOpenAutoFocus:t=>{null==a||a(t),R||t.preventDefault()},onPointerDownOutside:t=>{null==n||n(t),v&&!t.defaultPrevented?f.current&&(f.current=!1):t.preventDefault()},onFocusOutside:t=>{v||t.preventDefault()},onPointerMove:t=>{if(A.current=t,b)return;if(null==i.onPointerMove||i.onPointerMove.call(i,t),!$.current)return;const e=t.pageY-$.current.y,n=t.pageX-$.current.x,r="touch"===t.pointerType?10:2,a=((t,e,n=0)=>{if(k.current)return!0;const r=Math.abs(t.y),a=Math.abs(t.x),o=a>r,i=["bottom","right"].includes(e)?1:-1;if("left"===e||"right"===e){if(!(t.x*i<0)&&a>=0&&a<=n)return o}else if(!(t.y*i<0)&&r>=0&&r<=n)return!o;return k.current=!0,!0})({x:n,y:e},g,r);a?c(t):(Math.abs(n)>r||Math.abs(e)>r)&&($.current=null)},onPointerUp:t=>{null==i.onPointerUp||i.onPointerUp.call(i,t),$.current=null,k.current=!1,d(t)},onPointerOut:t=>{null==i.onPointerOut||i.onPointerOut.call(i,t),B(A.current)},onContextMenu:t=>{null==i.onContextMenu||i.onContextMenu.call(i,t),A.current&&B(A.current)}})});I.displayName="Drawer.Content";const N=e.forwardRef(function({preventCycle:t=!1,children:n,...r},a){const{closeDrawer:i,isDragging:u,snapPoints:l,activeSnapPoint:s,setActiveSnapPoint:d,dismissible:c,handleOnly:f,isOpen:p,onPress:m,onDrag:v}=o(),h=e.useRef(null),g=e.useRef(!1);function w(){h.current&&window.clearTimeout(h.current),g.current=!1}return e.createElement("div",{onClick:function(){g.current?w():window.setTimeout(()=>{!function(){if(u||t||g.current)return void w();if(w(),!l||0===l.length)return void(c||i());if(s===l[l.length-1]&&c)return void i();const e=l.findIndex(t=>t===s);if(-1===e)return;const n=l[e+1];d(n)}()},120)},onPointerCancel:w,onPointerDown:t=>{f&&m(t),h.current=window.setTimeout(()=>{g.current=!0},250)},onPointerMove:t=>{f&&v(t)},ref:a,"data-vaul-drawer-visible":p?"true":"false","data-vaul-handle":"","aria-hidden":"true",...r},e.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},n))});function L(n){const r=o(),{container:a=r.container,...i}=n;return e.createElement(t.DialogPortal,{container:a,...i})}N.displayName="Drawer.Handle";const H={Root:B,Content:I,Overlay:F,Portal:L,Handle:N};exports.Content=I,exports.Drawer=H,exports.Handle=N,exports.Overlay=F,exports.Portal=L,exports.Root=B;
1
+ "use strict";var t=require("../../@radix-ui/react-dialog/dist/index.js"),e=require("react");function n(t){var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,Object.freeze(e)}var r=n(e);const a=e.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),o=()=>{const t=e.useContext(a);if(!t)throw new Error("useDrawerContext must be used within a Drawer.Root");return t};function i(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function u(){return s(/^iPad/)||s(/^Mac/)&&navigator.maxTouchPoints>1}function l(){return s(/^iPhone/)||u()}function s(t){return"undefined"!=typeof window&&null!=window.navigator?t.test(window.navigator.platform):void 0}!function(t){if("undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",e.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");const d="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;function c(...t){return(...e)=>{for(let n of t)"function"==typeof n&&n(...e)}}const f="undefined"!=typeof document&&window.visualViewport;function p(t){let e=window.getComputedStyle(t);return/(auto|scroll)/.test(e.overflow+e.overflowX+e.overflowY)}function m(t){for(p(t)&&(t=t.parentElement);t&&!p(t);)t=t.parentElement;return t||document.scrollingElement||document.documentElement}const v=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let h,g=0;function w(t={}){let{isDisabled:e}=t;d(()=>{if(!e)return g++,1===g&&l()&&(h=function(){let t,e=0,n=n=>{t=m(n.target),t===document.documentElement&&t===document.body||(e=n.changedTouches[0].pageY)},r=n=>{if(!t||t===document.documentElement||t===document.body)return void n.preventDefault();let r=n.changedTouches[0].pageY,a=t.scrollTop,o=t.scrollHeight-t.clientHeight;0!==o&&((a<=0&&r>e||a>=o&&r<e)&&n.preventDefault(),e=r)},a=t=>{let e=t.target;x(e)&&e!==document.activeElement&&(t.preventDefault(),e.style.transform="translateY(-2000px)",e.focus(),requestAnimationFrame(()=>{e.style.transform=""}))},o=t=>{let e=t.target;x(e)&&(e.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{e.style.transform="",f&&(f.height<window.innerHeight?requestAnimationFrame(()=>{b(e)}):f.addEventListener("resize",()=>b(e),{once:!0}))}))},i=()=>{window.scrollTo(0,0)},u=window.pageXOffset,l=window.pageYOffset,s=c(function(t,e,n){let r=t.style[e];return t.style[e]=n,()=>{t.style[e]=r}}(document.documentElement,"paddingRight",window.innerWidth-document.documentElement.clientWidth+"px"));window.scrollTo(0,0);let d=c(y(document,"touchstart",n,{passive:!1,capture:!0}),y(document,"touchmove",r,{passive:!1,capture:!0}),y(document,"touchend",a,{passive:!1,capture:!0}),y(document,"focus",o,!0),y(window,"scroll",i));return()=>{s(),d(),window.scrollTo(u,l)}}()),()=>{g--,0===g&&(null==h||h())}},[e])}function y(t,e,n,r){return t.addEventListener(e,n,r),()=>{t.removeEventListener(e,n,r)}}function b(t){let e=document.scrollingElement||document.documentElement;for(;t&&t!==e;){let e=m(t);if(e!==document.documentElement&&e!==document.body&&e!==t){let n=e.getBoundingClientRect().top,r=t.getBoundingClientRect().top;t.getBoundingClientRect().bottom>e.getBoundingClientRect().bottom+24&&(e.scrollTop+=r-n)}t=e.parentElement}}function x(t){return t instanceof HTMLInputElement&&!v.has(t.type)||t instanceof HTMLTextAreaElement||t instanceof HTMLElement&&t.isContentEditable}function P(...t){return r.useCallback(function(...t){return e=>t.forEach(t=>function(t,e){"function"==typeof t?t(e):null!=t&&(t.current=e)}(t,e))}(...t),t)}const R=new WeakMap;function E(t,e,n=!1){if(!t||1!==t.nodeType)return;let r={};Object.entries(e).forEach(([e,n])=>{e.startsWith("--")?t.style.setProperty(e,n):(r[e]=t.style[e],t.style[e]=n)}),n||R.set(t,r)}const O=t=>{switch(t){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return t}};function S(t,e){if(!t)return null;const n=window.getComputedStyle(t),r=n.transform||n.webkitTransform||n.mozTransform;let a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[O(e)?13:12]):(a=r.match(/^matrix\((.+)\)$/),a?parseFloat(a[1].split(", ")[O(e)?5:4]):null)}function T(t,e){if(!t)return()=>{};const n=t.style.cssText;return Object.assign(t.style,e),()=>{t.style.cssText=n}}const D={DURATION:.5,EASE:[.32,.72,0,1]},C=16,$="vaul-dragging";function A(t){const n=e.useRef(t);return e.useEffect(()=>{n.current=t}),e.useMemo(()=>(...t)=>null==n.current?void 0:n.current.call(n,...t),[])}function k({prop:t,defaultProp:n,onChange:r=()=>{}}){const[a,o]=function({defaultProp:t,onChange:n}){const r=e.useState(t),[a]=r,o=e.useRef(a),i=A(n);return e.useEffect(()=>{o.current!==a&&(i(a),o.current=a)},[a,o,i]),r}({defaultProp:n,onChange:r}),i=void 0!==t,u=i?t:a,l=A(r),s=e.useCallback(e=>{if(i){const n="function"==typeof e?e(t):e;n!==t&&l(n)}else o(e)},[i,t,o,l]);return[u,s]}let M=null;function B({open:n,onOpenChange:r,children:o,onDrag:u,onRelease:s,snapPoints:d,shouldScaleBackground:c=!1,setBackgroundColorOnScale:f=!0,closeThreshold:p=.25,scrollLockTimeout:m=100,dismissible:v=!0,handleOnly:h=!1,fadeFromIndex:g=d&&d.length-1,activeSnapPoint:y,setActiveSnapPoint:b,fixed:P,modal:T=!0,onClose:A,nested:B,noBodyStyles:F=!1,direction:I="bottom",defaultOpen:N=!1,disablePreventScroll:L=!0,snapToSequentialPoint:H=!1,preventScrollRestoration:z=!1,repositionInputs:j=!0,onAnimationEnd:W,container:q,autoFocus:U=!1}){var Y,X;const[V=!1,G]=k({defaultProp:N,prop:n,onChange:t=>{null==r||r(t),t||B||Ot(),setTimeout(()=>{null==W||W(t)},1e3*D.DURATION),t&&!T&&"undefined"!=typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),t||(document.body.style.pointerEvents="auto")}}),[J,K]=e.useState(!1),[Q,Z]=e.useState(!1),[_,tt]=e.useState(!1),et=e.useRef(null),nt=e.useRef(null),rt=e.useRef(null),at=e.useRef(null),ot=e.useRef(null),it=e.useRef(!1),ut=e.useRef(null),lt=e.useRef(0),st=e.useRef(!1),dt=e.useRef(!N),ct=e.useRef(0),ft=e.useRef(null),pt=e.useRef((null==(Y=ft.current)?void 0:Y.getBoundingClientRect().height)||0),mt=e.useRef((null==(X=ft.current)?void 0:X.getBoundingClientRect().width)||0),vt=e.useRef(0),ht=e.useCallback(t=>{d&&t===xt.length-1&&(nt.current=new Date)},[]),{activeSnapPoint:gt,activeSnapPointIndex:wt,setActiveSnapPoint:yt,onRelease:bt,snapPointsOffset:xt,onDrag:Pt,shouldFade:Rt,getPercentageDragged:Et}=function({activeSnapPointProp:t,setActiveSnapPointProp:n,snapPoints:r,drawerRef:a,overlayRef:o,fadeFromIndex:i,onSnapPointChange:u,direction:l="bottom",container:s,snapToSequentialPoint:d}){const[c,f]=k({prop:t,defaultProp:null==r?void 0:r[0],onChange:n}),[p,m]=e.useState("undefined"!=typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);e.useEffect(()=>{function t(){m({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);const v=e.useMemo(()=>c===(null==r?void 0:r[r.length-1])||null,[r,c]),h=e.useMemo(()=>{var t;return null!=(t=null==r?void 0:r.findIndex(t=>t===c))?t:null},[r,c]),g=r&&r.length>0&&(i||0===i)&&!Number.isNaN(i)&&r[i]===c||!r,w=e.useMemo(()=>{const t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"undefined"!=typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var e;return null!=(e=null==r?void 0:r.map(e=>{const n="string"==typeof e;let r=0;if(n&&(r=parseInt(e,10)),O(l)){const a=n?r:p?e*t.height:0;return p?"bottom"===l?t.height-a:-t.height+a:a}const a=n?r:p?e*t.width:0;return p?"right"===l?t.width-a:-t.width+a:a}))?e:[]},[r,p,s]),y=e.useMemo(()=>null!==h?null==w?void 0:w[h]:null,[w,h]),b=e.useCallback(t=>{var e;const n=null!=(e=null==w?void 0:w.findIndex(e=>e===t))?e:null;u(n),E(a.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(l)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`}),w&&n!==w.length-1&&void 0!==i&&n!==i&&n<i?E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"0"}):E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"1"}),f(null==r?void 0:r[Math.max(n,0)])},[a.current,r,w,i,o,f]);return e.useEffect(()=>{if(c||t){var e;const n=null!=(e=null==r?void 0:r.findIndex(e=>e===t||e===c))?e:-1;w&&-1!==n&&"number"==typeof w[n]&&b(w[n])}},[c,t,r,w,b]),{isLastSnapPoint:v,activeSnapPoint:c,shouldFade:g,getPercentageDragged:function(t,e){if(!r||"number"!=typeof h||!w||void 0===i)return null;const n=h===i-1;if(h>=i&&e)return 0;if(n&&!e)return 1;if(!g&&!n)return null;const a=n?h+1:h-1,o=n?w[a]-w[a-1]:w[a+1]-w[a],u=t/Math.abs(o);return n?1-u:u},setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:function({draggedDistance:t,closeDrawer:e,velocity:n,dismissible:a}){if(void 0===i)return;const u="bottom"===l||"right"===l?(null!=y?y:0)-t:(null!=y?y:0)+t,s=0===h,c=t>0;if(h===i-1&&E(o.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`}),!d&&n>2&&!c)return void(a?e():b(w[0]));if(!d&&n>2&&c&&w&&r)return void b(w[r.length-1]);const f=null==w?void 0:w.reduce((t,e)=>"number"!=typeof t||"number"!=typeof e?t:Math.abs(e-u)<Math.abs(t-u)?e:t),p=O(l)?window.innerHeight:window.innerWidth;if(n>.4&&Math.abs(t)<.4*p){const t=c?1:-1;if(t>0&&v&&r)return void b(w[r.length-1]);if(s&&t<0&&a&&e(),null===h)return;return void b(w[h+t])}b(f)},onDrag:function({draggedDistance:t}){if(null===y)return;const e="bottom"===l||"right"===l?y-t:y+t;("bottom"===l||"right"===l)&&e<w[w.length-1]||("top"===l||"left"===l)&&e>w[w.length-1]||E(a.current,{transform:O(l)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},snapPointsOffset:w}}({snapPoints:d,activeSnapPointProp:y,setActiveSnapPointProp:b,drawerRef:ft,fadeFromIndex:g,overlayRef:et,onSnapPointChange:ht,direction:I,container:q,snapToSequentialPoint:H});w({isDisabled:!V||Q||!T||_||!J||!j||!L});const{restorePositionSetting:Ot}=function({isOpen:t,modal:n,nested:r,hasBeenOpened:a,preventScrollRestoration:o,noBodyStyles:u}){const[l,s]=e.useState(()=>"undefined"!=typeof window?window.location.href:""),d=e.useRef(0),c=e.useCallback(()=>{if(i()&&null===M&&t&&!u){M={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:t,innerHeight:e}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:-d.current+"px",left:-t+"px",right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const t=e-window.innerHeight;t&&d.current>=e&&(document.body.style.top=-(d.current+t)+"px")}),300)}},[t]),f=e.useCallback(()=>{if(i()&&null!==M&&!u){const t=-parseInt(document.body.style.top,10),e=-parseInt(document.body.style.left,10);Object.assign(document.body.style,M),window.requestAnimationFrame(()=>{o&&l!==window.location.href?s(window.location.href):window.scrollTo(e,t)}),M=null}},[l]);return e.useEffect(()=>{function t(){d.current=window.scrollY}return t(),window.addEventListener("scroll",t),()=>{window.removeEventListener("scroll",t)}},[]),e.useEffect(()=>{if(n)return()=>{"undefined"!=typeof document&&(document.querySelector("[data-vaul-drawer]")||f())}},[n,f]),e.useEffect(()=>{!r&&a&&(t?(!window.matchMedia("(display-mode: standalone)").matches&&c(),n||window.setTimeout(()=>{f()},500)):f())},[t,a,l,n,r,c,f]),{restorePositionSetting:f}}({isOpen:V,modal:T,nested:null!=B&&B,hasBeenOpened:J,preventScrollRestoration:z,noBodyStyles:F});function St(){return(window.innerWidth-26)/window.innerWidth}function Tt(t,e){var n;let r=t;const a=null==(n=window.getSelection())?void 0:n.toString(),o=ft.current?S(ft.current,I):null,i=new Date;if("SELECT"===r.tagName)return!1;if(r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===I||"left"===I)return!0;if(nt.current&&i.getTime()-nt.current.getTime()<500)return!1;if(null!==o&&("bottom"===I?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(ot.current&&i.getTime()-ot.current.getTime()<m&&0===o)return ot.current=i,!1;if(e)return ot.current=i,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return ot.current=new Date,!1;if("dialog"===r.getAttribute("role"))return!0}r=r.parentNode}return!0}function Dt(t){!function(){if(!Q||!ft.current)return;ft.current.classList.remove($),it.current=!1,Z(!1),at.current=new Date}(),null==A||A(),t||G(!1),setTimeout(()=>{d&&yt(d[0])},1e3*D.DURATION)}function Ct(){if(!ft.current)return;const t=document.querySelector("[data-vaul-drawer-wrapper]"),e=S(ft.current,I);E(ft.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`}),E(et.current,{transition:`opacity ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,opacity:"1"}),c&&e&&e>0&&V&&E(t,{borderRadius:"8px",overflow:"hidden",...O(I)?{transform:`scale(${St()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${St()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${D.DURATION}s`,transitionTimingFunction:`cubic-bezier(${D.EASE.join(",")})`},!0)}return e.useEffect(()=>{window.requestAnimationFrame(()=>{dt.current=!0})},[]),e.useEffect(()=>{var t;function e(){if(!ft.current||!j)return;if(x(document.activeElement)||st.current){var t;const e=(null==(t=window.visualViewport)?void 0:t.height)||0,n=window.innerHeight;let r=n-e;const a=ft.current.getBoundingClientRect().height||0,o=a>.8*n;vt.current||(vt.current=a);const i=ft.current.getBoundingClientRect().top;if(Math.abs(ct.current-r)>60&&(st.current=!st.current),d&&d.length>0&&xt&&wt){r+=xt[wt]||0}if(ct.current=r,a>e||st.current){const t=ft.current.getBoundingClientRect().height;let n=t;t>e&&(n=e-(o?i:26)),ft.current.style.height=P?t-Math.max(r,0)+"px":`${Math.max(n,e-i)}px`}else(function(){const t=navigator.userAgent;return"undefined"!=typeof window&&(/Firefox/.test(t)&&/Mobile/.test(t)||/FxiOS/.test(t))})()||(ft.current.style.height=`${vt.current}px`);d&&d.length>0&&!st.current?ft.current.style.bottom="0px":ft.current.style.bottom=`${Math.max(r,0)}px`}}return null==(t=window.visualViewport)||t.addEventListener("resize",e),()=>{var t;return null==(t=window.visualViewport)?void 0:t.removeEventListener("resize",e)}},[wt,d,xt]),e.useEffect(()=>(V&&(E(document.documentElement,{scrollBehavior:"auto"}),nt.current=new Date),()=>{!function(t,e){if(!t||1!==t.nodeType)return;let n=R.get(t);n&&(t.style[e]=n[e])}(document.documentElement,"scrollBehavior")}),[V]),e.useEffect(()=>{T||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[T]),e.createElement(t.Dialog,{defaultOpen:N,onOpenChange:t=>{(v||t)&&(t?K(!0):Dt(!0),G(t))},open:V},e.createElement(a.Provider,{value:{activeSnapPoint:gt,snapPoints:d,setActiveSnapPoint:yt,drawerRef:ft,overlayRef:et,onOpenChange:r,onPress:function(t){var e,n;(v||d)&&(ft.current&&!ft.current.contains(t.target)||(pt.current=(null==(e=ft.current)?void 0:e.getBoundingClientRect().height)||0,mt.current=(null==(n=ft.current)?void 0:n.getBoundingClientRect().width)||0,Z(!0),rt.current=new Date,l()&&window.addEventListener("touchend",()=>it.current=!1,{once:!0}),t.target.setPointerCapture(t.pointerId),lt.current=O(I)?t.pageY:t.pageX))},onRelease:function(t){if(!Q||!ft.current)return;ft.current.classList.remove($),it.current=!1,Z(!1),at.current=new Date;const e=S(ft.current,I);if(!t||!Tt(t.target,!1)||!e||Number.isNaN(e))return;if(null===rt.current)return;const n=at.current.getTime()-rt.current.getTime(),r=lt.current-(O(I)?t.pageY:t.pageX),a=Math.abs(r)/n;if(a>.05&&(tt(!0),setTimeout(()=>{tt(!1)},200)),d){return bt({draggedDistance:r*("bottom"===I||"right"===I?1:-1),closeDrawer:Dt,velocity:a,dismissible:v}),void(null==s||s(t,!0))}if("bottom"===I||"right"===I?r>0:r<0)return Ct(),void(null==s||s(t,!0));if(a>.4)return Dt(),void(null==s||s(t,!1));var o;const i=Math.min(null!=(o=ft.current.getBoundingClientRect().height)?o:0,window.innerHeight);var u;const l=Math.min(null!=(u=ft.current.getBoundingClientRect().width)?u:0,window.innerWidth),c="left"===I||"right"===I;if(Math.abs(e)>=(c?l:i)*p)return Dt(),void(null==s||s(t,!1));null==s||s(t,!0),Ct()},onDrag:function(t){var e;if(ft.current&&Q){const n="bottom"===I||"right"===I?1:-1,r=(lt.current-(O(I)?t.pageY:t.pageX))*n,a=r>0,o=d&&!v&&!a;if(o&&0===wt)return;const i=Math.abs(r),l=document.querySelector("[data-vaul-drawer-wrapper]");let s=i/("bottom"===I||"top"===I?pt.current:mt.current);const f=Et(i,a);if(null!==f&&(s=f),o&&s>=1)return;if(!it.current&&!Tt(t.target,a))return;if(ft.current.classList.add($),it.current=!0,E(ft.current,{transition:"none"}),E(et.current,{transition:"none"}),d&&Pt({draggedDistance:r}),a&&!d){const t=(e=r,8*(Math.log(e+1)-2)),a=Math.min(-1*t,0)*n;return void E(ft.current,{transform:O(I)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})}const p=1-s;if((Rt||g&&wt===g-1)&&(null==u||u(t,s),E(et.current,{opacity:`${p}`,transition:"none"},!0)),l&&et.current&&c){const t=Math.min(St()+s*(1-St()),1),e=8-8*s,n=Math.max(0,14-14*s);E(l,{borderRadius:`${e}px`,transform:O(I)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!d){const t=i*n;E(ft.current,{transform:O(I)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})}}},dismissible:v,shouldAnimate:dt,handleOnly:h,isOpen:V,isDragging:Q,shouldFade:Rt,closeDrawer:Dt,onNestedDrag:function(t,e){if(e<0)return;const n=(window.innerWidth-C)/window.innerWidth,r=n+e*(1-n),a=e*C-16;E(ft.current,{transform:O(I)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(t){const e=t?(window.innerWidth-C)/window.innerWidth:1,n=t?-16:0;ut.current&&window.clearTimeout(ut.current),E(ft.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(I)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`}),!t&&ft.current&&(ut.current=setTimeout(()=>{const t=S(ft.current,I);E(ft.current,{transition:"none",transform:O(I)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},500))},onNestedRelease:function(t,e){const n=O(I)?window.innerHeight:window.innerWidth,r=e?(n-C)/n:1,a=e?-16:0;e&&E(ft.current,{transition:`transform ${D.DURATION}s cubic-bezier(${D.EASE.join(",")})`,transform:O(I)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`})},keyboardIsOpen:st,modal:T,snapPointsOffset:xt,activeSnapPointIndex:wt,direction:I,shouldScaleBackground:c,setBackgroundColorOnScale:f,noBodyStyles:F,container:q,autoFocus:U}},o))}const F=e.forwardRef(function({...n},r){const{overlayRef:a,snapPoints:i,onRelease:u,shouldFade:l,isOpen:s,modal:d,shouldAnimate:c}=o(),f=P(r,a),p=i&&i.length>0;if(!d)return null;const m=e.useCallback(t=>u(t),[u]);return e.createElement(t.DialogOverlay,{onMouseUp:m,ref:f,"data-vaul-overlay":"","data-vaul-snap-points":s&&p?"true":"false","data-vaul-snap-points-overlay":s&&l?"true":"false","data-vaul-animate":(null==c?void 0:c.current)?"true":"false",...n})});F.displayName="Drawer.Overlay";const I=e.forwardRef(function({onPointerDownOutside:n,style:r,onOpenAutoFocus:a,...i},u){const{drawerRef:l,onPress:s,onRelease:d,onDrag:c,keyboardIsOpen:f,snapPointsOffset:p,activeSnapPointIndex:m,modal:v,isOpen:h,direction:g,snapPoints:w,container:y,handleOnly:b,shouldAnimate:x,autoFocus:R}=o(),[E,S]=e.useState(!1),C=P(u,l),$=e.useRef(null),A=e.useRef(null),k=e.useRef(!1),M=w&&w.length>0;!function(){const{direction:t,isOpen:n,shouldScaleBackground:r,setBackgroundColorOnScale:a,noBodyStyles:i}=o(),u=e.useRef(null),l=e.useMemo(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-26)/window.innerWidth}e.useEffect(()=>{if(n&&r){u.current&&clearTimeout(u.current);const e=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!e)return;a&&!i&&T(document.body,{background:"black"}),T(e,{transformOrigin:O(t)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${D.DURATION}s`,transitionTimingFunction:`cubic-bezier(${D.EASE.join(",")})`});const n=T(e,{borderRadius:"8px",overflow:"hidden",...O(t)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),u.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},1e3*D.DURATION)}}},[n,r,l])}();function B(t){$.current=null,k.current=!1,d(t)}return e.useEffect(()=>{M&&window.requestAnimationFrame(()=>{S(!0)})},[]),e.createElement(t.Content,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":E?"true":"false","data-vaul-snap-points":h&&M?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":(null==x?void 0:x.current)?"true":"false",...i,ref:C,style:p&&p.length>0?{"--snap-point-height":`${p[null!=m?m:0]}px`,...r}:r,onPointerDown:t=>{b||(null==i.onPointerDown||i.onPointerDown.call(i,t),$.current={x:t.pageX,y:t.pageY},s(t))},onOpenAutoFocus:t=>{null==a||a(t),R||t.preventDefault()},onPointerDownOutside:t=>{null==n||n(t),v&&!t.defaultPrevented?f.current&&(f.current=!1):t.preventDefault()},onFocusOutside:t=>{v||t.preventDefault()},onPointerMove:t=>{if(A.current=t,b)return;if(null==i.onPointerMove||i.onPointerMove.call(i,t),!$.current)return;const e=t.pageY-$.current.y,n=t.pageX-$.current.x,r="touch"===t.pointerType?10:2,a=((t,e,n=0)=>{if(k.current)return!0;const r=Math.abs(t.y),a=Math.abs(t.x),o=a>r,i=["bottom","right"].includes(e)?1:-1;if("left"===e||"right"===e){if(!(t.x*i<0)&&a>=0&&a<=n)return o}else if(!(t.y*i<0)&&r>=0&&r<=n)return!o;return k.current=!0,!0})({x:n,y:e},g,r);a?c(t):(Math.abs(n)>r||Math.abs(e)>r)&&($.current=null)},onPointerUp:t=>{null==i.onPointerUp||i.onPointerUp.call(i,t),$.current=null,k.current=!1,d(t)},onPointerOut:t=>{null==i.onPointerOut||i.onPointerOut.call(i,t),B(A.current)},onContextMenu:t=>{null==i.onContextMenu||i.onContextMenu.call(i,t),A.current&&B(A.current)}})});I.displayName="Drawer.Content";const N=e.forwardRef(function({preventCycle:t=!1,children:n,...r},a){const{closeDrawer:i,isDragging:u,snapPoints:l,activeSnapPoint:s,setActiveSnapPoint:d,dismissible:c,handleOnly:f,isOpen:p,onPress:m,onDrag:v}=o(),h=e.useRef(null),g=e.useRef(!1);function w(){h.current&&window.clearTimeout(h.current),g.current=!1}return e.createElement("div",{onClick:function(){g.current?w():window.setTimeout(()=>{!function(){if(u||t||g.current)return void w();if(w(),!l||0===l.length)return void(c||i());if(s===l[l.length-1]&&c)return void i();const e=l.findIndex(t=>t===s);if(-1===e)return;const n=l[e+1];d(n)}()},120)},onPointerCancel:w,onPointerDown:t=>{f&&m(t),h.current=window.setTimeout(()=>{g.current=!0},250)},onPointerMove:t=>{f&&v(t)},ref:a,"data-vaul-drawer-visible":p?"true":"false","data-vaul-handle":"","aria-hidden":"true",...r},e.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},n))});function L(n){const r=o(),{container:a=r.container,...i}=n;return e.createElement(t.DialogPortal,{container:a,...i})}N.displayName="Drawer.Handle";const H={Root:B,Content:I,Portal:L,Handle:N};exports.Content=I,exports.Drawer=H,exports.Handle=N,exports.Overlay=F,exports.Portal=L,exports.Root=B;