bo-ui-kit 0.1.1 → 0.2.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/dist/components/ui/accordion.d.ts +27 -0
- package/dist/components/ui/alert-dialog.d.ts +22 -0
- package/dist/components/ui/alert.d.ts +23 -0
- package/dist/components/ui/avatar-group.d.ts +16 -0
- package/dist/components/ui/avatar.d.ts +23 -0
- package/dist/components/ui/badge.d.ts +19 -0
- package/dist/components/ui/breadcrumb.d.ts +17 -0
- package/dist/components/ui/button.d.ts +5 -2
- package/dist/components/ui/collapsible.d.ts +16 -0
- package/dist/components/ui/dialog.d.ts +22 -0
- package/dist/components/ui/drawer.d.ts +16 -0
- package/dist/components/ui/index.d.ts +46 -0
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/number-field.d.ts +22 -0
- package/dist/components/ui/overlay.d.ts +36 -0
- package/dist/components/ui/radio-group.d.ts +19 -0
- package/dist/components/ui/scroll-area.d.ts +13 -0
- package/dist/components/ui/segmented-control.d.ts +29 -0
- package/dist/components/ui/select.d.ts +1 -1
- package/dist/components/ui/separator.d.ts +15 -0
- package/dist/components/ui/sheet.d.ts +23 -0
- package/dist/components/ui/skeleton.d.ts +13 -0
- package/dist/components/ui/spinner.d.ts +15 -0
- package/dist/components/ui/switch.d.ts +22 -0
- package/dist/components/ui/tabs.d.ts +26 -0
- package/dist/components/ui/textarea.d.ts +17 -0
- package/dist/components/ui/toast.d.ts +19 -0
- package/dist/components/ui/tooltip.d.ts +14 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1393 -279
- package/dist/styles.css +17 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import * as
|
|
3
|
-
import { cva as
|
|
4
|
-
import { clsx as
|
|
5
|
-
import { twMerge as
|
|
1
|
+
import { jsxs as b, jsx as r, Fragment as _ } from "react/jsx-runtime";
|
|
2
|
+
import * as o from "react";
|
|
3
|
+
import { cva as N } from "class-variance-authority";
|
|
4
|
+
import { clsx as ie } from "clsx";
|
|
5
|
+
import { twMerge as le } from "tailwind-merge";
|
|
6
|
+
import { createPortal as de } from "react-dom";
|
|
6
7
|
function f(...e) {
|
|
7
|
-
return
|
|
8
|
+
return le(ie(e));
|
|
8
9
|
}
|
|
9
|
-
const
|
|
10
|
+
const ce = N(
|
|
10
11
|
// 공통: gap-0 + 라벨 자체 padding 으로 Figma 의 LabelFrame 구조를 재현
|
|
11
12
|
"inline-flex shrink-0 items-center justify-center gap-0 whitespace-nowrap border font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
|
|
12
13
|
{
|
|
@@ -16,7 +17,7 @@ const P = j(
|
|
|
16
17
|
outline: "border-border bg-card text-foreground shadow-xs hover:bg-secondary/50",
|
|
17
18
|
secondary: "border-transparent bg-secondary text-foreground hover:bg-secondary/80",
|
|
18
19
|
destructive: "border-border bg-destructive text-primary-foreground shadow-btn hover:bg-destructive/90",
|
|
19
|
-
"destructive-
|
|
20
|
+
"destructive-tinted": "border-transparent bg-destructive/[0.08] text-destructive-foreground hover:bg-destructive/[0.12]",
|
|
20
21
|
ghost: "border-transparent bg-transparent text-foreground hover:bg-secondary",
|
|
21
22
|
link: "border-transparent bg-transparent text-foreground underline-offset-4 hover:underline"
|
|
22
23
|
},
|
|
@@ -33,68 +34,72 @@ const P = j(
|
|
|
33
34
|
size: "md"
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
),
|
|
37
|
-
({ className: e, variant:
|
|
37
|
+
), C = o.forwardRef(
|
|
38
|
+
({ className: e, variant: t, size: n, type: s = "button", icon: a, rightIcon: l, pill: d, children: i, ...c }, u) => /* @__PURE__ */ b(
|
|
38
39
|
"button",
|
|
39
40
|
{
|
|
40
|
-
ref:
|
|
41
|
-
type:
|
|
42
|
-
className: f(
|
|
41
|
+
ref: u,
|
|
42
|
+
type: s,
|
|
43
|
+
className: f(
|
|
44
|
+
ce({ variant: t, size: n }),
|
|
45
|
+
d && "!rounded-radius-full",
|
|
46
|
+
e
|
|
47
|
+
),
|
|
43
48
|
"data-node-id": "1692:74",
|
|
44
|
-
...
|
|
49
|
+
...c,
|
|
45
50
|
children: [
|
|
46
|
-
a ? /* @__PURE__ */
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
a ? /* @__PURE__ */ r("span", { className: "inline-flex shrink-0 opacity-80", children: a }) : null,
|
|
52
|
+
i != null ? /* @__PURE__ */ r("span", { "data-label": !0, className: "px-1", children: i }) : null,
|
|
53
|
+
l ? /* @__PURE__ */ r("span", { className: "inline-flex shrink-0 opacity-80", children: l }) : null
|
|
49
54
|
]
|
|
50
55
|
}
|
|
51
56
|
)
|
|
52
57
|
);
|
|
53
|
-
|
|
54
|
-
const
|
|
58
|
+
C.displayName = "Button";
|
|
59
|
+
const ue = o.forwardRef(
|
|
55
60
|
({
|
|
56
61
|
checked: e,
|
|
57
|
-
defaultChecked:
|
|
58
|
-
indeterminate:
|
|
59
|
-
disabled:
|
|
62
|
+
defaultChecked: t,
|
|
63
|
+
indeterminate: n = !1,
|
|
64
|
+
disabled: s = !1,
|
|
60
65
|
mobile: a = !1,
|
|
61
|
-
onCheckedChange:
|
|
62
|
-
className:
|
|
63
|
-
...
|
|
66
|
+
onCheckedChange: l,
|
|
67
|
+
className: d,
|
|
68
|
+
...i
|
|
64
69
|
}, c) => {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
const v =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}, [
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
70
|
+
const u = e !== void 0, [x, m] = o.useState(t ?? !1), p = u ? e : x, h = o.useRef(null);
|
|
71
|
+
o.useImperativeHandle(c, () => h.current);
|
|
72
|
+
const v = p && !n, w = p && n;
|
|
73
|
+
o.useEffect(() => {
|
|
74
|
+
h.current && (h.current.indeterminate = w);
|
|
75
|
+
}, [w]);
|
|
76
|
+
const S = (y) => {
|
|
77
|
+
const k = y.target.checked;
|
|
78
|
+
u || m(k), l == null || l(k);
|
|
74
79
|
};
|
|
75
|
-
return /* @__PURE__ */
|
|
80
|
+
return /* @__PURE__ */ b(
|
|
76
81
|
"label",
|
|
77
82
|
{
|
|
78
83
|
className: f(
|
|
79
84
|
"inline-flex shrink-0 items-center justify-center",
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
s ? "cursor-not-allowed opacity-[0.64]" : "cursor-pointer",
|
|
86
|
+
d
|
|
82
87
|
),
|
|
83
88
|
children: [
|
|
84
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ r(
|
|
85
90
|
"input",
|
|
86
91
|
{
|
|
87
|
-
ref:
|
|
92
|
+
ref: h,
|
|
88
93
|
type: "checkbox",
|
|
89
94
|
className: "peer sr-only",
|
|
90
|
-
checked:
|
|
91
|
-
defaultChecked:
|
|
92
|
-
disabled:
|
|
93
|
-
onChange:
|
|
94
|
-
...
|
|
95
|
+
checked: u ? e : void 0,
|
|
96
|
+
defaultChecked: u ? void 0 : t,
|
|
97
|
+
disabled: s,
|
|
98
|
+
onChange: S,
|
|
99
|
+
...i
|
|
95
100
|
}
|
|
96
101
|
),
|
|
97
|
-
/* @__PURE__ */
|
|
102
|
+
/* @__PURE__ */ b(
|
|
98
103
|
"span",
|
|
99
104
|
{
|
|
100
105
|
"aria-hidden": !0,
|
|
@@ -105,7 +110,7 @@ const C = i.forwardRef(
|
|
|
105
110
|
v ? "border-transparent bg-primary text-primary-foreground" : "border-input bg-card shadow-xs"
|
|
106
111
|
),
|
|
107
112
|
children: [
|
|
108
|
-
v && /* @__PURE__ */
|
|
113
|
+
v && /* @__PURE__ */ r(
|
|
109
114
|
"svg",
|
|
110
115
|
{
|
|
111
116
|
viewBox: "0 0 8 8",
|
|
@@ -114,7 +119,7 @@ const C = i.forwardRef(
|
|
|
114
119
|
strokeWidth: "1.5",
|
|
115
120
|
className: a ? "size-2.5" : "size-2",
|
|
116
121
|
"aria-hidden": !0,
|
|
117
|
-
children: /* @__PURE__ */
|
|
122
|
+
children: /* @__PURE__ */ r(
|
|
118
123
|
"path",
|
|
119
124
|
{
|
|
120
125
|
d: "M1 4.2 3 6l4-4.5",
|
|
@@ -124,7 +129,7 @@ const C = i.forwardRef(
|
|
|
124
129
|
)
|
|
125
130
|
}
|
|
126
131
|
),
|
|
127
|
-
|
|
132
|
+
w && /* @__PURE__ */ r("span", { className: f("h-0.5 rounded-full bg-primary", a ? "w-2" : "w-1.5") })
|
|
128
133
|
]
|
|
129
134
|
}
|
|
130
135
|
)
|
|
@@ -133,8 +138,8 @@ const C = i.forwardRef(
|
|
|
133
138
|
);
|
|
134
139
|
}
|
|
135
140
|
);
|
|
136
|
-
|
|
137
|
-
const
|
|
141
|
+
ue.displayName = "Checkbox";
|
|
142
|
+
const fe = N(
|
|
138
143
|
"flex w-full items-center gap-1 rounded-radius border bg-card text-sm text-foreground shadow-xs transition-colors focus-within:ring-[3px] focus-within:ring-offset-0 has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-[0.64]",
|
|
139
144
|
{
|
|
140
145
|
variants: {
|
|
@@ -150,118 +155,118 @@ const F = j(
|
|
|
150
155
|
},
|
|
151
156
|
defaultVariants: { inputSize: "md", invalid: !1 }
|
|
152
157
|
}
|
|
153
|
-
),
|
|
158
|
+
), me = o.forwardRef(
|
|
154
159
|
({
|
|
155
160
|
className: e,
|
|
156
|
-
containerClassName:
|
|
157
|
-
inputSize:
|
|
158
|
-
invalid:
|
|
161
|
+
containerClassName: t,
|
|
162
|
+
inputSize: n,
|
|
163
|
+
invalid: s = !1,
|
|
159
164
|
leftIcon: a,
|
|
160
|
-
rightIcon:
|
|
161
|
-
prefix:
|
|
162
|
-
suffix:
|
|
165
|
+
rightIcon: l,
|
|
166
|
+
prefix: d,
|
|
167
|
+
suffix: i,
|
|
163
168
|
type: c = "text",
|
|
164
|
-
...
|
|
165
|
-
},
|
|
169
|
+
...u
|
|
170
|
+
}, x) => /* @__PURE__ */ b(
|
|
166
171
|
"div",
|
|
167
172
|
{
|
|
168
|
-
className: f(
|
|
173
|
+
className: f(fe({ inputSize: n, invalid: s }), t),
|
|
169
174
|
"data-node-id": "7745:699",
|
|
170
175
|
children: [
|
|
171
|
-
a ? /* @__PURE__ */
|
|
172
|
-
|
|
173
|
-
/* @__PURE__ */
|
|
176
|
+
a ? /* @__PURE__ */ r("span", { className: "inline-flex shrink-0 opacity-80 [&_svg]:size-4", children: a }) : null,
|
|
177
|
+
d != null ? /* @__PURE__ */ r("span", { className: "shrink-0 text-muted-foreground", children: d }) : null,
|
|
178
|
+
/* @__PURE__ */ r(
|
|
174
179
|
"input",
|
|
175
180
|
{
|
|
176
|
-
ref:
|
|
181
|
+
ref: x,
|
|
177
182
|
type: c,
|
|
178
183
|
className: f(
|
|
179
184
|
"min-w-0 flex-1 bg-transparent px-1 text-foreground outline-none placeholder:text-muted-foreground",
|
|
180
185
|
e
|
|
181
186
|
),
|
|
182
|
-
...
|
|
187
|
+
...u
|
|
183
188
|
}
|
|
184
189
|
),
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
i != null ? /* @__PURE__ */ r("span", { className: "shrink-0 text-muted-foreground", children: i }) : null,
|
|
191
|
+
l ? /* @__PURE__ */ r("span", { className: "inline-flex shrink-0 opacity-80 [&_svg]:size-4", children: l }) : null
|
|
187
192
|
]
|
|
188
193
|
}
|
|
189
194
|
)
|
|
190
195
|
);
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
({ className: e, ...
|
|
196
|
+
me.displayName = "Input";
|
|
197
|
+
const pe = o.forwardRef(
|
|
198
|
+
({ className: e, ...t }, n) => /* @__PURE__ */ r(
|
|
194
199
|
"label",
|
|
195
200
|
{
|
|
196
|
-
ref:
|
|
201
|
+
ref: n,
|
|
197
202
|
className: f(
|
|
198
203
|
"inline-flex items-center text-xs font-medium text-foreground",
|
|
199
204
|
"peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
200
205
|
e
|
|
201
206
|
),
|
|
202
207
|
"data-node-id": "7658:2157",
|
|
203
|
-
...
|
|
208
|
+
...t
|
|
204
209
|
}
|
|
205
210
|
)
|
|
206
211
|
);
|
|
207
|
-
|
|
208
|
-
const
|
|
209
|
-
({ className: e, label:
|
|
212
|
+
pe.displayName = "Label";
|
|
213
|
+
const xe = o.forwardRef(
|
|
214
|
+
({ className: e, label: t, required: n = !1, htmlFor: s, description: a, error: l, validity: d, children: i, ...c }, u) => /* @__PURE__ */ b(
|
|
210
215
|
"div",
|
|
211
216
|
{
|
|
212
|
-
ref:
|
|
217
|
+
ref: u,
|
|
213
218
|
className: f("flex w-full flex-col gap-2", e),
|
|
214
219
|
"data-node-id": "7745:713",
|
|
215
220
|
...c,
|
|
216
221
|
children: [
|
|
217
|
-
/* @__PURE__ */
|
|
218
|
-
|
|
222
|
+
/* @__PURE__ */ b("div", { className: "flex flex-col gap-1.5", children: [
|
|
223
|
+
t != null && /* @__PURE__ */ b(
|
|
219
224
|
"label",
|
|
220
225
|
{
|
|
221
|
-
htmlFor:
|
|
226
|
+
htmlFor: s,
|
|
222
227
|
className: "flex items-center gap-1.5 text-sm font-medium leading-5 text-foreground",
|
|
223
228
|
children: [
|
|
224
|
-
|
|
225
|
-
|
|
229
|
+
t,
|
|
230
|
+
n && /* @__PURE__ */ r("span", { className: "text-destructive-foreground", "aria-hidden": !0, children: "*" })
|
|
226
231
|
]
|
|
227
232
|
}
|
|
228
233
|
),
|
|
229
|
-
|
|
234
|
+
i
|
|
230
235
|
] }),
|
|
231
|
-
|
|
232
|
-
|
|
236
|
+
l != null ? /* @__PURE__ */ r("p", { className: "text-xs leading-[14px] tracking-[0.12px] text-destructive-foreground", children: l }) : a != null ? /* @__PURE__ */ r("p", { className: "text-xs leading-[14px] tracking-[0.12px] text-muted-foreground", children: a }) : null,
|
|
237
|
+
d != null && /* @__PURE__ */ r("div", { className: "rounded-radius-lg bg-secondary p-2", children: /* @__PURE__ */ r("p", { className: "text-xs leading-[14px] tracking-[0.12px] text-foreground", children: d }) })
|
|
233
238
|
]
|
|
234
239
|
}
|
|
235
240
|
)
|
|
236
241
|
);
|
|
237
|
-
|
|
238
|
-
const
|
|
242
|
+
xe.displayName = "Field";
|
|
243
|
+
const G = o.createContext(!1), be = o.forwardRef(
|
|
239
244
|
({
|
|
240
245
|
className: e,
|
|
241
|
-
isLarge:
|
|
242
|
-
title:
|
|
243
|
-
showTitle:
|
|
246
|
+
isLarge: t = !1,
|
|
247
|
+
title: n = "Verification code",
|
|
248
|
+
showTitle: s = !0,
|
|
244
249
|
belowText: a = "Enter the 6-digit code sent to your email.",
|
|
245
|
-
showBelowText:
|
|
246
|
-
children:
|
|
247
|
-
...
|
|
248
|
-
}, c) => /* @__PURE__ */
|
|
250
|
+
showBelowText: l = !0,
|
|
251
|
+
children: d,
|
|
252
|
+
...i
|
|
253
|
+
}, c) => /* @__PURE__ */ r(G.Provider, { value: t, children: /* @__PURE__ */ b(
|
|
249
254
|
"div",
|
|
250
255
|
{
|
|
251
256
|
ref: c,
|
|
252
257
|
className: f("flex flex-col items-center gap-2", e),
|
|
253
258
|
"data-node-id": "8060:1580",
|
|
254
|
-
...
|
|
259
|
+
...i,
|
|
255
260
|
children: [
|
|
256
|
-
|
|
257
|
-
/* @__PURE__ */
|
|
258
|
-
|
|
261
|
+
s ? /* @__PURE__ */ r("p", { className: "w-full text-center text-sm font-medium text-foreground", children: n }) : null,
|
|
262
|
+
/* @__PURE__ */ r("div", { className: "flex items-center justify-center gap-2", children: d }),
|
|
263
|
+
l ? /* @__PURE__ */ r("p", { className: "w-full text-center text-xs text-muted-foreground", children: a }) : null
|
|
259
264
|
]
|
|
260
265
|
}
|
|
261
266
|
) })
|
|
262
267
|
);
|
|
263
|
-
|
|
264
|
-
const
|
|
268
|
+
be.displayName = "InputOTP";
|
|
269
|
+
const ge = N(
|
|
265
270
|
"relative flex shrink-0 items-center justify-center rounded-radius border bg-card text-sm text-foreground shadow-xs transition-[color,box-shadow]",
|
|
266
271
|
{
|
|
267
272
|
variants: {
|
|
@@ -274,67 +279,67 @@ const U = j(
|
|
|
274
279
|
},
|
|
275
280
|
defaultVariants: { isLarge: !1, active: !1 }
|
|
276
281
|
}
|
|
277
|
-
),
|
|
278
|
-
({ className: e, char:
|
|
279
|
-
const
|
|
280
|
-
return /* @__PURE__ */
|
|
282
|
+
), ve = o.forwardRef(
|
|
283
|
+
({ className: e, char: t, active: n = !1, isLarge: s, ...a }, l) => {
|
|
284
|
+
const d = o.useContext(G);
|
|
285
|
+
return /* @__PURE__ */ r(
|
|
281
286
|
"div",
|
|
282
287
|
{
|
|
283
|
-
ref:
|
|
284
|
-
className: f(
|
|
288
|
+
ref: l,
|
|
289
|
+
className: f(ge({ isLarge: s ?? d, active: n }), e),
|
|
285
290
|
...a,
|
|
286
|
-
children:
|
|
291
|
+
children: t != null ? /* @__PURE__ */ r("span", { className: "text-center", children: t }) : null
|
|
287
292
|
}
|
|
288
293
|
);
|
|
289
294
|
}
|
|
290
295
|
);
|
|
291
|
-
|
|
292
|
-
const
|
|
296
|
+
ve.displayName = "InputOTPSlot";
|
|
297
|
+
const he = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ r(
|
|
293
298
|
"div",
|
|
294
299
|
{
|
|
295
|
-
ref:
|
|
300
|
+
ref: n,
|
|
296
301
|
role: "separator",
|
|
297
302
|
className: f("flex w-3 shrink-0 items-center justify-center", e),
|
|
298
|
-
...
|
|
299
|
-
children: /* @__PURE__ */
|
|
303
|
+
...t,
|
|
304
|
+
children: /* @__PURE__ */ r("div", { className: "h-0.5 w-full rounded-full bg-border" })
|
|
300
305
|
}
|
|
301
306
|
));
|
|
302
|
-
|
|
303
|
-
const
|
|
307
|
+
he.displayName = "InputOTPSeparator";
|
|
308
|
+
const we = o.forwardRef(
|
|
304
309
|
({
|
|
305
310
|
className: e,
|
|
306
|
-
value:
|
|
307
|
-
min:
|
|
308
|
-
max:
|
|
311
|
+
value: t = 50,
|
|
312
|
+
min: n = 0,
|
|
313
|
+
max: s = 100,
|
|
309
314
|
label: a = "Label",
|
|
310
|
-
valueLabel:
|
|
311
|
-
showLabels:
|
|
312
|
-
showSecondaryLabel:
|
|
315
|
+
valueLabel: l,
|
|
316
|
+
showLabels: d = !0,
|
|
317
|
+
showSecondaryLabel: i = !0,
|
|
313
318
|
...c
|
|
314
|
-
},
|
|
315
|
-
const
|
|
316
|
-
return /* @__PURE__ */
|
|
319
|
+
}, u) => {
|
|
320
|
+
const x = s - n || 1, m = Math.min(100, Math.max(0, (t - n) / x * 100));
|
|
321
|
+
return /* @__PURE__ */ b(
|
|
317
322
|
"div",
|
|
318
323
|
{
|
|
319
|
-
ref:
|
|
324
|
+
ref: u,
|
|
320
325
|
role: "meter",
|
|
321
|
-
"aria-valuenow":
|
|
322
|
-
"aria-valuemin":
|
|
323
|
-
"aria-valuemax":
|
|
326
|
+
"aria-valuenow": t,
|
|
327
|
+
"aria-valuemin": n,
|
|
328
|
+
"aria-valuemax": s,
|
|
324
329
|
"aria-label": a,
|
|
325
330
|
className: f("flex w-full flex-col gap-2", e),
|
|
326
331
|
"data-node-id": "7664:31",
|
|
327
332
|
...c,
|
|
328
333
|
children: [
|
|
329
|
-
|
|
330
|
-
a != null ? /* @__PURE__ */
|
|
331
|
-
|
|
334
|
+
d ? /* @__PURE__ */ b("div", { className: "flex items-center justify-between", children: [
|
|
335
|
+
a != null ? /* @__PURE__ */ r("span", { className: "text-xs font-medium text-foreground", children: a }) : null,
|
|
336
|
+
i ? /* @__PURE__ */ r("span", { className: "text-xs font-medium text-foreground", children: l ?? `${Math.round(m)}%` }) : null
|
|
332
337
|
] }) : null,
|
|
333
|
-
/* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ r("div", { className: "relative h-2 w-full overflow-hidden bg-input", "data-node-id": "7664:42", children: /* @__PURE__ */ r(
|
|
334
339
|
"div",
|
|
335
340
|
{
|
|
336
341
|
className: "absolute inset-y-0 left-0 bg-primary transition-[width]",
|
|
337
|
-
style: { width: `${
|
|
342
|
+
style: { width: `${m}%` },
|
|
338
343
|
"data-node-id": "7664:44"
|
|
339
344
|
}
|
|
340
345
|
) })
|
|
@@ -343,8 +348,8 @@ const X = i.forwardRef(
|
|
|
343
348
|
);
|
|
344
349
|
}
|
|
345
350
|
);
|
|
346
|
-
|
|
347
|
-
const
|
|
351
|
+
we.displayName = "Meter";
|
|
352
|
+
const W = N(
|
|
348
353
|
"inline-flex shrink-0 items-center justify-center gap-1 rounded-radius-lg text-sm text-foreground transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07] disabled:pointer-events-none disabled:opacity-50 data-[state=off]:hover:bg-card/50 data-[state=on]:bg-secondary/[0.64] [&_svg]:size-4 [&_svg]:shrink-0",
|
|
349
354
|
{
|
|
350
355
|
variants: {
|
|
@@ -370,29 +375,29 @@ const A = j(
|
|
|
370
375
|
],
|
|
371
376
|
defaultVariants: { variant: "default", size: "md", iconOnly: !1 }
|
|
372
377
|
}
|
|
373
|
-
),
|
|
378
|
+
), ye = o.forwardRef(
|
|
374
379
|
({
|
|
375
380
|
className: e,
|
|
376
|
-
variant:
|
|
377
|
-
size:
|
|
378
|
-
iconOnly:
|
|
381
|
+
variant: t,
|
|
382
|
+
size: n,
|
|
383
|
+
iconOnly: s,
|
|
379
384
|
pressed: a,
|
|
380
|
-
defaultPressed:
|
|
381
|
-
onPressedChange:
|
|
382
|
-
onClick:
|
|
385
|
+
defaultPressed: l = !1,
|
|
386
|
+
onPressedChange: d,
|
|
387
|
+
onClick: i,
|
|
383
388
|
...c
|
|
384
|
-
},
|
|
385
|
-
const
|
|
386
|
-
return /* @__PURE__ */
|
|
389
|
+
}, u) => {
|
|
390
|
+
const x = a !== void 0, [m, p] = o.useState(l), h = x ? a : m;
|
|
391
|
+
return /* @__PURE__ */ r(
|
|
387
392
|
"button",
|
|
388
393
|
{
|
|
389
|
-
ref:
|
|
394
|
+
ref: u,
|
|
390
395
|
type: "button",
|
|
391
|
-
"aria-pressed":
|
|
392
|
-
"data-state":
|
|
393
|
-
className: f(
|
|
396
|
+
"aria-pressed": h,
|
|
397
|
+
"data-state": h ? "on" : "off",
|
|
398
|
+
className: f(W({ variant: t, size: n, iconOnly: s }), e),
|
|
394
399
|
onClick: (v) => {
|
|
395
|
-
|
|
400
|
+
x || p((w) => !w), d == null || d(!h), i == null || i(v);
|
|
396
401
|
},
|
|
397
402
|
"data-node-id": "5685:204",
|
|
398
403
|
...c
|
|
@@ -400,76 +405,76 @@ const A = j(
|
|
|
400
405
|
);
|
|
401
406
|
}
|
|
402
407
|
);
|
|
403
|
-
|
|
404
|
-
const
|
|
408
|
+
ye.displayName = "Toggle";
|
|
409
|
+
const F = o.createContext(
|
|
405
410
|
null
|
|
406
|
-
),
|
|
407
|
-
(e,
|
|
411
|
+
), Ne = o.forwardRef(
|
|
412
|
+
(e, t) => {
|
|
408
413
|
const {
|
|
409
|
-
type:
|
|
410
|
-
variant:
|
|
414
|
+
type: n,
|
|
415
|
+
variant: s = "outline",
|
|
411
416
|
size: a = "md",
|
|
412
|
-
orientation:
|
|
413
|
-
className:
|
|
414
|
-
children:
|
|
415
|
-
} = e, c = e.value !== void 0, [
|
|
416
|
-
var
|
|
417
|
+
orientation: l = "horizontal",
|
|
418
|
+
className: d,
|
|
419
|
+
children: i
|
|
420
|
+
} = e, c = e.value !== void 0, [u, x] = o.useState(() => e.defaultValue == null ? [] : Array.isArray(e.defaultValue) ? e.defaultValue : [e.defaultValue]), m = c ? Array.isArray(e.value) ? e.value : e.value ? [e.value] : [] : u, p = (h) => {
|
|
421
|
+
var w, S;
|
|
417
422
|
let v;
|
|
418
|
-
|
|
423
|
+
n === "single" ? (v = m[0] === h ? [] : [h], c || x(v), (w = e.onValueChange) == null || w.call(
|
|
419
424
|
e,
|
|
420
425
|
v[0] ?? ""
|
|
421
|
-
)) : (v =
|
|
426
|
+
)) : (v = m.includes(h) ? m.filter((y) => y !== h) : [...m, h], c || x(v), (S = e.onValueChange) == null || S.call(e, v));
|
|
422
427
|
};
|
|
423
|
-
return /* @__PURE__ */
|
|
424
|
-
|
|
428
|
+
return /* @__PURE__ */ r(
|
|
429
|
+
F.Provider,
|
|
425
430
|
{
|
|
426
|
-
value: { value:
|
|
427
|
-
children: /* @__PURE__ */
|
|
431
|
+
value: { value: m, toggle: p, variant: s, size: a, orientation: l },
|
|
432
|
+
children: /* @__PURE__ */ r(
|
|
428
433
|
"div",
|
|
429
434
|
{
|
|
430
|
-
ref:
|
|
435
|
+
ref: t,
|
|
431
436
|
role: "group",
|
|
432
437
|
"data-node-id": "5686:270",
|
|
433
438
|
className: f(
|
|
434
439
|
"inline-flex w-fit overflow-hidden rounded-radius-lg",
|
|
435
|
-
|
|
436
|
-
|
|
440
|
+
l === "vertical" ? "flex-col [&>*:not(:first-child)]:-mt-px" : "flex-row [&>*:not(:first-child)]:-ml-px",
|
|
441
|
+
d
|
|
437
442
|
),
|
|
438
|
-
children:
|
|
443
|
+
children: i
|
|
439
444
|
}
|
|
440
445
|
)
|
|
441
446
|
}
|
|
442
447
|
);
|
|
443
448
|
}
|
|
444
449
|
);
|
|
445
|
-
|
|
446
|
-
const
|
|
447
|
-
const
|
|
448
|
-
if (!
|
|
449
|
-
const
|
|
450
|
-
return /* @__PURE__ */
|
|
450
|
+
Ne.displayName = "ToggleGroup";
|
|
451
|
+
const ke = o.forwardRef(({ value: e, iconOnly: t, className: n, onClick: s, ...a }, l) => {
|
|
452
|
+
const d = o.useContext(F);
|
|
453
|
+
if (!d) throw new Error("ToggleGroupItem must be used within ToggleGroup");
|
|
454
|
+
const i = d.value.includes(e);
|
|
455
|
+
return /* @__PURE__ */ r(
|
|
451
456
|
"button",
|
|
452
457
|
{
|
|
453
|
-
ref:
|
|
458
|
+
ref: l,
|
|
454
459
|
type: "button",
|
|
455
|
-
"aria-pressed":
|
|
456
|
-
"data-state":
|
|
460
|
+
"aria-pressed": i,
|
|
461
|
+
"data-state": i ? "on" : "off",
|
|
457
462
|
className: f(
|
|
458
|
-
|
|
463
|
+
W({ variant: d.variant, size: d.size, iconOnly: t }),
|
|
459
464
|
// twMerge 가 커스텀 radius 키(rounded-radius-lg)를 충돌로 인식 못 하므로 !important 로 강제.
|
|
460
465
|
// 그룹이 rounded+overflow-hidden 이라 바깥 모서리는 그룹이 둥글게 클립한다.
|
|
461
466
|
"!rounded-none focus-visible:z-10",
|
|
462
|
-
|
|
467
|
+
n
|
|
463
468
|
),
|
|
464
469
|
onClick: (c) => {
|
|
465
|
-
|
|
470
|
+
d.toggle(e), s == null || s(c);
|
|
466
471
|
},
|
|
467
472
|
...a
|
|
468
473
|
}
|
|
469
474
|
);
|
|
470
475
|
});
|
|
471
|
-
|
|
472
|
-
const
|
|
476
|
+
ke.displayName = "ToggleGroupItem";
|
|
477
|
+
const ze = N(
|
|
473
478
|
"flex w-full select-none items-center justify-between gap-1 rounded-radius border bg-card text-sm text-foreground shadow-xs transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-[0.64]",
|
|
474
479
|
{
|
|
475
480
|
variants: {
|
|
@@ -482,8 +487,8 @@ const te = j(
|
|
|
482
487
|
defaultVariants: { inputSize: "md", invalid: !1 }
|
|
483
488
|
}
|
|
484
489
|
);
|
|
485
|
-
function
|
|
486
|
-
return /* @__PURE__ */
|
|
490
|
+
function Se({ className: e }) {
|
|
491
|
+
return /* @__PURE__ */ r(
|
|
487
492
|
"svg",
|
|
488
493
|
{
|
|
489
494
|
viewBox: "0 0 24 24",
|
|
@@ -492,12 +497,12 @@ function re({ className: e }) {
|
|
|
492
497
|
strokeWidth: "2",
|
|
493
498
|
className: e,
|
|
494
499
|
"aria-hidden": !0,
|
|
495
|
-
children: /* @__PURE__ */
|
|
500
|
+
children: /* @__PURE__ */ r("path", { d: "m6 9 6 6 6-6", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
496
501
|
}
|
|
497
502
|
);
|
|
498
503
|
}
|
|
499
|
-
function
|
|
500
|
-
return /* @__PURE__ */
|
|
504
|
+
function Re() {
|
|
505
|
+
return /* @__PURE__ */ r(
|
|
501
506
|
"svg",
|
|
502
507
|
{
|
|
503
508
|
viewBox: "0 0 24 24",
|
|
@@ -506,135 +511,135 @@ function ne() {
|
|
|
506
511
|
strokeWidth: "2.2",
|
|
507
512
|
className: "size-4",
|
|
508
513
|
"aria-hidden": !0,
|
|
509
|
-
children: /* @__PURE__ */
|
|
514
|
+
children: /* @__PURE__ */ r("path", { d: "M20 6 9 17l-5-5", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
510
515
|
}
|
|
511
516
|
);
|
|
512
517
|
}
|
|
513
|
-
const
|
|
518
|
+
const Te = o.forwardRef(
|
|
514
519
|
({
|
|
515
520
|
options: e,
|
|
516
|
-
value:
|
|
517
|
-
defaultValue:
|
|
518
|
-
onValueChange:
|
|
521
|
+
value: t,
|
|
522
|
+
defaultValue: n,
|
|
523
|
+
onValueChange: s,
|
|
519
524
|
placeholder: a = "Select…",
|
|
520
|
-
disabled:
|
|
521
|
-
inputSize:
|
|
522
|
-
invalid:
|
|
525
|
+
disabled: l = !1,
|
|
526
|
+
inputSize: d,
|
|
527
|
+
invalid: i,
|
|
523
528
|
className: c,
|
|
524
|
-
contentClassName:
|
|
525
|
-
id:
|
|
526
|
-
name:
|
|
527
|
-
},
|
|
528
|
-
const
|
|
529
|
-
|
|
530
|
-
),
|
|
531
|
-
|
|
532
|
-
if (!
|
|
533
|
-
const
|
|
534
|
-
L.current && !L.current.contains(
|
|
529
|
+
contentClassName: u,
|
|
530
|
+
id: x,
|
|
531
|
+
name: m
|
|
532
|
+
}, p) => {
|
|
533
|
+
const h = t !== void 0, [v, w] = o.useState(
|
|
534
|
+
n
|
|
535
|
+
), S = h ? t : v, [y, k] = o.useState(!1), L = o.useRef(null), j = o.useRef(null), A = e.find((g) => g.value === S);
|
|
536
|
+
o.useEffect(() => {
|
|
537
|
+
if (!y) return;
|
|
538
|
+
const g = (z) => {
|
|
539
|
+
L.current && !L.current.contains(z.target) && k(!1);
|
|
535
540
|
};
|
|
536
|
-
return document.addEventListener("mousedown",
|
|
537
|
-
}, [
|
|
541
|
+
return document.addEventListener("mousedown", g), () => document.removeEventListener("mousedown", g);
|
|
542
|
+
}, [y]), o.useEffect(() => {
|
|
538
543
|
var R;
|
|
539
|
-
if (!
|
|
540
|
-
const
|
|
544
|
+
if (!y) return;
|
|
545
|
+
const g = (R = j.current) == null ? void 0 : R.querySelectorAll(
|
|
541
546
|
"[data-select-item]:not([disabled])"
|
|
542
547
|
);
|
|
543
|
-
if (!(
|
|
544
|
-
(Array.from(
|
|
545
|
-
(
|
|
546
|
-
) ??
|
|
547
|
-
}, [
|
|
548
|
-
const
|
|
549
|
-
|
|
550
|
-
}, O = (
|
|
551
|
-
var
|
|
552
|
-
const
|
|
553
|
-
((
|
|
548
|
+
if (!(g != null && g.length)) return;
|
|
549
|
+
(Array.from(g).find(
|
|
550
|
+
(T) => T.dataset.value === S
|
|
551
|
+
) ?? g[0]).focus();
|
|
552
|
+
}, [y, S]);
|
|
553
|
+
const ae = (g) => {
|
|
554
|
+
h || w(g), s == null || s(g), k(!1);
|
|
555
|
+
}, O = (g) => {
|
|
556
|
+
var P;
|
|
557
|
+
const z = Array.from(
|
|
558
|
+
((P = j.current) == null ? void 0 : P.querySelectorAll(
|
|
554
559
|
"[data-select-item]:not([disabled])"
|
|
555
560
|
)) ?? []
|
|
556
|
-
), R =
|
|
557
|
-
|
|
561
|
+
), R = z.findIndex((oe) => oe === document.activeElement), T = z[(R + g + z.length) % z.length];
|
|
562
|
+
T == null || T.focus();
|
|
558
563
|
};
|
|
559
|
-
return /* @__PURE__ */
|
|
560
|
-
/* @__PURE__ */
|
|
564
|
+
return /* @__PURE__ */ b("div", { ref: L, className: "relative", children: [
|
|
565
|
+
/* @__PURE__ */ b(
|
|
561
566
|
"button",
|
|
562
567
|
{
|
|
563
|
-
ref:
|
|
568
|
+
ref: p,
|
|
564
569
|
type: "button",
|
|
565
|
-
id:
|
|
566
|
-
name:
|
|
567
|
-
disabled:
|
|
570
|
+
id: x,
|
|
571
|
+
name: m,
|
|
572
|
+
disabled: l,
|
|
568
573
|
"aria-haspopup": "listbox",
|
|
569
|
-
"aria-expanded":
|
|
574
|
+
"aria-expanded": y,
|
|
570
575
|
"data-node-id": "7751:1561",
|
|
571
|
-
className: f(
|
|
572
|
-
onClick: () =>
|
|
573
|
-
onKeyDown: (
|
|
574
|
-
(
|
|
576
|
+
className: f(ze({ inputSize: d, invalid: i }), c),
|
|
577
|
+
onClick: () => k((g) => !g),
|
|
578
|
+
onKeyDown: (g) => {
|
|
579
|
+
(g.key === "ArrowDown" || g.key === "Enter" || g.key === " ") && (g.preventDefault(), k(!0));
|
|
575
580
|
},
|
|
576
581
|
children: [
|
|
577
|
-
/* @__PURE__ */
|
|
582
|
+
/* @__PURE__ */ r(
|
|
578
583
|
"span",
|
|
579
584
|
{
|
|
580
585
|
className: f(
|
|
581
586
|
"truncate",
|
|
582
|
-
!
|
|
587
|
+
!A && "text-muted-foreground"
|
|
583
588
|
),
|
|
584
|
-
children:
|
|
589
|
+
children: A ? A.label : a
|
|
585
590
|
}
|
|
586
591
|
),
|
|
587
|
-
/* @__PURE__ */
|
|
588
|
-
|
|
592
|
+
/* @__PURE__ */ r(
|
|
593
|
+
Se,
|
|
589
594
|
{
|
|
590
595
|
className: f(
|
|
591
596
|
"size-4 shrink-0 opacity-50 transition-transform",
|
|
592
|
-
|
|
597
|
+
y && "rotate-180"
|
|
593
598
|
)
|
|
594
599
|
}
|
|
595
600
|
)
|
|
596
601
|
]
|
|
597
602
|
}
|
|
598
603
|
),
|
|
599
|
-
|
|
604
|
+
y && /* @__PURE__ */ r(
|
|
600
605
|
"div",
|
|
601
606
|
{
|
|
602
|
-
ref:
|
|
607
|
+
ref: j,
|
|
603
608
|
role: "listbox",
|
|
604
609
|
tabIndex: -1,
|
|
605
610
|
className: f(
|
|
606
|
-
"absolute left-0 top-full z-50 mt-1 flex max-h-64 w-full flex-col gap-px overflow-auto rounded-radius-xl border border-border bg-popover p-1 shadow-
|
|
607
|
-
|
|
611
|
+
"absolute left-0 top-full z-50 mt-1 flex max-h-64 w-full flex-col gap-px overflow-auto rounded-radius-xl border border-border bg-popover p-1 shadow-overlay",
|
|
612
|
+
u
|
|
608
613
|
),
|
|
609
|
-
onKeyDown: (
|
|
610
|
-
var
|
|
611
|
-
|
|
614
|
+
onKeyDown: (g) => {
|
|
615
|
+
var z, R;
|
|
616
|
+
g.key === "Escape" ? (k(!1), (R = (z = L.current) == null ? void 0 : z.querySelector("button")) == null || R.focus()) : g.key === "ArrowDown" ? (g.preventDefault(), O(1)) : g.key === "ArrowUp" && (g.preventDefault(), O(-1));
|
|
612
617
|
},
|
|
613
|
-
children: e.map((
|
|
614
|
-
const
|
|
615
|
-
return /* @__PURE__ */
|
|
618
|
+
children: e.map((g) => {
|
|
619
|
+
const z = g.value === S;
|
|
620
|
+
return /* @__PURE__ */ b(
|
|
616
621
|
"button",
|
|
617
622
|
{
|
|
618
623
|
type: "button",
|
|
619
624
|
role: "option",
|
|
620
|
-
"aria-selected":
|
|
621
|
-
disabled:
|
|
625
|
+
"aria-selected": z,
|
|
626
|
+
disabled: g.disabled,
|
|
622
627
|
"data-select-item": "",
|
|
623
|
-
"data-value":
|
|
628
|
+
"data-value": g.value,
|
|
624
629
|
className: f(
|
|
625
630
|
"flex h-7 w-full items-center gap-0.5 rounded-radius-lg px-0.5 text-left text-xs font-medium text-accent-foreground outline-none transition-colors",
|
|
626
631
|
"hover:bg-accent focus-visible:bg-accent",
|
|
627
632
|
"disabled:pointer-events-none disabled:opacity-[0.64]",
|
|
628
|
-
|
|
633
|
+
z && "bg-primary/[0.04]"
|
|
629
634
|
),
|
|
630
|
-
onClick: () =>
|
|
635
|
+
onClick: () => ae(g.value),
|
|
631
636
|
children: [
|
|
632
|
-
/* @__PURE__ */
|
|
633
|
-
|
|
634
|
-
/* @__PURE__ */
|
|
637
|
+
/* @__PURE__ */ r("span", { className: "flex size-7 shrink-0 items-center justify-center", children: z ? /* @__PURE__ */ r(Re, {}) : null }),
|
|
638
|
+
g.icon ? /* @__PURE__ */ r("span", { className: "inline-flex size-4 shrink-0 items-center justify-center [&_svg]:size-4", children: g.icon }) : null,
|
|
639
|
+
/* @__PURE__ */ r("span", { className: "min-w-0 flex-1 truncate", children: g.label })
|
|
635
640
|
]
|
|
636
641
|
},
|
|
637
|
-
|
|
642
|
+
g.value
|
|
638
643
|
);
|
|
639
644
|
})
|
|
640
645
|
}
|
|
@@ -642,24 +647,1133 @@ const se = i.forwardRef(
|
|
|
642
647
|
] });
|
|
643
648
|
}
|
|
644
649
|
);
|
|
645
|
-
|
|
650
|
+
Te.displayName = "Select";
|
|
651
|
+
const Ie = N(
|
|
652
|
+
"relative inline-flex shrink-0 cursor-pointer items-center rounded-radius-full p-0.5 outline-none transition-colors shadow-[inset_0_2px_4px_0_rgb(0_0_0_/_0.05)] focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07] disabled:cursor-not-allowed disabled:opacity-[0.64] data-[state=on]:bg-success data-[state=off]:bg-input",
|
|
653
|
+
{
|
|
654
|
+
variants: {
|
|
655
|
+
size: { md: "h-[18px] w-[30px]", lg: "h-6 w-11" }
|
|
656
|
+
},
|
|
657
|
+
defaultVariants: { size: "md" }
|
|
658
|
+
}
|
|
659
|
+
), De = N(
|
|
660
|
+
"pointer-events-none block rounded-radius-full bg-card shadow-xs transition-transform",
|
|
661
|
+
{
|
|
662
|
+
variants: {
|
|
663
|
+
size: {
|
|
664
|
+
md: "size-[14px] data-[state=on]:translate-x-3",
|
|
665
|
+
lg: "size-5 data-[state=on]:translate-x-5"
|
|
666
|
+
}
|
|
667
|
+
},
|
|
668
|
+
defaultVariants: { size: "md" }
|
|
669
|
+
}
|
|
670
|
+
), Le = o.forwardRef(
|
|
671
|
+
({ className: e, size: t, checked: n, defaultChecked: s = !1, onCheckedChange: a, onClick: l, disabled: d, ...i }, c) => {
|
|
672
|
+
const u = n !== void 0, [x, m] = o.useState(s), p = u ? n : x, h = p ? "on" : "off";
|
|
673
|
+
return /* @__PURE__ */ r(
|
|
674
|
+
"button",
|
|
675
|
+
{
|
|
676
|
+
ref: c,
|
|
677
|
+
type: "button",
|
|
678
|
+
role: "switch",
|
|
679
|
+
"aria-checked": p,
|
|
680
|
+
disabled: d,
|
|
681
|
+
"data-state": h,
|
|
682
|
+
className: f(Ie({ size: t }), e),
|
|
683
|
+
onClick: (v) => {
|
|
684
|
+
u || m((w) => !w), a == null || a(!p), l == null || l(v);
|
|
685
|
+
},
|
|
686
|
+
"data-node-id": "7715:1962",
|
|
687
|
+
...i,
|
|
688
|
+
children: /* @__PURE__ */ r("span", { "data-state": h, className: De({ size: t }) })
|
|
689
|
+
}
|
|
690
|
+
);
|
|
691
|
+
}
|
|
692
|
+
);
|
|
693
|
+
Le.displayName = "Switch";
|
|
694
|
+
const _e = o.forwardRef(
|
|
695
|
+
({ className: e, orientation: t = "horizontal", decorative: n = !0, ...s }, a) => /* @__PURE__ */ r(
|
|
696
|
+
"div",
|
|
697
|
+
{
|
|
698
|
+
ref: a,
|
|
699
|
+
role: n ? "none" : "separator",
|
|
700
|
+
"aria-orientation": n ? void 0 : t,
|
|
701
|
+
"data-node-id": "3605:3065",
|
|
702
|
+
className: f(
|
|
703
|
+
"shrink-0 bg-border",
|
|
704
|
+
t === "horizontal" ? "h-px w-full" : "h-full w-px",
|
|
705
|
+
e
|
|
706
|
+
),
|
|
707
|
+
...s
|
|
708
|
+
}
|
|
709
|
+
)
|
|
710
|
+
);
|
|
711
|
+
_e.displayName = "Separator";
|
|
712
|
+
const Ee = o.forwardRef(
|
|
713
|
+
({ className: e, ...t }, n) => /* @__PURE__ */ r(
|
|
714
|
+
"div",
|
|
715
|
+
{
|
|
716
|
+
ref: n,
|
|
717
|
+
"data-node-id": "7669:1885",
|
|
718
|
+
className: f("animate-pulse rounded-radius-lg bg-secondary", e),
|
|
719
|
+
...t
|
|
720
|
+
}
|
|
721
|
+
)
|
|
722
|
+
);
|
|
723
|
+
Ee.displayName = "Skeleton";
|
|
724
|
+
const je = N("animate-spin", {
|
|
725
|
+
variants: {
|
|
726
|
+
size: { sm: "size-4", md: "size-6", lg: "size-8" }
|
|
727
|
+
},
|
|
728
|
+
defaultVariants: { size: "md" }
|
|
729
|
+
}), H = o.forwardRef(
|
|
730
|
+
({ className: e, size: t, ...n }, s) => /* @__PURE__ */ b(
|
|
731
|
+
"svg",
|
|
732
|
+
{
|
|
733
|
+
ref: s,
|
|
734
|
+
viewBox: "0 0 24 24",
|
|
735
|
+
fill: "none",
|
|
736
|
+
role: "status",
|
|
737
|
+
"aria-label": "로딩 중",
|
|
738
|
+
"data-node-id": "7707:393",
|
|
739
|
+
className: f(je({ size: t }), e),
|
|
740
|
+
...n,
|
|
741
|
+
children: [
|
|
742
|
+
/* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "2.5", className: "opacity-20" }),
|
|
743
|
+
/* @__PURE__ */ r(
|
|
744
|
+
"path",
|
|
745
|
+
{
|
|
746
|
+
d: "M21 12a9 9 0 0 0-9-9",
|
|
747
|
+
stroke: "currentColor",
|
|
748
|
+
strokeWidth: "2.5",
|
|
749
|
+
strokeLinecap: "round"
|
|
750
|
+
}
|
|
751
|
+
)
|
|
752
|
+
]
|
|
753
|
+
}
|
|
754
|
+
)
|
|
755
|
+
);
|
|
756
|
+
H.displayName = "Spinner";
|
|
757
|
+
const Ae = N(
|
|
758
|
+
"flex w-full resize-y rounded-radius border bg-background text-sm text-foreground shadow-xs outline-none transition-colors placeholder:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-[0.64]",
|
|
759
|
+
{
|
|
760
|
+
variants: {
|
|
761
|
+
inputSize: {
|
|
762
|
+
sm: "min-h-16 px-2 py-1",
|
|
763
|
+
md: "min-h-[76px] px-3 py-1.5",
|
|
764
|
+
lg: "min-h-24 px-3 py-2"
|
|
765
|
+
},
|
|
766
|
+
invalid: {
|
|
767
|
+
true: "border-destructive focus-visible:ring-destructive/[0.15]",
|
|
768
|
+
false: "border-input focus-visible:border-disabled/30 focus-visible:ring-disabled/[0.07]"
|
|
769
|
+
}
|
|
770
|
+
},
|
|
771
|
+
defaultVariants: { inputSize: "md", invalid: !1 }
|
|
772
|
+
}
|
|
773
|
+
), Ce = o.forwardRef(
|
|
774
|
+
({ className: e, inputSize: t, invalid: n, ...s }, a) => /* @__PURE__ */ r(
|
|
775
|
+
"textarea",
|
|
776
|
+
{
|
|
777
|
+
ref: a,
|
|
778
|
+
"data-node-id": "7751:1067",
|
|
779
|
+
className: f(Ae({ inputSize: t, invalid: n }), e),
|
|
780
|
+
...s
|
|
781
|
+
}
|
|
782
|
+
)
|
|
783
|
+
);
|
|
784
|
+
Ce.displayName = "Textarea";
|
|
785
|
+
const Me = N(
|
|
786
|
+
"relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden bg-secondary font-medium text-muted-foreground",
|
|
787
|
+
{
|
|
788
|
+
variants: {
|
|
789
|
+
size: {
|
|
790
|
+
xs: "size-6 text-xs",
|
|
791
|
+
sm: "size-7 text-xs",
|
|
792
|
+
md: "size-8 text-sm",
|
|
793
|
+
lg: "size-9 text-sm",
|
|
794
|
+
xl: "size-10 text-base",
|
|
795
|
+
"2xl": "size-12 text-base"
|
|
796
|
+
},
|
|
797
|
+
shape: { circle: "rounded-radius-full", square: "rounded-radius" }
|
|
798
|
+
},
|
|
799
|
+
defaultVariants: { size: "md", shape: "circle" }
|
|
800
|
+
}
|
|
801
|
+
), K = o.forwardRef(
|
|
802
|
+
({ className: e, size: t, shape: n, src: s, alt: a, fallback: l, ring: d, ...i }, c) => {
|
|
803
|
+
const [u, x] = o.useState(!1), m = s && !u;
|
|
804
|
+
return /* @__PURE__ */ r(
|
|
805
|
+
"div",
|
|
806
|
+
{
|
|
807
|
+
ref: c,
|
|
808
|
+
"data-node-id": "1696:153",
|
|
809
|
+
className: f(
|
|
810
|
+
Me({ size: t, shape: n }),
|
|
811
|
+
d && "ring-2 ring-background",
|
|
812
|
+
e
|
|
813
|
+
),
|
|
814
|
+
...i,
|
|
815
|
+
children: m ? /* @__PURE__ */ r(
|
|
816
|
+
"img",
|
|
817
|
+
{
|
|
818
|
+
src: s,
|
|
819
|
+
alt: a,
|
|
820
|
+
className: "size-full object-cover",
|
|
821
|
+
onError: () => x(!0)
|
|
822
|
+
}
|
|
823
|
+
) : /* @__PURE__ */ r("span", { children: l })
|
|
824
|
+
}
|
|
825
|
+
);
|
|
826
|
+
}
|
|
827
|
+
);
|
|
828
|
+
K.displayName = "Avatar";
|
|
829
|
+
const Ve = o.forwardRef(
|
|
830
|
+
({ className: e, size: t = "md", max: n, children: s, ...a }, l) => {
|
|
831
|
+
const d = o.Children.toArray(s).filter(
|
|
832
|
+
o.isValidElement
|
|
833
|
+
), i = n != null ? d.slice(0, n) : d, c = n != null ? d.length - i.length : 0;
|
|
834
|
+
return /* @__PURE__ */ b(
|
|
835
|
+
"div",
|
|
836
|
+
{
|
|
837
|
+
ref: l,
|
|
838
|
+
"data-node-id": "1696:220",
|
|
839
|
+
className: f(
|
|
840
|
+
"flex items-center [&>*:not(:first-child)]:-ml-3",
|
|
841
|
+
e
|
|
842
|
+
),
|
|
843
|
+
...a,
|
|
844
|
+
children: [
|
|
845
|
+
i.map(
|
|
846
|
+
(u, x) => o.cloneElement(u, {
|
|
847
|
+
key: u.key ?? x,
|
|
848
|
+
ring: !0,
|
|
849
|
+
size: u.props.size ?? t
|
|
850
|
+
})
|
|
851
|
+
),
|
|
852
|
+
c > 0 && /* @__PURE__ */ r(K, { size: t, ring: !0, fallback: `+${c}` })
|
|
853
|
+
]
|
|
854
|
+
}
|
|
855
|
+
);
|
|
856
|
+
}
|
|
857
|
+
);
|
|
858
|
+
Ve.displayName = "AvatarGroup";
|
|
859
|
+
const Oe = N(
|
|
860
|
+
"inline-flex h-5 items-center justify-center gap-1 rounded-radius-full px-2 py-0.5 text-xs font-medium leading-[14px] tracking-[0.12px] whitespace-nowrap",
|
|
861
|
+
{
|
|
862
|
+
variants: {
|
|
863
|
+
color: {
|
|
864
|
+
info: "",
|
|
865
|
+
success: "",
|
|
866
|
+
warning: "",
|
|
867
|
+
destructive: "",
|
|
868
|
+
neutral: ""
|
|
869
|
+
},
|
|
870
|
+
variant: { fill: "", tinted: "" }
|
|
871
|
+
},
|
|
872
|
+
compoundVariants: [
|
|
873
|
+
{ variant: "fill", color: "info", class: "bg-info text-primary-foreground" },
|
|
874
|
+
{ variant: "fill", color: "success", class: "bg-success text-primary-foreground" },
|
|
875
|
+
{ variant: "fill", color: "warning", class: "bg-warning text-primary-foreground" },
|
|
876
|
+
{ variant: "fill", color: "destructive", class: "bg-destructive text-primary-foreground" },
|
|
877
|
+
{ variant: "fill", color: "neutral", class: "bg-foreground text-background" },
|
|
878
|
+
{ variant: "tinted", color: "info", class: "bg-info/[0.08] text-info-foreground" },
|
|
879
|
+
{ variant: "tinted", color: "success", class: "bg-success/[0.08] text-success-foreground" },
|
|
880
|
+
{ variant: "tinted", color: "warning", class: "bg-warning/[0.08] text-warning-foreground" },
|
|
881
|
+
{ variant: "tinted", color: "destructive", class: "bg-destructive/[0.08] text-destructive-foreground" },
|
|
882
|
+
{ variant: "tinted", color: "neutral", class: "bg-foreground/[0.08] text-foreground" }
|
|
883
|
+
],
|
|
884
|
+
defaultVariants: { color: "neutral", variant: "fill" }
|
|
885
|
+
}
|
|
886
|
+
), Pe = o.forwardRef(
|
|
887
|
+
({ className: e, color: t, variant: n, ...s }, a) => /* @__PURE__ */ r(
|
|
888
|
+
"span",
|
|
889
|
+
{
|
|
890
|
+
ref: a,
|
|
891
|
+
"data-node-id": "9929:48567",
|
|
892
|
+
className: f(Oe({ color: t, variant: n }), e),
|
|
893
|
+
...s
|
|
894
|
+
}
|
|
895
|
+
)
|
|
896
|
+
);
|
|
897
|
+
Pe.displayName = "Badge";
|
|
898
|
+
const Be = N(
|
|
899
|
+
"flex items-center rounded-radius border border-input bg-background text-foreground shadow-xs transition-colors focus-within:border-disabled/30 focus-within:ring-[3px] focus-within:ring-offset-0 focus-within:ring-disabled/[0.07] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-[0.64]",
|
|
900
|
+
{
|
|
901
|
+
variants: { size: { sm: "h-7", md: "h-8", lg: "h-9" } },
|
|
902
|
+
defaultVariants: { size: "md" }
|
|
903
|
+
}
|
|
904
|
+
);
|
|
905
|
+
function B({ dir: e, ...t }) {
|
|
906
|
+
return /* @__PURE__ */ r(
|
|
907
|
+
"button",
|
|
908
|
+
{
|
|
909
|
+
type: "button",
|
|
910
|
+
tabIndex: -1,
|
|
911
|
+
className: "inline-flex h-full w-9 shrink-0 items-center justify-center text-foreground transition-colors hover:bg-secondary/50 disabled:opacity-40 [&_svg]:size-4",
|
|
912
|
+
...t,
|
|
913
|
+
children: /* @__PURE__ */ r("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": !0, children: e === "dec" ? /* @__PURE__ */ r("path", { d: "M5 12h14", strokeLinecap: "round" }) : /* @__PURE__ */ r("path", { d: "M12 5v14M5 12h14", strokeLinecap: "round" }) })
|
|
914
|
+
}
|
|
915
|
+
);
|
|
916
|
+
}
|
|
917
|
+
const Ge = o.forwardRef(
|
|
918
|
+
({ className: e, size: t, value: n, defaultValue: s = 0, onValueChange: a, min: l, max: d, step: i = 1, disabled: c, ...u }, x) => {
|
|
919
|
+
const m = n !== void 0, [p, h] = o.useState(s), v = m ? n : p, w = (y) => Math.min(d ?? 1 / 0, Math.max(l ?? -1 / 0, y)), S = (y) => {
|
|
920
|
+
const k = w(y);
|
|
921
|
+
m || h(k), a == null || a(k);
|
|
922
|
+
};
|
|
923
|
+
return /* @__PURE__ */ b("div", { className: f(Be({ size: t }), e), "data-node-id": "7781:5501", children: [
|
|
924
|
+
/* @__PURE__ */ r(B, { dir: "dec", disabled: c || l != null && v <= l, onClick: () => S(v - i), "aria-label": "감소" }),
|
|
925
|
+
/* @__PURE__ */ r(
|
|
926
|
+
"input",
|
|
927
|
+
{
|
|
928
|
+
ref: x,
|
|
929
|
+
type: "text",
|
|
930
|
+
inputMode: "numeric",
|
|
931
|
+
disabled: c,
|
|
932
|
+
value: v,
|
|
933
|
+
onChange: (y) => {
|
|
934
|
+
const k = Number(y.target.value);
|
|
935
|
+
Number.isNaN(k) || S(k);
|
|
936
|
+
},
|
|
937
|
+
className: "min-w-0 flex-1 bg-transparent text-center text-sm text-foreground outline-none",
|
|
938
|
+
...u
|
|
939
|
+
}
|
|
940
|
+
),
|
|
941
|
+
/* @__PURE__ */ r(B, { dir: "inc", disabled: c || d != null && v >= d, onClick: () => S(v + i), "aria-label": "증가" })
|
|
942
|
+
] });
|
|
943
|
+
}
|
|
944
|
+
);
|
|
945
|
+
Ge.displayName = "NumberField";
|
|
946
|
+
const q = o.createContext(null);
|
|
947
|
+
let We = 0;
|
|
948
|
+
const Fe = o.forwardRef(
|
|
949
|
+
({ className: e, value: t, defaultValue: n, onValueChange: s, name: a, disabled: l, children: d, ...i }, c) => {
|
|
950
|
+
const u = t !== void 0, [x, m] = o.useState(n), p = u ? t : x, h = o.useMemo(() => a ?? `radio-group-${++We}`, [a]);
|
|
951
|
+
return /* @__PURE__ */ r(
|
|
952
|
+
q.Provider,
|
|
953
|
+
{
|
|
954
|
+
value: {
|
|
955
|
+
value: p,
|
|
956
|
+
name: h,
|
|
957
|
+
disabled: l,
|
|
958
|
+
onValueChange: (v) => {
|
|
959
|
+
u || m(v), s == null || s(v);
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
children: /* @__PURE__ */ r(
|
|
963
|
+
"div",
|
|
964
|
+
{
|
|
965
|
+
ref: c,
|
|
966
|
+
role: "radiogroup",
|
|
967
|
+
"data-node-id": "7669:1454",
|
|
968
|
+
className: f("flex flex-col gap-3", e),
|
|
969
|
+
...i,
|
|
970
|
+
children: d
|
|
971
|
+
}
|
|
972
|
+
)
|
|
973
|
+
}
|
|
974
|
+
);
|
|
975
|
+
}
|
|
976
|
+
);
|
|
977
|
+
Fe.displayName = "RadioGroup";
|
|
978
|
+
const He = o.forwardRef(
|
|
979
|
+
({ className: e, value: t, title: n, description: s, disabled: a, cardStyle: l, children: d, ...i }, c) => {
|
|
980
|
+
const u = o.useContext(q);
|
|
981
|
+
if (!u) throw new Error("RadioGroupItem must be used within RadioGroup");
|
|
982
|
+
const x = a || u.disabled, m = u.value === t;
|
|
983
|
+
return /* @__PURE__ */ b(
|
|
984
|
+
"label",
|
|
985
|
+
{
|
|
986
|
+
ref: c,
|
|
987
|
+
className: f(
|
|
988
|
+
"flex items-start gap-2",
|
|
989
|
+
l && "rounded-radius border border-border p-3",
|
|
990
|
+
x ? "cursor-not-allowed opacity-[0.64]" : "cursor-pointer",
|
|
991
|
+
e
|
|
992
|
+
),
|
|
993
|
+
...i,
|
|
994
|
+
children: [
|
|
995
|
+
/* @__PURE__ */ r(
|
|
996
|
+
"input",
|
|
997
|
+
{
|
|
998
|
+
type: "radio",
|
|
999
|
+
name: u.name,
|
|
1000
|
+
value: t,
|
|
1001
|
+
checked: m,
|
|
1002
|
+
disabled: x,
|
|
1003
|
+
onChange: () => {
|
|
1004
|
+
var p;
|
|
1005
|
+
return (p = u.onValueChange) == null ? void 0 : p.call(u, t);
|
|
1006
|
+
},
|
|
1007
|
+
className: "peer sr-only"
|
|
1008
|
+
}
|
|
1009
|
+
),
|
|
1010
|
+
/* @__PURE__ */ r(
|
|
1011
|
+
"span",
|
|
1012
|
+
{
|
|
1013
|
+
"aria-hidden": !0,
|
|
1014
|
+
className: f(
|
|
1015
|
+
"mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-radius-full border shadow-xs transition-colors",
|
|
1016
|
+
"peer-focus-visible:ring-[3px] peer-focus-visible:ring-offset-0 peer-focus-visible:ring-disabled/[0.07]",
|
|
1017
|
+
m ? "border-foreground bg-foreground" : "border-input bg-background"
|
|
1018
|
+
),
|
|
1019
|
+
children: m && /* @__PURE__ */ r("span", { className: "size-1.5 rounded-radius-full bg-card" })
|
|
1020
|
+
}
|
|
1021
|
+
),
|
|
1022
|
+
(n != null || s != null || d != null) && /* @__PURE__ */ b("span", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
|
|
1023
|
+
n != null && /* @__PURE__ */ r("span", { className: "text-base leading-6 text-foreground", children: n }),
|
|
1024
|
+
d,
|
|
1025
|
+
s != null && /* @__PURE__ */ r("span", { className: "text-xs leading-[14px] tracking-[0.12px] text-muted-foreground", children: s })
|
|
1026
|
+
] })
|
|
1027
|
+
]
|
|
1028
|
+
}
|
|
1029
|
+
);
|
|
1030
|
+
}
|
|
1031
|
+
);
|
|
1032
|
+
He.displayName = "RadioGroupItem";
|
|
1033
|
+
const Ke = N(
|
|
1034
|
+
"inline-flex w-full items-center gap-0 bg-background p-0.5",
|
|
1035
|
+
{
|
|
1036
|
+
variants: {
|
|
1037
|
+
segStyle: { rounded: "rounded-radius-full", regular: "rounded-radius", sharp: "rounded-none" }
|
|
1038
|
+
},
|
|
1039
|
+
defaultVariants: { segStyle: "rounded" }
|
|
1040
|
+
}
|
|
1041
|
+
), qe = N(
|
|
1042
|
+
"flex flex-1 items-center justify-center gap-1 px-3 py-2 text-sm font-medium outline-none transition-colors focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07] focus-visible:z-10 disabled:pointer-events-none disabled:opacity-[0.64]",
|
|
1043
|
+
{
|
|
1044
|
+
variants: {
|
|
1045
|
+
segStyle: { rounded: "rounded-radius-full", regular: "rounded-radius-lg", sharp: "rounded-none" },
|
|
1046
|
+
active: {
|
|
1047
|
+
true: "bg-card text-foreground shadow-xs",
|
|
1048
|
+
false: "text-muted-foreground hover:text-foreground"
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
defaultVariants: { segStyle: "rounded", active: !1 }
|
|
1052
|
+
}
|
|
1053
|
+
), $e = o.forwardRef(
|
|
1054
|
+
({ className: e, options: t, value: n, defaultValue: s, onValueChange: a, segStyle: l, ...d }, i) => {
|
|
1055
|
+
var h;
|
|
1056
|
+
const c = n !== void 0, [u, x] = o.useState(s ?? ((h = t[0]) == null ? void 0 : h.value)), m = c ? n : u, p = (v) => {
|
|
1057
|
+
c || x(v), a == null || a(v);
|
|
1058
|
+
};
|
|
1059
|
+
return /* @__PURE__ */ r(
|
|
1060
|
+
"div",
|
|
1061
|
+
{
|
|
1062
|
+
ref: i,
|
|
1063
|
+
role: "radiogroup",
|
|
1064
|
+
"data-node-id": "9705:88227",
|
|
1065
|
+
className: f(Ke({ segStyle: l }), e),
|
|
1066
|
+
...d,
|
|
1067
|
+
children: t.map((v) => {
|
|
1068
|
+
const w = v.value === m;
|
|
1069
|
+
return /* @__PURE__ */ r(
|
|
1070
|
+
"button",
|
|
1071
|
+
{
|
|
1072
|
+
type: "button",
|
|
1073
|
+
role: "radio",
|
|
1074
|
+
"aria-checked": w,
|
|
1075
|
+
disabled: v.disabled,
|
|
1076
|
+
className: qe({ segStyle: l, active: w }),
|
|
1077
|
+
onClick: () => p(v.value),
|
|
1078
|
+
children: v.label
|
|
1079
|
+
},
|
|
1080
|
+
v.value
|
|
1081
|
+
);
|
|
1082
|
+
})
|
|
1083
|
+
}
|
|
1084
|
+
);
|
|
1085
|
+
}
|
|
1086
|
+
);
|
|
1087
|
+
$e.displayName = "SegmentedControl";
|
|
1088
|
+
const $ = o.createContext(null), M = () => {
|
|
1089
|
+
const e = o.useContext($);
|
|
1090
|
+
if (!e) throw new Error("Tabs components must be used within <Tabs>");
|
|
1091
|
+
return e;
|
|
1092
|
+
}, Ue = o.forwardRef(
|
|
1093
|
+
({ className: e, value: t, defaultValue: n, onValueChange: s, variant: a = "default", children: l, ...d }, i) => {
|
|
1094
|
+
const c = t !== void 0, [u, x] = o.useState(n), m = c ? t : u;
|
|
1095
|
+
return /* @__PURE__ */ r(
|
|
1096
|
+
$.Provider,
|
|
1097
|
+
{
|
|
1098
|
+
value: {
|
|
1099
|
+
value: m,
|
|
1100
|
+
variant: a,
|
|
1101
|
+
setValue: (p) => {
|
|
1102
|
+
c || x(p), s == null || s(p);
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
children: /* @__PURE__ */ r("div", { ref: i, "data-node-id": "7722:82", className: f("flex flex-col gap-3", e), ...d, children: l })
|
|
1106
|
+
}
|
|
1107
|
+
);
|
|
1108
|
+
}
|
|
1109
|
+
);
|
|
1110
|
+
Ue.displayName = "Tabs";
|
|
1111
|
+
const Ze = o.forwardRef(
|
|
1112
|
+
({ className: e, ...t }, n) => {
|
|
1113
|
+
const { variant: s } = M();
|
|
1114
|
+
return /* @__PURE__ */ r(
|
|
1115
|
+
"div",
|
|
1116
|
+
{
|
|
1117
|
+
ref: n,
|
|
1118
|
+
role: "tablist",
|
|
1119
|
+
className: f(
|
|
1120
|
+
"inline-flex items-center",
|
|
1121
|
+
s === "default" ? "gap-0.5 rounded-radius-lg bg-secondary p-0.5" : "gap-1 border-b border-border",
|
|
1122
|
+
e
|
|
1123
|
+
),
|
|
1124
|
+
...t
|
|
1125
|
+
}
|
|
1126
|
+
);
|
|
1127
|
+
}
|
|
1128
|
+
);
|
|
1129
|
+
Ze.displayName = "TabsList";
|
|
1130
|
+
const Je = o.forwardRef(
|
|
1131
|
+
({ className: e, value: t, ...n }, s) => {
|
|
1132
|
+
const { value: a, setValue: l, variant: d } = M(), i = a === t;
|
|
1133
|
+
return /* @__PURE__ */ r(
|
|
1134
|
+
"button",
|
|
1135
|
+
{
|
|
1136
|
+
ref: s,
|
|
1137
|
+
type: "button",
|
|
1138
|
+
role: "tab",
|
|
1139
|
+
"aria-selected": i,
|
|
1140
|
+
"data-state": i ? "active" : "inactive",
|
|
1141
|
+
onClick: () => l(t),
|
|
1142
|
+
className: f(
|
|
1143
|
+
"inline-flex min-w-9 items-center justify-center gap-1 text-sm font-medium outline-none transition-colors",
|
|
1144
|
+
"focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07] disabled:pointer-events-none disabled:opacity-[0.64]",
|
|
1145
|
+
d === "default" ? f(
|
|
1146
|
+
"rounded-radius-lg px-2 py-1.5",
|
|
1147
|
+
i ? "bg-card text-foreground shadow-xs" : "text-muted-foreground hover:text-foreground"
|
|
1148
|
+
) : f(
|
|
1149
|
+
"-mb-px border-b-2 px-2 pb-2",
|
|
1150
|
+
i ? "border-foreground text-foreground" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
1151
|
+
),
|
|
1152
|
+
e
|
|
1153
|
+
),
|
|
1154
|
+
...n
|
|
1155
|
+
}
|
|
1156
|
+
);
|
|
1157
|
+
}
|
|
1158
|
+
);
|
|
1159
|
+
Je.displayName = "TabsTrigger";
|
|
1160
|
+
const Qe = o.forwardRef(
|
|
1161
|
+
({ className: e, value: t, ...n }, s) => {
|
|
1162
|
+
const { value: a } = M();
|
|
1163
|
+
return a !== t ? null : /* @__PURE__ */ r("div", { ref: s, role: "tabpanel", className: f("text-sm text-foreground", e), ...n });
|
|
1164
|
+
}
|
|
1165
|
+
);
|
|
1166
|
+
Qe.displayName = "TabsContent";
|
|
1167
|
+
const U = o.createContext(null), Xe = o.forwardRef((e, t) => {
|
|
1168
|
+
const { type: n = "single", className: s, children: a } = e, l = e.value !== void 0, [d, i] = o.useState(() => {
|
|
1169
|
+
const m = e.defaultValue;
|
|
1170
|
+
return m == null ? [] : Array.isArray(m) ? m : [m];
|
|
1171
|
+
}), c = e.value, u = l ? Array.isArray(c) ? c : c ? [c] : [] : d, x = (m) => {
|
|
1172
|
+
var h, v;
|
|
1173
|
+
let p;
|
|
1174
|
+
n === "multiple" ? (p = u.includes(m) ? u.filter((w) => w !== m) : [...u, m], l || i(p), (h = e.onValueChange) == null || h.call(e, p)) : (p = u.includes(m) ? [] : [m], l || i(p), (v = e.onValueChange) == null || v.call(e, p[0] ?? ""));
|
|
1175
|
+
};
|
|
1176
|
+
return /* @__PURE__ */ r(U.Provider, { value: { isOpen: (m) => u.includes(m), toggle: x }, children: /* @__PURE__ */ r("div", { ref: t, "data-node-id": "1673:58", className: f("w-full", s), children: a }) });
|
|
1177
|
+
});
|
|
1178
|
+
Xe.displayName = "Accordion";
|
|
1179
|
+
const Ye = o.forwardRef(
|
|
1180
|
+
({ className: e, value: t, title: n, icon: s, showSeparator: a = !0, children: l, ...d }, i) => {
|
|
1181
|
+
const c = o.useContext(U);
|
|
1182
|
+
if (!c) throw new Error("AccordionItem must be used within Accordion");
|
|
1183
|
+
const u = c.isOpen(t);
|
|
1184
|
+
return /* @__PURE__ */ b(
|
|
1185
|
+
"div",
|
|
1186
|
+
{
|
|
1187
|
+
ref: i,
|
|
1188
|
+
className: f("w-full", a && "border-b border-border", e),
|
|
1189
|
+
...d,
|
|
1190
|
+
children: [
|
|
1191
|
+
/* @__PURE__ */ b(
|
|
1192
|
+
"button",
|
|
1193
|
+
{
|
|
1194
|
+
type: "button",
|
|
1195
|
+
"aria-expanded": u,
|
|
1196
|
+
onClick: () => c.toggle(t),
|
|
1197
|
+
className: "flex w-full items-center gap-1 py-4 text-left outline-none focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07]",
|
|
1198
|
+
children: [
|
|
1199
|
+
/* @__PURE__ */ b("span", { className: "flex flex-1 items-center gap-2.5 text-sm font-medium text-foreground", children: [
|
|
1200
|
+
s ? /* @__PURE__ */ r("span", { className: "inline-flex shrink-0 [&_svg]:size-5", children: s }) : null,
|
|
1201
|
+
n
|
|
1202
|
+
] }),
|
|
1203
|
+
/* @__PURE__ */ r(
|
|
1204
|
+
"svg",
|
|
1205
|
+
{
|
|
1206
|
+
viewBox: "0 0 24 24",
|
|
1207
|
+
fill: "none",
|
|
1208
|
+
stroke: "currentColor",
|
|
1209
|
+
strokeWidth: "2",
|
|
1210
|
+
"aria-hidden": !0,
|
|
1211
|
+
className: f("size-5 shrink-0 text-foreground transition-transform", u && "rotate-180"),
|
|
1212
|
+
children: /* @__PURE__ */ r("path", { d: "m6 9 6 6 6-6", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
1213
|
+
}
|
|
1214
|
+
)
|
|
1215
|
+
]
|
|
1216
|
+
}
|
|
1217
|
+
),
|
|
1218
|
+
u && /* @__PURE__ */ r("div", { className: "pb-4 text-sm text-muted-foreground", children: l })
|
|
1219
|
+
]
|
|
1220
|
+
}
|
|
1221
|
+
);
|
|
1222
|
+
}
|
|
1223
|
+
);
|
|
1224
|
+
Ye.displayName = "AccordionItem";
|
|
1225
|
+
const et = o.forwardRef(
|
|
1226
|
+
({ className: e, title: t, open: n, defaultOpen: s = !1, onOpenChange: a, disabled: l, children: d, ...i }, c) => {
|
|
1227
|
+
const u = n !== void 0, [x, m] = o.useState(s), p = u ? n : x;
|
|
1228
|
+
return /* @__PURE__ */ b("div", { ref: c, "data-node-id": "5677:165", className: f("w-full", e), ...i, children: [
|
|
1229
|
+
/* @__PURE__ */ b(
|
|
1230
|
+
"button",
|
|
1231
|
+
{
|
|
1232
|
+
type: "button",
|
|
1233
|
+
"aria-expanded": p,
|
|
1234
|
+
disabled: l,
|
|
1235
|
+
onClick: () => {
|
|
1236
|
+
u || m((h) => !h), a == null || a(!p);
|
|
1237
|
+
},
|
|
1238
|
+
className: "flex w-full items-center gap-1 text-left text-sm text-foreground outline-none focus-visible:ring-[3px] focus-visible:ring-offset-0 focus-visible:ring-disabled/[0.07] disabled:cursor-not-allowed disabled:opacity-[0.64]",
|
|
1239
|
+
children: [
|
|
1240
|
+
/* @__PURE__ */ r("span", { className: "min-w-0 flex-1", children: t }),
|
|
1241
|
+
/* @__PURE__ */ r(
|
|
1242
|
+
"svg",
|
|
1243
|
+
{
|
|
1244
|
+
viewBox: "0 0 24 24",
|
|
1245
|
+
fill: "none",
|
|
1246
|
+
stroke: "currentColor",
|
|
1247
|
+
strokeWidth: "2",
|
|
1248
|
+
"aria-hidden": !0,
|
|
1249
|
+
className: f("size-5 shrink-0 transition-transform", p && "rotate-180"),
|
|
1250
|
+
children: /* @__PURE__ */ r("path", { d: "m6 9 6 6 6-6", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
1251
|
+
}
|
|
1252
|
+
)
|
|
1253
|
+
]
|
|
1254
|
+
}
|
|
1255
|
+
),
|
|
1256
|
+
p && /* @__PURE__ */ r("div", { className: "pt-2 text-sm text-muted-foreground", children: d })
|
|
1257
|
+
] });
|
|
1258
|
+
}
|
|
1259
|
+
);
|
|
1260
|
+
et.displayName = "Collapsible";
|
|
1261
|
+
function tt() {
|
|
1262
|
+
return /* @__PURE__ */ r("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": !0, className: "size-4 shrink-0 opacity-80", children: /* @__PURE__ */ r("path", { d: "m9 18 6-6-6-6", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
1263
|
+
}
|
|
1264
|
+
const rt = o.forwardRef(
|
|
1265
|
+
({ className: e, items: t, separator: n = "chevron", ...s }, a) => /* @__PURE__ */ r("nav", { ref: a, "aria-label": "breadcrumb", "data-node-id": "5665:4391", className: f("flex items-center", e), ...s, children: /* @__PURE__ */ r("ol", { className: "flex items-center gap-1 text-sm", children: t.map((l, d) => {
|
|
1266
|
+
const i = d === t.length - 1;
|
|
1267
|
+
return /* @__PURE__ */ b("li", { className: "flex items-center gap-1", children: [
|
|
1268
|
+
l.href && !i ? /* @__PURE__ */ r("a", { href: l.href, className: "text-muted-foreground transition-colors hover:text-foreground", children: l.label }) : /* @__PURE__ */ r("span", { className: i ? "text-foreground" : "text-muted-foreground", "aria-current": i ? "page" : void 0, children: l.label }),
|
|
1269
|
+
!i && (n === "slash" ? /* @__PURE__ */ r("span", { className: "text-muted-foreground/60", "aria-hidden": !0, children: "/" }) : /* @__PURE__ */ r("span", { className: "text-muted-foreground", "aria-hidden": !0, children: /* @__PURE__ */ r(tt, {}) }))
|
|
1270
|
+
] }, d);
|
|
1271
|
+
}) }) })
|
|
1272
|
+
);
|
|
1273
|
+
rt.displayName = "Breadcrumb";
|
|
1274
|
+
const nt = N(
|
|
1275
|
+
"relative flex w-full flex-wrap items-center gap-3 overflow-hidden rounded-radius-xl border px-3.5 py-3 text-sm",
|
|
1276
|
+
{
|
|
1277
|
+
variants: {
|
|
1278
|
+
type: {
|
|
1279
|
+
default: "border-border bg-card [&_[data-alert-icon]]:text-foreground",
|
|
1280
|
+
info: "border-info/[0.32] bg-info/[0.04] [&_[data-alert-icon]]:text-info",
|
|
1281
|
+
success: "border-success/[0.32] bg-success/[0.04] [&_[data-alert-icon]]:text-success",
|
|
1282
|
+
warning: "border-warning/[0.32] bg-warning/[0.04] [&_[data-alert-icon]]:text-warning",
|
|
1283
|
+
error: "border-destructive/[0.32] bg-destructive/[0.04] [&_[data-alert-icon]]:text-destructive"
|
|
1284
|
+
}
|
|
1285
|
+
},
|
|
1286
|
+
defaultVariants: { type: "default" }
|
|
1287
|
+
}
|
|
1288
|
+
);
|
|
1289
|
+
function Z({ type: e }) {
|
|
1290
|
+
return /* @__PURE__ */ b("svg", { ...{ viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, "aria-hidden": !0, className: "size-full" }, strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1291
|
+
e === "success" && /* @__PURE__ */ b(_, { children: [
|
|
1292
|
+
/* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "9" }),
|
|
1293
|
+
/* @__PURE__ */ r("path", { d: "m8.5 12 2.5 2.5 4.5-5" })
|
|
1294
|
+
] }),
|
|
1295
|
+
e === "warning" && /* @__PURE__ */ b(_, { children: [
|
|
1296
|
+
/* @__PURE__ */ r("path", { d: "M12 3 2 20h20L12 3Z" }),
|
|
1297
|
+
/* @__PURE__ */ r("path", { d: "M12 9v5M12 17.5v.5" })
|
|
1298
|
+
] }),
|
|
1299
|
+
e === "error" && /* @__PURE__ */ b(_, { children: [
|
|
1300
|
+
/* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "9" }),
|
|
1301
|
+
/* @__PURE__ */ r("path", { d: "m9 9 6 6M15 9l-6 6" })
|
|
1302
|
+
] }),
|
|
1303
|
+
(e === "info" || e === "default") && /* @__PURE__ */ b(_, { children: [
|
|
1304
|
+
/* @__PURE__ */ r("circle", { cx: "12", cy: "12", r: "9" }),
|
|
1305
|
+
/* @__PURE__ */ r("path", { d: "M12 11v5M12 8v.5" })
|
|
1306
|
+
] })
|
|
1307
|
+
] });
|
|
1308
|
+
}
|
|
1309
|
+
const st = o.forwardRef(
|
|
1310
|
+
({ className: e, type: t = "default", title: n, icon: s, action: a, children: l, ...d }, i) => /* @__PURE__ */ b("div", { ref: i, role: "alert", "data-node-id": "5655:4958", className: f(nt({ type: t }), e), ...d, children: [
|
|
1311
|
+
/* @__PURE__ */ b("div", { className: "flex min-w-[240px] flex-1 items-start gap-2", children: [
|
|
1312
|
+
s !== !1 && /* @__PURE__ */ r("span", { "data-alert-icon": !0, className: "inline-flex size-5 shrink-0 [&_svg]:size-5", children: s ?? /* @__PURE__ */ r(Z, { type: t ?? "default" }) }),
|
|
1313
|
+
/* @__PURE__ */ b("div", { className: "flex min-w-0 flex-1 flex-col gap-1 leading-5", children: [
|
|
1314
|
+
n != null && /* @__PURE__ */ r("p", { className: "font-medium text-foreground", children: n }),
|
|
1315
|
+
l != null && /* @__PURE__ */ r("p", { className: "text-muted-foreground", children: l })
|
|
1316
|
+
] })
|
|
1317
|
+
] }),
|
|
1318
|
+
a && /* @__PURE__ */ r("div", { className: "flex shrink-0 items-start gap-2", children: a })
|
|
1319
|
+
] })
|
|
1320
|
+
);
|
|
1321
|
+
st.displayName = "Alert";
|
|
1322
|
+
const at = N("inline-flex size-5 shrink-0 [&_svg]:size-5", {
|
|
1323
|
+
variants: {
|
|
1324
|
+
type: {
|
|
1325
|
+
default: "text-foreground",
|
|
1326
|
+
loading: "text-muted-foreground",
|
|
1327
|
+
info: "text-info",
|
|
1328
|
+
success: "text-success",
|
|
1329
|
+
warning: "text-warning",
|
|
1330
|
+
error: "text-destructive"
|
|
1331
|
+
}
|
|
1332
|
+
},
|
|
1333
|
+
defaultVariants: { type: "default" }
|
|
1334
|
+
}), ot = o.forwardRef(
|
|
1335
|
+
({ className: e, type: t = "default", title: n, icon: s, action: a, children: l, ...d }, i) => {
|
|
1336
|
+
const u = s ?? (t === "loading" ? /* @__PURE__ */ r(H, { size: "sm" }) : /* @__PURE__ */ r(Z, { type: t === "info" || t === "success" || t === "warning" || t === "error" ? t : "default" }));
|
|
1337
|
+
return /* @__PURE__ */ b(
|
|
1338
|
+
"div",
|
|
1339
|
+
{
|
|
1340
|
+
ref: i,
|
|
1341
|
+
role: "status",
|
|
1342
|
+
"data-node-id": "7728:238",
|
|
1343
|
+
className: f(
|
|
1344
|
+
"flex w-full flex-wrap items-center gap-3 rounded-radius-xl border border-border bg-popover px-3.5 py-3 text-sm shadow-overlay",
|
|
1345
|
+
e
|
|
1346
|
+
),
|
|
1347
|
+
...d,
|
|
1348
|
+
children: [
|
|
1349
|
+
/* @__PURE__ */ b("div", { className: "flex min-w-[240px] flex-1 items-start gap-2", children: [
|
|
1350
|
+
s !== !1 && /* @__PURE__ */ r("span", { className: at({ type: t }), children: u }),
|
|
1351
|
+
/* @__PURE__ */ b("div", { className: "flex min-w-0 flex-1 flex-col gap-1 leading-5", children: [
|
|
1352
|
+
n != null && /* @__PURE__ */ r("p", { className: "font-medium text-foreground", children: n }),
|
|
1353
|
+
l != null && /* @__PURE__ */ r("p", { className: "text-muted-foreground", children: l })
|
|
1354
|
+
] })
|
|
1355
|
+
] }),
|
|
1356
|
+
a && /* @__PURE__ */ r("div", { className: "flex shrink-0 items-start gap-2", children: a })
|
|
1357
|
+
]
|
|
1358
|
+
}
|
|
1359
|
+
);
|
|
1360
|
+
}
|
|
1361
|
+
);
|
|
1362
|
+
ot.displayName = "Toast";
|
|
1363
|
+
const it = {
|
|
1364
|
+
top: "bottom-full left-1/2 mb-1.5 -translate-x-1/2",
|
|
1365
|
+
bottom: "top-full left-1/2 mt-1.5 -translate-x-1/2",
|
|
1366
|
+
left: "right-full top-1/2 mr-1.5 -translate-y-1/2",
|
|
1367
|
+
right: "left-full top-1/2 ml-1.5 -translate-y-1/2"
|
|
1368
|
+
}, lt = o.forwardRef(
|
|
1369
|
+
({ className: e, content: t, side: n = "top", children: s, ...a }, l) => /* @__PURE__ */ b("span", { ref: l, className: f("group relative inline-flex", e), ...a, children: [
|
|
1370
|
+
s,
|
|
1371
|
+
/* @__PURE__ */ r(
|
|
1372
|
+
"span",
|
|
1373
|
+
{
|
|
1374
|
+
role: "tooltip",
|
|
1375
|
+
className: f(
|
|
1376
|
+
"pointer-events-none absolute z-50 w-max max-w-xs whitespace-nowrap rounded-radius-lg border border-border bg-popover px-2 py-1 text-xs text-popover-foreground opacity-0 shadow-overlay transition-opacity duration-150",
|
|
1377
|
+
"group-hover:opacity-100 group-focus-within:opacity-100",
|
|
1378
|
+
it[n]
|
|
1379
|
+
),
|
|
1380
|
+
children: t
|
|
1381
|
+
}
|
|
1382
|
+
)
|
|
1383
|
+
] })
|
|
1384
|
+
);
|
|
1385
|
+
lt.displayName = "Tooltip";
|
|
1386
|
+
const dt = o.forwardRef(
|
|
1387
|
+
({ className: e, bordered: t = !0, children: n, ...s }, a) => /* @__PURE__ */ r(
|
|
1388
|
+
"div",
|
|
1389
|
+
{
|
|
1390
|
+
ref: a,
|
|
1391
|
+
"data-node-id": "7669:1745",
|
|
1392
|
+
className: f(
|
|
1393
|
+
"max-h-[204px] overflow-auto",
|
|
1394
|
+
// 얇은 커스텀 스크롤바
|
|
1395
|
+
"[scrollbar-width:thin] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar]:h-1.5",
|
|
1396
|
+
"[&::-webkit-scrollbar-track]:bg-transparent",
|
|
1397
|
+
"[&::-webkit-scrollbar-thumb]:rounded-radius-full [&::-webkit-scrollbar-thumb]:bg-foreground/20 hover:[&::-webkit-scrollbar-thumb]:bg-foreground/30",
|
|
1398
|
+
t && "rounded-radius border border-border px-4 py-2",
|
|
1399
|
+
e
|
|
1400
|
+
),
|
|
1401
|
+
...s,
|
|
1402
|
+
children: n
|
|
1403
|
+
}
|
|
1404
|
+
)
|
|
1405
|
+
);
|
|
1406
|
+
dt.displayName = "ScrollArea";
|
|
1407
|
+
function J({ children: e }) {
|
|
1408
|
+
const [t] = o.useState(
|
|
1409
|
+
() => typeof document < "u" ? document.body : null
|
|
1410
|
+
);
|
|
1411
|
+
return t ? de(e, t) : null;
|
|
1412
|
+
}
|
|
1413
|
+
function Q(e, t) {
|
|
1414
|
+
o.useEffect(() => {
|
|
1415
|
+
if (!e) return;
|
|
1416
|
+
const n = (a) => {
|
|
1417
|
+
a.key === "Escape" && t();
|
|
1418
|
+
};
|
|
1419
|
+
document.addEventListener("keydown", n);
|
|
1420
|
+
const s = document.body.style.overflow;
|
|
1421
|
+
return document.body.style.overflow = "hidden", () => {
|
|
1422
|
+
document.removeEventListener("keydown", n), document.body.style.overflow = s;
|
|
1423
|
+
};
|
|
1424
|
+
}, [e, t]);
|
|
1425
|
+
}
|
|
1426
|
+
const X = "fixed inset-0 z-50 bg-[rgb(16_16_18_/_0.32)] backdrop-blur-sm";
|
|
1427
|
+
function V(e, t, n) {
|
|
1428
|
+
const s = e !== void 0, [a, l] = o.useState(t), d = s ? e : a, i = o.useCallback(
|
|
1429
|
+
(c) => {
|
|
1430
|
+
s || l(c), n == null || n(c);
|
|
1431
|
+
},
|
|
1432
|
+
[s, n]
|
|
1433
|
+
);
|
|
1434
|
+
return [d, i];
|
|
1435
|
+
}
|
|
1436
|
+
const ct = 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
1437
|
+
function Y(e, t) {
|
|
1438
|
+
o.useEffect(() => {
|
|
1439
|
+
if (!e) return;
|
|
1440
|
+
const n = t.current;
|
|
1441
|
+
if (!n) return;
|
|
1442
|
+
const s = document.activeElement, a = () => Array.from(n.querySelectorAll(ct)).filter(
|
|
1443
|
+
(i) => i.offsetParent !== null
|
|
1444
|
+
), l = setTimeout(() => {
|
|
1445
|
+
const i = t.current;
|
|
1446
|
+
i && !i.contains(document.activeElement) && i.focus();
|
|
1447
|
+
}, 0), d = (i) => {
|
|
1448
|
+
if (i.key !== "Tab") return;
|
|
1449
|
+
const c = a();
|
|
1450
|
+
if (c.length === 0) {
|
|
1451
|
+
i.preventDefault(), n.focus();
|
|
1452
|
+
return;
|
|
1453
|
+
}
|
|
1454
|
+
const u = c[0], x = c[c.length - 1], m = document.activeElement;
|
|
1455
|
+
i.shiftKey && (m === u || m === n) ? (i.preventDefault(), x.focus()) : !i.shiftKey && m === x && (i.preventDefault(), u.focus());
|
|
1456
|
+
};
|
|
1457
|
+
return n.addEventListener("keydown", d), () => {
|
|
1458
|
+
clearTimeout(l), n.removeEventListener("keydown", d), s != null && s.isConnected && s.focus();
|
|
1459
|
+
};
|
|
1460
|
+
}, [e, t]);
|
|
1461
|
+
}
|
|
1462
|
+
function ee() {
|
|
1463
|
+
const e = o.useId(), t = o.useId(), [n, s] = o.useState(!1), [a, l] = o.useState(!1);
|
|
1464
|
+
return {
|
|
1465
|
+
titleId: e,
|
|
1466
|
+
descId: t,
|
|
1467
|
+
setHasTitle: s,
|
|
1468
|
+
setHasDesc: l,
|
|
1469
|
+
labelProps: {
|
|
1470
|
+
"aria-labelledby": n ? e : void 0,
|
|
1471
|
+
"aria-describedby": a ? t : void 0
|
|
1472
|
+
}
|
|
1473
|
+
};
|
|
1474
|
+
}
|
|
1475
|
+
function E(e) {
|
|
1476
|
+
o.useEffect(() => (e(!0), () => e(!1)), [e]);
|
|
1477
|
+
}
|
|
1478
|
+
const te = o.createContext(null), I = () => {
|
|
1479
|
+
const e = o.useContext(te);
|
|
1480
|
+
if (!e) throw new Error("Dialog parts must be used within <Dialog>");
|
|
1481
|
+
return e;
|
|
1482
|
+
};
|
|
1483
|
+
function ut({ open: e, defaultOpen: t = !1, onOpenChange: n, role: s = "dialog", dismissable: a = !0, children: l }) {
|
|
1484
|
+
const [d, i] = V(e, t, n), c = ee();
|
|
1485
|
+
return /* @__PURE__ */ r(te.Provider, { value: { open: d, setOpen: i, role: s, dismissable: a, ...c }, children: l });
|
|
1486
|
+
}
|
|
1487
|
+
const ft = o.forwardRef(
|
|
1488
|
+
({ onClick: e, ...t }, n) => {
|
|
1489
|
+
const { setOpen: s } = I();
|
|
1490
|
+
return /* @__PURE__ */ r("button", { ref: n, type: "button", onClick: (a) => {
|
|
1491
|
+
s(!0), e == null || e(a);
|
|
1492
|
+
}, ...t });
|
|
1493
|
+
}
|
|
1494
|
+
);
|
|
1495
|
+
ft.displayName = "DialogTrigger";
|
|
1496
|
+
const mt = o.forwardRef(
|
|
1497
|
+
({ onClick: e, ...t }, n) => {
|
|
1498
|
+
const { setOpen: s } = I();
|
|
1499
|
+
return /* @__PURE__ */ r("button", { ref: n, type: "button", onClick: (a) => {
|
|
1500
|
+
s(!1), e == null || e(a);
|
|
1501
|
+
}, ...t });
|
|
1502
|
+
}
|
|
1503
|
+
);
|
|
1504
|
+
mt.displayName = "DialogClose";
|
|
1505
|
+
const re = o.forwardRef(
|
|
1506
|
+
({ className: e, showClose: t = !0, children: n, ...s }, a) => {
|
|
1507
|
+
const { open: l, setOpen: d, role: i, dismissable: c, labelProps: u } = I(), x = o.useRef(null), m = o.useCallback(
|
|
1508
|
+
(p) => {
|
|
1509
|
+
x.current = p, typeof a == "function" ? a(p) : a && (a.current = p);
|
|
1510
|
+
},
|
|
1511
|
+
[a]
|
|
1512
|
+
);
|
|
1513
|
+
return Q(l, () => c && d(!1)), Y(l, x), l ? /* @__PURE__ */ r(J, { children: /* @__PURE__ */ r(
|
|
1514
|
+
"div",
|
|
1515
|
+
{
|
|
1516
|
+
className: f(X, "flex items-center justify-center p-4"),
|
|
1517
|
+
onClick: () => c && d(!1),
|
|
1518
|
+
children: /* @__PURE__ */ b(
|
|
1519
|
+
"div",
|
|
1520
|
+
{
|
|
1521
|
+
ref: m,
|
|
1522
|
+
role: i,
|
|
1523
|
+
"aria-modal": !0,
|
|
1524
|
+
tabIndex: -1,
|
|
1525
|
+
...u,
|
|
1526
|
+
onClick: (p) => p.stopPropagation(),
|
|
1527
|
+
className: f(
|
|
1528
|
+
"relative flex w-full max-w-[448px] flex-col overflow-hidden rounded-radius-2xl border border-border bg-popover outline-none",
|
|
1529
|
+
// Figma: 기본 Dialog 패널은 그림자 없음(border 만). AlertDialog 만 popover 그림자.
|
|
1530
|
+
i === "alertdialog" && "shadow-overlay",
|
|
1531
|
+
e
|
|
1532
|
+
),
|
|
1533
|
+
...s,
|
|
1534
|
+
children: [
|
|
1535
|
+
t && /* @__PURE__ */ r(
|
|
1536
|
+
"button",
|
|
1537
|
+
{
|
|
1538
|
+
type: "button",
|
|
1539
|
+
"aria-label": "닫기",
|
|
1540
|
+
onClick: () => d(!1),
|
|
1541
|
+
className: "absolute right-4 top-4 inline-flex size-6 items-center justify-center rounded-radius text-muted-foreground transition-colors hover:bg-secondary hover:text-foreground",
|
|
1542
|
+
children: /* @__PURE__ */ r("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-4", "aria-hidden": !0, children: /* @__PURE__ */ r("path", { d: "M18 6 6 18M6 6l12 12", strokeLinecap: "round" }) })
|
|
1543
|
+
}
|
|
1544
|
+
),
|
|
1545
|
+
n
|
|
1546
|
+
]
|
|
1547
|
+
}
|
|
1548
|
+
)
|
|
1549
|
+
}
|
|
1550
|
+
) }) : null;
|
|
1551
|
+
}
|
|
1552
|
+
);
|
|
1553
|
+
re.displayName = "DialogContent";
|
|
1554
|
+
const pt = ({ className: e, ...t }) => /* @__PURE__ */ r("div", { className: f("flex flex-col gap-1 p-6", e), ...t }), xt = ({ className: e, id: t, ...n }) => {
|
|
1555
|
+
const { titleId: s, setHasTitle: a } = I();
|
|
1556
|
+
return E(a), /* @__PURE__ */ r(
|
|
1557
|
+
"h2",
|
|
1558
|
+
{
|
|
1559
|
+
id: t ?? s,
|
|
1560
|
+
className: f("text-xl font-semibold leading-7 tracking-[-0.2px] text-foreground", e),
|
|
1561
|
+
...n
|
|
1562
|
+
}
|
|
1563
|
+
);
|
|
1564
|
+
}, bt = ({ className: e, id: t, ...n }) => {
|
|
1565
|
+
const { descId: s, setHasDesc: a } = I();
|
|
1566
|
+
return E(a), /* @__PURE__ */ r("p", { id: t ?? s, className: f("text-sm leading-5 text-muted-foreground", e), ...n });
|
|
1567
|
+
}, gt = ({ className: e, ...t }) => /* @__PURE__ */ r(
|
|
1568
|
+
"div",
|
|
1569
|
+
{
|
|
1570
|
+
className: f("flex items-center justify-end gap-2 border-t border-border bg-secondary/[0.72] px-6 py-4", e),
|
|
1571
|
+
...t
|
|
1572
|
+
}
|
|
1573
|
+
);
|
|
1574
|
+
function It({
|
|
1575
|
+
open: e,
|
|
1576
|
+
defaultOpen: t = !1,
|
|
1577
|
+
onOpenChange: n,
|
|
1578
|
+
title: s,
|
|
1579
|
+
description: a,
|
|
1580
|
+
cancelText: l = "취소",
|
|
1581
|
+
actionText: d = "확인",
|
|
1582
|
+
onAction: i,
|
|
1583
|
+
onCancel: c,
|
|
1584
|
+
destructive: u,
|
|
1585
|
+
children: x
|
|
1586
|
+
}) {
|
|
1587
|
+
const [m, p] = V(e, t, n);
|
|
1588
|
+
return /* @__PURE__ */ r(ut, { open: m, onOpenChange: p, role: "alertdialog", dismissable: !1, children: /* @__PURE__ */ b(re, { showClose: !1, children: [
|
|
1589
|
+
/* @__PURE__ */ b(pt, { children: [
|
|
1590
|
+
/* @__PURE__ */ r(xt, { children: s }),
|
|
1591
|
+
a != null && /* @__PURE__ */ r(bt, { children: a }),
|
|
1592
|
+
x
|
|
1593
|
+
] }),
|
|
1594
|
+
/* @__PURE__ */ b(gt, { children: [
|
|
1595
|
+
/* @__PURE__ */ r(C, { variant: "secondary", onClick: () => {
|
|
1596
|
+
c == null || c(), p(!1);
|
|
1597
|
+
}, children: l }),
|
|
1598
|
+
/* @__PURE__ */ r(
|
|
1599
|
+
C,
|
|
1600
|
+
{
|
|
1601
|
+
variant: u ? "destructive" : "default",
|
|
1602
|
+
onClick: () => {
|
|
1603
|
+
i == null || i(), p(!1);
|
|
1604
|
+
},
|
|
1605
|
+
children: d
|
|
1606
|
+
}
|
|
1607
|
+
)
|
|
1608
|
+
] })
|
|
1609
|
+
] }) });
|
|
1610
|
+
}
|
|
1611
|
+
const ne = o.createContext(null), D = () => {
|
|
1612
|
+
const e = o.useContext(ne);
|
|
1613
|
+
if (!e) throw new Error("Sheet parts must be used within <Sheet>");
|
|
1614
|
+
return e;
|
|
1615
|
+
};
|
|
1616
|
+
function vt({ open: e, defaultOpen: t = !1, onOpenChange: n, children: s }) {
|
|
1617
|
+
const [a, l] = V(e, t, n), d = ee();
|
|
1618
|
+
return /* @__PURE__ */ r(ne.Provider, { value: { open: a, setOpen: l, ...d }, children: s });
|
|
1619
|
+
}
|
|
1620
|
+
const ht = o.forwardRef(
|
|
1621
|
+
({ onClick: e, ...t }, n) => {
|
|
1622
|
+
const { setOpen: s } = D();
|
|
1623
|
+
return /* @__PURE__ */ r("button", { ref: n, type: "button", onClick: (a) => {
|
|
1624
|
+
s(!0), e == null || e(a);
|
|
1625
|
+
}, ...t });
|
|
1626
|
+
}
|
|
1627
|
+
);
|
|
1628
|
+
ht.displayName = "SheetTrigger";
|
|
1629
|
+
const wt = o.forwardRef(
|
|
1630
|
+
({ onClick: e, ...t }, n) => {
|
|
1631
|
+
const { setOpen: s } = D();
|
|
1632
|
+
return /* @__PURE__ */ r("button", { ref: n, type: "button", onClick: (a) => {
|
|
1633
|
+
s(!1), e == null || e(a);
|
|
1634
|
+
}, ...t });
|
|
1635
|
+
}
|
|
1636
|
+
);
|
|
1637
|
+
wt.displayName = "SheetClose";
|
|
1638
|
+
const yt = {
|
|
1639
|
+
right: "inset-y-0 right-0 h-full w-full max-w-sm border-l rounded-l-radius-2xl",
|
|
1640
|
+
left: "inset-y-0 left-0 h-full w-full max-w-sm border-r rounded-r-radius-2xl",
|
|
1641
|
+
top: "inset-x-0 top-0 w-full border-b rounded-b-radius-2xl",
|
|
1642
|
+
bottom: "inset-x-0 bottom-0 w-full border-t rounded-t-radius-2xl"
|
|
1643
|
+
}, Nt = {
|
|
1644
|
+
right: "inset-y-4 right-4 w-full max-w-sm",
|
|
1645
|
+
left: "inset-y-4 left-4 w-full max-w-sm",
|
|
1646
|
+
top: "inset-x-4 top-4",
|
|
1647
|
+
bottom: "inset-x-4 bottom-4"
|
|
1648
|
+
}, se = o.forwardRef(
|
|
1649
|
+
({ className: e, side: t = "right", inset: n = !1, showClose: s = !0, children: a, ...l }, d) => {
|
|
1650
|
+
const { open: i, setOpen: c, labelProps: u } = D(), x = o.useRef(null), m = o.useCallback(
|
|
1651
|
+
(p) => {
|
|
1652
|
+
x.current = p, typeof d == "function" ? d(p) : d && (d.current = p);
|
|
1653
|
+
},
|
|
1654
|
+
[d]
|
|
1655
|
+
);
|
|
1656
|
+
return Q(i, () => c(!1)), Y(i, x), i ? /* @__PURE__ */ r(J, { children: /* @__PURE__ */ r("div", { className: X, onClick: () => c(!1), children: /* @__PURE__ */ b(
|
|
1657
|
+
"div",
|
|
1658
|
+
{
|
|
1659
|
+
ref: m,
|
|
1660
|
+
role: "dialog",
|
|
1661
|
+
"aria-modal": !0,
|
|
1662
|
+
tabIndex: -1,
|
|
1663
|
+
...u,
|
|
1664
|
+
onClick: (p) => p.stopPropagation(),
|
|
1665
|
+
className: f(
|
|
1666
|
+
"fixed flex flex-col overflow-auto border-border bg-popover shadow-overlay outline-none",
|
|
1667
|
+
n ? f(Nt[t], "rounded-radius-2xl border") : yt[t],
|
|
1668
|
+
e
|
|
1669
|
+
),
|
|
1670
|
+
...l,
|
|
1671
|
+
children: [
|
|
1672
|
+
s && /* @__PURE__ */ r(
|
|
1673
|
+
"button",
|
|
1674
|
+
{
|
|
1675
|
+
type: "button",
|
|
1676
|
+
"aria-label": "닫기",
|
|
1677
|
+
onClick: () => c(!1),
|
|
1678
|
+
className: "absolute right-4 top-4 inline-flex size-6 items-center justify-center rounded-radius text-muted-foreground transition-colors hover:bg-secondary hover:text-foreground",
|
|
1679
|
+
children: /* @__PURE__ */ r("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-4", "aria-hidden": !0, children: /* @__PURE__ */ r("path", { d: "M18 6 6 18M6 6l12 12", strokeLinecap: "round" }) })
|
|
1680
|
+
}
|
|
1681
|
+
),
|
|
1682
|
+
a
|
|
1683
|
+
]
|
|
1684
|
+
}
|
|
1685
|
+
) }) }) : null;
|
|
1686
|
+
}
|
|
1687
|
+
);
|
|
1688
|
+
se.displayName = "SheetContent";
|
|
1689
|
+
const Dt = ({ className: e, ...t }) => /* @__PURE__ */ r("div", { className: f("flex flex-col gap-1 p-6", e), ...t }), Lt = ({ className: e, id: t, ...n }) => {
|
|
1690
|
+
const { titleId: s, setHasTitle: a } = D();
|
|
1691
|
+
return E(a), /* @__PURE__ */ r(
|
|
1692
|
+
"h2",
|
|
1693
|
+
{
|
|
1694
|
+
id: t ?? s,
|
|
1695
|
+
className: f("text-xl font-semibold leading-7 tracking-[-0.2px] text-foreground", e),
|
|
1696
|
+
...n
|
|
1697
|
+
}
|
|
1698
|
+
);
|
|
1699
|
+
}, _t = ({ className: e, id: t, ...n }) => {
|
|
1700
|
+
const { descId: s, setHasDesc: a } = D();
|
|
1701
|
+
return E(a), /* @__PURE__ */ r("p", { id: t ?? s, className: f("text-sm leading-5 text-muted-foreground", e), ...n });
|
|
1702
|
+
}, Et = ({ className: e, ...t }) => /* @__PURE__ */ r("div", { className: f("mt-auto flex items-center justify-end gap-2 border-t border-border px-6 py-4", e), ...t });
|
|
1703
|
+
function jt({ open: e, defaultOpen: t, onOpenChange: n, side: s = "bottom", inset: a = !0, children: l, ...d }) {
|
|
1704
|
+
return /* @__PURE__ */ r(vt, { open: e, defaultOpen: t, onOpenChange: n, children: /* @__PURE__ */ r(se, { side: s, inset: a, ...d, children: l }) });
|
|
1705
|
+
}
|
|
646
1706
|
export {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
1707
|
+
Xe as Accordion,
|
|
1708
|
+
Ye as AccordionItem,
|
|
1709
|
+
st as Alert,
|
|
1710
|
+
It as AlertDialog,
|
|
1711
|
+
K as Avatar,
|
|
1712
|
+
Ve as AvatarGroup,
|
|
1713
|
+
Pe as Badge,
|
|
1714
|
+
rt as Breadcrumb,
|
|
1715
|
+
C as Button,
|
|
1716
|
+
ue as Checkbox,
|
|
1717
|
+
et as Collapsible,
|
|
1718
|
+
ut as Dialog,
|
|
1719
|
+
mt as DialogClose,
|
|
1720
|
+
re as DialogContent,
|
|
1721
|
+
bt as DialogDescription,
|
|
1722
|
+
gt as DialogFooter,
|
|
1723
|
+
pt as DialogHeader,
|
|
1724
|
+
xt as DialogTitle,
|
|
1725
|
+
ft as DialogTrigger,
|
|
1726
|
+
jt as Drawer,
|
|
1727
|
+
_t as DrawerDescription,
|
|
1728
|
+
Et as DrawerFooter,
|
|
1729
|
+
Dt as DrawerHeader,
|
|
1730
|
+
Lt as DrawerTitle,
|
|
1731
|
+
xe as Field,
|
|
1732
|
+
me as Input,
|
|
1733
|
+
be as InputOTP,
|
|
1734
|
+
he as InputOTPSeparator,
|
|
1735
|
+
ve as InputOTPSlot,
|
|
1736
|
+
pe as Label,
|
|
1737
|
+
we as Meter,
|
|
1738
|
+
Ge as NumberField,
|
|
1739
|
+
Fe as RadioGroup,
|
|
1740
|
+
He as RadioGroupItem,
|
|
1741
|
+
dt as ScrollArea,
|
|
1742
|
+
$e as SegmentedControl,
|
|
1743
|
+
Te as Select,
|
|
1744
|
+
_e as Separator,
|
|
1745
|
+
vt as Sheet,
|
|
1746
|
+
wt as SheetClose,
|
|
1747
|
+
se as SheetContent,
|
|
1748
|
+
_t as SheetDescription,
|
|
1749
|
+
Et as SheetFooter,
|
|
1750
|
+
Dt as SheetHeader,
|
|
1751
|
+
Lt as SheetTitle,
|
|
1752
|
+
ht as SheetTrigger,
|
|
1753
|
+
Ee as Skeleton,
|
|
1754
|
+
H as Spinner,
|
|
1755
|
+
Le as Switch,
|
|
1756
|
+
Ue as Tabs,
|
|
1757
|
+
Qe as TabsContent,
|
|
1758
|
+
Ze as TabsList,
|
|
1759
|
+
Je as TabsTrigger,
|
|
1760
|
+
Ce as Textarea,
|
|
1761
|
+
ot as Toast,
|
|
1762
|
+
ye as Toggle,
|
|
1763
|
+
Ne as ToggleGroup,
|
|
1764
|
+
ke as ToggleGroupItem,
|
|
1765
|
+
lt as Tooltip,
|
|
1766
|
+
nt as alertVariants,
|
|
1767
|
+
Me as avatarVariants,
|
|
1768
|
+
Oe as badgeVariants,
|
|
1769
|
+
ce as buttonVariants,
|
|
1770
|
+
fe as inputVariants,
|
|
1771
|
+
Be as numberFieldVariants,
|
|
1772
|
+
qe as segmentVariants,
|
|
1773
|
+
ze as selectTriggerVariants,
|
|
1774
|
+
ge as slotVariants,
|
|
1775
|
+
je as spinnerVariants,
|
|
1776
|
+
Ie as switchVariants,
|
|
1777
|
+
Ae as textareaVariants,
|
|
1778
|
+
W as toggleVariants
|
|
665
1779
|
};
|