@ahmetilhn/hanui 1.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ahmet İlhan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,276 @@
1
+ # @ahmetilhn/hanui
2
+
3
+ Erişilebilir, tema güdümlü React bileşen kütüphanesi. SCSS Modules üzerine
4
+ kurulu; çalışma zamanında **hiçbir UI bağımlılığı yok**.
5
+
6
+ - **Tek CSS dosyası, iki tema.** Açık ve koyu hazır gelir, her token dışarıdan
7
+ ezilebilir.
8
+ - **Yönlendirici enjekte edilir.** `next/link`, `react-router`, ham `<a>` —
9
+ karar tüketicinin.
10
+ - **Metin dışarıdan.** Kütüphane hiçbir dilde metin uydurmaz; kullanıcıya
11
+ görünen her dize bir prop.
12
+ - **Yerel öğeler korunur.** `<dialog>`, `<input type="range">`,
13
+ `<input type="radio">` — odak tuzağı, klavye gezinmesi ve ekran okuyucu
14
+ duyurusu tarayıcıdan gelir.
15
+
16
+ ```bash
17
+ npm install @ahmetilhn/hanui @ahmetilhn/handy-utils
18
+ ```
19
+
20
+ `react`, `react-dom` ve `@ahmetilhn/handy-utils` **peer** bağımlılıktır.
21
+
22
+ ---
23
+
24
+ ## Hızlı başlangıç
25
+
26
+ ```tsx
27
+ // Uygulamanın kökünde BİR KEZ.
28
+ import '@ahmetilhn/hanui/styles.css';
29
+ ```
30
+
31
+ ```tsx
32
+ import { Button, Field, Input, UIVariant } from '@ahmetilhn/hanui';
33
+
34
+ <Field label="E-posta" isRequired requiredLabel="(zorunlu)" error={error}>
35
+ {props => <Input {...props} type="email" value={email} onChange={onChange} />}
36
+ </Field>
37
+
38
+ <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}>
39
+ Kaydet
40
+ </Button>;
41
+ ```
42
+
43
+ Sağlayıcı **zorunlu değil**: paket kurulup hiçbir yapılandırma yapılmadan
44
+ çalışır. Bağlantılar ham `<a>` olur, tema varsayılanlarda kalır.
45
+
46
+ ---
47
+
48
+ ## Tema
49
+
50
+ ### Tema seçimi `<html>` üzerinde taşınır
51
+
52
+ ```html
53
+ <html data-hanui-theme="dark">
54
+ ```
55
+
56
+ Öznitelik yoksa `prefers-color-scheme` yedeği devreye girer — ama kullanıcının
57
+ **açık bir seçimi** varsa sistem tercihi onu ezmez.
58
+
59
+ ### İlk boyamadan önce yazın
60
+
61
+ ```tsx
62
+ // app/layout.tsx — <head> içine.
63
+ <script
64
+ dangerouslySetInnerHTML={{
65
+ __html: `document.documentElement.dataset.hanuiTheme =
66
+ localStorage.getItem('theme') ?? 'light';`,
67
+ }}
68
+ />
69
+ ```
70
+
71
+ Bu satır React ağacına konamaz: sağlayıcı ağaç monte olduktan sonra çalışıyor
72
+ ve koyu tema seçmiş kullanıcı o ana kadar **bir kare beyaz ekran** görüyor.
73
+
74
+ ### Token'ları ezmek
75
+
76
+ Yalnızca değiştirdiğiniz token'ı verin; gerisi varsayılanında kalır.
77
+
78
+ ```tsx
79
+ import { HanuiProvider } from '@ahmetilhn/hanui';
80
+
81
+ const THEME = {
82
+ light: { blue: '#0d6efd', 'blue-text': '#0a58ca' },
83
+ dark: { blue: '#6ea8fe' },
84
+ fonts: { heading: 'Archivo, sans-serif', body: 'Inter, sans-serif' },
85
+ };
86
+
87
+ <HanuiProvider theme={THEME} linkComponent={NextLink}>
88
+ <App />
89
+ </HanuiProvider>;
90
+ ```
91
+
92
+ React'in dışından (bir `<head>` betiğinden, Storybook'tan) aynı işi
93
+ `initHanui({ theme })` yapar.
94
+
95
+ **Kütüphane font YÜKLEMEZ.** `fonts` yalnızca `font-family` dizesi; yüklemeyi
96
+ (`next/font`, `@font-face`, CDN) siz yaparsınız. Bir UI paketinin ağdan font
97
+ çekmesi, sizin ölçemediğiniz bir istek demek.
98
+
99
+ ### Temayı değiştirmek
100
+
101
+ ```tsx
102
+ const { scheme, toggle, isReady } = useHanuiTheme();
103
+
104
+ useEffect(() => {
105
+ if (isReady) localStorage.setItem('theme', scheme);
106
+ }, [scheme, isReady]);
107
+ ```
108
+
109
+ Kalıcılık **kancanın işi değil**: seçimi `localStorage`a mı, sunucuda
110
+ okunabilsin diye bir çereze mi, kullanıcı profiline mi yazacağınız sizin
111
+ kararınız. Kütüphane `localStorage`a yazsaydı sunucu tarafı onu okuyamayacağı
112
+ için ilk boyama yine yanlış temada olurdu.
113
+
114
+ `isReady`: sunucu çıktısında ve hidrasyondan önceki ilk karede `false`. Tema
115
+ anahtarını çizmeden önce bekleyin — sunucu hangi temanın seçili olduğunu
116
+ bilmiyor ve bir tahminle çizilen anahtar, doğru tahmin edilse bile hidrasyonda
117
+ uyuşmazlık üretiyordu.
118
+
119
+ ### Token katmanları
120
+
121
+ ```
122
+ theme/palette.ts → ham hex (TEK hex kaynağı)
123
+ theme/tokens.ts → anlamsal token → hex (açık + koyu)
124
+ styles/*.generated → yukarıdakinden ÜRETİLİR (npm run tokens)
125
+ ```
126
+
127
+ SCSS ve TypeScript tarafı elle tutulsaydı bir tarafta var olup diğerinde
128
+ olmayan bir token çıkardı — ve ayrışma sessiz: bileşen `var(--hanui-yok)`
129
+ okuyup rengini kaybediyor, derleme yeşil dönüyor.
130
+
131
+ ---
132
+
133
+ ## Yönlendirici
134
+
135
+ ```tsx
136
+ import NextLink from 'next/link';
137
+
138
+ <HanuiProvider linkComponent={NextLink}>…</HanuiProvider>;
139
+ ```
140
+
141
+ Bir bileşen kütüphanesi kendi yönlendiricisini **seçemez**: `next/link` import
142
+ etmek paketi Next'e bağlar, `react-router` import etmek başka bir uygulamayı
143
+ kırar.
144
+
145
+ Yönlendiriciye özgü props `linkProps` ile geçer:
146
+
147
+ ```tsx
148
+ <Pagination buildHref={page => `?sayfa=${page}`} linkProps={{ scroll: false }} … />
149
+ ```
150
+
151
+ ---
152
+
153
+ ## Yapışkan başlık
154
+
155
+ Sayfa kaydırmasına yapışan bileşenler (`DirectoryGroup`, `DirectoryJump`,
156
+ kapaklı `DataTable`) offset'i `--hanui-header-height`ten okur ve **varsayılanı
157
+ 0**. Kendi yapışkan bandınız varsa gerçek ölçüyü yazın:
158
+
159
+ ```tsx
160
+ useEffect(() => {
161
+ const observer = new ResizeObserver(([entry]) =>
162
+ document.documentElement.style.setProperty(
163
+ '--hanui-header-height',
164
+ `${entry.contentRect.height}px`,
165
+ ),
166
+ );
167
+ observer.observe(headerRef.current!);
168
+ return () => observer.disconnect();
169
+ }, []);
170
+ ```
171
+
172
+ Sabit bir sayı yazmayın: bant mobilde arama kutusu kendi satırına düştüğünde
173
+ büyür, bir duyuru şeridi çıkıp kaybolduğunda değişir.
174
+
175
+ ---
176
+
177
+ ## Bileşen kataloğu
178
+
179
+ | Grup | Bileşenler |
180
+ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
181
+ | Eylem | `Button` · `IconButton` · `TextLink` · `Tooltip` |
182
+ | Seçim | `Chip` · `ChipGroup` · `Select` · `Combobox` · `Checkbox` · `Radio` · `RadioCard` · `RangeSlider` · `RatingInput` · `QuantityStepper` · `TableCheckbox` |
183
+ | Girdi | `Input` · `Textarea` · `Field` |
184
+ | Yüzey | `Card` (+ `CardMedia`, `CardOverlay`, `CardBody`, `CardFooter`) · `Panel` (+ `PanelForm`, `PanelRow`) · `PageHeader` · `SectionHeader` · `Tile` · `Directory` |
185
+ | Geri bild. | `Alert` · `Badge` · `EmptyState` · `Skeleton` · `Spinner` · `Divider` · `Avatar` · `Rating` · `Price` · `CopyField` · `Breadcrumb` |
186
+ | Kipsel | `Modal` · `BottomSheet` · `ConfirmDialog` · `PromptDialog` |
187
+ | Veri | `Table` (+ `TableScroller`) · `DataTable` (+ `DataTableRow`) · `FilterBar` (+ `FilterBarField`) · `Pagination` |
188
+
189
+ ### Seçenek sayısı öğeyi belirler
190
+
191
+ | Seçenek sayısı | Öğe |
192
+ | -------------- | ----------------------------------------------- |
193
+ | 2–4 | `ChipGroup` — hepsi ekranda, tek dokunuş |
194
+ | 5–20 | `Select` — aramasız liste; mobilde alt sayfa |
195
+ | 20+ | `Combobox` — yazarak ara |
196
+ | Aralık | `RangeSlider` (+ kesin değer için sayı girdisi) |
197
+ | Tekil aç/kapa | `Checkbox` |
198
+
199
+ Hepsini onay kutusu listesi yapmak tek tip ama kötü bir arayüzdür: 1121 markayı
200
+ da 3 seçeneği de aynı biçimde göstermek, ikisini de yanlış gösterir.
201
+
202
+ ---
203
+
204
+ ## Sistemin taşıdığı kararlar
205
+
206
+ **Doygun dolgu = tıklanabilir.** Durum etiketleri **her zaman** tint zeminli
207
+ (`Badge`, `Alert`), eylemler **her zaman** dolgulu veya çerçeveli. Bu ayrım
208
+ bozulduğunda kullanıcı durum etiketine tıklamayı deniyor. `Badge`in `solid`
209
+ varyantı durum tonlarında bilinçli olarak `soft` ile aynı şeyi verir.
210
+
211
+ **Bir ekranda tek `PRIMARY`.** `UIVariant` bir vurgu hiyerarşisi: iki dolu düğme
212
+ yan yana durduğunda hiçbiri öne çıkmaz. `UIVariant.CART` ekrandaki tek doygun
213
+ turuncu — dönüşüm eylemi.
214
+
215
+ **Renk tek başına anlam taşımaz** (WCAG 1.4.1). Her durum bir metin, ikon veya
216
+ işaretle de bildirilir: `Alert`in her tonunun kendi ikonu var, `Field`in zorunlu
217
+ yıldızının yanında okunabilir bir metin, `RatingInput`in yıldızlarının altında
218
+ açıklama duruyor.
219
+
220
+ **"Yüklenemedi" ile "boş" ayrı durumlardır.** `DataTable`da `error` verilmişken
221
+ boş mesajı **asla** çizilmez; bir ağ hatasını "kayıt kalmamış" diye okutmak
222
+ kullanıcıya yanlış karar verdirir.
223
+
224
+ **Yerel öğe, taklit öğeden iyidir.** `<dialog>`, `<input type="range">`,
225
+ `<input type="radio">` korunur. Tek istisna `<select>`: açılır listesinin içine
226
+ hiçbir biçimde girilemiyor ve mobil tekerleği uygulamanın geri kalanına hiç
227
+ benzemiyor. Bedeli (odak yönetimi, ok tuşları, `aria-activedescendant`) bir kez
228
+ ödenip tek bileşene kapatıldı.
229
+
230
+ **Dokunma hedefi en az 44×44 px** (WCAG 2.5.8). Görsel kutu daha küçük olabilir;
231
+ tıklanabilir alan görünmez bir örtüyle korunur.
232
+
233
+ **Hareket 200 ms'yi geçmez** ve `prefers-reduced-motion` her animasyonda
234
+ karşılanır.
235
+
236
+ **Odak halkası `:focus-visible` ile.** `:focus` fareyle tıklandığında da halka
237
+ gösterip görsel gürültü yaratıyor ve kullanıcılar bunu hata sanıyordu.
238
+
239
+ ---
240
+
241
+ ## Next.js App Router
242
+
243
+ Paket `'use client'` sınırını **kendi içinde** çizer: sunucu bileşenlerinden
244
+ doğrudan import edilebilir, `children` sunucuda çizilip aktarılır.
245
+
246
+ ```tsx
247
+ // app/layout.tsx
248
+ import '@ahmetilhn/hanui/styles.css';
249
+ import { HanuiProvider } from '@ahmetilhn/hanui';
250
+ import NextLink from 'next/link';
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Geliştirme
256
+
257
+ ```bash
258
+ nvm use # .nvmrc → 24
259
+ npm install
260
+ npm run verify # tokens → typecheck → lint → test → build
261
+ ```
262
+
263
+ | Komut | |
264
+ | ------------------- | -------------------------------------------------- |
265
+ | `npm run tokens` | SCSS token dosyalarını `theme/tokens.ts`ten üretir |
266
+ | `npm run build` | `build/` (ESM + CJS + `.d.ts` + `styles.css`) |
267
+ | `npm run test` | Jest + Testing Library |
268
+ | `npm run typecheck` | `tsc --noEmit` |
269
+
270
+ `master`a her push `npm publish` çalıştırır — **`package.json` sürümünü
271
+ yükseltmeyi unutmayın**, aynı sürüm ikinci kez yayımlanamaz ve iş akışı kırmızı
272
+ döner.
273
+
274
+ ## Lisans
275
+
276
+ MIT
@@ -0,0 +1,18 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("react"),O=require("@ahmetilhn/handy-utils"),rn=require("react-dom"),b={n0:"#ffffff",n25:"#fafbfc",n50:"#f6f7f9",n100:"#eef0f4",n150:"#e7eaef",n200:"#e2e6ec",n250:"#d6dce4",n300:"#c9d0da",n500:"#8a94a3",n550:"#6b7583",n600:"#5a6472",n900:"#11151b"},Z={base:"#1f2937",two:"#2b3646",three:"#3a4658",ink:"#12161d",inkTwo:"#1c222b"},J={base:"#f59e0b",hover:"#d98706",active:"#b87205",soft:"#f8cd80",dark:"#fbbf24",darkHover:"#f0af12",on:"#291500"},T={base:"#2f6fed",hover:"#1d54c4",active:"#17439c",text:"#1d54c4",tint:"#eaf1fe",line:"#bcd2fb",dark:"#5b93ff",darkHover:"#7aa8ff",darkTint:"#16243c",darkLine:"#2a3f63"},k={okBg:"#e8f4eb",okFg:"#1d6e31",okLine:"#a8dcb7",okBgDark:"#122817",okFgDark:"#34c759",okLineDark:"#22542f",warnBg:"#fdf0dd",warnFg:"#7a3e02",warnLine:"#ebc687",warnBgDark:"#2c2008",warnFgDark:"#f5c86b",warnLineDark:"#55401a",offBg:"#f1f2f5",offFg:"#3a424f",offLine:"#ccd2db",offBgDark:"#212630",offFgDark:"#a3adbb",offLineDark:"#333b47",badBg:"#f8ebeb",badFg:"#bb1e1e",badLine:"#e6a6a6",badBgDark:"#310f0f",badFgDark:"#e97575",badLineDark:"#621b1b",oemBg:"#eaf1fe",oemFg:"#16305c",oemLine:"#a9c6f9",oemBgDark:"#152139",oemFgDark:"#9dc0ff",oemLineDark:"#27395c",altBg:"#eeebfa",altFg:"#2e2661",altLine:"#c0b6ea",altBgDark:"#1d1a33",altFgDark:"#bfb3f5",altLineDark:"#332d56"},ve={base:"#dc2626",hover:"#bb1e1e",dark:"#e45b5b",darkHover:"#ef7a72",onDark:"#1a0b0a"},_e={red:"#dc2626",redDark:"#e35252",green:"#34c759",greenDark:"#4cd76c",greenHover:"#2aae4b",greenHoverDark:"#63e084",onGreen:"#06280f"},Ye={bg:"#e8f4eb",fg:"#1d6e31",bgDark:"#122817",fgDark:"#34c759"},ma={light:"#9a5f04",dark:"#f0b429"},v=(a,n)=>{const t=a.replace("#",""),s=t.length===3?t.split("").map(d=>d+d).join(""):t,r=parseInt(s.slice(0,2),16),i=parseInt(s.slice(2,4),16),c=parseInt(s.slice(4,6),16);return`rgba(${r}, ${i}, ${c}, ${n})`},G="#000000",pa={page:b.n50,surface:b.n0,"surface-2":b.n100,"surface-3":b.n150,"surface-inset":b.n25,border:b.n250,"border-strong":b.n300,text:b.n900,"text-2":b.n600,"text-3":b.n550,graphite:Z.base,"graphite-2":Z.two,"graphite-3":Z.three,action:Z.base,"action-hover":Z.two,"action-active":Z.three,"on-action":b.n0,"action-soft":b.n300,amber:J.base,"amber-hover":J.hover,"amber-active":J.active,"amber-soft":J.soft,"on-amber":J.on,blue:T.base,"blue-hover":T.hover,"blue-active":T.active,"blue-text":T.text,"blue-tint":T.tint,"blue-line":T.line,"ok-bg":k.okBg,"ok-fg":k.okFg,"ok-line":k.okLine,"warn-bg":k.warnBg,"warn-fg":k.warnFg,"warn-line":k.warnLine,"off-bg":k.offBg,"off-fg":k.offFg,"off-line":k.offLine,"bad-bg":k.badBg,"bad-fg":k.badFg,"bad-line":k.badLine,"oem-bg":k.oemBg,"oem-fg":k.oemFg,"oem-line":k.oemLine,"alt-bg":k.altBg,"alt-fg":k.altFg,"alt-line":k.altLine,"sale-bg":Ye.bg,"sale-fg":Ye.fg,"red-accent":_e.red,"green-accent":_e.green,"green-accent-hover":_e.greenHover,"on-green":_e.onGreen,star:ma.light,"danger-solid":ve.base,"danger-solid-hover":ve.hover,"on-danger":b.n0,"nav-bg":b.n0,"nav-bg-2":b.n100,"nav-fg":b.n900,"nav-fg-2":b.n600,"nav-fg-3":b.n500,"nav-line":b.n200,"nav-line-strong":b.n300,"nav-hover":b.n100,"footer-bg":b.n100,"shadow-xs":`0 1px 2px ${v(b.n900,.05)}`,"shadow-sm":`0 1px 2px ${v(b.n900,.05)}, 0 1px 3px ${v(b.n900,.04)}`,"shadow-md":`0 2px 4px ${v(b.n900,.04)}, 0 6px 16px ${v(b.n900,.07)}`,"shadow-lg":`0 4px 8px ${v(b.n900,.05)}, 0 16px 32px ${v(b.n900,.1)}`,"shadow-xl":`0 8px 16px ${v(b.n900,.06)}, 0 28px 56px ${v(b.n900,.13)}`,"shadow-up":`0 -2px 4px ${v(b.n900,.03)}, 0 -8px 24px ${v(b.n900,.08)}`,ring:`0 0 0 3px ${v(T.base,.28)}`,"ring-color":T.base,"ring-danger":`0 0 0 3px ${v(ve.base,.24)}`,"ring-ok":`0 0 0 4px ${v(k.okFg,.16)}`,scrim:v(b.n900,.55),"scrim-soft":v(b.n900,.32),glass:v(b.n0,.92),"glass-solid":b.n0,"on-scrim":b.n0,"skeleton-a":b.n100,"skeleton-b":b.n25,track:v(b.n900,.12),"media-bg":b.n100,"glow-1":v(T.base,.1),"glow-2":v(T.base,.06),"glow-amber":v(J.base,.09)},ba={page:"#0e1116",surface:"#171b22","surface-2":"#1f242d","surface-3":"#262c36","surface-inset":"#13171d",border:"#262c36","border-strong":"#363e4a",text:"#e7eaee","text-2":"#9aa4b2","text-3":"#6b7583",graphite:Z.ink,"graphite-2":Z.inkTwo,"graphite-3":Z.two,action:b.n150,"action-hover":b.n0,"action-active":b.n300,"on-action":b.n900,"action-soft":"#414a58",amber:J.dark,"amber-hover":J.darkHover,"amber-active":J.base,"amber-soft":"#6d5316","on-amber":J.on,blue:T.dark,"blue-hover":T.darkHover,"blue-active":T.base,"blue-text":T.dark,"blue-tint":T.darkTint,"blue-line":T.darkLine,"ok-bg":k.okBgDark,"ok-fg":k.okFgDark,"ok-line":k.okLineDark,"warn-bg":k.warnBgDark,"warn-fg":k.warnFgDark,"warn-line":k.warnLineDark,"off-bg":k.offBgDark,"off-fg":k.offFgDark,"off-line":k.offLineDark,"bad-bg":k.badBgDark,"bad-fg":k.badFgDark,"bad-line":k.badLineDark,"oem-bg":k.oemBgDark,"oem-fg":k.oemFgDark,"oem-line":k.oemLineDark,"alt-bg":k.altBgDark,"alt-fg":k.altFgDark,"alt-line":k.altLineDark,"sale-bg":Ye.bgDark,"sale-fg":Ye.fgDark,"red-accent":_e.redDark,"green-accent":_e.greenDark,"green-accent-hover":_e.greenHoverDark,"on-green":_e.onGreen,star:ma.dark,"danger-solid":ve.dark,"danger-solid-hover":ve.darkHover,"on-danger":ve.onDark,"nav-bg":Z.ink,"nav-bg-2":Z.inkTwo,"nav-fg":"#e7eaee","nav-fg-2":"#9aa4b2","nav-fg-3":"#6b7583","nav-line":"#262c36","nav-line-strong":"#363e4a","nav-hover":v(b.n0,.07),"footer-bg":Z.ink,"shadow-xs":`0 1px 2px ${v(G,.4)}`,"shadow-sm":`0 1px 2px ${v(G,.4)}, 0 1px 3px ${v(G,.3)}`,"shadow-md":`0 2px 4px ${v(G,.35)}, 0 6px 16px ${v(G,.45)}`,"shadow-lg":`0 4px 8px ${v(G,.4)}, 0 16px 32px ${v(G,.55)}`,"shadow-xl":`0 8px 16px ${v(G,.45)}, 0 28px 56px ${v(G,.6)}`,"shadow-up":`0 -2px 4px ${v(G,.3)}, 0 -8px 24px ${v(G,.45)}`,ring:`0 0 0 3px ${v(T.dark,.36)}`,"ring-color":T.dark,"ring-danger":`0 0 0 3px ${v(ve.dark,.32)}`,"ring-ok":`0 0 0 4px ${v(k.okFgDark,.2)}`,scrim:v(G,.68),"scrim-soft":v(G,.45),glass:v("#1f242d",.92),"glass-solid":"#1f242d","on-scrim":b.n0,"skeleton-a":"#1f242d","skeleton-b":"#262c36",track:v(b.n0,.14),"media-bg":"#1f242d","glow-1":v(T.base,.2),"glow-2":v(T.dark,.1),"glow-amber":v(J.dark,.12)},cn={heading:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",body:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",mono:"ui-monospace, 'SF Mono', Menlo, Consolas, monospace"},da="--hanui-",_a="hanui-theme-overrides",ye="data-hanui-theme",ua="hanui-theme-switching",ln=(a,n)=>{const t=a==="dark"?ba:pa,s=(a==="dark"?n==null?void 0:n.dark:n==null?void 0:n.light)??{};return{...t,...s}},ga=a=>{const n=[],t=(i,c=" ")=>Object.entries(i).map(([d,u])=>`${c}${da}${d}: ${u};`).join(`
2
+ `),s=a.fonts??{},r=Object.entries(s).filter(([,i])=>!!i);if(r.length>0&&n.push(`:root {
3
+ ${r.map(([i,c])=>` ${da}font-${i}: ${c};`).join(`
4
+ `)}
5
+ }`),a.light&&Object.keys(a.light).length>0){const i=t(a.light);n.push(`:root {
6
+ ${i}
7
+ }`),n.push(`:root[${ye}='light'] {
8
+ ${i}
9
+ }`)}if(a.dark&&Object.keys(a.dark).length>0){const i=t(a.dark);n.push(`:root[${ye}='dark'] {
10
+ ${i}
11
+ }`),n.push(`@media (prefers-color-scheme: dark) {
12
+ :root:not([${ye}]) {
13
+ ${t(a.dark," ")}
14
+ }
15
+ }`)}return n.join(`
16
+
17
+ `)},xa=a=>{if(!O.isClient())return;const n=a?ga(a):"",t=document.getElementById(_a);if(n===""){t==null||t.remove();return}const s=t??document.createElement("style");s.id=_a,s.textContent=n,t||document.head.appendChild(s)},fa=o.createContext({}),va=()=>o.useContext(fa),dn=({children:a,theme:n,linkComponent:t})=>{const s=o.useMemo(()=>n?JSON.stringify(n):"",[n]);o.useEffect(()=>{xa(n)},[s]);const r=o.useMemo(()=>({theme:n,linkComponent:t}),[s,t]);return e.jsx(fa.Provider,{value:r,children:a})},_n=(a={})=>{xa(a.theme),!(!O.isClient()||!a.colorScheme)&&document.documentElement.setAttribute(ye,a.colorScheme)},ya=()=>{var a;return O.isClient()&&((a=window.matchMedia)!=null&&a.call(window,"(prefers-color-scheme: dark)").matches)?"dark":"light"},un=()=>{if(!O.isClient())return"light";const a=document.documentElement.getAttribute(ye);return a==="dark"||a==="light"?a:ya()},hn=()=>{const[a,n]=o.useState("light"),[t,s]=o.useState(!1);o.useEffect(()=>{n(un()),s(!0)},[]),o.useEffect(()=>{if(!O.isClient()||!window.matchMedia)return;const c=window.matchMedia("(prefers-color-scheme: dark)"),d=()=>{document.documentElement.hasAttribute(ye)||n(ya())};return c.addEventListener("change",d),()=>c.removeEventListener("change",d)},[]);const r=o.useCallback(c=>{if(!O.isClient())return;const d=document.documentElement;d.classList.add(ua),d.setAttribute(ye,c),n(c),window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>d.classList.remove(ua))})},[]),i=o.useCallback(()=>r(a==="dark"?"light":"dark"),[a,r]);return{scheme:a,setScheme:r,toggle:i,isReady:t}},ja="--hanui-sheet-height",ka="--hanui-sheet-inset-bottom";let Ke=0,Te=0;const Na=()=>{const a=window.visualViewport;if(!a)return;const n=window.innerHeight-a.height-a.offsetTop,t=document.documentElement;t.style.setProperty(ka,`${Math.max(0,Math.round(n))}px`),t.style.setProperty(ja,`${Math.round(a.height)}px`)},Ne=()=>{Te||(Te=window.requestAnimationFrame(()=>{Te=0,Na()}))},wa=(a=!0)=>{o.useEffect(()=>{if(!a)return;const n=window.visualViewport;if(n)return Ke+=1,Ke===1&&(n.addEventListener("resize",Ne),n.addEventListener("scroll",Ne),window.addEventListener("orientationchange",Ne)),Na(),()=>{Ke-=1,!(Ke>0)&&(n.removeEventListener("resize",Ne),n.removeEventListener("scroll",Ne),window.removeEventListener("orientationchange",Ne),Te&&(window.cancelAnimationFrame(Te),Te=0),document.documentElement.style.removeProperty(ka),document.documentElement.style.removeProperty(ja))}},[a])};var W=(a=>(a.PRIMARY="PRIMARY",a.CART="CART",a.SECONDARY="SECONDARY",a.OUTLINE="OUTLINE",a.DARK="DARK",a.LIGHT="LIGHT",a.GHOST="GHOST",a.DANGER="DANGER",a))(W||{}),ue=(a=>(a.SMALL="SMALL",a.MEDIUM="MEDIUM",a.LARGE="LARGE",a))(ue||{});const $a=640,mn=768,Ca=1024,pn=`(min-width: ${Ca+1}px)`,Xe=`(min-width: ${$a+1}px)`,We=a=>a.replace(/İ/g,"i").replace(/I/g,"i").replace(/ı/g,"i").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/ş/g,"s").replace(/ğ/g,"g").replace(/ç/g,"c").replace(/ø/g,"o").replace(/æ/g,"ae").replace(/ß/g,"ss").replace(/đ/g,"d").replace(/ł/g,"l").replace(/\s+/g," ").trim(),ea=(a,n)=>We(a).includes(We(n)),bn=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),Da=a=>{if(!(a instanceof HTMLElement))return!1;if(a.isContentEditable)return!0;const n=a.getAttribute("contenteditable");if(n===""||n==="true"||n==="plaintext-only")return!0;const t=a.tagName;return t==="TEXTAREA"?!0:t!=="INPUT"?!1:!bn.has(a.type)},na=a=>{const n=a.ownerDocument.activeElement;!a.contains(n)||!Da(n)||(n.blur(),a.tabIndex=-1,a.focus({preventScroll:!0}))},_=(...a)=>{let n="";for(const t of a)t&&(n=n===""?t:`${n} ${t}`);return n},ee=({children:a,...n})=>{const{linkComponent:t}=va();return t?e.jsx(t,{...n,children:a}):e.jsx("a",{...n,children:a})},gn="hanui-spinner-7pXwf",xn="hanui-spinner__label-sZvSq",Ve={spinner:gn,"hanui-spin":"hanui-hanui-spin-wTV0a",spinner__label:xn,"spinner--sm":"hanui-spinner--sm-uI0wH","spinner--md":"hanui-spinner--md--VmFK","spinner--lg":"hanui-spinner--lg-K9k-Z"},fn=({size:a="md",label:n,className:t})=>e.jsx("span",{className:_(Ve.spinner,Ve[`spinner--${a}`],t),role:"status",children:e.jsx("span",{className:Ve.spinner__label,children:n})}),ta=o.memo(fn),vn="hanui-button-SRu4R",yn="hanui-button__icon-giom6",jn="hanui-button__spinner-vexVG",kn="hanui-button__label-qiMHm",se={button:vn,button__icon:yn,button__spinner:jn,button__label:kn,"button--full":"hanui-button--full-CwPHR","button--loading":"hanui-button--loading-O-naJ","button--small":"hanui-button--small-TF9Hz","button--medium":"hanui-button--medium-JDjkH","button--large":"hanui-button--large-btadu","button--primary":"hanui-button--primary-ym7RJ","button--cart":"hanui-button--cart-5DVmR","button--secondary":"hanui-button--secondary-56m1d","button--outline":"hanui-button--outline-ZI8sw","button--dark":"hanui-button--dark-FGZgn","button--light":"hanui-button--light-YzEPs","button--ghost":"hanui-button--ghost-rijnZ","button--danger":"hanui-button--danger-TNGd2"},Ea=o.forwardRef(({variant:a=W.PRIMARY,size:n=ue.MEDIUM,isLoading:t,isFullWidth:s,startIcon:r,endIcon:i,className:c,children:d,disabled:u,href:h,isExternal:p,linkProps:m,testId:l,...x},g)=>{const $=_(se.button,se[`button--${a.toLowerCase()}`],se[`button--${n.toLowerCase()}`],s&&se["button--full"],t&&se["button--loading"],c),w=e.jsxs(e.Fragment,{children:[t&&e.jsx(ta,{size:"sm",className:se.button__spinner,label:""}),!t&&r&&e.jsx("span",{className:se.button__icon,children:r}),e.jsx("span",{className:se.button__label,children:d}),i&&e.jsx("span",{className:se.button__icon,children:i})]});return h&&p?e.jsx("a",{href:h,className:$,target:"_blank",rel:"noopener noreferrer","aria-label":x["aria-label"],"data-testid":l,children:w}):h?e.jsx(ee,{href:h,className:$,"data-testid":l,...m,children:w}):e.jsx("button",{ref:g,className:$,disabled:u||t,"aria-busy":t,"data-testid":l,...x,children:w})});Ea.displayName="Button";const Ae=o.memo(Ea),Nn="hanui-iconButton-JdtwM",Je={iconButton:Nn,"iconButton--sm":"hanui-iconButton--sm-wE6zE","iconButton--md":"hanui-iconButton--md-iTNNS","iconButton--ghost":"hanui-iconButton--ghost-w-8K3","iconButton--outline":"hanui-iconButton--outline-vEhcY","iconButton--solid":"hanui-iconButton--solid-NUszP","iconButton--cart":"hanui-iconButton--cart-nVsH-","iconButton--danger":"hanui-iconButton--danger-xKkEA"},Ia=o.forwardRef(({icon:a,label:n,variant:t="ghost",size:s="md",className:r,type:i="button",href:c,linkProps:d,testId:u,...h},p)=>{const m=_(Je.iconButton,Je[`iconButton--${t}`],Je[`iconButton--${s}`],r);return c?e.jsx(ee,{href:c,className:m,"aria-label":n,title:h.title??n,"data-testid":u,...d,children:a}):e.jsx("button",{ref:p,type:i,className:m,"aria-label":n,title:n,"data-testid":u,...h,children:a})});Ia.displayName="IconButton";const ze=o.memo(Ia),L=({children:a,...n})=>e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":!0,focusable:"false",...n,children:a}),sa=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M1.293 1.293a1 1 0 0 1 1.414 0L8 6.586l5.293-5.293a1 1 0 1 1 1.414 1.414L9.414 8l5.293 5.293a1 1 0 0 1-1.414 1.414L8 9.414l-5.293 5.293a1 1 0 0 1-1.414-1.414L6.586 8 1.293 2.707a1 1 0 0 1 0-1.414"})}),Ra=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425z"})}),wn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0"})}),La=a=>e.jsx(L,{...a,children:e.jsx("path",{fillRule:"evenodd",d:"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"})}),$n=a=>e.jsx(L,{...a,children:e.jsx("path",{fillRule:"evenodd",d:"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0"})}),Ta=a=>e.jsx(L,{...a,children:e.jsx("path",{fillRule:"evenodd",d:"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708"})}),Cn=a=>e.jsx(L,{...a,children:e.jsx("path",{fillRule:"evenodd",d:"M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"})}),Dn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.44.31.98.85l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.85-.98zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"})}),En=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M8 2a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 8 2"})}),In=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M2 8a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11A.5.5 0 0 1 2 8"})}),Rn=a=>e.jsx(L,{...a,children:e.jsx("path",{fillRule:"evenodd",d:"M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"})}),Ln=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2"})}),Tn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"})}),Aa=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2"})}),An=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z"})}),Ma=a=>e.jsxs(L,{...a,children:[e.jsx("path",{d:"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"}),e.jsx("path",{d:"M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"})]}),Mn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.496 6.033h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286a.237.237 0 0 0 .241.247m2.325 6.443c.61 0 1.029-.394 1.029-.927 0-.552-.42-.94-1.03-.94-.584 0-1.009.388-1.009.94 0 .533.425.927 1.01.927"})}),Bn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5M8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5m3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0"})}),Sn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z"})}),Ba=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.283.95l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"})}),Fn=a=>e.jsx(L,{...a,children:e.jsx("path",{d:"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.171-.443.5.5 0 0 1 .084-.302.5.5 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z"})}),On="hanui-link-WBmXY",Hn="hanui-link__label--OEu-",Pn="hanui-link__arrow-JKXm-",Me={link:On,link__label:Hn,link__arrow:Pn,"link--sm":"hanui-link--sm-a-3Dz","link--md":"hanui-link--md-lZdYP","link--brand":"hanui-link--brand-vr8sW","link--muted":"hanui-link--muted-EeN6l"},zn=({href:a,children:n,hasArrow:t,tone:s="brand",size:r="md",className:i,linkProps:c,...d})=>e.jsxs(ee,{href:a,className:_(Me.link,Me[`link--${s}`],Me[`link--${r}`],i),...c,...d,children:[e.jsx("span",{className:Me.link__label,children:n}),t&&e.jsx(Cn,{className:Me.link__arrow})]}),Kn=o.memo(zn),Un="hanui-tooltip-RG1g1",qn="hanui-tooltip__trigger-nWZtO",Gn="hanui-bubble-bcBNk",Ue={tooltip:Un,tooltip__trigger:qn,bubble:Gn,"hanui-fade-in-up":"hanui-hanui-fade-in-up-Fwj3A","bubble--top":"hanui-bubble--top-uWSZy","bubble--bottom":"hanui-bubble--bottom-jKokL"},Yn=({content:a,children:n,position:t="top",className:s})=>{const[r,i]=o.useState(!1),c=o.useId();return e.jsxs("span",{className:_(Ue.tooltip,s),onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onFocus:()=>i(!0),onBlur:()=>i(!1),onKeyDown:d=>{d.key==="Escape"&&i(!1)},children:[e.jsx("span",{"aria-describedby":r?c:void 0,className:Ue.tooltip__trigger,children:n}),r&&e.jsx("span",{id:c,role:"tooltip",className:_(Ue.bubble,Ue[`bubble--${t}`]),children:a})]})},Xn=o.memo(Yn),Zn="hanui-chip--NLgU",Vn="hanui-chip__icon-IjjSb",Jn="hanui-chip__label-cT4hw",Qn="hanui-chip__count-MBGO3",de={chip:Zn,chip__icon:Vn,chip__label:Jn,chip__count:Qn,"chip--sm":"hanui-chip--sm-60H-S","chip--md":"hanui-chip--md--yAlm","chip--iconOnly":"hanui-chip--iconOnly-5LT1h","chip--selected":"hanui-chip--selected-FdpCr"},Sa=o.forwardRef(({children:a,icon:n,endIcon:t,count:s,isSelected:r,size:i="md",label:c,href:d,linkProps:u,className:h,type:p="button",role:m,testId:l,...x},g)=>{const $=_(de.chip,de[`chip--${i}`],r&&de["chip--selected"],!a&&de["chip--iconOnly"],h),w=e.jsxs(e.Fragment,{children:[n&&e.jsx("span",{className:de.chip__icon,"aria-hidden":!0,children:n}),a&&e.jsx("span",{className:de.chip__label,children:a}),O.isDefined(s)&&e.jsx("span",{className:de.chip__count,children:s}),t&&e.jsx("span",{className:de.chip__icon,"aria-hidden":!0,children:t})]});return d?e.jsx(ee,{href:d,className:$,"aria-label":a?void 0:c,"aria-current":r?"page":void 0,title:a?void 0:c,"data-testid":l,...u,children:w}):e.jsx("button",{ref:g,type:p,role:m,className:$,"aria-label":a?void 0:c,title:a?void 0:c,"data-testid":l,...m==="radio"?{"aria-checked":!!r}:{"aria-pressed":!!r},...x,children:w})});Sa.displayName="Chip";const Fa=o.memo(Sa),Wn="hanui-group-0tnVf",ha={group:Wn,"group--scrollable":"hanui-group--scrollable-PMu6V"},et=({options:a,label:n,size:t="md",isScrollable:s,className:r,...i})=>{var m;const c=o.useRef(null),d=l=>i.isMultiple?i.value.includes(l):i.value===l,u=l=>{if(i.isMultiple){const x=i.value.includes(l)?i.value.filter(g=>g!==l):[...i.value,l];i.onChange(x);return}i.onChange(i.value===l?null:l)},h=l=>{var N,j;if(i.isMultiple)return;const x=l.key==="ArrowRight"||l.key==="ArrowDown"?1:l.key==="ArrowLeft"||l.key==="ArrowUp"?-1:0;if(x===0)return;l.preventDefault();const g=a.filter(E=>!E.isDisabled);if(g.length===0)return;const $=g.findIndex(E=>E.value===i.value),w=g[($+x+g.length)%g.length];i.onChange(w.value),(j=(N=c.current)==null?void 0:N.querySelector(`[data-chip-value="${w.value}"]`))==null||j.focus()},p=i.isMultiple?null:i.value??((m=a.find(l=>!l.isDisabled))==null?void 0:m.value)??null;return e.jsx("div",{ref:c,className:_(ha.group,s&&ha["group--scrollable"],r),role:i.isMultiple?"group":"radiogroup","aria-label":n,onKeyDown:h,children:a.map(l=>e.jsx(Fa,{size:t,icon:l.icon,count:l.count,isSelected:d(l.value),disabled:l.isDisabled,role:i.isMultiple?void 0:"radio",tabIndex:i.isMultiple||l.value===p?0:-1,"data-chip-value":l.value,onClick:()=>u(l.value),children:l.label},l.value))})},at=o.memo(et),nt="hanui-sheet-GEvdE",tt="hanui-sheet__header-NJgw-",st="hanui-sheet__title-f-b07",ot="hanui-sheet__toolbar-eyhmW",it="hanui-sheet__body-eJ2KB",rt="hanui-sheet__footer-NpsY5",we={sheet:nt,sheet__header:tt,sheet__title:st,sheet__toolbar:ot,sheet__body:it,sheet__footer:rt},ct=({title:a,closeLabel:n,onClose:t,children:s,toolbar:r,footer:i,closeAbove:c=Xe,className:d,testId:u})=>{const h=o.useId();wa(),o.useEffect(()=>{const l=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=l}},[]),o.useEffect(()=>{const l=window.matchMedia(c);return l.addEventListener("change",t),()=>l.removeEventListener("change",t)},[c,t]);const p=o.useCallback(l=>{!l||l.open||(l.showModal(),na(l))},[]),m=o.useCallback(l=>{l.target===l.currentTarget&&t()},[t]);return O.isClient()?rn.createPortal(e.jsxs("dialog",{ref:p,className:_(we.sheet,d),"aria-labelledby":h,"data-testid":u,onCancel:l=>{l.preventDefault(),t()},onClick:m,children:[e.jsxs("header",{className:we.sheet__header,children:[e.jsx("h2",{id:h,className:we.sheet__title,children:a}),e.jsx(ze,{icon:e.jsx(sa,{}),label:n,variant:"ghost",size:"sm",onClick:t})]}),r&&e.jsx("div",{className:we.sheet__toolbar,children:r}),e.jsx("div",{className:we.sheet__body,children:s}),i&&e.jsx("div",{className:we.sheet__footer,children:i})]}),document.body):null},oa=o.memo(ct),lt="hanui-combobox-NtZoV",dt="hanui-combobox__trigger-2riRR",_t="hanui-combobox__leadingIcon-it2xz",ut="hanui-combobox__value-acDlr",ht="hanui-combobox__clear-EXOsc",mt="hanui-combobox__chevron-g-QzQ",pt="hanui-combobox__panel-srBxl",bt="hanui-combobox__search-THjer",gt="hanui-combobox__searchIcon-vr4Bg",xt="hanui-combobox__searchInput-JPp5h",ft="hanui-combobox__list-p-eCs",vt="hanui-combobox__option-CLWh-",yt="hanui-combobox__optionText-Zm0D6",jt="hanui-combobox__optionLabel-WvT4W",kt="hanui-combobox__optionDescription-8OEzi",Nt="hanui-combobox__check-MKlLz",wt="hanui-combobox__empty-mZwBq",I={combobox:lt,combobox__trigger:dt,"combobox__trigger--empty":"hanui-combobox__trigger--empty-RxwCq","combobox__trigger--open":"hanui-combobox__trigger--open-rw1ZS","combobox__trigger--invalid":"hanui-combobox__trigger--invalid-iZgiN",combobox__leadingIcon:_t,combobox__value:ut,combobox__clear:ht,combobox__chevron:mt,"combobox__chevron--open":"hanui-combobox__chevron--open-9kj1j",combobox__panel:pt,combobox__search:bt,combobox__searchIcon:gt,combobox__searchInput:xt,combobox__list:ft,"combobox__list--sheet":"hanui-combobox__list--sheet-r3MzB",combobox__option:vt,"combobox__option--active":"hanui-combobox__option--active--75Vq","combobox__option--selected":"hanui-combobox__option--selected-DVFGy","combobox__option--disabled":"hanui-combobox__option--disabled-e6VjI",combobox__optionText:yt,combobox__optionLabel:jt,combobox__optionDescription:kt,combobox__check:Nt,combobox__empty:wt},$t=({options:a,value:n,onChange:t,labels:s,isSearchHidden:r,onSearch:i,isLoading:c,isDisabled:d,isClearable:u,icon:h,id:p,className:m,testId:l,"aria-describedby":x,"aria-invalid":g})=>{const $=o.useId(),w=p??$,N=`${w}-listbox`,j=o.useRef(null),E=o.useRef(null),K=o.useRef(null),U=o.useRef(null),[C,ce]=o.useState(null),R=C!==null,[H,B]=o.useState(""),[S,P]=o.useState(0),[ae,he]=o.useState(null),ne=o.useMemo(()=>{if(i||H.trim()==="")return a;const f=H.trim();return a.filter(D=>ea(D.label,f)||(D.description?ea(D.description,f):!1))},[a,H,i]),te=a.find(f=>f.value===n)??null;o.useEffect(()=>{te?he(te.label):n===null&&he(null)},[te,n]);const je=(te==null?void 0:te.label)??ae,le=o.useRef(i);le.current=i,o.useEffect(()=>{if(!R||!le.current)return;const f=window.setTimeout(()=>{var D;return(D=le.current)==null?void 0:D.call(le,H.trim())},300);return()=>window.clearTimeout(f)},[H,R]);const y=o.useCallback(()=>{ce(null),B("")},[]),F=o.useCallback(()=>{if(d)return;ce(window.matchMedia(Xe).matches?"popover":"sheet"),B("");const f=a.findIndex(D=>D.value===n);P(f>=0?f:0)},[d,a,n]);o.useEffect(()=>{if(C!=="popover")return;const f=D=>{var z;(z=j.current)!=null&&z.contains(D.target)||y()};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[C,y]),o.useEffect(()=>{var f;C==="popover"&&((f=K.current)==null||f.focus({preventScroll:!0}))},[C]),o.useEffect(()=>{var f,D;R&&((D=(f=U.current)==null?void 0:f.querySelector(`[data-index="${S}"]`))==null||D.scrollIntoView({block:"nearest"}))},[S,R,ne.length]);const A=f=>{f.isDisabled||(he(f.label),t(f.value),y())},ke=o.useRef(!1);o.useEffect(()=>{var f;ke.current&&!R&&((f=E.current)==null||f.focus()),ke.current=R},[R]);const sn=f=>{const D=ne.length-1;switch(f.key){case"ArrowDown":f.preventDefault(),P(z=>z>=D?0:z+1);break;case"ArrowUp":f.preventDefault(),P(z=>z<=0?D:z-1);break;case"Home":f.preventDefault(),P(0);break;case"End":f.preventDefault(),P(D);break;case"Enter":{f.preventDefault();const z=ne[S];z&&A(z);break}case"Escape":f.preventDefault(),y();break;case"Tab":y();break}},ra=()=>{t(null),he(null)},ca=r?null:e.jsxs("div",{className:I.combobox__search,children:[e.jsx(Dn,{className:I.combobox__searchIcon}),e.jsx("input",{ref:K,type:"text",role:"combobox",className:I.combobox__searchInput,value:H,placeholder:s.searchPlaceholder,autoComplete:"off","aria-autocomplete":"list","aria-expanded":!0,"aria-controls":N,"aria-activedescendant":ne[S]?`${w}-option-${S}`:void 0,"aria-label":s.searchPlaceholder,onChange:f=>{B(f.target.value),P(0)},onKeyDown:sn}),c&&e.jsx(ta,{size:"sm",label:""})]}),la=f=>e.jsxs("ul",{ref:U,id:N,role:"listbox",className:_(I.combobox__list,f&&I["combobox__list--sheet"]),children:[ne.map((D,z)=>{const on=z===S,Ze=D.value===n;return e.jsx("li",{children:e.jsxs("div",{id:`${w}-option-${z}`,role:"option","data-index":z,"aria-selected":Ze,"aria-disabled":D.isDisabled,className:_(I.combobox__option,on&&I["combobox__option--active"],Ze&&I["combobox__option--selected"],D.isDisabled&&I["combobox__option--disabled"]),onMouseEnter:()=>P(z),onClick:()=>A(D),children:[e.jsxs("span",{className:I.combobox__optionText,children:[e.jsx("span",{className:I.combobox__optionLabel,children:D.label}),D.description&&e.jsx("span",{className:I.combobox__optionDescription,children:D.description})]}),Ze&&e.jsx(Ra,{className:I.combobox__check})]})},D.value)}),ne.length===0&&e.jsx("li",{className:I.combobox__empty,children:c?s.loadingMessage:s.emptyMessage})]});return e.jsxs("div",{ref:j,className:_(I.combobox,m),"data-testid":l,children:[e.jsxs("button",{ref:E,id:w,type:"button",className:_(I.combobox__trigger,!je&&I["combobox__trigger--empty"],R&&I["combobox__trigger--open"],g&&I["combobox__trigger--invalid"]),disabled:d,"aria-haspopup":"listbox","aria-expanded":R,"aria-controls":R?N:void 0,"aria-label":s.placeholder,"aria-describedby":x,onClick:()=>R?y():F(),children:[h&&e.jsx("span",{className:I.combobox__leadingIcon,"aria-hidden":!0,children:h}),e.jsx("span",{className:I.combobox__value,children:je??s.placeholder}),u&&je&&!d&&e.jsx("span",{role:"button",tabIndex:0,className:I.combobox__clear,"aria-label":s.clearLabel,onClick:f=>{f.stopPropagation(),ra()},onKeyDown:f=>{f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),ra())},children:e.jsx(sa,{})}),e.jsx(La,{className:_(I.combobox__chevron,R&&I["combobox__chevron--open"])})]}),C==="popover"&&e.jsxs("div",{className:I.combobox__panel,children:[ca,la(!1)]}),C==="sheet"&&e.jsx(oa,{title:s.placeholder,closeLabel:s.closeLabel,onClose:y,toolbar:ca??void 0,children:la(!0)})]})},Ct=o.memo($t),Dt="hanui-select-tiiPL",Et="hanui-trigger-rHQJz",It="hanui-trigger__icon-apCcx",Rt="hanui-trigger__value-ioH7K",Lt="hanui-trigger__chevron-FtsIZ",Tt="hanui-panel-rGOOd",At="hanui-list-SOKf8",Mt="hanui-option-ZDPef",Bt="hanui-option__label-SsoYB",St="hanui-option__check-8CPSG",M={select:Dt,trigger:Et,"trigger--empty":"hanui-trigger--empty-cuinb","trigger--open":"hanui-trigger--open-1nsvu","trigger--sm":"hanui-trigger--sm-Xnu1C",trigger__icon:It,trigger__value:Rt,trigger__chevron:Lt,"trigger__chevron--open":"hanui-trigger__chevron--open-1P2P-",panel:Tt,"hanui-fade-in-up":"hanui-hanui-fade-in-up-Lt0Bt","panel--start":"hanui-panel--start-Fotwa","panel--end":"hanui-panel--end-ClVl2",list:At,"list--sheet":"hanui-list--sheet-BIjCb",option:Mt,"option--active":"hanui-option--active-R4lLF","option--selected":"hanui-option--selected-glQMj","option--disabled":"hanui-option--disabled-h4rdd",option__label:Bt,option__check:St},Ft=({options:a,value:n,onChange:t,label:s,placeholder:r,closeLabel:i,icon:c,size:d="md",align:u="start",isDisabled:h,id:p,className:m,testId:l,"aria-describedby":x,"aria-invalid":g})=>{const $=o.useId(),w=p??$,N=`${w}-listbox`,j=y=>`${w}-option-${y}`,E=o.useRef(null),K=o.useRef(null),U=o.useRef(null),[C,ce]=o.useState(null),[R,H]=o.useState(0),B=C!==null,S=a.findIndex(y=>y.value===n),P=S>=0?a[S]:null,ae=o.useCallback(()=>ce(null),[]),he=o.useCallback(()=>{h||a.length===0||(ce(window.matchMedia(Xe).matches?"popover":"sheet"),H(S>=0?S:0))},[h,a.length,S]),ne=y=>{y.isDisabled||(t(y.value),ae())},te=o.useRef(!1);o.useEffect(()=>{var y;te.current&&!B&&((y=K.current)==null||y.focus()),te.current=B},[B]),o.useEffect(()=>{if(C!=="popover")return;const y=F=>{var A;(A=E.current)!=null&&A.contains(F.target)||ae()};return document.addEventListener("mousedown",y),()=>document.removeEventListener("mousedown",y)},[C,ae]),o.useEffect(()=>{var y;C==="sheet"&&((y=U.current)==null||y.focus({preventScroll:!0}))},[C]),o.useEffect(()=>{var y,F;B&&((F=(y=U.current)==null?void 0:y.querySelector(`[data-index="${R}"]`))==null||F.scrollIntoView({block:"nearest"}))},[R,B]);const je=y=>{const F=a.length-1;if(!B){["ArrowDown","ArrowUp","Enter"," "].includes(y.key)&&(y.preventDefault(),he());return}switch(y.key){case"ArrowDown":y.preventDefault(),H(A=>A>=F?0:A+1);break;case"ArrowUp":y.preventDefault(),H(A=>A<=0?F:A-1);break;case"Home":y.preventDefault(),H(0);break;case"End":y.preventDefault(),H(F);break;case"Enter":case" ":{y.preventDefault();const A=a[R];A&&ne(A);break}case"Escape":y.preventDefault(),ae();break;case"Tab":ae();break}},le=y=>e.jsx("ul",{ref:U,id:N,role:"listbox","aria-label":s,"aria-activedescendant":y&&a[R]?j(R):void 0,tabIndex:y?0:-1,className:_(M.list,y&&M["list--sheet"]),onKeyDown:y?je:void 0,children:a.map((F,A)=>{const ke=F.value===n;return e.jsxs("li",{id:j(A),role:"option","data-index":A,"aria-selected":ke,"aria-disabled":F.isDisabled,className:_(M.option,A===R&&M["option--active"],ke&&M["option--selected"],F.isDisabled&&M["option--disabled"]),onMouseEnter:()=>H(A),onClick:()=>ne(F),children:[e.jsx("span",{className:M.option__label,children:F.label}),ke&&e.jsx(Ra,{className:M.option__check})]},F.value)})});return e.jsxs("span",{ref:E,className:_(M.select,m),"data-testid":l,children:[e.jsxs("button",{ref:K,id:w,type:"button",role:"combobox",className:_(M.trigger,M[`trigger--${d}`],!P&&M["trigger--empty"],B&&M["trigger--open"]),disabled:h,"aria-haspopup":"listbox","aria-expanded":B,"aria-controls":B?N:void 0,"aria-activedescendant":C==="popover"&&a[R]?j(R):void 0,"aria-label":s,"aria-describedby":x,"aria-invalid":g,onClick:()=>B?ae():he(),onKeyDown:je,children:[c&&e.jsx("span",{className:M.trigger__icon,"aria-hidden":!0,children:c}),e.jsx("span",{className:M.trigger__value,children:(P==null?void 0:P.label)??r}),e.jsx(La,{className:_(M.trigger__chevron,B&&M["trigger__chevron--open"])})]}),C==="popover"&&e.jsx("div",{className:_(M.panel,M[`panel--${u}`]),children:le(!1)}),C==="sheet"&&e.jsx(oa,{title:s,closeLabel:i,onClose:ae,children:le(!0)})]})},Ot=o.memo(Ft),Ht="hanui-checkbox-FaFCj",Pt="hanui-checkbox__input-nTHne",zt="hanui-checkbox__body-VAEW2",Kt="hanui-checkbox__label-sSNZY",Ut="hanui-checkbox__hint-ish-J",Be={checkbox:Ht,checkbox__input:Pt,checkbox__body:zt,checkbox__label:Kt,checkbox__hint:Ut},Oa=o.forwardRef(({label:a,hint:n,className:t,testId:s,...r},i)=>e.jsxs("label",{className:_(Be.checkbox,t),"data-testid":s,children:[e.jsx("input",{ref:i,type:"checkbox",className:Be.checkbox__input,...r}),e.jsxs("span",{className:Be.checkbox__body,children:[e.jsx("span",{className:Be.checkbox__label,children:a}),n&&e.jsx("span",{className:Be.checkbox__hint,children:n})]})]}));Oa.displayName="Checkbox";const qt=o.memo(Oa),Gt="hanui-radio-KoZak",Yt="hanui-radio__input-gVMgh",Xt="hanui-radio__body-oZWg6",Zt="hanui-radio__label-d-5ce",Vt="hanui-radio__hint-baVbs",Jt="hanui-radio__count-OtkUM",$e={radio:Gt,radio__input:Yt,radio__body:Xt,radio__label:Zt,radio__hint:Vt,radio__count:Jt},Ha=o.forwardRef(({label:a,hint:n,count:t,className:s,testId:r,...i},c)=>e.jsxs("label",{className:_($e.radio,s),"data-testid":r,children:[e.jsx("input",{ref:c,type:"radio",className:$e.radio__input,...i}),e.jsxs("span",{className:$e.radio__body,children:[e.jsx("span",{className:$e.radio__label,children:a}),n&&e.jsx("span",{className:$e.radio__hint,children:n})]}),O.isDefined(t)&&e.jsx("span",{className:$e.radio__count,children:t})]}));Ha.displayName="Radio";const Qt=o.memo(Ha),Wt="hanui-radioCard-sndiC",es="hanui-radioCard__input-6vuoD",as="hanui-radioCard__indicator--x9LT",ns="hanui-radioCard__body-CFqoi",Ce={radioCard:Wt,radioCard__input:es,"radioCard--selected":"hanui-radioCard--selected-Mi7ee",radioCard__indicator:as,"radioCard--disabled":"hanui-radioCard--disabled-YlYee",radioCard__body:ns},ts=({name:a,value:n,isSelected:t,isDisabled:s,onChange:r,children:i,className:c,id:d,testId:u})=>e.jsxs("label",{className:_(Ce.radioCard,t&&Ce["radioCard--selected"],s&&Ce["radioCard--disabled"],c),"data-testid":u,children:[e.jsx("input",{type:"radio",id:d,name:a,value:n,checked:t,disabled:s,onChange:()=>r(n),className:Ce.radioCard__input}),e.jsx("span",{className:Ce.radioCard__indicator,"aria-hidden":!0}),e.jsx("span",{className:Ce.radioCard__body,children:i})]}),ss=o.memo(ts),os="hanui-range-RpDPh",is="hanui-range__readout-itDMd",rs="hanui-range__separator-u-ZJX",cs="hanui-range__track-bCh5Y",ls="hanui-range__fill-VXMCE",ds="hanui-range__input-TAN2I",_s="hanui-range__bounds-GIhFd",V={range:os,"range--disabled":"hanui-range--disabled-13hlc",range__readout:is,range__separator:rs,range__track:cs,range__fill:ls,range__input:ds,range__bounds:_s},us=({min:a,max:n,step:t=1,value:s,onChange:r,onCommit:i,formatValue:c=String,label:d,minLabel:u,maxLabel:h,isDisabled:p,className:m,testId:l})=>{const[x,g]=s,$=o.useCallback(C=>r([Math.min(C,g),g]),[g,r]),w=o.useCallback(C=>r([x,Math.max(C,x)]),[x,r]),N=o.useCallback(()=>i==null?void 0:i([x,g]),[x,g,i]),j=n-a,E=j===0?0:O.normalize(x-a,j),K=j===0?0:O.normalize(g-a,j),U=E>50;return e.jsxs("div",{className:_(V.range,p&&V["range--disabled"],m),role:"group","aria-label":d,"data-testid":l,children:[e.jsxs("div",{className:V.range__readout,children:[e.jsx("span",{className:V.range__value,children:c(x)}),e.jsx("span",{className:V.range__separator,"aria-hidden":!0,children:"—"}),e.jsx("span",{className:V.range__value,children:c(g)})]}),e.jsxs("div",{className:V.range__track,children:[e.jsx("span",{className:V.range__fill,style:{left:`${E}%`,right:`${100-K}%`},"aria-hidden":!0}),e.jsx("input",{type:"range",className:V.range__input,style:{zIndex:U?4:3},min:a,max:n,step:t,value:x,disabled:p,"aria-label":`${d} — ${u}`,"aria-valuetext":c(x),onChange:C=>$(Number(C.target.value)),onPointerUp:N,onKeyUp:N}),e.jsx("input",{type:"range",className:V.range__input,style:{zIndex:U?3:4},min:a,max:n,step:t,value:g,disabled:p,"aria-label":`${d} — ${h}`,"aria-valuetext":c(g),onChange:C=>w(Number(C.target.value)),onPointerUp:N,onKeyUp:N})]}),e.jsxs("div",{className:V.range__bounds,"aria-hidden":!0,children:[e.jsx("span",{children:c(a)}),e.jsx("span",{children:c(n)})]})]})},hs=o.memo(us),ms="hanui-rating-neNnF",ps="hanui-rating__legend-uYvFS",bs="hanui-rating__stars-vJFLk",gs="hanui-rating__star-BANFJ",xs="hanui-rating__input-s2iiO",fs="hanui-rating__srOnly-iSCoz",vs="hanui-rating__caption-13KFX",oe={rating:ms,"rating--disabled":"hanui-rating--disabled-ZKjHa",rating__legend:ps,rating__stars:bs,rating__star:gs,"rating__star--filled":"hanui-rating__star--filled-L3AkT",rating__input:xs,rating__srOnly:fs,rating__caption:vs},ys=[1,2,3,4,5],js=({value:a,onChange:n,label:t,ratingLabels:s,formatStarCount:r,isDisabled:i,className:c,testId:d})=>{const u=o.useId(),[h,p]=o.useState(null),m=h??a;return e.jsxs("fieldset",{className:_(oe.rating,i&&oe["rating--disabled"],c),disabled:i,"data-testid":d,children:[e.jsx("legend",{className:oe.rating__legend,children:t}),e.jsx("div",{className:oe.rating__stars,onMouseLeave:()=>p(null),children:ys.map(l=>e.jsxs("label",{className:_(oe.rating__star,m!==null&&l<=m&&oe["rating__star--filled"]),onMouseEnter:()=>p(l),children:[e.jsx("input",{type:"radio",name:u,value:l,checked:a===l,onChange:()=>n(l),className:oe.rating__input}),e.jsx(Ba,{}),e.jsxs("span",{className:oe.rating__srOnly,children:[r(l)," — ",s[l]]})]},l))}),m!==null&&e.jsx("span",{className:oe.rating__caption,"aria-hidden":!0,children:s[m]})]})},ks=o.memo(js),Ns="hanui-stepper-8s5Ih",ws="hanui-stepper__button-h6g7d",$s="hanui-stepper__input-OQh5v",Se={stepper:Ns,stepper__button:ws,stepper__input:$s,"stepper--sm":"hanui-stepper--sm-RvrBP","stepper--md":"hanui-stepper--md-Cnjei"},Cs=({value:a,onChange:n,label:t,decreaseLabel:s,increaseLabel:r,min:i=1,max:c=99,isDisabled:d,size:u="md",className:h,testId:p})=>{const[m,l]=o.useState(null),x=g=>{l(null);const $=Number(g.replace(/\D/g,""));$&&n(Math.min(Math.max($,i),c))};return e.jsxs("div",{className:_(Se.stepper,Se[`stepper--${u}`],h),role:"group","aria-label":t,"data-testid":p,children:[e.jsx("button",{type:"button",className:Se.stepper__button,onClick:()=>n(Math.max(a-1,i)),disabled:d||a<=i,"aria-label":s,children:e.jsx(In,{})}),e.jsx("input",{className:Se.stepper__input,value:m??String(a),onChange:g=>l(g.target.value.replace(/\D/g,"").slice(0,2)),onBlur:g=>x(g.target.value),onKeyDown:g=>{g.key==="Enter"&&(g.preventDefault(),x(g.target.value))},inputMode:"numeric",disabled:d,"aria-label":`${t} (${i}-${c})`}),e.jsx("button",{type:"button",className:Se.stepper__button,onClick:()=>n(Math.min(a+1,c)),disabled:d||a>=c,"aria-label":r,children:e.jsx(En,{})})]})},Ds=o.memo(Cs),Es="hanui-checkbox--dvpB",Is={checkbox:Es},Pa=o.forwardRef(({label:a,className:n,testId:t,...s},r)=>e.jsx("input",{ref:r,type:"checkbox","aria-label":a,className:_(Is.checkbox,n),"data-testid":t,...s}));Pa.displayName="TableCheckbox";const Rs=o.memo(Pa),Ls="hanui-wrapper-IAI4E",Ts="hanui-wrapper__prefix-XKDlV",As="hanui-wrapper__suffix-lT35q",Ms="hanui-input-pIS2u",me={wrapper:Ls,wrapper__prefix:Ts,wrapper__suffix:As,input:Ms,"input--hasPrefix":"hanui-input--hasPrefix-nsrWh","input--hasSuffix":"hanui-input--hasSuffix-OrE5A","input--technical":"hanui-input--technical---DCD"},za=o.forwardRef(({prefix:a,suffix:n,isTechnical:t,className:s,testId:r,...i},c)=>e.jsxs("span",{className:_(me.wrapper,s),children:[a&&e.jsx("span",{className:me.wrapper__prefix,"aria-hidden":!0,children:a}),e.jsx("input",{ref:c,className:_(me.input,!!a&&me["input--hasPrefix"],!!n&&me["input--hasSuffix"],t&&me["input--technical"]),"data-testid":r,...i}),n&&e.jsx("span",{className:me.wrapper__suffix,"aria-hidden":!0,children:n})]}));za.displayName="Input";const Ka=o.memo(za),Bs="hanui-textarea-zwJcB",Ss={textarea:Bs},Ua=o.forwardRef(({className:a,rows:n=4,testId:t,...s},r)=>e.jsx("textarea",{ref:r,rows:n,className:_(Ss.textarea,a),"data-testid":t,...s}));Ua.displayName="Textarea";const qa=o.memo(Ua),Fs="hanui-field-KKvre",Os="hanui-field__label-9dlYd",Hs="hanui-field__required-hbDJk",Ps="hanui-field__srOnly-2WQFH",zs="hanui-field__hint-SQPiL",Ks="hanui-field__error-gLlZ-",pe={field:Fs,field__label:Os,"field__label--hidden":"hanui-field__label--hidden-ufuVt",field__required:Hs,field__srOnly:Ps,field__hint:zs,field__error:Ks},Us=({label:a,children:n,hint:t,error:s,isRequired:r,requiredLabel:i,isLabelHidden:c,className:d})=>{const u=o.useId(),h=`${u}-error`,p=`${u}-hint`;return e.jsxs("div",{className:_(pe.field,d),children:[e.jsxs("label",{htmlFor:u,className:_(pe.field__label,c&&pe["field__label--hidden"]),children:[a,r&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:pe.field__required,"aria-hidden":!0,children:"*"}),e.jsx("span",{className:pe.field__srOnly,children:i})]})]}),n({id:u,required:r||void 0,"aria-invalid":s?!0:void 0,"aria-describedby":s?h:t?p:void 0}),s?e.jsxs("p",{id:h,className:pe.field__error,role:"alert",children:[e.jsx(Ma,{}),s]}):t&&e.jsx("p",{id:p,className:pe.field__hint,children:t})]})},aa=o.memo(Us),qs="hanui-alert-gHI-9",Gs="hanui-alert__icon-DhiCT",Ys="hanui-alert__body-52-z2",Xs="hanui-alert__title-I8BAh",Zs="hanui-alert__content-lhBEo",Vs="hanui-alert__action-1mTje",be={alert:qs,alert__icon:Gs,alert__body:Ys,alert__title:Xs,alert__content:Zs,alert__action:Vs,"alert--info":"hanui-alert--info-lsAVw","alert--success":"hanui-alert--success-RMJR6","alert--warning":"hanui-alert--warning-Rkgln","alert--danger":"hanui-alert--danger-9ei0Y"},Js={info:e.jsx(Ln,{}),success:e.jsx(Tn,{}),warning:e.jsx(Aa,{}),danger:e.jsx(An,{})},Qs=({children:a,tone:n="info",title:t,action:s,className:r,testId:i})=>e.jsxs("div",{className:_(be.alert,be[`alert--${n}`],r),role:n==="danger"||n==="warning"?"alert":void 0,"data-testid":i,children:[e.jsx("span",{className:be.alert__icon,children:Js[n]}),e.jsxs("div",{className:be.alert__body,children:[t&&e.jsx("strong",{className:be.alert__title,children:t}),e.jsx("div",{className:be.alert__content,children:a})]}),s&&e.jsx("div",{className:be.alert__action,children:s})]}),Ws=o.memo(Qs),eo="hanui-avatar-qoh3P",ao="hanui-avatar__image-uAyAX",Qe={avatar:eo,avatar__image:ao,"avatar--sm":"hanui-avatar--sm-GGjU4","avatar--md":"hanui-avatar--md-xhXnK","avatar--lg":"hanui-avatar--lg-ULP-r"},no=(a,n)=>{const t=a.trim().split(/\s+/).filter(Boolean);if(t.length===0)return"?";const s=t.length===1?t[0].slice(0,2):`${t[0][0]}${t[t.length-1][0]}`;return n?s.toLocaleUpperCase(n):s.toLocaleUpperCase()},to=({name:a,imageUrl:n,locale:t,size:s="md",className:r,testId:i})=>e.jsx("span",{className:_(Qe.avatar,Qe[`avatar--${s}`],r),"aria-hidden":!0,"data-testid":i,children:n?e.jsx("img",{className:Qe.avatar__image,src:n,alt:""}):no(a,t)}),so=o.memo(to),oo="hanui-badge-uLAaI",io="hanui-badge__icon-R2goZ",qe={badge:oo,badge__icon:io,"badge--neutral":"hanui-badge--neutral-6kddt","badge--soft":"hanui-badge--soft-gFeRF","badge--solid":"hanui-badge--solid-rtdHI","badge--outline":"hanui-badge--outline-QiAAz","badge--success":"hanui-badge--success-Oj11F","badge--danger":"hanui-badge--danger-X3nV0","badge--warning":"hanui-badge--warning-vAsx2","badge--info":"hanui-badge--info-mHOwk","badge--oem":"hanui-badge--oem-Nl-VX","badge--alt":"hanui-badge--alt-gQkww","badge--sale":"hanui-badge--sale-Li1tG","badge--action":"hanui-badge--action-7pUio","badge--link":"hanui-badge--link-zcNJZ"},ro=({children:a,tone:n="neutral",variant:t="soft",icon:s,className:r,testId:i})=>e.jsxs("span",{className:_(qe.badge,qe[`badge--${n}`],qe[`badge--${t}`],r),"data-testid":i,children:[s&&e.jsx("span",{className:qe.badge__icon,children:s}),a]}),co=o.memo(ro),lo="hanui-breadcrumb-amB9n",_o="hanui-breadcrumb__item-Icv1S",uo="hanui-breadcrumb__link-eVkPq",ho="hanui-breadcrumb__current-8XjhU",mo="hanui-breadcrumb__separator-vvaUi",Fe={breadcrumb:lo,breadcrumb__item:_o,breadcrumb__link:uo,breadcrumb__current:ho,breadcrumb__separator:mo},po=({items:a,label:n,linkProps:t,className:s,testId:r})=>e.jsx("nav",{className:s,"aria-label":n,"data-testid":r,children:e.jsx("ol",{className:_(Fe.breadcrumb),children:a.map((i,c)=>{const d=c===a.length-1;return e.jsxs("li",{className:Fe.breadcrumb__item,children:[i.href&&!d?e.jsx(ee,{href:i.href,className:Fe.breadcrumb__link,...t,children:i.label}):e.jsx("span",{className:Fe.breadcrumb__current,"aria-current":"page",children:i.label}),!d&&e.jsx(Ta,{className:Fe.breadcrumb__separator})]},`${i.label}-${c}`)})})}),bo=o.memo(po),go="hanui-card-CaHUG",xo="hanui-media__frame-eBv-s",fo="hanui-media-eggk5",vo="hanui-media__link-ujyVV",yo="hanui-overlay-AVMTX",jo="hanui-body-DyI-6",ko="hanui-footer-2WNCZ",Q={card:go,"card--interactive":"hanui-card--interactive-C1pXZ",media__frame:xo,media:fo,media__link:vo,"media__frame--contained":"hanui-media__frame--contained-Nv9gh",overlay:yo,"overlay--top-left":"hanui-overlay--top-left-td1xA","overlay--top-right":"hanui-overlay--top-right-GqD9H","overlay--bottom-left":"hanui-overlay--bottom-left-T5Quw","overlay--bottom-right":"hanui-overlay--bottom-right-za3z3",body:jo,footer:ko},No=({children:a,isInteractive:n,as:t="div",className:s,testId:r})=>e.jsx(t,{className:_(Q.card,n&&Q["card--interactive"],s),"data-testid":r,children:a}),Ga=o.memo(({children:a,ratio:n=1,href:t,linkProps:s,isContained:r=!0,className:i})=>{const c=e.jsx("span",{className:_(Q.media__frame,r&&Q["media__frame--contained"]),style:{aspectRatio:n},children:a});return e.jsx("div",{className:_(Q.media,i),children:t?e.jsx(ee,{href:t,className:Q.media__link,tabIndex:-1,"aria-hidden":!0,...s,children:c}):c})});Ga.displayName="CardMedia";const Ya=o.memo(({children:a,position:n="top-left",className:t})=>e.jsx("div",{className:_(Q.overlay,Q[`overlay--${n}`],t),children:a}));Ya.displayName="CardOverlay";const Xa=o.memo(({children:a,className:n})=>e.jsx("div",{className:_(Q.body,n),children:a}));Xa.displayName="CardBody";const Za=o.memo(({children:a,className:n})=>e.jsx("div",{className:_(Q.footer,n),children:a}));Za.displayName="CardFooter";const wo=o.memo(No),$o="hanui-copy-Yht5s",Co="hanui-copy__code-CYlCA",Do="hanui-copy__button-GDdH6",Eo="hanui-copy__srOnly-WMTNN",De={copy:$o,"copy--sm":"hanui-copy--sm-Tjqws",copy__code:Co,"copy--md":"hanui-copy--md-00rhU",copy__button:Do,"copy__button--done":"hanui-copy__button--done-MujUR",copy__srOnly:Eo},Io=1600,Ro=({value:a,copyLabel:n,copiedLabel:t,copiedAnnouncement:s,size:r="sm",isReadOnly:i,className:c,testId:d})=>{const[u,h]=o.useState(!1),p=o.useRef(null),m=o.useRef(void 0);o.useEffect(()=>()=>window.clearTimeout(m.current),[]);const l=o.useCallback(()=>{const g=p.current;if(!g)return;const $=document.createRange();$.selectNodeContents(g);const w=window.getSelection();w==null||w.removeAllRanges(),w==null||w.addRange($)},[]),x=o.useCallback(async()=>{try{await navigator.clipboard.writeText(a),h(!0),m.current=window.setTimeout(()=>h(!1),Io)}catch{l()}},[a,l]);return e.jsxs("span",{className:_(De.copy,De[`copy--${r}`],c),"data-testid":d,children:[e.jsx("span",{className:De.copy__code,ref:p,children:a}),!i&&e.jsx("button",{type:"button",className:_(De.copy__button,u&&De["copy__button--done"]),onClick:x,"aria-label":u?t:n,title:u?t:n,children:u?e.jsx(wn,{}):e.jsx(Rn,{})}),e.jsx("span",{"aria-live":"polite",className:De.copy__srOnly,children:u?s:""})]})},Lo=o.memo(Ro),To="hanui-divider-RJqCw",Ao="hanui-divider__label-M8sBA",Ge={divider:To,"divider--labelled":"hanui-divider--labelled-jZH1-",divider__label:Ao},Mo=({label:a,className:n})=>a?e.jsx("div",{className:_(Ge.divider,Ge["divider--labelled"],n),children:e.jsx("span",{className:Ge.divider__label,children:a})}):e.jsx("hr",{className:_(Ge.divider,n)}),Bo=o.memo(Mo),So="hanui-directory-badEd",Fo="hanui-group-i6An9",Oo="hanui-group__header-rc19c",Ho="hanui-group__label-vQTcs",Po="hanui-group__link-es5V7",zo="hanui-group__meta-LtC-u",Ko="hanui-group__list-YxBCG",Uo="hanui-row-3LH7X",qo="hanui-row__name-75Wbq",Go="hanui-row__media-AxZEh",Yo="hanui-row__marker-RYHb-",Xo="hanui-jump-vpGwB",Zo="hanui-jump__link-rRnT6",Y={directory:So,group:Fo,group__header:Oo,group__label:Ho,group__link:Po,group__meta:zo,group__list:Ko,row:Uo,row__name:qo,row__media:Go,row__marker:Yo,jump:Xo,jump__link:Zo},Vo=({children:a,className:n})=>e.jsx("div",{className:_(Y.directory,n),children:a}),Va=o.memo(({label:a,href:n,linkProps:t,meta:s,children:r,id:i})=>e.jsxs("section",{className:Y.group,id:i,children:[e.jsxs("header",{className:Y.group__header,children:[e.jsx("h2",{className:Y.group__label,children:n?e.jsx(ee,{href:n,className:Y.group__link,...t,children:a}):a}),s&&e.jsx("span",{className:Y.group__meta,children:s})]}),e.jsx("ul",{className:Y.group__list,children:r})]}));Va.displayName="DirectoryGroup";const Ja=o.memo(({href:a,name:n,media:t,marker:s,linkProps:r,className:i})=>e.jsx("li",{children:e.jsxs(ee,{href:a,className:_(Y.row,i),...r,children:[t&&e.jsx("span",{className:Y.row__media,children:t}),e.jsx("span",{className:Y.row__name,children:n}),s&&e.jsx("span",{className:Y.row__marker,children:s})]})}));Ja.displayName="DirectoryRow";const Qa=o.memo(({labels:a,toId:n,label:t})=>e.jsx("nav",{className:Y.jump,"aria-label":t,children:a.map(s=>e.jsx("a",{href:`#${n(s)}`,className:Y.jump__link,children:s},s))}));Qa.displayName="DirectoryJump";const Jo=o.memo(Vo),Qo="hanui-empty-47qZR",Wo="hanui-empty__icon-okfEc",ei="hanui-empty__title-Z7Dzd",ai="hanui-empty__description-6BoCk",ni="hanui-empty__actions-ARk-k",Ee={empty:Qo,empty__icon:Wo,empty__title:ei,empty__description:ai,empty__actions:ni,"empty--sm":"hanui-empty--sm-QXaXx"},ti=({title:a,description:n,icon:t,action:s,secondaryAction:r,size:i="md",className:c,testId:d})=>e.jsxs("div",{className:_(Ee.empty,Ee[`empty--${i}`],c),"data-testid":d,children:[t&&e.jsx("span",{className:Ee.empty__icon,children:t}),e.jsx("h3",{className:Ee.empty__title,children:a}),n&&e.jsx("p",{className:Ee.empty__description,children:n}),(s||r)&&e.jsxs("div",{className:Ee.empty__actions,children:[s,r]})]}),si=o.memo(ti),oi="hanui-header-yJwus",ii="hanui-header__top-UK4si",ri="hanui-header__text-HIo8U",ci="hanui-header__eyebrow-dZ9Zc",li="hanui-header__titleRow-KgDZj",di="hanui-header__title-s1giF",_i="hanui-header__meta-UxuaD",ui="hanui-header__description-NXbbC",hi="hanui-header__actions-aShpt",ie={header:oi,header__top:ii,header__text:ri,header__eyebrow:ci,header__titleRow:li,header__title:di,header__meta:_i,header__description:ui,header__actions:hi},mi=({title:a,eyebrow:n,description:t,actions:s,breadcrumb:r,meta:i,children:c,as:d="h1",className:u,testId:h})=>e.jsxs("header",{className:_(ie.header,u),"data-testid":h,children:[r,e.jsxs("div",{className:ie.header__top,children:[e.jsxs("div",{className:ie.header__text,children:[n&&e.jsx("span",{className:ie.header__eyebrow,children:n}),e.jsxs("div",{className:ie.header__titleRow,children:[e.jsx(d,{className:ie.header__title,children:a}),i&&e.jsx("span",{className:ie.header__meta,children:i})]}),t&&e.jsx("p",{className:ie.header__description,children:t})]}),s&&e.jsx("div",{className:ie.header__actions,children:s})]}),c]}),pi=o.memo(mi),bi="hanui-panel-Sv-1m",gi="hanui-panel__header-ysexh",xi="hanui-panel__heading-xLCsB",fi="hanui-panel__icon--yPQT",vi="hanui-panel__headingText--XqxW",yi="hanui-panel__title-6-6uC",ji="hanui-panel__description-qXTSM",ki="hanui-panel__actions-Ra-zy",Ni="hanui-panel__body-lo5aX",wi="hanui-panel__footer-qLpR1",$i="hanui-form-o9UqJ",Ci="hanui-row-vUGpa",q={panel:bi,panel__header:gi,panel__heading:xi,panel__icon:fi,panel__headingText:vi,panel__title:yi,panel__description:ji,panel__actions:ki,panel__body:Ni,"panel__body--sm":"hanui-panel__body--sm-6XP6W","panel__body--lg":"hanui-panel__body--lg-RTK5B","panel__body--flush":"hanui-panel__body--flush-iK75R",panel__footer:wi,form:$i,"form--2":"hanui-form--2-HdwDc",row:Ci},Di=({children:a,title:n,description:t,actions:s,icon:r,isFlush:i,gap:c="md",footer:d,as:u="section",className:h,bodyClassName:p,testId:m})=>e.jsxs(u,{className:_(q.panel,h),"data-testid":m,children:[(n||s)&&e.jsxs("div",{className:q.panel__header,children:[e.jsxs("div",{className:q.panel__heading,children:[r&&e.jsx("span",{className:q.panel__icon,children:r}),e.jsxs("div",{className:q.panel__headingText,children:[n&&e.jsx("h2",{className:q.panel__title,children:n}),t&&e.jsx("p",{className:q.panel__description,children:t})]})]}),s&&e.jsx("div",{className:q.panel__actions,children:s})]}),e.jsx("div",{className:_(q.panel__body,q[`panel__body--${c}`],i&&q["panel__body--flush"],p),children:a}),d&&e.jsx("div",{className:q.panel__footer,children:d})]}),Wa=o.memo(({children:a,columns:n=1,className:t})=>e.jsx("div",{className:_(q.form,q[`form--${n}`],t),children:a}));Wa.displayName="PanelForm";const en=o.memo(({children:a,className:n})=>e.jsx("div",{className:_(q.row,n),children:a}));en.displayName="PanelRow";const Ei=o.memo(Di),Ii="hanui-price-Oc5Nr",Ri="hanui-price__current-2Xup2",Li="hanui-price__currency-32NLN",Ti="hanui-price__list-MlQgT",Ai="hanui-price__discount-5Yc6W",ge={price:Ii,price__current:Ri,price__currency:Li,price__list:Ti,price__discount:Ai,"price--sm":"hanui-price--sm-Hd8Oe","price--md":"hanui-price--md-JMxlK","price--lg":"hanui-price--lg-TFqIF","price--xl":"hanui-price--xl-EJBYq"},Mi=({value:a,currency:n,listValue:t,discountPercent:s,formatDiscount:r=u=>`%${u}`,size:i="md",className:c,testId:d})=>e.jsxs("span",{className:_(ge.price,ge[`price--${i}`],c),"data-testid":d,children:[e.jsxs("span",{className:ge.price__current,children:[a,e.jsx("span",{className:ge.price__currency,children:n})]}),t&&e.jsxs("s",{className:ge.price__list,children:[t,e.jsx("span",{className:ge.price__currency,children:n})]}),s!==void 0&&s>0&&e.jsx("span",{className:ge.price__discount,children:r(s)})]}),Bi=o.memo(Mi),Si="hanui-rating-94dke",Fi="hanui-rating__stars-QkpVU",Oi="hanui-rating__empty-Wf6-K",Hi="hanui-rating__count-pIoEs",Pi="hanui-rating__srOnly-E9h0d",Ie={rating:Si,rating__stars:Fi,rating__empty:Oi,rating__count:Hi,rating__srOnly:Pi,"rating--sm":"hanui-rating--sm-AtY7U","rating--md":"hanui-rating--md-Q0nxN"},zi=({value:a,count:n,srLabel:t,size:s="sm",className:r,testId:i})=>{const c=Math.round(a*2)/2;return e.jsxs("span",{className:_(Ie.rating,Ie[`rating--${s}`],r),"data-testid":i,children:[e.jsx("span",{className:Ie.rating__stars,"aria-hidden":!0,children:Array.from({length:5},(d,u)=>{const h=u+1;return c>=h?e.jsx(Ba,{},u):c>=h-.5?e.jsx(Fn,{},u):e.jsx(Sn,{className:Ie.rating__empty},u)})}),e.jsx("span",{className:Ie.rating__srOnly,children:t}),O.isDefined(n)&&e.jsxs("span",{className:Ie.rating__count,"aria-hidden":!0,children:["(",n,")"]})]})},Ki=o.memo(zi),Ui="hanui-header-a08Jh",qi="hanui-header__text-ArJkA",Gi="hanui-header__overline-X5Epo",Yi="hanui-header__title-nQQQJ",Xi="hanui-header__description-08oCr",Zi="hanui-header__action-xsxQF",xe={header:Ui,header__text:qi,header__overline:Gi,header__title:Yi,header__description:Xi,header__action:Zi,"header--sm":"hanui-header--sm-mIJWZ","header--lg":"hanui-header--lg-QBLIz"},Vi=({title:a,description:n,overline:t,action:s,as:r="h2",size:i="md",className:c,testId:d})=>e.jsxs("header",{className:_(xe.header,xe[`header--${i}`],c),"data-testid":d,children:[e.jsxs("div",{className:xe.header__text,children:[t&&e.jsx("span",{className:xe.header__overline,children:t}),e.jsx(r,{className:xe.header__title,children:a}),n&&e.jsx("p",{className:xe.header__description,children:n})]}),s&&e.jsx("div",{className:xe.header__action,children:s})]}),Ji=o.memo(Vi),Qi="hanui-skeleton-n92if",Wi="hanui-group-YMfwa",Oe={skeleton:Qi,"hanui-shimmer":"hanui-hanui-shimmer-6yd48","skeleton--block":"hanui-skeleton--block-tOZ-a","skeleton--text":"hanui-skeleton--text-k-ROi","skeleton--circle":"hanui-skeleton--circle-x-mX3",group:Wi},er=({width:a,height:n,variant:t="block",lines:s=1,className:r})=>{const i={width:O.isNumber(a)?`${a}px`:a,height:O.isNumber(n)?`${n}px`:n};return t==="text"&&s>1?e.jsx("span",{className:_(Oe.group,r),"aria-hidden":!0,children:Array.from({length:s},(c,d)=>e.jsx("span",{className:_(Oe.skeleton,Oe["skeleton--text"]),style:d===s-1?{width:"60%"}:void 0},d))}):e.jsx("span",{className:_(Oe.skeleton,Oe[`skeleton--${t}`],r),style:i,"aria-hidden":!0})},ar=o.memo(er),nr="hanui-tabs-l4dFE",tr="hanui-tabs__list-HJvR8",sr="hanui-tabs__tab-7gDW7",or="hanui-tabs__count-8JX8s",ir="hanui-tabs__panel-CPklY",Re={tabs:nr,tabs__list:tr,tabs__tab:sr,"tabs__tab--active":"hanui-tabs__tab--active-riqNp",tabs__count:or,tabs__panel:ir},rr=({items:a,defaultTabId:n,activeId:t,onChange:s,ariaLabel:r,className:i,testId:c})=>{var N;const d=o.useId(),[u,h]=o.useState(n??((N=a[0])==null?void 0:N.id)),p=O.isDefined(t),m=p?t:u,l=a.findIndex(j=>j.id===m),x=a[l]??a[0],g=j=>{p||h(j),s==null||s(j)},$=j=>{var U;const E=j.key==="ArrowRight"?1:j.key==="ArrowLeft"?-1:0;if(E===0)return;j.preventDefault();const K=(l+E+a.length)%a.length;g(a[K].id),(U=document.getElementById(`${d}-tab-${a[K].id}`))==null||U.focus()};if(a.length===0)return null;const w=O.isDefined(x==null?void 0:x.content);return e.jsxs("div",{className:_(Re.tabs,i),"data-testid":c,children:[e.jsx("div",{className:Re.tabs__list,role:"tablist","aria-label":r,onKeyDown:$,children:a.map(j=>{const E=j.id===x.id;return e.jsxs("button",{id:`${d}-tab-${j.id}`,type:"button",role:"tab","aria-selected":E,"aria-controls":w?`${d}-panel-${j.id}`:void 0,tabIndex:E?0:-1,className:_(Re.tabs__tab,E&&Re["tabs__tab--active"]),onClick:()=>g(j.id),children:[j.label,O.isDefined(j.count)&&e.jsx("span",{className:Re.tabs__count,children:j.count})]},j.id)})}),w&&e.jsx("div",{id:`${d}-panel-${x.id}`,role:"tabpanel","aria-labelledby":`${d}-tab-${x.id}`,className:Re.tabs__panel,tabIndex:0,children:x.content})]})},cr=o.memo(rr),lr="hanui-tile-TGur-",dr="hanui-tile__medallion--Y0pz",_r="hanui-tile__label-mI1OQ",ur="hanui-tile__meta-22qnR",He={tile:lr,tile__medallion:dr,tile__label:_r,tile__meta:ur,"tile--active":"hanui-tile--active-z0F2M"},hr=({label:a,icon:n,href:t,meta:s,isActive:r,linkProps:i,className:c,testId:d})=>e.jsxs(ee,{href:t,className:_(He.tile,r&&He["tile--active"],c),"aria-current":r?"page":void 0,"data-testid":d,...i,children:[e.jsx("span",{className:He.tile__medallion,"aria-hidden":!0,children:n}),e.jsx("span",{className:He.tile__label,children:a}),s&&e.jsx("span",{className:He.tile__meta,children:s})]}),mr=o.memo(hr),pr="hanui-modal-3IDi9",br="hanui-modal__panel--qLSz",gr="hanui-modal__header-meWm6",xr="hanui-modal__icon-df2dd",fr="hanui-modal__heading-PwDS8",vr="hanui-modal__title-80Sh6",yr="hanui-modal__description-fsCHI",jr="hanui-modal__close-vFPbw",kr="hanui-modal__body-PDF12",Nr="hanui-modal__footer-CCCkx",X={modal:pr,"modal--sm":"hanui-modal--sm-A7WsS","modal--lg":"hanui-modal--lg-z99Em","hanui-fade-in":"hanui-hanui-fade-in-oHUfh","hanui-fade-in-up":"hanui-hanui-fade-in-up-RF4Hl","hanui-slide-up":"hanui-hanui-slide-up-ibKAg",modal__panel:br,modal__header:gr,modal__icon:xr,"modal__icon--neutral":"hanui-modal__icon--neutral-QSL7c","modal__icon--danger":"hanui-modal__icon--danger-6V90a","modal__icon--warning":"hanui-modal__icon--warning-a--FX","modal__icon--success":"hanui-modal__icon--success-YWxZs","modal__icon--info":"hanui-modal__icon--info-WRLah",modal__heading:fr,modal__title:vr,modal__description:yr,modal__close:jr,modal__body:kr,modal__footer:Nr},wr=({isOpen:a,onClose:n,title:t,closeLabel:s,children:r,description:i,footer:c,icon:d,tone:u="neutral",size:h="md",isDismissable:p=!0,className:m,testId:l})=>{const x=o.useRef(null),g=o.useId(),$=o.useId();o.useEffect(()=>{const N=x.current;N&&(a&&!N.open&&(N.showModal(),na(N)),!a&&N.open&&N.close())},[a]),o.useEffect(()=>{if(!a)return;const N=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=N}},[a]),o.useEffect(()=>{const N=x.current;if(!N)return;const j=E=>{E.preventDefault(),p&&n()};return N.addEventListener("cancel",j),()=>N.removeEventListener("cancel",j)},[n,p]);const w=o.useCallback(N=>{p&&N.target===x.current&&n()},[p,n]);return e.jsx("dialog",{ref:x,className:_(X.modal,X[`modal--${h}`],m),"aria-labelledby":g,"aria-describedby":i?$:void 0,"data-testid":l,onClick:w,children:e.jsxs("div",{className:X.modal__panel,children:[e.jsxs("header",{className:X.modal__header,children:[d&&e.jsx("span",{className:_(X.modal__icon,X[`modal__icon--${u}`]),children:d}),e.jsxs("div",{className:X.modal__heading,children:[e.jsx("h2",{id:g,className:X.modal__title,children:t}),i&&e.jsx("p",{id:$,className:X.modal__description,children:i})]}),p&&e.jsx(ze,{icon:e.jsx(sa,{}),label:s,variant:"ghost",size:"sm",className:X.modal__close,onClick:n})]}),r&&e.jsx("div",{className:X.modal__body,children:r}),c&&e.jsx("footer",{className:X.modal__footer,children:c})]})})},ia=o.memo(wr),$r={destructive:e.jsx(Bn,{}),warning:e.jsx(Aa,{}),neutral:e.jsx(Mn,{})},Cr={destructive:"danger",warning:"warning",neutral:"info"},Dr={destructive:W.DANGER,warning:W.PRIMARY,neutral:W.PRIMARY},Er=({isOpen:a,onClose:n,onConfirm:t,title:s,description:r,confirmLabel:i,cancelLabel:c,closeLabel:d,kind:u="neutral",children:h})=>{const[p,m]=o.useState(!1),l=async()=>{m(!0);try{await t()}finally{m(!1)}};return e.jsx(ia,{isOpen:a,onClose:n,title:s,closeLabel:d,description:r,icon:$r[u],tone:Cr[u],size:"sm",isDismissable:!p,footer:e.jsxs(e.Fragment,{children:[e.jsx(Ae,{variant:W.SECONDARY,size:ue.MEDIUM,onClick:n,disabled:p,children:c}),e.jsx(Ae,{variant:Dr[u],size:ue.MEDIUM,onClick:l,isLoading:p,children:i})]}),children:h})},Ir=o.memo(Er),Rr="hanui-form-zpZn4",Lr={form:Rr},Tr=({isOpen:a,onClose:n,onSubmit:t,title:s,label:r,submitLabel:i,cancelLabel:c,closeLabel:d,description:u,hint:h,placeholder:p,defaultValue:m="",isRequired:l,requiredLabel:x,inputMode:g="text",maxLength:$,rows:w=4})=>{const N=o.useId(),[j,E]=o.useState(m),[K,U]=o.useState(!1),C=o.useRef(!1);o.useEffect(()=>{a&&!C.current&&E(m),C.current=a},[a,m]);const ce=j.trim(),R=!!l&&ce==="",H=S=>g==="multiline"?e.jsx(qa,{...S,value:j,onChange:P=>E(P.target.value),placeholder:p,maxLength:$,rows:w}):e.jsx(Ka,{...S,type:g==="number"?"number":"text",value:j,onChange:P=>E(P.target.value),placeholder:p,maxLength:$}),B=async()=>{if(!(R||K)){U(!0);try{await t(ce),n()}catch{}finally{U(!1)}}};return e.jsx(ia,{isOpen:a,onClose:n,title:s,closeLabel:d,description:u,size:"sm",isDismissable:!K,footer:e.jsxs(e.Fragment,{children:[e.jsx(Ae,{variant:W.SECONDARY,size:ue.MEDIUM,onClick:n,disabled:K,children:c}),e.jsx(Ae,{type:"submit",form:N,variant:W.PRIMARY,size:ue.MEDIUM,disabled:R,isLoading:K,children:i})]}),children:e.jsx("form",{id:N,className:Lr.form,onSubmit:S=>{S.preventDefault(),B()},children:l?e.jsx(aa,{label:r,hint:h,isRequired:!0,requiredLabel:x,children:H}):e.jsx(aa,{label:r,hint:h,children:H})})})},Ar=o.memo(Tr),Mr="hanui-scroller-EtDmS",Br="hanui-table-uCv4q",Le={scroller:Mr,"scroller--frame":"hanui-scroller--frame-84zz6",table:Br,"table--compact":"hanui-table--compact-4KCVl","table--regular":"hanui-table--regular-hsA3-","table--spacious":"hanui-table--spacious-BBUX-","table--sticky-head":"hanui-table--sticky-head-FO2L4","table--row-hover":"hanui-table--row-hover--MAoe"},an=o.memo(({hasFrame:a=!0,className:n,children:t,...s})=>e.jsx("div",{className:_(Le.scroller,a&&Le["scroller--frame"],n),...s,children:t}));an.displayName="TableScroller";const Sr=({density:a="regular",hasStickyHead:n,hasRowHover:t,className:s,children:r,...i})=>e.jsx("table",{className:_(Le.table,Le[`table--${a}`],n&&Le["table--sticky-head"],t&&Le["table--row-hover"],s),...i,children:r}),Fr=o.memo(Sr),Or="hanui-wrapper-KXCZg",Hr="hanui-table-LF5Ow",Pr="hanui-state-YPPb0",zr="hanui-state__message-wwbIW",fe={wrapper:Or,"wrapper--capped":"hanui-wrapper--capped-M2QUJ",table:Hr,state:Pr,"state--error":"hanui-state--error-A492d",state__message:zr,"row--warning":"hanui-row--warning-BAUN2"},Kr=({columns:a,children:n,isLoading:t,error:s,emptyMessage:r,loadingMessage:i,hasViewportCap:c,className:d,testId:u})=>{const h=o.Children.count(n),p=(m,l)=>e.jsx("tr",{children:e.jsx("td",{colSpan:a.length,className:_(fe.state,l&&fe[`state--${l}`]),children:m})});return e.jsx("div",{className:_(fe.wrapper,c&&fe["wrapper--capped"],d),"data-testid":u,children:e.jsxs("table",{className:fe.table,children:[e.jsx("thead",{children:e.jsx("tr",{children:a.map(m=>e.jsx("th",{scope:"col","aria-label":m.srLabel,"aria-sort":m.ariaSort,className:m.className,children:m.label},m.key))})}),e.jsx("tbody",{children:s?p(e.jsxs("span",{role:"alert",className:fe.state__message,children:[e.jsx(Ma,{}),s]}),"error"):t?p(i):h===0?p(r):n})]})})},nn=o.memo(({isWarning:a,className:n,children:t,...s})=>e.jsx("tr",{className:_(a&&fe["row--warning"],n),...s,children:t}));nn.displayName="DataTableRow";const Ur=o.memo(Kr),qr="hanui-bar-b4PP4",Gr="hanui-bar__hiddenSubmit-jeCyX",Yr="hanui-bar__actions-rG69L",Xr="hanui-field-f-rvu",Pe={bar:qr,bar__hiddenSubmit:Gr,bar__actions:Yr,field:Xr,"field--wide":"hanui-field--wide-FA5gf"},Zr=({onSubmit:a,children:n,actions:t,label:s,className:r,testId:i})=>e.jsxs("form",{className:_(Pe.bar,r),"aria-label":s,"data-testid":i,onSubmit:c=>{c.preventDefault(),a()},children:[n,e.jsx("button",{type:"submit",className:Pe.bar__hiddenSubmit,tabIndex:-1,"aria-hidden":!0}),t&&e.jsx("div",{className:Pe.bar__actions,children:t})]}),tn=o.memo(({children:a,isWide:n,className:t})=>e.jsx("div",{className:_(Pe.field,n&&Pe["field--wide"],t),children:a}));tn.displayName="FilterBarField";const Vr=o.memo(Zr),Jr="hanui-pagination-K-L20",Qr="hanui-pagination__list--9HqC",Wr="hanui-pagination__arrow-XIgoX",ec="hanui-pagination__page-TpoJM",ac="hanui-pagination__gap-qoDyI",re={pagination:Jr,pagination__list:Qr,pagination__arrow:Wr,pagination__page:ec,"pagination__page--active":"hanui-pagination__page--active-XHeaz",pagination__gap:ac},nc=(a,n)=>{if(n<=7)return Array.from({length:n},(i,c)=>c+1);const t=new Set([1,n,a]);a-1>1&&t.add(a-1),a+1<n&&t.add(a+1);const s=[...t].sort((i,c)=>i-c),r=[];return s.forEach((i,c)=>{c>0&&i-s[c-1]>1&&r.push("gap"),r.push(i)}),r},tc=({page:a,totalPages:n,label:t,previousLabel:s,nextLabel:r,buildHref:i,onPageChange:c,linkProps:d,className:u,testId:h})=>{const p=o.useMemo(()=>nc(a,n),[a,n]);if(n<=1)return null;const m=l=>{c&&c(l)};return e.jsxs("nav",{className:_(re.pagination,u),"aria-label":t,"data-testid":h,children:[e.jsx(ze,{className:re.pagination__arrow,icon:e.jsx($n,{}),label:s,variant:"outline",disabled:a<=1,onClick:()=>m(a-1)}),e.jsx("ul",{className:re.pagination__list,children:p.map((l,x)=>l==="gap"?e.jsx("li",{className:re.pagination__gap,"aria-hidden":!0,children:"…"},`gap-${x}`):e.jsx("li",{children:i?e.jsx(ee,{href:i(l),className:_(re.pagination__page,l===a&&re["pagination__page--active"]),"aria-current":l===a?"page":void 0,...d,children:l}):e.jsx(Ae,{variant:W.SECONDARY,size:ue.SMALL,className:_(re.pagination__page,l===a&&re["pagination__page--active"]),"aria-current":l===a?"page":void 0,onClick:()=>m(l),children:l})},l))}),e.jsx(ze,{className:re.pagination__arrow,icon:e.jsx(Ta,{}),label:r,variant:"outline",disabled:a>=n,onClick:()=>m(a+1)})]})},sc=o.memo(tc);exports.ABOVE_MOBILE_MEDIA_QUERY=Xe;exports.ABOVE_TABLET_MEDIA_QUERY=pn;exports.Alert=Ws;exports.Avatar=so;exports.Badge=co;exports.BottomSheet=oa;exports.Breadcrumb=bo;exports.Button=Ae;exports.Card=wo;exports.CardBody=Xa;exports.CardFooter=Za;exports.CardMedia=Ga;exports.CardOverlay=Ya;exports.Checkbox=qt;exports.Chip=Fa;exports.ChipGroup=at;exports.Combobox=Ct;exports.ConfirmDialog=Ir;exports.CopyField=Lo;exports.DARK_THEME=ba;exports.DEFAULT_FONTS=cn;exports.DataTable=Ur;exports.DataTableRow=nn;exports.Directory=Jo;exports.DirectoryGroup=Va;exports.DirectoryJump=Qa;exports.DirectoryRow=Ja;exports.Divider=Bo;exports.EmptyState=si;exports.Field=aa;exports.FilterBar=Vr;exports.FilterBarField=tn;exports.HanuiProvider=dn;exports.IconButton=ze;exports.Input=Ka;exports.LIGHT_THEME=pa;exports.MOBILE_BREAKPOINT=$a;exports.Modal=ia;exports.PageHeader=pi;exports.Pagination=sc;exports.Panel=Ei;exports.PanelForm=Wa;exports.PanelRow=en;exports.Price=Bi;exports.PromptDialog=Ar;exports.QuantityStepper=Ds;exports.Radio=Qt;exports.RadioCard=ss;exports.RangeSlider=hs;exports.Rating=Ki;exports.RatingInput=ks;exports.SectionHeader=Ji;exports.Select=Ot;exports.Skeleton=ar;exports.Spinner=ta;exports.TABLET_BREAKPOINT=Ca;exports.TABLET_PORTRAIT_BREAKPOINT=mn;exports.Table=Fr;exports.TableCheckbox=Rs;exports.TableScroller=an;exports.Tabs=cr;exports.TextLink=Kn;exports.Textarea=qa;exports.Tile=mr;exports.Tooltip=Xn;exports.UISize=ue;exports.UIVariant=W;exports.buildThemeCss=ga;exports.initHanui=_n;exports.isKeyboardOpeningElement=Da;exports.matchesSearch=ea;exports.normalizeSearchTerm=We;exports.preventAutoKeyboard=na;exports.resolveTokens=ln;exports.useHanui=va;exports.useHanuiTheme=hn;exports.useSheetViewport=wa;
18
+ //# sourceMappingURL=index.cjs.map