@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 +105 -0
- package/MIGRATION.md +13 -0
- package/README.md +182 -64
- package/dist/cjs/_bundled/vaul/dist/index.js +1 -1
- package/dist/cjs/blocks/user-hub/settings.js +1 -1
- package/dist/cjs/dialog/Dialog.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/css/login.css +1 -1
- package/dist/css/sheet.css +1 -1
- package/dist/css/signup.css +1 -0
- package/dist/css/user-hub.css +3 -1
- package/dist/es/_bundled/vaul/dist/index.js +1 -1
- package/dist/es/blocks/user-hub/settings.js +1 -1
- package/dist/es/dialog/Dialog.js +1 -1
- package/dist/es/index.js +1 -1
- package/dist/global.css +6 -4
- package/dist/index.d.ts +33 -4
- package/package.json +3 -2
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,
|
|
3
|
+
> Modern, erişilebilir ve kompozisyona dayalı React bileşen kütüphanesi
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@inntechcorp/it-design)
|
|
6
6
|
[](./LICENSE)
|
|
7
7
|
[](https://www.w3.org/WAI/WCAG21/quickref/)
|
|
8
8
|
|
|
9
|
-
**ITD Design System
|
|
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
|
-
|
|
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
|
-
##
|
|
18
|
+
## Sürümler
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
#
|
|
24
|
-
npm install @inntechcorp/it-design
|
|
39
|
+
# v4 beta (onerilen: yeni projeler ve panel)
|
|
40
|
+
npm install @inntechcorp/it-design@next
|
|
25
41
|
|
|
26
|
-
#
|
|
27
|
-
|
|
42
|
+
# v3 (mevcut siteler)
|
|
43
|
+
npm install @inntechcorp/it-design
|
|
28
44
|
|
|
29
|
-
#
|
|
30
|
-
|
|
45
|
+
# yarn (peer'lari elle ekleyin)
|
|
46
|
+
yarn add @inntechcorp/it-design@next react react-dom i18next react-i18next
|
|
31
47
|
```
|
|
32
48
|
|
|
33
|
-
##
|
|
49
|
+
## Hızlı Başlangıç
|
|
34
50
|
|
|
35
|
-
**1.
|
|
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.
|
|
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="
|
|
66
|
+
<ITDProvider theme="dark" language="tr" country="tr">
|
|
49
67
|
<YourApp />
|
|
50
68
|
</ITDProvider>
|
|
51
69
|
);
|
|
52
70
|
}
|
|
53
71
|
```
|
|
54
72
|
|
|
55
|
-
**3.
|
|
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: '
|
|
82
|
+
lng: 'tr',
|
|
64
83
|
fallbackLng: 'en',
|
|
65
|
-
resources: locales, // tr + en,
|
|
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.
|
|
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>
|
|
98
|
+
<CardTitle>Merhaba</CardTitle>
|
|
80
99
|
</CardHeader>
|
|
81
100
|
<CardContent>
|
|
82
|
-
<Input placeholder="
|
|
83
|
-
<Button variant="filled">
|
|
101
|
+
<Input placeholder="Bir şeyler yazın..." />
|
|
102
|
+
<Button variant="filled">Kaydet</Button>
|
|
84
103
|
</CardContent>
|
|
85
104
|
</Card>;
|
|
86
105
|
```
|
|
87
106
|
|
|
88
|
-
##
|
|
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
|
-
|
|
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
|
-
**
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
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'; //
|
|
158
|
+
import { useLocation, useNavigate } from 'react-router-dom'; // veya sizinki
|
|
108
159
|
|
|
109
160
|
function Providers({ children }) {
|
|
110
|
-
//
|
|
111
|
-
// `location`
|
|
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`
|
|
124
|
-
`Link`
|
|
125
|
-
|
|
126
|
-
`useITDSearchParams
|
|
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
|
|
179
|
+
## CSS giriş noktaları
|
|
129
180
|
|
|
130
181
|
```tsx
|
|
131
|
-
//
|
|
182
|
+
// Secenek 1: hepsi (onerilen)
|
|
132
183
|
import '@inntechcorp/it-design/global.css';
|
|
133
184
|
|
|
134
|
-
//
|
|
135
|
-
import '@inntechcorp/it-design/css/properties.css'; //
|
|
136
|
-
import '@inntechcorp/it-design/css/reset.css'; // reset
|
|
137
|
-
import '@inntechcorp/it-design/css/base.css'; //
|
|
138
|
-
import '@inntechcorp/it-design/css/components.css'; //
|
|
139
|
-
import '@inntechcorp/it-design/css/button.css'; //
|
|
140
|
-
import '@inntechcorp/it-design/css/vendor.css'; //
|
|
141
|
-
import '@inntechcorp/it-design/css/utilities.css'; //
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
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;
|