@bigtablet/design-system 2.5.0 → 3.1.0

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/index.js CHANGED
@@ -1,17 +1,951 @@
1
1
  "use client";
2
2
  import './index.css';
3
- import * as React4 from 'react';
4
- import { createContext, useContext, useState, useCallback } from 'react';
3
+ import * as React17 from 'react';
4
+ import { createContext, useRef, useState, useLayoutEffect, useId, useEffect, useContext, useCallback, useMemo, Fragment } from 'react';
5
+ import { useSpring, animated } from '@react-spring/web';
6
+ import { ChevronDown, Globe, ChevronRight, ChevronLeft, Check, Image, X, XCircle, AlertTriangle, CheckCircle2, Info, Bell } from 'lucide-react';
7
+ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
5
8
  import { createPortal } from 'react-dom';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
7
- import { ChevronDown, Check, X, Bell, Info, AlertTriangle, XCircle, CheckCircle2 } from 'lucide-react';
9
+
10
+ // src/utils/cn.ts
11
+ var cn = (...classes) => {
12
+ const classNames = [];
13
+ for (const item of classes) {
14
+ if (!item) continue;
15
+ if (typeof item === "string" || typeof item === "number") {
16
+ classNames.push(String(item));
17
+ } else if (Array.isArray(item)) {
18
+ const nested = cn(...item);
19
+ if (nested) {
20
+ classNames.push(nested);
21
+ }
22
+ } else if (typeof item === "object") {
23
+ for (const key in item) {
24
+ if (Object.hasOwn(item, key) && item[key]) {
25
+ classNames.push(key);
26
+ }
27
+ }
28
+ }
29
+ }
30
+ return classNames.join(" ");
31
+ };
32
+ var FOCUSABLE_SELECTORS = [
33
+ "a[href]",
34
+ "button:not([disabled])",
35
+ "input:not([disabled])",
36
+ "select:not([disabled])",
37
+ "textarea:not([disabled])",
38
+ '[tabindex]:not([tabindex="-1"])'
39
+ ].join(", ");
40
+ function useFocusTrap(containerRef, isActive) {
41
+ const previousActiveElement = React17.useRef(null);
42
+ React17.useEffect(() => {
43
+ if (!isActive) return;
44
+ const container = containerRef.current;
45
+ if (!container) return;
46
+ previousActiveElement.current = document.activeElement;
47
+ const getFocusableElements = () => {
48
+ return container.querySelectorAll(FOCUSABLE_SELECTORS);
49
+ };
50
+ let wasTabIndexAdded = false;
51
+ const focusableElements = getFocusableElements();
52
+ if (focusableElements.length > 0) {
53
+ focusableElements[0].focus();
54
+ } else {
55
+ container.setAttribute("tabindex", "-1");
56
+ wasTabIndexAdded = true;
57
+ container.focus();
58
+ }
59
+ const handleKeyDown = (e) => {
60
+ if (e.key !== "Tab") return;
61
+ const focusableElements2 = getFocusableElements();
62
+ if (focusableElements2.length === 0) {
63
+ e.preventDefault();
64
+ return;
65
+ }
66
+ const firstElement = focusableElements2[0];
67
+ const lastElement = focusableElements2[focusableElements2.length - 1];
68
+ if (e.shiftKey) {
69
+ if (document.activeElement === firstElement) {
70
+ e.preventDefault();
71
+ lastElement.focus();
72
+ }
73
+ } else {
74
+ if (document.activeElement === lastElement) {
75
+ e.preventDefault();
76
+ firstElement.focus();
77
+ }
78
+ }
79
+ };
80
+ document.addEventListener("keydown", handleKeyDown);
81
+ return () => {
82
+ document.removeEventListener("keydown", handleKeyDown);
83
+ if (wasTabIndexAdded) {
84
+ container.removeAttribute("tabindex");
85
+ }
86
+ previousActiveElement.current?.focus();
87
+ };
88
+ }, [isActive, containerRef]);
89
+ }
90
+ function useSpringHover({
91
+ scale = 1.02,
92
+ lift = -2
93
+ } = {}) {
94
+ const [hovered, setHovered] = React17.useState(false);
95
+ const style = useSpring({
96
+ transform: hovered ? `translateY(${lift}px) scale(${scale})` : "translateY(0px) scale(1)",
97
+ config: { tension: 320, friction: 22 }
98
+ });
99
+ const bind = {
100
+ onMouseEnter: () => setHovered(true),
101
+ onMouseLeave: () => setHovered(false),
102
+ onFocus: () => setHovered(true),
103
+ onBlur: () => setHovered(false)
104
+ };
105
+ return { style, bind };
106
+ }
107
+ function useSpringPresence({
108
+ visible,
109
+ from = "translateY(8px)",
110
+ onExitComplete
111
+ }) {
112
+ return useSpring({
113
+ from: { opacity: 0, transform: from },
114
+ to: {
115
+ opacity: visible ? 1 : 0,
116
+ transform: visible ? "translateY(0px)" : from
117
+ },
118
+ config: {
119
+ tension: 280,
120
+ // Vercel 식 부드러운 spring
121
+ friction: 28,
122
+ clamp: !visible
123
+ // 사라질 땐 진동 없이 빠르게
124
+ },
125
+ onRest: (result) => {
126
+ if (!visible && result.finished && onExitComplete) {
127
+ onExitComplete();
128
+ }
129
+ }
130
+ });
131
+ }
132
+ var Accordion = ({
133
+ items,
134
+ multiple = false,
135
+ defaultOpenKeys = [],
136
+ openKeys: controlledKeys,
137
+ onChange,
138
+ className,
139
+ ...props
140
+ }) => {
141
+ const isControlled = controlledKeys !== void 0;
142
+ const [internalKeys, setInternalKeys] = React17.useState(defaultOpenKeys);
143
+ const open = isControlled ? controlledKeys ?? [] : internalKeys;
144
+ const toggle = (key) => {
145
+ const isOpen = open.includes(key);
146
+ const next = isOpen ? open.filter((k) => k !== key) : multiple ? [...open, key] : [key];
147
+ if (!isControlled) setInternalKeys(next);
148
+ onChange?.(next);
149
+ };
150
+ return /* @__PURE__ */ jsx("div", { className: cn("accordion", className), ...props, children: items.map((item) => {
151
+ const isOpen = open.includes(item.key);
152
+ const headerId = `${item.key}-header`;
153
+ const panelId = `${item.key}-panel`;
154
+ return /* @__PURE__ */ jsxs("div", { className: cn("accordion_item", isOpen && "accordion_item_open"), children: [
155
+ /* @__PURE__ */ jsx("h3", { className: "accordion_header", children: /* @__PURE__ */ jsxs(
156
+ "button",
157
+ {
158
+ type: "button",
159
+ id: headerId,
160
+ className: "accordion_trigger",
161
+ "aria-expanded": isOpen,
162
+ "aria-controls": panelId,
163
+ disabled: item.disabled,
164
+ onClick: () => toggle(item.key),
165
+ children: [
166
+ /* @__PURE__ */ jsx("span", { className: "accordion_title", children: item.title }),
167
+ /* @__PURE__ */ jsx(
168
+ ChevronDown,
169
+ {
170
+ size: 20,
171
+ className: cn("accordion_chevron", isOpen && "accordion_chevron_open"),
172
+ "aria-hidden": "true"
173
+ }
174
+ )
175
+ ]
176
+ }
177
+ ) }),
178
+ /* @__PURE__ */ jsx(
179
+ "div",
180
+ {
181
+ id: panelId,
182
+ role: "region",
183
+ "aria-labelledby": headerId,
184
+ "aria-hidden": !isOpen,
185
+ className: cn("accordion_panel", isOpen && "accordion_panel_open"),
186
+ children: /* @__PURE__ */ jsx("div", { className: "accordion_panel_wrap", children: /* @__PURE__ */ jsx("div", { className: "accordion_content", children: item.content }) })
187
+ }
188
+ )
189
+ ] }, item.key);
190
+ }) });
191
+ };
192
+ function getInitials(name) {
193
+ const parts = name.trim().split(/\s+/);
194
+ if (parts.length === 0) return "";
195
+ if (parts.length === 1) return parts[0].charAt(0).toUpperCase();
196
+ return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();
197
+ }
198
+ var Avatar = ({
199
+ src,
200
+ name = "",
201
+ size = "md",
202
+ shape = "circle",
203
+ bgColor,
204
+ className,
205
+ style,
206
+ ...props
207
+ }) => {
208
+ const [imgFailed, setImgFailed] = React17.useState(false);
209
+ const showImage = src && !imgFailed;
210
+ const initials = getInitials(name);
211
+ return /* @__PURE__ */ jsx(
212
+ "span",
213
+ {
214
+ className: cn("avatar", `avatar_size_${size}`, `avatar_shape_${shape}`, className),
215
+ style: { background: !showImage ? bgColor : void 0, ...style },
216
+ role: showImage ? void 0 : "img",
217
+ "aria-label": showImage ? void 0 : name || void 0,
218
+ ...props,
219
+ children: showImage ? (
220
+ // biome-ignore lint/performance/noImgElement: DS is framework-agnostic — consumers wrap with next/image
221
+ /* @__PURE__ */ jsx(
222
+ "img",
223
+ {
224
+ src,
225
+ alt: name,
226
+ onError: () => setImgFailed(true),
227
+ className: "avatar_image"
228
+ }
229
+ )
230
+ ) : /* @__PURE__ */ jsx("span", { className: "avatar_initials", "aria-hidden": "true", children: initials })
231
+ }
232
+ );
233
+ };
234
+ var Badge = ({
235
+ variant = "accent",
236
+ shape = "label",
237
+ size = "md",
238
+ count,
239
+ max = 99,
240
+ className,
241
+ children,
242
+ ...props
243
+ }) => {
244
+ const content = (() => {
245
+ if (shape === "dot") return null;
246
+ if (shape === "count" && count !== void 0) {
247
+ return count > max ? `${max}+` : String(count);
248
+ }
249
+ return children;
250
+ })();
251
+ return /* @__PURE__ */ jsx(
252
+ "span",
253
+ {
254
+ className: cn(
255
+ "badge",
256
+ `badge_variant_${variant}`,
257
+ `badge_shape_${shape}`,
258
+ `badge_size_${size}`,
259
+ className
260
+ ),
261
+ ...props,
262
+ children: content
263
+ }
264
+ );
265
+ };
266
+ var BottomNav = ({
267
+ ariaLabel = "\uC8FC\uC694 \uBA54\uB274",
268
+ className,
269
+ children,
270
+ ...props
271
+ }) => {
272
+ return /* @__PURE__ */ jsx(
273
+ "nav",
274
+ {
275
+ className: cn("bottom_nav", className),
276
+ "aria-label": ariaLabel,
277
+ ...props,
278
+ children
279
+ }
280
+ );
281
+ };
282
+ var BottomNavItem = (props) => {
283
+ const {
284
+ icon,
285
+ label,
286
+ active,
287
+ badge,
288
+ as = "button",
289
+ className,
290
+ disabled,
291
+ ...rest
292
+ } = props;
293
+ const classes = cn(
294
+ "bottom_nav_item",
295
+ active && "bottom_nav_item_active",
296
+ disabled && "bottom_nav_item_disabled",
297
+ className
298
+ );
299
+ const ariaCurrent = active ? "page" : void 0;
300
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
301
+ /* @__PURE__ */ jsxs("span", { className: "bottom_nav_item_icon", "aria-hidden": "true", children: [
302
+ icon,
303
+ badge && /* @__PURE__ */ jsx("span", { className: "bottom_nav_item_badge", children: badge })
304
+ ] }),
305
+ /* @__PURE__ */ jsx("span", { className: "bottom_nav_item_label", children: label })
306
+ ] });
307
+ if (as === "a") {
308
+ const { href, onClick: onClick2, ...anchorRest } = rest;
309
+ return (
310
+ // biome-ignore lint/a11y/useValidAnchor: navigation link with optional active state
311
+ /* @__PURE__ */ jsx(
312
+ "a",
313
+ {
314
+ className: classes,
315
+ href,
316
+ "aria-current": ariaCurrent,
317
+ "aria-disabled": disabled ? "true" : void 0,
318
+ tabIndex: disabled ? -1 : void 0,
319
+ onClick: (e) => {
320
+ if (disabled) {
321
+ e.preventDefault();
322
+ return;
323
+ }
324
+ onClick2?.(e);
325
+ },
326
+ ...anchorRest,
327
+ children: content
328
+ }
329
+ )
330
+ );
331
+ }
332
+ const { type, onClick, ...buttonRest } = rest;
333
+ return /* @__PURE__ */ jsx(
334
+ "button",
335
+ {
336
+ type: type ?? "button",
337
+ className: classes,
338
+ disabled,
339
+ "aria-current": ariaCurrent,
340
+ onClick,
341
+ ...buttonRest,
342
+ children: content
343
+ }
344
+ );
345
+ };
346
+ var BottomNavSpacer = ({ className, ...props }) => {
347
+ return /* @__PURE__ */ jsx("div", { className: cn("bottom_nav_spacer", className), "aria-hidden": "true", ...props });
348
+ };
349
+ var Breadcrumb = ({
350
+ items,
351
+ separator,
352
+ className,
353
+ ...props
354
+ }) => {
355
+ const sep = separator ?? /* @__PURE__ */ jsx(ChevronRight, { size: 14, "aria-hidden": "true" });
356
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", className: cn("breadcrumb", className), ...props, children: /* @__PURE__ */ jsx("ol", { className: "breadcrumb_list", children: items.map((item, idx) => {
357
+ const isLast = idx === items.length - 1;
358
+ return (
359
+ // biome-ignore lint/suspicious/noArrayIndexKey: breadcrumb items have stable order
360
+ /* @__PURE__ */ jsxs("li", { className: "breadcrumb_item", children: [
361
+ isLast ? /* @__PURE__ */ jsx("span", { className: "breadcrumb_current", "aria-current": "page", children: item.label }) : item.href ? (
362
+ // biome-ignore lint/a11y/useValidAnchor: navigation link
363
+ /* @__PURE__ */ jsx("a", { className: "breadcrumb_link", href: item.href, onClick: item.onClick, children: item.label })
364
+ ) : /* @__PURE__ */ jsx(
365
+ "button",
366
+ {
367
+ type: "button",
368
+ className: "breadcrumb_link",
369
+ onClick: item.onClick,
370
+ children: item.label
371
+ }
372
+ ),
373
+ !isLast && /* @__PURE__ */ jsx("span", { className: "breadcrumb_separator", "aria-hidden": "true", children: sep })
374
+ ] }, idx)
375
+ );
376
+ }) }) });
377
+ };
378
+ var EmptyState = ({
379
+ illustration,
380
+ title,
381
+ description,
382
+ action,
383
+ size = "md",
384
+ className,
385
+ ...props
386
+ }) => {
387
+ return /* @__PURE__ */ jsxs("div", { className: cn("empty_state", `empty_state_size_${size}`, className), ...props, children: [
388
+ illustration && /* @__PURE__ */ jsx("div", { className: "empty_state_illustration", "aria-hidden": "true", children: illustration }),
389
+ title && /* @__PURE__ */ jsx("h3", { className: "empty_state_title", children: title }),
390
+ description && /* @__PURE__ */ jsx("p", { className: "empty_state_description", children: description }),
391
+ action && /* @__PURE__ */ jsx("div", { className: "empty_state_action", children: action })
392
+ ] });
393
+ };
394
+ var Menu = ({ items, trigger, align = "start" }) => {
395
+ const [open, setOpen] = React17.useState(false);
396
+ const wrapperRef = React17.useRef(null);
397
+ const menuId = React17.useId();
398
+ const style = useSpringPresence({ visible: open, from: "translateY(-4px)" });
399
+ React17.useEffect(() => {
400
+ if (!open) return;
401
+ const handleClick = (e) => {
402
+ if (!wrapperRef.current?.contains(e.target)) setOpen(false);
403
+ };
404
+ const handleEsc = (e) => {
405
+ if (e.key === "Escape") setOpen(false);
406
+ };
407
+ document.addEventListener("mousedown", handleClick);
408
+ document.addEventListener("keydown", handleEsc);
409
+ return () => {
410
+ document.removeEventListener("mousedown", handleClick);
411
+ document.removeEventListener("keydown", handleEsc);
412
+ };
413
+ }, [open]);
414
+ const triggerWithProps = React17.cloneElement(
415
+ trigger,
416
+ {
417
+ onClick: () => setOpen((o) => !o),
418
+ "aria-haspopup": "menu",
419
+ "aria-expanded": open,
420
+ "aria-controls": open ? menuId : void 0
421
+ }
422
+ );
423
+ return /* @__PURE__ */ jsxs("span", { className: "menu_wrapper", ref: wrapperRef, children: [
424
+ triggerWithProps,
425
+ open && /* @__PURE__ */ jsx(
426
+ animated.div,
427
+ {
428
+ id: menuId,
429
+ role: "menu",
430
+ style,
431
+ className: cn("menu", `menu_align_${align}`),
432
+ children: items.map((item) => /* @__PURE__ */ jsxs(
433
+ "button",
434
+ {
435
+ type: "button",
436
+ role: "menuitem",
437
+ disabled: item.disabled,
438
+ className: cn(
439
+ "menu_item",
440
+ item.destructive && "menu_item_destructive",
441
+ item.disabled && "menu_item_disabled"
442
+ ),
443
+ onClick: () => {
444
+ if (item.disabled) return;
445
+ item.onSelect?.();
446
+ setOpen(false);
447
+ },
448
+ children: [
449
+ item.icon && /* @__PURE__ */ jsx("span", { className: "menu_item_icon", "aria-hidden": "true", children: item.icon }),
450
+ /* @__PURE__ */ jsx("span", { className: "menu_item_label", children: item.label })
451
+ ]
452
+ },
453
+ item.key
454
+ ))
455
+ }
456
+ )
457
+ ] });
458
+ };
459
+ var NavBar = ({
460
+ brand,
461
+ searchSlot,
462
+ actions,
463
+ locale,
464
+ profile,
465
+ divider = true,
466
+ variant = "default",
467
+ layout = "contained",
468
+ sticky = false,
469
+ className,
470
+ children,
471
+ ...props
472
+ }) => {
473
+ const showDivider = divider && !!profile && (!!actions || !!locale || !!searchSlot);
474
+ const linksRef = useRef(null);
475
+ const [indicator, setIndicator] = useState(null);
476
+ const [hasMounted, setHasMounted] = useState(false);
477
+ useLayoutEffect(() => {
478
+ const links = linksRef.current;
479
+ if (!links) return;
480
+ const update = () => {
481
+ const active = links.querySelector(".nav_bar_link_active");
482
+ if (active) {
483
+ setIndicator({ left: active.offsetLeft, width: active.offsetWidth });
484
+ } else {
485
+ setIndicator(null);
486
+ }
487
+ };
488
+ update();
489
+ const mountTimer = setTimeout(() => setHasMounted(true), 50);
490
+ const mo = new MutationObserver(update);
491
+ mo.observe(links, {
492
+ subtree: true,
493
+ attributes: true,
494
+ attributeFilter: ["class", "aria-current"]
495
+ });
496
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
497
+ ro?.observe(links);
498
+ const handleResize = () => update();
499
+ window.addEventListener("resize", handleResize);
500
+ return () => {
501
+ clearTimeout(mountTimer);
502
+ mo.disconnect();
503
+ ro?.disconnect();
504
+ window.removeEventListener("resize", handleResize);
505
+ };
506
+ }, []);
507
+ return /* @__PURE__ */ jsx(
508
+ "header",
509
+ {
510
+ className: cn(
511
+ "nav_bar",
512
+ `nav_bar_variant_${variant}`,
513
+ `nav_bar_layout_${layout}`,
514
+ sticky && "nav_bar_sticky",
515
+ className
516
+ ),
517
+ ...props,
518
+ children: /* @__PURE__ */ jsxs("div", { className: "nav_bar_inner", children: [
519
+ brand && /* @__PURE__ */ jsx("div", { className: "nav_bar_brand", children: brand }),
520
+ children && /* @__PURE__ */ jsxs("nav", { ref: linksRef, className: "nav_bar_links", children: [
521
+ children,
522
+ indicator && /* @__PURE__ */ jsx(
523
+ "span",
524
+ {
525
+ "aria-hidden": "true",
526
+ className: cn(
527
+ "nav_bar_indicator",
528
+ hasMounted && "nav_bar_indicator_animated"
529
+ ),
530
+ style: { left: indicator.left, width: indicator.width }
531
+ }
532
+ )
533
+ ] }),
534
+ searchSlot && /* @__PURE__ */ jsx("div", { className: "nav_bar_search", children: searchSlot }),
535
+ /* @__PURE__ */ jsxs("div", { className: "nav_bar_right", children: [
536
+ actions && /* @__PURE__ */ jsx("div", { className: "nav_bar_actions", children: actions }),
537
+ locale && /* @__PURE__ */ jsx(LocaleSwitcher, { locale }),
538
+ showDivider && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "nav_bar_divider" }),
539
+ profile && /* @__PURE__ */ jsx("div", { className: "nav_bar_profile", children: profile })
540
+ ] })
541
+ ] })
542
+ }
543
+ );
544
+ };
545
+ var LocaleSwitcher = ({ locale }) => {
546
+ const [open, setOpen] = useState(false);
547
+ const wrapperRef = useRef(null);
548
+ const menuId = useId();
549
+ const currentOption = locale.options.find((o) => o.value === locale.current);
550
+ useEffect(() => {
551
+ if (!open) return;
552
+ const handler = (e) => {
553
+ if (!wrapperRef.current?.contains(e.target)) setOpen(false);
554
+ };
555
+ const escHandler = (e) => {
556
+ if (e.key === "Escape") setOpen(false);
557
+ };
558
+ document.addEventListener("mousedown", handler);
559
+ document.addEventListener("keydown", escHandler);
560
+ return () => {
561
+ document.removeEventListener("mousedown", handler);
562
+ document.removeEventListener("keydown", escHandler);
563
+ };
564
+ }, [open]);
565
+ const handleSelect = (value) => {
566
+ locale.onChange(value);
567
+ setOpen(false);
568
+ };
569
+ return /* @__PURE__ */ jsxs("div", { ref: wrapperRef, className: "nav_bar_locale", children: [
570
+ /* @__PURE__ */ jsxs(
571
+ "button",
572
+ {
573
+ type: "button",
574
+ className: "nav_bar_locale_trigger",
575
+ "aria-haspopup": "menu",
576
+ "aria-expanded": open,
577
+ "aria-controls": menuId,
578
+ onClick: () => setOpen((p) => !p),
579
+ children: [
580
+ /* @__PURE__ */ jsx(Globe, { size: 16, "aria-hidden": "true" }),
581
+ !locale.hideLabel && /* @__PURE__ */ jsx("span", { className: "nav_bar_locale_label", children: currentOption?.label ?? locale.current.toUpperCase() }),
582
+ /* @__PURE__ */ jsx(ChevronDown, { size: 14, "aria-hidden": "true", className: "nav_bar_locale_chevron" })
583
+ ]
584
+ }
585
+ ),
586
+ open && /* @__PURE__ */ jsx("ul", { id: menuId, role: "menu", className: "nav_bar_locale_menu", children: locale.options.map((opt) => /* @__PURE__ */ jsx("li", { role: "none", children: /* @__PURE__ */ jsx(
587
+ "button",
588
+ {
589
+ type: "button",
590
+ role: "menuitem",
591
+ className: cn(
592
+ "nav_bar_locale_item",
593
+ opt.value === locale.current && "nav_bar_locale_item_active"
594
+ ),
595
+ onClick: () => handleSelect(opt.value),
596
+ children: opt.label
597
+ }
598
+ ) }, opt.value)) })
599
+ ] });
600
+ };
601
+ var NavLink = ({ active, className, children, ...props }) => {
602
+ return (
603
+ // biome-ignore lint/a11y/useValidAnchor: navigation link
604
+ /* @__PURE__ */ jsx(
605
+ "a",
606
+ {
607
+ className: cn("nav_bar_link", active && "nav_bar_link_active"),
608
+ "aria-current": active ? "page" : void 0,
609
+ ...props,
610
+ children
611
+ }
612
+ )
613
+ );
614
+ };
615
+ var Sidebar = ({
616
+ header,
617
+ headerCollapsed,
618
+ footer,
619
+ collapsed: collapsedProp,
620
+ defaultCollapsed = false,
621
+ onCollapsedChange,
622
+ collapsible = true,
623
+ toggleLabel = "\uC0AC\uC774\uB4DC\uBC14 \uD1A0\uAE00",
624
+ width = 240,
625
+ collapsedWidth = 64,
626
+ mode = "auto",
627
+ className,
628
+ children,
629
+ style,
630
+ ...props
631
+ }) => {
632
+ const isControlled = collapsedProp !== void 0;
633
+ const [internalCollapsed, setInternalCollapsed] = React17.useState(defaultCollapsed);
634
+ const collapsed = isControlled ? collapsedProp : internalCollapsed;
635
+ const toggle = React17.useCallback(() => {
636
+ const next = !collapsed;
637
+ if (!isControlled) setInternalCollapsed(next);
638
+ onCollapsedChange?.(next);
639
+ }, [collapsed, isControlled, onCollapsedChange]);
640
+ const isStatic = mode === "static";
641
+ return /* @__PURE__ */ jsxs(
642
+ "aside",
643
+ {
644
+ className: cn(
645
+ "sidebar",
646
+ collapsed && "sidebar_collapsed",
647
+ isStatic && "sidebar_static",
648
+ className
649
+ ),
650
+ style: { width: collapsed ? collapsedWidth : width, ...style },
651
+ ...props,
652
+ children: [
653
+ (header || headerCollapsed) && /* @__PURE__ */ jsx("div", { className: "sidebar_header", children: /* @__PURE__ */ jsxs("div", { className: "sidebar_header_layers", children: [
654
+ header && /* @__PURE__ */ jsx("div", { className: "sidebar_header_layer sidebar_header_layer_full", children: header }),
655
+ headerCollapsed && /* @__PURE__ */ jsx("div", { className: "sidebar_header_layer sidebar_header_layer_mark", children: headerCollapsed })
656
+ ] }) }),
657
+ /* @__PURE__ */ jsx("nav", { className: "sidebar_nav", children }),
658
+ footer && /* @__PURE__ */ jsx("div", { className: "sidebar_footer", children: footer }),
659
+ collapsible && /* @__PURE__ */ jsx(
660
+ "button",
661
+ {
662
+ type: "button",
663
+ className: "sidebar_collapse_btn",
664
+ onClick: toggle,
665
+ "aria-label": toggleLabel,
666
+ "aria-expanded": !collapsed,
667
+ children: collapsed ? /* @__PURE__ */ jsx(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
668
+ }
669
+ )
670
+ ]
671
+ }
672
+ );
673
+ };
674
+ var SidebarItem = (props) => {
675
+ const { icon, active, trailing, as = "button", className, children, ...rest } = props;
676
+ const classes = cn("sidebar_item", active && "sidebar_item_active", className);
677
+ const ariaCurrent = active ? "page" : void 0;
678
+ const inner = /* @__PURE__ */ jsxs(Fragment$1, { children: [
679
+ icon && /* @__PURE__ */ jsx("span", { className: "sidebar_item_icon", "aria-hidden": "true", children: icon }),
680
+ /* @__PURE__ */ jsx("span", { className: "sidebar_item_label", children }),
681
+ trailing && /* @__PURE__ */ jsx("span", { className: "sidebar_item_trailing", children: trailing })
682
+ ] });
683
+ if (as === "a") {
684
+ const { href, ...anchorRest } = rest;
685
+ return (
686
+ // biome-ignore lint/a11y/useValidAnchor: navigation link with optional active state
687
+ /* @__PURE__ */ jsx("a", { className: classes, href, "aria-current": ariaCurrent, ...anchorRest, children: inner })
688
+ );
689
+ }
690
+ const { type, ...buttonRest } = rest;
691
+ return /* @__PURE__ */ jsx(
692
+ "button",
693
+ {
694
+ type: type ?? "button",
695
+ className: classes,
696
+ "aria-current": ariaCurrent,
697
+ ...buttonRest,
698
+ children: inner
699
+ }
700
+ );
701
+ };
702
+ var SidebarSection = ({ label, className, children, ...props }) => {
703
+ return /* @__PURE__ */ jsxs("div", { className: cn("sidebar_section", className), ...props, children: [
704
+ label && /* @__PURE__ */ jsx("div", { className: "sidebar_section_label", children: label }),
705
+ children
706
+ ] });
707
+ };
708
+ var TabsContext = React17.createContext(null);
709
+ function useTabsContext() {
710
+ const ctx = React17.useContext(TabsContext);
711
+ if (!ctx) {
712
+ throw new Error(
713
+ '[Bigtablet DS] <Tab>, <TabList>, <TabPanel>\uC740 \uBC18\uB4DC\uC2DC <Tabs> \uC548\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n\n\uC62C\uBC14\uB978 \uC0AC\uC6A9 \uC608:\n <Tabs defaultValue="a">\n <TabList>\n <Tab value="a">A</Tab>\n </TabList>\n <TabPanel value="a">...</TabPanel>\n </Tabs>'
714
+ );
715
+ }
716
+ return ctx;
717
+ }
718
+ var Tabs = ({
719
+ value: controlledValue,
720
+ defaultValue = "",
721
+ onValueChange,
722
+ variant = "line",
723
+ size = "md",
724
+ className,
725
+ children,
726
+ ...props
727
+ }) => {
728
+ const isControlled = controlledValue !== void 0;
729
+ const [internalValue, setInternalValue] = React17.useState(defaultValue);
730
+ const value = isControlled ? controlledValue : internalValue;
731
+ const setValue = React17.useCallback(
732
+ (v) => {
733
+ if (!isControlled) setInternalValue(v);
734
+ onValueChange?.(v);
735
+ },
736
+ [isControlled, onValueChange]
737
+ );
738
+ const idPrefix = React17.useId();
739
+ const ctx = React17.useMemo(
740
+ () => ({ value, setValue, variant, size, idPrefix }),
741
+ [value, setValue, variant, size, idPrefix]
742
+ );
743
+ return /* @__PURE__ */ jsx(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx("div", { className: cn("tabs", `tabs_variant_${variant}`, `tabs_size_${size}`, className), ...props, children }) });
744
+ };
745
+ var TabList = ({ ariaLabel, className, children, ...props }) => {
746
+ const { variant } = useTabsContext();
747
+ const listRef = React17.useRef(null);
748
+ const [indicator, setIndicator] = React17.useState(null);
749
+ const [hasMounted, setHasMounted] = React17.useState(false);
750
+ React17.useLayoutEffect(() => {
751
+ const list = listRef.current;
752
+ if (!list) return;
753
+ const update = () => {
754
+ const active = list.querySelector('[role="tab"][aria-selected="true"]');
755
+ if (active) {
756
+ setIndicator({ left: active.offsetLeft, width: active.offsetWidth });
757
+ } else {
758
+ setIndicator(null);
759
+ }
760
+ };
761
+ update();
762
+ const mountTimer = setTimeout(() => setHasMounted(true), 50);
763
+ const mo = new MutationObserver(update);
764
+ mo.observe(list, {
765
+ subtree: true,
766
+ attributes: true,
767
+ attributeFilter: ["aria-selected"]
768
+ });
769
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
770
+ ro?.observe(list);
771
+ const handleResize = () => update();
772
+ window.addEventListener("resize", handleResize);
773
+ return () => {
774
+ clearTimeout(mountTimer);
775
+ mo.disconnect();
776
+ ro?.disconnect();
777
+ window.removeEventListener("resize", handleResize);
778
+ };
779
+ }, [variant]);
780
+ return /* @__PURE__ */ jsxs(
781
+ "div",
782
+ {
783
+ ref: listRef,
784
+ role: "tablist",
785
+ "aria-label": ariaLabel,
786
+ className: cn("tabs_list", `tabs_list_${variant}`, className),
787
+ ...props,
788
+ children: [
789
+ indicator && /* @__PURE__ */ jsx(
790
+ "span",
791
+ {
792
+ "aria-hidden": "true",
793
+ className: cn(
794
+ "tabs_indicator",
795
+ `tabs_indicator_${variant}`,
796
+ hasMounted && "tabs_indicator_animated"
797
+ ),
798
+ style: { left: indicator.left, width: indicator.width }
799
+ }
800
+ ),
801
+ children
802
+ ]
803
+ }
804
+ );
805
+ };
806
+ var Tab = ({ value, className, children, onClick, ...props }) => {
807
+ const ctx = useTabsContext();
808
+ const isActive = ctx.value === value;
809
+ const panelId = `${ctx.idPrefix}-panel-${value}`;
810
+ const tabId = `${ctx.idPrefix}-tab-${value}`;
811
+ const handleClick = (e) => {
812
+ ctx.setValue(value);
813
+ onClick?.(e);
814
+ };
815
+ const handleKeyDown = (e) => {
816
+ if (e.key !== "ArrowLeft" && e.key !== "ArrowRight" && e.key !== "Home" && e.key !== "End") return;
817
+ const list = e.currentTarget.closest('[role="tablist"]');
818
+ if (!list) return;
819
+ const tabs = Array.from(list.querySelectorAll('[role="tab"]:not([disabled])'));
820
+ const currentIndex = tabs.indexOf(e.currentTarget);
821
+ if (currentIndex < 0) return;
822
+ e.preventDefault();
823
+ let next = currentIndex;
824
+ if (e.key === "ArrowRight") next = (currentIndex + 1) % tabs.length;
825
+ else if (e.key === "ArrowLeft") next = (currentIndex - 1 + tabs.length) % tabs.length;
826
+ else if (e.key === "Home") next = 0;
827
+ else if (e.key === "End") next = tabs.length - 1;
828
+ const targetValue = tabs[next].dataset.value;
829
+ if (targetValue) {
830
+ ctx.setValue(targetValue);
831
+ tabs[next].focus();
832
+ }
833
+ };
834
+ return /* @__PURE__ */ jsx(
835
+ "button",
836
+ {
837
+ type: "button",
838
+ role: "tab",
839
+ id: tabId,
840
+ "data-value": value,
841
+ "aria-selected": isActive,
842
+ "aria-controls": panelId,
843
+ tabIndex: isActive ? 0 : -1,
844
+ className: cn("tabs_tab", isActive && "tabs_tab_active", className),
845
+ onClick: handleClick,
846
+ onKeyDown: handleKeyDown,
847
+ ...props,
848
+ children
849
+ }
850
+ );
851
+ };
852
+ var TabPanel = ({
853
+ value,
854
+ unmountInactive = true,
855
+ className,
856
+ children,
857
+ ...props
858
+ }) => {
859
+ const ctx = useTabsContext();
860
+ const isActive = ctx.value === value;
861
+ const panelId = `${ctx.idPrefix}-panel-${value}`;
862
+ const tabId = `${ctx.idPrefix}-tab-${value}`;
863
+ if (!isActive && unmountInactive) return null;
864
+ return /* @__PURE__ */ jsx(
865
+ "div",
866
+ {
867
+ role: "tabpanel",
868
+ id: panelId,
869
+ "aria-labelledby": tabId,
870
+ hidden: !isActive,
871
+ tabIndex: 0,
872
+ className: cn("tabs_panel", className),
873
+ ...props,
874
+ children
875
+ }
876
+ );
877
+ };
878
+ var Tooltip = ({
879
+ content,
880
+ placement = "top",
881
+ delay = 200,
882
+ disabled = false,
883
+ children
884
+ }) => {
885
+ const [open, setOpen] = React17.useState(false);
886
+ const timerRef = React17.useRef(null);
887
+ const tooltipId = React17.useId();
888
+ const show = React17.useCallback(() => {
889
+ if (timerRef.current) clearTimeout(timerRef.current);
890
+ timerRef.current = setTimeout(() => setOpen(true), delay);
891
+ }, [delay]);
892
+ const hide = React17.useCallback(() => {
893
+ if (timerRef.current) clearTimeout(timerRef.current);
894
+ setOpen(false);
895
+ }, []);
896
+ React17.useEffect(() => {
897
+ return () => {
898
+ if (timerRef.current) clearTimeout(timerRef.current);
899
+ };
900
+ }, []);
901
+ const fromTransform = (() => {
902
+ switch (placement) {
903
+ case "top":
904
+ return "translateY(4px)";
905
+ case "bottom":
906
+ return "translateY(-4px)";
907
+ case "left":
908
+ return "translateX(4px)";
909
+ case "right":
910
+ return "translateX(-4px)";
911
+ }
912
+ })();
913
+ const style = useSpringPresence({ visible: open, from: fromTransform });
914
+ const trigger = React17.cloneElement(children, {
915
+ onMouseEnter: show,
916
+ onMouseLeave: hide,
917
+ onFocus: show,
918
+ onBlur: hide,
919
+ "aria-describedby": open ? tooltipId : void 0
920
+ });
921
+ if (disabled) return children;
922
+ return /* @__PURE__ */ jsxs("span", { className: "tooltip_wrapper", children: [
923
+ trigger,
924
+ open && /* @__PURE__ */ jsx("span", { className: cn("tooltip_position", `tooltip_placement_${placement}`), children: /* @__PURE__ */ jsx(
925
+ animated.span,
926
+ {
927
+ id: tooltipId,
928
+ role: "tooltip",
929
+ style,
930
+ className: cn("tooltip", `tooltip_placement_${placement}`),
931
+ children: content
932
+ }
933
+ ) })
934
+ ] });
935
+ };
8
936
 
9
937
  // src/styles/a11y/index.ts
10
938
  var a11y = {
11
939
  focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)",
12
940
  focusRingError: "0 0 0 3px rgba(239, 68, 68, 0.15)",
13
941
  focusRingSuccess: "0 0 0 3px rgba(16, 185, 129, 0.15)",
14
- tapMinSize: "44px"
942
+ tapMinSize: "44px",
943
+ tapTarget: {
944
+ dense: "32px",
945
+ compact: "40px",
946
+ comfortable: "48px",
947
+ spacious: "56px"
948
+ }
15
949
  };
16
950
 
17
951
  // src/styles/border-width/index.ts
@@ -23,6 +957,7 @@ var baseBorderWidth = {
23
957
  var borderWidth = {
24
958
  none: baseBorderWidth["0"],
25
959
  standard: baseBorderWidth["1"],
960
+ thick: baseBorderWidth["2"],
26
961
  indicator: baseBorderWidth["2"]
27
962
  };
28
963
 
@@ -44,6 +979,7 @@ var baseColors = {
44
979
  blue600: "#1A73E8",
45
980
  neutral0: "#FFFFFF",
46
981
  neutral50: "#F4F4F4",
982
+ neutral100: "#F2F2F2",
47
983
  neutral200: "#E5E5E5",
48
984
  neutral300: "#999999",
49
985
  neutral400: "#B3B3B3",
@@ -56,6 +992,17 @@ var baseColors = {
56
992
  statusSuccess: "#10B981",
57
993
  statusWarning: "#F59E0B",
58
994
  statusInfo: "#3B82F6",
995
+ // Navy — Bigtablet 초기 홈페이지 컬러. #47555E 메인 navy + sky blue 패밀리.
996
+ navy50: "#F2F5F8",
997
+ navy100: "#DDE3E9",
998
+ navy200: "#B4C2CD",
999
+ navy300: "#7AA5D2",
1000
+ navy400: "#5A8DCB",
1001
+ navy500: "#4C7CB6",
1002
+ navy600: "#47555E",
1003
+ navy700: "#3D4852",
1004
+ navy800: "#303841",
1005
+ navy900: "#1F2630",
59
1006
  alphaBlack5: "rgba(0, 0, 0, 0.05)",
60
1007
  alphaBlack8: "rgba(0, 0, 0, 0.08)",
61
1008
  alphaBlack12: "rgba(26, 26, 26, 0.12)",
@@ -97,13 +1044,22 @@ var colors = {
97
1044
  hover: baseColors.neutral400,
98
1045
  subtle: baseColors.alphaBlack8,
99
1046
  focus: baseColors.neutral900,
100
- disabled: "#F2F2F2"
1047
+ disabled: baseColors.neutral100
101
1048
  },
102
1049
  status: {
103
1050
  error: baseColors.statusError,
104
1051
  success: baseColors.statusSuccess,
105
1052
  warning: baseColors.statusWarning,
106
1053
  info: baseColors.statusInfo
1054
+ },
1055
+ // Accent (Bigtablet navy) — 메인 brand 검정과 함께 B2C/마케팅 강조에 사용.
1056
+ accent: {
1057
+ subtle: baseColors.navy50,
1058
+ muted: baseColors.navy100,
1059
+ light: baseColors.navy300,
1060
+ default: baseColors.navy600,
1061
+ strong: baseColors.navy800,
1062
+ onSurface: baseColors.neutral0
107
1063
  }
108
1064
  };
109
1065
 
@@ -127,7 +1083,15 @@ var motion = {
127
1083
  fade: "0.15s ease-in-out",
128
1084
  slide: "0.25s ease-in-out",
129
1085
  scale: "0.2s cubic-bezier(0.2, 0.8, 0.2, 1)",
130
- state: "0.18s ease-in-out"
1086
+ state: "0.18s ease-in-out",
1087
+ enterFast: "0.15s cubic-bezier(0.16, 1, 0.3, 1)",
1088
+ enterBase: "0.2s cubic-bezier(0.16, 1, 0.3, 1)",
1089
+ exitFast: "0.12s cubic-bezier(0.4, 0, 1, 1)",
1090
+ exitBase: "0.15s cubic-bezier(0.4, 0, 1, 1)"
1091
+ },
1092
+ easing: {
1093
+ enter: "cubic-bezier(0.16, 1, 0.3, 1)",
1094
+ exit: "cubic-bezier(0.4, 0, 1, 1)"
131
1095
  }
132
1096
  };
133
1097
 
@@ -244,7 +1208,8 @@ var baseTypography = {
244
1208
  "60": "60px"
245
1209
  },
246
1210
  letterSpacing: {
247
- normal: "0px"
1211
+ normal: "0px",
1212
+ tight: "0.32px"
248
1213
  }
249
1214
  };
250
1215
  var { fontSize: fs, fontWeight: fw, lineHeight: lh, letterSpacing: ls } = baseTypography;
@@ -453,104 +1418,53 @@ var zIndex = {
453
1418
  level4: 500,
454
1419
  level5: 1e3
455
1420
  };
456
-
457
- // src/utils/cn.ts
458
- var cn = (...classes) => {
459
- const classNames = [];
460
- for (const item of classes) {
461
- if (!item) continue;
462
- if (typeof item === "string" || typeof item === "number") {
463
- classNames.push(String(item));
464
- } else if (Array.isArray(item)) {
465
- const nested = cn(...item);
466
- if (nested) {
467
- classNames.push(nested);
468
- }
469
- } else if (typeof item === "object") {
470
- for (const key in item) {
471
- if (Object.hasOwn(item, key) && item[key]) {
472
- classNames.push(key);
473
- }
474
- }
475
- }
476
- }
477
- return classNames.join(" ");
1421
+ var Button = ({
1422
+ variant = "filled",
1423
+ size = "md",
1424
+ leadingIcon,
1425
+ trailingIcon,
1426
+ fullWidth = false,
1427
+ radius: radius2,
1428
+ danger = false,
1429
+ className,
1430
+ children,
1431
+ ...props
1432
+ }) => {
1433
+ const buttonClassName = cn(
1434
+ "button",
1435
+ `button_variant_${variant}`,
1436
+ `button_size_${size}`,
1437
+ fullWidth && "button_full_width",
1438
+ radius2 && `button_radius_${radius2}`,
1439
+ danger && "button_danger",
1440
+ className
1441
+ );
1442
+ return /* @__PURE__ */ jsxs("button", { className: buttonClassName, ...props, children: [
1443
+ leadingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: leadingIcon }),
1444
+ children && /* @__PURE__ */ jsx("span", { className: "button_label", children }),
1445
+ trailingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: trailingIcon })
1446
+ ] });
1447
+ };
1448
+ var ICONS = {
1449
+ info: /* @__PURE__ */ jsx(Info, { size: 20, "aria-hidden": "true" }),
1450
+ success: /* @__PURE__ */ jsx(CheckCircle2, { size: 20, "aria-hidden": "true" }),
1451
+ warning: /* @__PURE__ */ jsx(AlertTriangle, { size: 20, "aria-hidden": "true" }),
1452
+ error: /* @__PURE__ */ jsx(XCircle, { size: 20, "aria-hidden": "true" })
478
1453
  };
479
- var FOCUSABLE_SELECTORS = [
480
- "a[href]",
481
- "button:not([disabled])",
482
- "input:not([disabled])",
483
- "select:not([disabled])",
484
- "textarea:not([disabled])",
485
- '[tabindex]:not([tabindex="-1"])'
486
- ].join(", ");
487
- function useFocusTrap(containerRef, isActive) {
488
- const previousActiveElement = React4.useRef(null);
489
- React4.useEffect(() => {
490
- if (!isActive) return;
491
- const container = containerRef.current;
492
- if (!container) return;
493
- previousActiveElement.current = document.activeElement;
494
- const getFocusableElements = () => {
495
- return container.querySelectorAll(FOCUSABLE_SELECTORS);
496
- };
497
- let wasTabIndexAdded = false;
498
- const focusableElements = getFocusableElements();
499
- if (focusableElements.length > 0) {
500
- focusableElements[0].focus();
501
- } else {
502
- container.setAttribute("tabindex", "-1");
503
- wasTabIndexAdded = true;
504
- container.focus();
505
- }
506
- const handleKeyDown = (e) => {
507
- if (e.key !== "Tab") return;
508
- const focusableElements2 = getFocusableElements();
509
- if (focusableElements2.length === 0) {
510
- e.preventDefault();
511
- return;
512
- }
513
- const firstElement = focusableElements2[0];
514
- const lastElement = focusableElements2[focusableElements2.length - 1];
515
- if (e.shiftKey) {
516
- if (document.activeElement === firstElement) {
517
- e.preventDefault();
518
- lastElement.focus();
519
- }
520
- } else {
521
- if (document.activeElement === lastElement) {
522
- e.preventDefault();
523
- firstElement.focus();
524
- }
525
- }
526
- };
527
- document.addEventListener("keydown", handleKeyDown);
528
- return () => {
529
- document.removeEventListener("keydown", handleKeyDown);
530
- if (wasTabIndexAdded) {
531
- container.removeAttribute("tabindex");
532
- }
533
- previousActiveElement.current?.focus();
534
- };
535
- }, [isActive, containerRef]);
536
- }
537
1454
  var AlertContext = createContext(null);
538
1455
  var useAlert = () => {
539
1456
  const context = useContext(AlertContext);
540
1457
  if (!context) {
541
- throw new Error("useAlert must be used within AlertProvider");
1458
+ throw new Error(
1459
+ "[Bigtablet DS] useAlert\uB294 <AlertProvider> \uC548\uC5D0\uC11C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.\n\n\uC571 \uCD5C\uC0C1\uB2E8\uC5D0 <AlertProvider>\uB85C \uAC10\uC2F8\uC8FC\uC138\uC694:\n <AlertProvider>\n <YourApp />\n </AlertProvider>"
1460
+ );
542
1461
  }
543
1462
  return context;
544
1463
  };
545
1464
  var AlertProvider = ({ children }) => {
546
- const [alertState, setAlertState] = useState({
547
- isOpen: false
548
- });
1465
+ const [alertState, setAlertState] = useState({ isOpen: false });
549
1466
  const showAlert = useCallback((options) => {
550
- setAlertState({
551
- ...options,
552
- isOpen: true
553
- });
1467
+ setAlertState({ ...options, isOpen: true });
554
1468
  }, []);
555
1469
  const handleClose = useCallback(() => {
556
1470
  setAlertState((prev) => ({ ...prev, isOpen: false }));
@@ -565,98 +1479,107 @@ var AlertProvider = ({ children }) => {
565
1479
  }, [alertState.onCancel, handleClose]);
566
1480
  return /* @__PURE__ */ jsxs(AlertContext.Provider, { value: { showAlert }, children: [
567
1481
  children,
568
- alertState.isOpen && createPortal(
569
- /* @__PURE__ */ jsx(
570
- AlertModal,
571
- {
572
- ...alertState,
573
- onConfirm: handleConfirm,
574
- onCancel: handleCancel,
575
- onClose: handleClose
576
- }
577
- ),
578
- document.body
1482
+ /* @__PURE__ */ jsx(
1483
+ AlertModal,
1484
+ {
1485
+ ...alertState,
1486
+ onConfirm: handleConfirm,
1487
+ onCancel: handleCancel,
1488
+ onClose: handleClose
1489
+ }
579
1490
  )
580
1491
  ] });
581
1492
  };
582
1493
  var AlertModal = ({
1494
+ isOpen,
583
1495
  variant = "info",
584
1496
  title,
585
1497
  message,
586
1498
  confirmText = "\uD655\uC778",
587
1499
  cancelText = "\uCDE8\uC18C",
588
1500
  showCancel = false,
1501
+ destructive = false,
589
1502
  actionsAlign = "right",
1503
+ showIcon = false,
590
1504
  onConfirm,
591
1505
  onCancel,
592
1506
  onClose
593
1507
  }) => {
594
- const panelRef = React4.useRef(null);
595
- const titleId = React4.useId();
596
- const messageId = React4.useId();
597
- useFocusTrap(panelRef, true);
1508
+ const panelRef = React17.useRef(null);
1509
+ const titleId = React17.useId();
1510
+ const messageId = React17.useId();
1511
+ const [shouldRender, setShouldRender] = useState(isOpen);
1512
+ useFocusTrap(panelRef, isOpen);
1513
+ React17.useEffect(() => {
1514
+ if (isOpen) setShouldRender(true);
1515
+ }, [isOpen]);
1516
+ const overlayStyle = useSpring({
1517
+ opacity: isOpen ? 1 : 0,
1518
+ config: { tension: 280, friction: 28, clamp: !isOpen },
1519
+ onRest: (result) => {
1520
+ if (!isOpen && result.finished) setShouldRender(false);
1521
+ }
1522
+ });
1523
+ const panelStyle = useSpring({
1524
+ opacity: isOpen ? 1 : 0,
1525
+ transform: isOpen ? "scale(1) translateY(0px)" : "scale(0.96) translateY(-4px)",
1526
+ config: { tension: 280, friction: 28, clamp: !isOpen }
1527
+ });
1528
+ if (!shouldRender) return null;
1529
+ const confirmVariant = "filled";
1530
+ const cancelVariant = "outline";
598
1531
  const modalClassName = cn("alert_modal", `alert_variant_${variant}`);
599
- const actionsClassName = cn("alert_actions", `alert_actions_${actionsAlign}`);
600
- return (
601
- // biome-ignore lint/a11y/noStaticElementInteractions: modal overlay pattern — clickable backdrop without role=button (focus is trapped on the panel inside)
1532
+ return createPortal(
1533
+ // biome-ignore lint/a11y/noStaticElementInteractions: modal overlay pattern
602
1534
  /* @__PURE__ */ jsx(
603
- "div",
1535
+ animated.div,
604
1536
  {
605
1537
  className: "alert_overlay",
1538
+ style: overlayStyle,
606
1539
  role: "presentation",
607
1540
  onClick: onClose,
608
1541
  onKeyDown: (e) => e.key === "Escape" && onClose(),
609
1542
  children: /* @__PURE__ */ jsxs(
610
- "div",
1543
+ animated.div,
611
1544
  {
612
1545
  ref: panelRef,
613
1546
  className: modalClassName,
614
- onClick: (e) => e.stopPropagation(),
615
- onKeyDown: (e) => {
616
- if (e.key !== "Escape") e.stopPropagation();
617
- },
618
- role: "alertdialog",
619
- "aria-modal": "true",
620
- "aria-labelledby": titleId,
621
- "aria-describedby": messageId,
622
- children: [
623
- title && /* @__PURE__ */ jsx("div", { className: "alert_title", id: titleId, children: title }),
624
- message && /* @__PURE__ */ jsx("div", { className: "alert_message", id: messageId, children: message }),
625
- /* @__PURE__ */ jsxs("div", { className: actionsClassName, children: [
626
- showCancel && /* @__PURE__ */ jsx("button", { type: "button", className: "alert_button alert_button_cancel", onClick: onCancel, children: cancelText }),
627
- /* @__PURE__ */ jsx("button", { type: "button", className: "alert_button alert_button_confirm", onClick: onConfirm, children: confirmText })
628
- ] })
629
- ]
630
- }
631
- )
632
- }
633
- )
634
- );
635
- };
636
- var Button = ({
637
- variant = "filled",
638
- size = "md",
639
- leadingIcon,
640
- trailingIcon,
641
- fullWidth = false,
642
- radius: radius2,
643
- className,
644
- children,
645
- ...props
646
- }) => {
647
- const buttonClassName = cn(
648
- "button",
649
- `button_variant_${variant}`,
650
- `button_size_${size}`,
651
- fullWidth && "button_full_width",
652
- radius2 && `button_radius_${radius2}`,
653
- className
1547
+ style: panelStyle,
1548
+ onClick: (e) => e.stopPropagation(),
1549
+ onKeyDown: (e) => {
1550
+ if (e.key !== "Escape") e.stopPropagation();
1551
+ },
1552
+ role: "alertdialog",
1553
+ "aria-modal": "true",
1554
+ "aria-labelledby": title ? titleId : void 0,
1555
+ "aria-describedby": message ? messageId : void 0,
1556
+ children: [
1557
+ (showIcon || title) && /* @__PURE__ */ jsxs("div", { className: "alert_header", children: [
1558
+ showIcon && /* @__PURE__ */ jsx("span", { className: cn("alert_icon", `alert_icon_${variant}`), "aria-hidden": "true", children: ICONS[variant] }),
1559
+ title && /* @__PURE__ */ jsx("div", { className: "alert_title", id: titleId, children: title })
1560
+ ] }),
1561
+ message && /* @__PURE__ */ jsx("div", { className: "alert_message", id: messageId, children: message }),
1562
+ /* @__PURE__ */ jsxs("div", { className: cn("alert_actions", `alert_actions_${actionsAlign}`), children: [
1563
+ showCancel && /* @__PURE__ */ jsx(Button, { variant: cancelVariant, size: "md", radius: "md", onClick: onCancel, children: cancelText }),
1564
+ /* @__PURE__ */ jsx(
1565
+ Button,
1566
+ {
1567
+ variant: confirmVariant,
1568
+ danger: destructive,
1569
+ size: "md",
1570
+ radius: "md",
1571
+ onClick: onConfirm,
1572
+ children: confirmText
1573
+ }
1574
+ )
1575
+ ] })
1576
+ ]
1577
+ }
1578
+ )
1579
+ }
1580
+ ),
1581
+ document.body
654
1582
  );
655
- return /* @__PURE__ */ jsxs("button", { className: buttonClassName, ...props, children: [
656
- leadingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: leadingIcon }),
657
- children && /* @__PURE__ */ jsx("span", { className: "button_label", children }),
658
- trailingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: trailingIcon })
659
- ] });
660
1583
  };
661
1584
  var Card = ({
662
1585
  heading,
@@ -664,7 +1587,7 @@ var Card = ({
664
1587
  shadow = "sm",
665
1588
  padding = "md",
666
1589
  bordered = false,
667
- hoverable = false,
1590
+ variant = "default",
668
1591
  className,
669
1592
  children,
670
1593
  ...props
@@ -673,7 +1596,8 @@ var Card = ({
673
1596
  "card",
674
1597
  `card_shadow_${shadow}`,
675
1598
  `card_p_${padding}`,
676
- { card_bordered: bordered, card_hoverable: hoverable },
1599
+ variant !== "default" && `card_variant_${variant}`,
1600
+ { card_bordered: bordered },
677
1601
  className
678
1602
  );
679
1603
  return /* @__PURE__ */ jsxs("div", { className: cardClassName, ...props, children: [
@@ -689,12 +1613,12 @@ var Checkbox = ({
689
1613
  ref,
690
1614
  ...props
691
1615
  }) => {
692
- const inputRef = React4.useRef(null);
693
- React4.useImperativeHandle(
1616
+ const inputRef = React17.useRef(null);
1617
+ React17.useImperativeHandle(
694
1618
  ref,
695
1619
  () => inputRef.current
696
1620
  );
697
- React4.useEffect(() => {
1621
+ React17.useEffect(() => {
698
1622
  if (!inputRef.current) return;
699
1623
  inputRef.current.indeterminate = Boolean(indeterminate);
700
1624
  }, [indeterminate]);
@@ -758,32 +1682,58 @@ var ChevronDownIcon = () => /* @__PURE__ */ jsx(
758
1682
  );
759
1683
  var Chip = ({
760
1684
  type = "basic",
1685
+ size,
1686
+ tone = "default",
761
1687
  label,
762
1688
  selected,
763
1689
  removable,
764
1690
  disabled,
765
1691
  open,
1692
+ leadingIcon,
766
1693
  onClick,
767
1694
  onRemove,
768
1695
  className,
769
1696
  ...props
770
1697
  }) => {
771
1698
  const [iconHovered, setIconHovered] = useState(false);
772
- const hasLeading = selected;
773
- const hasTrailingButton = type === "input" && removable;
1699
+ const isStatic = type === "static";
1700
+ const hasLeading = !isStatic && selected;
1701
+ const hasStaticLeading = isStatic && !!leadingIcon;
1702
+ const hasTrailingButton = (type === "input" || isStatic) && removable;
774
1703
  const hasTrailingIcon = hasTrailingButton || type === "filter";
775
1704
  const enterIcon = () => setIconHovered(true);
776
1705
  const leaveIcon = () => setIconHovered(false);
777
1706
  const chipClassName = cn(
778
1707
  "chip",
779
1708
  `chip_type_${type}`,
1709
+ size && `chip_size_${size}`,
1710
+ isStatic && `chip_tone_${tone}`,
780
1711
  selected && "chip_selected",
781
- hasLeading && "chip_has_leading",
1712
+ (hasLeading || hasStaticLeading) && "chip_has_leading",
782
1713
  hasTrailingIcon && "chip_has_trailing",
783
1714
  disabled && "chip_disabled",
784
1715
  iconHovered && "chip_icon_hovered",
785
1716
  className
786
1717
  );
1718
+ if (isStatic) {
1719
+ return /* @__PURE__ */ jsxs("span", { className: chipClassName, ...props, children: [
1720
+ /* @__PURE__ */ jsxs("span", { className: "chip_content", children: [
1721
+ hasStaticLeading && /* @__PURE__ */ jsx("span", { className: "chip_icon", "aria-hidden": "true", children: leadingIcon }),
1722
+ /* @__PURE__ */ jsx("span", { className: "chip_label", children: label })
1723
+ ] }),
1724
+ hasTrailingButton && /* @__PURE__ */ jsx(
1725
+ "button",
1726
+ {
1727
+ type: "button",
1728
+ className: "chip_trailing",
1729
+ disabled,
1730
+ onClick: onRemove,
1731
+ "aria-label": "Remove",
1732
+ children: /* @__PURE__ */ jsx("span", { className: "chip_icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx(CloseIcon, {}) })
1733
+ }
1734
+ )
1735
+ ] });
1736
+ }
787
1737
  return /* @__PURE__ */ jsxs("div", { className: chipClassName, ...props, children: [
788
1738
  /* @__PURE__ */ jsxs(
789
1739
  "button",
@@ -850,25 +1800,23 @@ var Dropdown = ({
850
1800
  defaultValue = null,
851
1801
  disabled,
852
1802
  size = "md",
853
- fullWidth,
854
1803
  className
855
1804
  }) => {
856
- const internalId = React4.useId();
1805
+ const internalId = useId();
857
1806
  const dropdownId = id ?? internalId;
858
1807
  const isControlled = value !== void 0;
859
- const [internalValue, setInternalValue] = React4.useState(defaultValue);
1808
+ const [internalValue, setInternalValue] = useState(defaultValue);
860
1809
  const currentValue = isControlled ? value ?? null : internalValue;
861
- const [isOpen, setIsOpen] = React4.useState(false);
862
- const [activeIndex, setActiveIndex] = React4.useState(-1);
863
- const [dropUp, setDropUp] = React4.useState(false);
864
- const wrapperRef = React4.useRef(null);
865
- const controlRef = React4.useRef(null);
866
- const currentOption = React4.useMemo(
1810
+ const [isOpen, setIsOpen] = useState(false);
1811
+ const [activeIndex, setActiveIndex] = useState(-1);
1812
+ const [dropUp, setDropUp] = useState(false);
1813
+ const wrapperRef = useRef(null);
1814
+ const controlRef = useRef(null);
1815
+ const currentOption = useMemo(
867
1816
  () => options.find((o) => o.value === currentValue) ?? null,
868
1817
  [options, currentValue]
869
1818
  );
870
- const isLabelVisible = isOpen || !!currentOption;
871
- const setValue = React4.useCallback(
1819
+ const setValue = useCallback(
872
1820
  (next) => {
873
1821
  const option = options.find((o) => o.value === next) ?? null;
874
1822
  if (!isControlled) setInternalValue(next);
@@ -876,7 +1824,7 @@ var Dropdown = ({
876
1824
  },
877
1825
  [isControlled, onChange, options]
878
1826
  );
879
- React4.useEffect(() => {
1827
+ useEffect(() => {
880
1828
  const handleOutsideClick = (e) => {
881
1829
  if (!wrapperRef.current?.contains(e.target)) {
882
1830
  setIsOpen(false);
@@ -947,7 +1895,7 @@ var Dropdown = ({
947
1895
  break;
948
1896
  }
949
1897
  };
950
- React4.useEffect(() => {
1898
+ useEffect(() => {
951
1899
  if (!isOpen) return;
952
1900
  const matchedIndex = options.findIndex((o) => o.value === currentValue && !o.disabled);
953
1901
  setActiveIndex(
@@ -957,82 +1905,98 @@ var Dropdown = ({
957
1905
  )
958
1906
  );
959
1907
  }, [isOpen, options, currentValue]);
960
- React4.useLayoutEffect(() => {
1908
+ useEffect(() => {
961
1909
  if (!isOpen || !controlRef.current) return;
962
1910
  const rect = controlRef.current.getBoundingClientRect();
963
- const listHeight = Math.min(options.length * 56, 288);
964
1911
  const spaceBelow = window.innerHeight - rect.bottom;
965
1912
  const spaceAbove = rect.top;
966
- setDropUp(spaceBelow < listHeight && spaceAbove > spaceBelow);
967
- }, [isOpen, options.length]);
1913
+ const MIN_BELOW = 120;
1914
+ setDropUp(spaceBelow < MIN_BELOW && spaceAbove > spaceBelow);
1915
+ }, [isOpen]);
968
1916
  const rootClassName = cn("dropdown", `dropdown_size_${size}`, className);
969
1917
  const fieldsetClassName = cn("dropdown_fieldset", { is_open: isOpen, is_disabled: disabled });
970
1918
  const listClassName = cn("dropdown_list", { dropdown_list_up: dropUp });
1919
+ const listStyle = useSpringPresence({
1920
+ visible: isOpen,
1921
+ from: dropUp ? "translateY(4px)" : "translateY(-4px)"
1922
+ });
971
1923
  return /* @__PURE__ */ jsxs(
972
1924
  "div",
973
1925
  {
974
1926
  ref: wrapperRef,
975
1927
  className: rootClassName,
976
- style: fullWidth ? { width: "100%" } : void 0,
977
1928
  children: [
978
- /* @__PURE__ */ jsxs("div", { className: fieldsetClassName, children: [
979
- label && /* @__PURE__ */ jsx("span", { className: cn("dropdown_label", { is_visible: isLabelVisible }), "aria-hidden": "true", children: label }),
980
- /* @__PURE__ */ jsxs(
981
- "button",
982
- {
983
- ref: controlRef,
984
- id: dropdownId,
985
- type: "button",
986
- className: cn("dropdown_control", { is_disabled: disabled }),
987
- "aria-haspopup": "listbox",
988
- "aria-expanded": isOpen,
989
- "aria-controls": `${dropdownId}_listbox`,
990
- "aria-label": label,
991
- onClick: () => !disabled && setIsOpen((o) => !o),
992
- onKeyDown,
993
- disabled,
994
- children: [
995
- /* @__PURE__ */ jsx("span", { className: currentOption ? "dropdown_value" : "dropdown_placeholder", children: currentOption ? currentOption.label : placeholder }),
996
- /* @__PURE__ */ jsx("span", { className: cn("dropdown_icon", { is_open: isOpen }), "aria-hidden": "true", children: /* @__PURE__ */ jsx(ChevronDown, { size: 24 }) })
997
- ]
998
- }
999
- )
1000
- ] }),
1001
- isOpen && /* @__PURE__ */ jsx("div", { id: `${dropdownId}_listbox`, role: "listbox", className: listClassName, children: options.map((opt, i) => {
1002
- const selected = currentValue === opt.value;
1003
- const active = i === activeIndex;
1004
- return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
1005
- /* @__PURE__ */ jsxs(
1006
- "div",
1007
- {
1008
- role: "option",
1009
- tabIndex: -1,
1010
- "aria-selected": selected,
1011
- "aria-disabled": opt.disabled ? true : void 0,
1012
- className: cn("dropdown_option", {
1013
- is_selected: selected,
1014
- is_active: active,
1015
- is_disabled: opt.disabled
1016
- }),
1017
- onMouseEnter: () => !opt.disabled && setActiveIndex(i),
1018
- onClick: () => {
1019
- if (opt.disabled) return;
1020
- setValue(opt.value);
1021
- setIsOpen(false);
1022
- },
1023
- children: [
1024
- opt.leadingIcon && /* @__PURE__ */ jsx("span", { className: "dropdown_option_icon", children: opt.leadingIcon }),
1025
- /* @__PURE__ */ jsxs("span", { className: "dropdown_option_content", children: [
1026
- /* @__PURE__ */ jsx("span", { className: "dropdown_option_label", children: opt.label }),
1027
- opt.supportingText && /* @__PURE__ */ jsx("span", { className: "dropdown_option_supporting", children: opt.supportingText })
1028
- ] }),
1029
- (selected || opt.trailingIcon) && /* @__PURE__ */ jsx("span", { className: "dropdown_option_trailing", children: opt.trailingIcon ?? /* @__PURE__ */ jsx(Check, { size: 16, "aria-hidden": "true" }) })
1030
- ]
1031
- }
1032
- ),
1033
- opt.showDivider && /* @__PURE__ */ jsx("hr", { className: "dropdown_option_divider" })
1034
- ] }, opt.value);
1035
- }) })
1929
+ label && /* @__PURE__ */ jsx("label", { htmlFor: dropdownId, className: "dropdown_label", children: label }),
1930
+ /* @__PURE__ */ jsx("div", { className: fieldsetClassName, children: /* @__PURE__ */ jsxs(
1931
+ "button",
1932
+ {
1933
+ ref: controlRef,
1934
+ id: dropdownId,
1935
+ type: "button",
1936
+ className: cn("dropdown_control", { is_disabled: disabled }),
1937
+ "aria-haspopup": "listbox",
1938
+ "aria-expanded": isOpen,
1939
+ "aria-controls": `${dropdownId}_listbox`,
1940
+ onClick: () => !disabled && setIsOpen((o) => !o),
1941
+ onKeyDown,
1942
+ disabled,
1943
+ children: [
1944
+ /* @__PURE__ */ jsx("span", { className: currentOption ? "dropdown_value" : "dropdown_placeholder", children: currentOption ? currentOption.label : placeholder }),
1945
+ /* @__PURE__ */ jsx(
1946
+ "span",
1947
+ {
1948
+ className: cn("dropdown_icon", { dropdown_icon_open: isOpen }),
1949
+ "aria-hidden": "true",
1950
+ children: /* @__PURE__ */ jsx(ChevronDown, { size: 20 })
1951
+ }
1952
+ )
1953
+ ]
1954
+ }
1955
+ ) }),
1956
+ isOpen && /* @__PURE__ */ jsx(
1957
+ animated.div,
1958
+ {
1959
+ id: `${dropdownId}_listbox`,
1960
+ role: "listbox",
1961
+ className: listClassName,
1962
+ style: listStyle,
1963
+ children: options.map((opt, i) => {
1964
+ const selected = currentValue === opt.value;
1965
+ const active = i === activeIndex;
1966
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1967
+ /* @__PURE__ */ jsxs(
1968
+ "div",
1969
+ {
1970
+ role: "option",
1971
+ tabIndex: -1,
1972
+ "aria-selected": selected,
1973
+ "aria-disabled": opt.disabled ? true : void 0,
1974
+ className: cn("dropdown_option", {
1975
+ is_selected: selected,
1976
+ is_active: active,
1977
+ is_disabled: opt.disabled
1978
+ }),
1979
+ onMouseEnter: () => !opt.disabled && setActiveIndex(i),
1980
+ onClick: () => {
1981
+ if (opt.disabled) return;
1982
+ setValue(opt.value);
1983
+ setIsOpen(false);
1984
+ },
1985
+ children: [
1986
+ opt.leadingIcon && /* @__PURE__ */ jsx("span", { className: "dropdown_option_icon", children: opt.leadingIcon }),
1987
+ /* @__PURE__ */ jsxs("span", { className: "dropdown_option_content", children: [
1988
+ /* @__PURE__ */ jsx("span", { className: "dropdown_option_label", children: opt.label }),
1989
+ opt.supportingText && /* @__PURE__ */ jsx("span", { className: "dropdown_option_supporting", children: opt.supportingText })
1990
+ ] }),
1991
+ (selected || opt.trailingIcon) && /* @__PURE__ */ jsx("span", { className: "dropdown_option_trailing", children: opt.trailingIcon ?? /* @__PURE__ */ jsx(Check, { size: 16, "aria-hidden": "true" }) })
1992
+ ]
1993
+ }
1994
+ ),
1995
+ opt.showDivider && /* @__PURE__ */ jsx("hr", { className: "dropdown_option_divider" })
1996
+ ] }, opt.value);
1997
+ })
1998
+ }
1999
+ )
1036
2000
  ]
1037
2001
  }
1038
2002
  );
@@ -1059,9 +2023,9 @@ var DatePicker = ({
1059
2023
  minDateSrFormat = "Minimum date: {date}",
1060
2024
  selectableRangeUntilTodaySrText = "Selectable up to today"
1061
2025
  }) => {
1062
- const groupId = React4.useId();
1063
- const constraintId = React4.useId();
1064
- const { todayYear, todayMonth, todayDay } = React4.useMemo(() => {
2026
+ const groupId = React17.useId();
2027
+ const constraintId = React17.useId();
2028
+ const { todayYear, todayMonth, todayDay } = React17.useMemo(() => {
1065
2029
  const now = /* @__PURE__ */ new Date();
1066
2030
  return {
1067
2031
  todayYear: now.getFullYear(),
@@ -1070,7 +2034,7 @@ var DatePicker = ({
1070
2034
  };
1071
2035
  }, []);
1072
2036
  const endYear = endYearProp ?? todayYear + 10;
1073
- const parsed = React4.useMemo(() => {
2037
+ const parsed = React17.useMemo(() => {
1074
2038
  if (!value) return { year: 0, month: 0, day: 0 };
1075
2039
  const [y, m, d] = value.split("-").map(Number);
1076
2040
  return {
@@ -1079,7 +2043,7 @@ var DatePicker = ({
1079
2043
  day: d || 0
1080
2044
  };
1081
2045
  }, [value]);
1082
- const min = React4.useMemo(() => {
2046
+ const min = React17.useMemo(() => {
1083
2047
  if (!minDate) return { year: 0, month: 0, day: 0 };
1084
2048
  const [y, m, d] = minDate.split("-").map(Number);
1085
2049
  return {
@@ -1099,7 +2063,7 @@ var DatePicker = ({
1099
2063
  min.year > 0 && min.month > 0 && year === min.year && month === min.month ? min.day : 1
1100
2064
  )
1101
2065
  );
1102
- const maxDay = React4.useMemo(() => {
2066
+ const maxDay = React17.useMemo(() => {
1103
2067
  if (!year || !month) return 31;
1104
2068
  const daysInMonth = getDaysInMonth(year, month);
1105
2069
  if (selectableRange === "until-today" && year === todayYear && month === todayMonth) {
@@ -1107,28 +2071,28 @@ var DatePicker = ({
1107
2071
  }
1108
2072
  return daysInMonth;
1109
2073
  }, [year, month, selectableRange, todayYear, todayMonth, todayDay]);
1110
- const yearOptions = React4.useMemo(
2074
+ const yearOptions = React17.useMemo(
1111
2075
  () => range(startYear, maxYear).map((y) => ({
1112
2076
  value: String(y),
1113
2077
  label: String(y)
1114
2078
  })),
1115
2079
  [startYear, maxYear]
1116
2080
  );
1117
- const monthOptions = React4.useMemo(
2081
+ const monthOptions = React17.useMemo(
1118
2082
  () => range(minMonth, Math.max(minMonth, maxMonth)).map((m) => ({
1119
2083
  value: String(m),
1120
2084
  label: pad(m)
1121
2085
  })),
1122
2086
  [minMonth, maxMonth]
1123
2087
  );
1124
- const dayOptions = React4.useMemo(
2088
+ const dayOptions = React17.useMemo(
1125
2089
  () => range(minDay, Math.max(minDay, maxDay)).map((d) => ({
1126
2090
  value: String(d),
1127
2091
  label: pad(d)
1128
2092
  })),
1129
2093
  [minDay, maxDay]
1130
2094
  );
1131
- const emit = React4.useCallback(
2095
+ const emit = React17.useCallback(
1132
2096
  (yy, mm, dd) => {
1133
2097
  if (mode === "year-month") {
1134
2098
  onChange(`${yy}-${pad(mm)}`);
@@ -1139,7 +2103,7 @@ var DatePicker = ({
1139
2103
  },
1140
2104
  [mode, onChange]
1141
2105
  );
1142
- const handleYearChange = React4.useCallback(
2106
+ const handleYearChange = React17.useCallback(
1143
2107
  (raw) => {
1144
2108
  if (!raw) return;
1145
2109
  const newYear = Number(raw);
@@ -1156,14 +2120,14 @@ var DatePicker = ({
1156
2120
  },
1157
2121
  [month, day, min.year, min.month, selectableRange, todayYear, todayMonth, emit]
1158
2122
  );
1159
- const handleMonthChange = React4.useCallback(
2123
+ const handleMonthChange = React17.useCallback(
1160
2124
  (raw) => {
1161
2125
  if (!raw || !year) return;
1162
2126
  emit(year, Number(raw), day || void 0);
1163
2127
  },
1164
2128
  [year, day, emit]
1165
2129
  );
1166
- const handleDayChange = React4.useCallback(
2130
+ const handleDayChange = React17.useCallback(
1167
2131
  (raw) => {
1168
2132
  if (!raw || !year || !month) return;
1169
2133
  emit(year, month, Number(raw));
@@ -1238,673 +2202,190 @@ var Divider = ({ weight = "standard", className, ...props }) => {
1238
2202
  const dividerClassName = cn("divider", `divider_weight_${weight}`, className);
1239
2203
  return /* @__PURE__ */ jsx("hr", { className: dividerClassName, ...props });
1240
2204
  };
1241
- var FAB = ({ variant = "primary", icon, className, ...props }) => {
1242
- const fabClassName = cn("fab", `fab_variant_${variant}`, className);
1243
- return /* @__PURE__ */ jsx("button", { className: fabClassName, ...props, children: /* @__PURE__ */ jsx("span", { className: "fab_icon", "aria-hidden": "true", children: icon }) });
1244
- };
1245
2205
  var FileInput = ({
1246
2206
  label = "Choose file",
1247
2207
  onFiles,
1248
2208
  supportingText,
1249
2209
  preview = false,
1250
- className,
1251
- disabled,
1252
- ...props
1253
- }) => {
1254
- const inputId = React4.useId();
1255
- const helperId = React4.useId();
1256
- const [previewUrls, setPreviewUrls] = React4.useState([]);
1257
- const handleChange = (e) => {
1258
- const files = e.currentTarget.files;
1259
- onFiles?.(files);
1260
- if (preview && files) {
1261
- for (const url of previewUrls) {
1262
- URL.revokeObjectURL(url);
1263
- }
1264
- const urls = [];
1265
- for (let i = 0; i < files.length; i++) {
1266
- if (files[i].type.startsWith("image/")) {
1267
- urls.push(URL.createObjectURL(files[i]));
1268
- }
1269
- }
1270
- setPreviewUrls(urls);
1271
- } else {
1272
- for (const url of previewUrls) {
1273
- URL.revokeObjectURL(url);
1274
- }
1275
- setPreviewUrls([]);
1276
- }
1277
- };
1278
- React4.useEffect(() => {
1279
- return () => {
1280
- for (const url of previewUrls) {
1281
- URL.revokeObjectURL(url);
1282
- }
1283
- };
1284
- }, [previewUrls]);
1285
- const rootClassName = cn("file_input", disabled && "file_input_disabled", className);
1286
- return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
1287
- /* @__PURE__ */ jsx(
1288
- "input",
1289
- {
1290
- id: inputId,
1291
- type: "file",
1292
- className: "file_input_control",
1293
- disabled,
1294
- "aria-describedby": supportingText ? helperId : void 0,
1295
- onChange: handleChange,
1296
- ...props
1297
- }
1298
- ),
1299
- /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label }),
1300
- supportingText && /* @__PURE__ */ jsx("span", { id: helperId, className: "file_input_helper", children: supportingText }),
1301
- previewUrls.length > 0 && /* @__PURE__ */ jsx("div", { className: "file_input_preview", children: previewUrls.map((url) => (
1302
- // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
1303
- /* @__PURE__ */ jsx("img", { src: url, alt: "", className: "file_input_preview_img" }, url)
1304
- )) })
1305
- ] });
1306
- };
1307
-
1308
- // src/ui/icon/icon-data.ts
1309
- var ICON_DATA = {
1310
- add_a_photo: {
1311
- 300: {
1312
- noFill: "M440-437.77ZM117.69-140q-23.53 0-40.61-17.08T60-197.69v-479.54q0-23 17.08-40.35 17.08-17.34 40.61-17.34h137.39L328.46-820h248.62v45.39H349.54l-73.39 85.07H117.69q-5.38 0-8.84 3.66-3.46 3.65-3.46 8.65v479.54q0 5.38 3.46 8.84t8.84 3.46h644.62q5.38 0 8.84-3.46t3.46-8.84v-379.39H820v379.39q0 23.53-17.35 40.61Q785.31-140 762.31-140H117.69Zm656.92-550.15v-84.46h-84.46V-820h84.46v-85.08H820V-820h85.08v45.39H820v84.46h-45.39ZM439.69-280.46q66.92 0 112.27-45.35 45.35-45.34 45.35-112.27 0-66.92-45.35-111.96-45.35-45.04-112.27-45.04-66.92 0-111.96 45.04-45.04 45.04-45.04 111.96 0 66.93 45.04 112.27 45.04 45.35 111.96 45.35Zm0-45.39q-48.07 0-79.84-32.07-31.77-32.08-31.77-80.16 0-48.07 31.77-79.84 31.77-31.77 79.84-31.77 48.08 0 80.16 31.77 32.07 31.77 32.07 79.84 0 48.08-32.07 80.16-32.08 32.07-80.16 32.07Z",
1313
- fill: "M774.61-690.15v-84.46h-84.46V-820h84.46v-85.08H820V-820h85.08v45.39H820v84.46h-45.39ZM440.19-280.46q66.42 0 111.77-45.35 45.35-45.34 45.35-111.77 0-67.42-45.35-112.46-45.35-45.04-111.77-45.04-67.42 0-112.46 45.04-45.04 45.04-45.04 112.46 0 66.43 45.04 111.77 45.04 45.35 112.46 45.35Zm0-45.39q-48.57 0-80.34-32.07-31.77-32.08-31.77-79.66 0-48.57 31.77-80.34 31.77-31.77 80.34-31.77 47.58 0 79.66 31.77 32.07 31.77 32.07 80.34 0 47.58-32.07 79.66-32.08 32.07-79.66 32.07ZM117.69-140q-23.53 0-40.61-17.08T60-197.69v-479.54q0-23 17.08-40.35 17.08-17.34 40.61-17.34h137.39L328.46-820h288.62v118.46h84.46v84.46H820v419.39q0 23.53-17.35 40.61Q785.31-140 762.31-140H117.69Z"
1314
- },
1315
- 400: {
1316
- noFill: "M440-437ZM100-120q-24 0-42-18t-18-42v-513q0-23 18-41.5t42-18.5h147l73-87h274v60H348l-73 87H100v513h680v-414h60v414q0 24-18.5 42T780-120H100Zm680-574v-86h-86v-60h86v-87h60v87h87v60h-87v86h-60ZM439.5-267q72.5 0 121.5-49t49-121.5q0-72.5-49-121T439.5-607q-72.5 0-121 48.5t-48.5 121q0 72.5 48.5 121.5t121 49Zm0-60q-47.5 0-78.5-31.5t-31-79q0-47.5 31-78.5t78.5-31q47.5 0 79 31t31.5 78.5q0 47.5-31.5 79t-79 31.5Z",
1317
- fill: "M780-694v-86h-86v-60h86v-87h60v87h87v60h-87v86h-60ZM440-267q72 0 121-49t49-121q0-73-49-121.5T440-607q-73 0-121.5 48.5T270-437q0 72 48.5 121T440-267Zm0-60q-48 0-79-31.5T330-437q0-48 31-79t79-31q47 0 78.5 31t31.5 79q0 47-31.5 78.5T440-327ZM100-120q-24 0-42-18t-18-42v-513q0-23 18-41.5t42-18.5h147l73-87h314v120h86v86h120v454q0 24-18.5 42T780-120H100Z"
1318
- }
1319
- },
1320
- add_circle: {
1321
- 300: {
1322
- noFill: "M459.54-290h45.38v-164.46H670v-45.39H504.92V-670h-45.38v170.15H290v45.39h169.54V-290Zm20.79 190q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Zm.17-45.39q139.19 0 236.65-97.76 97.46-97.77 97.46-237.35 0-139.19-97.27-236.65-97.27-97.46-237.34-97.46-139.08 0-236.85 97.27-97.76 97.27-97.76 237.34 0 139.08 97.76 236.85 97.77 97.76 237.35 97.76ZM480-480Z",
1323
- fill: "M459.54-290h45.38v-164.46H670v-45.39H504.92V-670h-45.38v170.15H290v45.39h169.54V-290Zm20.79 190q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Z"
1324
- },
1325
- 400: {
1326
- noFill: "M453-280h60v-166h167v-60H513v-174h-60v174H280v60h173v166Zm27.27 200q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z",
1327
- fill: "M453-280h60v-166h167v-60H513v-174h-60v174H280v60h173v166Zm27.27 200q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Z"
1328
- }
1329
- },
1330
- add_lg: {
1331
- 300: {
1332
- noFill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z",
1333
- fill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z"
1334
- },
1335
- 400: {
1336
- noFill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z",
1337
- fill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z"
1338
- }
1339
- },
1340
- add_md: {
1341
- 300: {
1342
- noFill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z",
1343
- fill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z"
1344
- },
1345
- 400: {
1346
- noFill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z",
1347
- fill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z"
1348
- }
1349
- },
1350
- apartment: {
1351
- 300: {
1352
- noFill: "M130-136.92v-536.54h163.85v-163.46h372.69v327.3H830v372.7H539.54v-163.85H420.46v163.85H130Zm45.38-45.39h118.47v-118.46H175.38v118.46Zm0-163.84h118.47v-118.08H175.38v118.08Zm0-163.47h118.47v-118.46H175.38v118.46Zm163.85 163.47h118.08v-118.08H339.23v118.08Zm0-163.47h118.08v-118.46H339.23v118.46Zm0-163.84h118.08v-118.08H339.23v118.08Zm163.46 327.31h118.46v-118.08H502.69v118.08Zm0-163.47h118.46v-118.46H502.69v118.46Zm0-163.84h118.46v-118.08H502.69v118.08Zm163.85 491.15h118.08v-118.46H666.54v118.46Zm0-163.84h118.08v-118.08H666.54v118.08Z",
1353
- fill: "M130-136.92v-536.54h163.85v-163.46h372.69v327.3H830v372.7H539.54v-163.85H420.46v163.85H130Zm45.38-45.39h118.47v-118.46H175.38v118.46Zm0-163.84h118.47v-118.08H175.38v118.08Zm0-163.47h118.47v-118.46H175.38v118.46Zm163.85 163.47h118.08v-118.08H339.23v118.08Zm0-163.47h118.08v-118.46H339.23v118.46Zm0-163.84h118.08v-118.08H339.23v118.08Zm163.46 327.31h118.46v-118.08H502.69v118.08Zm0-163.47h118.46v-118.46H502.69v118.46Zm0-163.84h118.46v-118.08H502.69v118.08Zm163.85 491.15h118.08v-118.46H666.54v118.46Zm0-163.84h118.08v-118.08H666.54v118.08Z"
1354
- },
1355
- 400: {
1356
- noFill: "M120-120v-555h165v-165h390v330h165v390H533v-165H427v165H120Zm60-60h105v-105H180v105Zm0-165h105v-105H180v105Zm0-165h105v-105H180v105Zm165 165h105v-105H345v105Zm0-165h105v-105H345v105Zm0-165h105v-105H345v105Zm165 330h105v-105H510v105Zm0-165h105v-105H510v105Zm0-165h105v-105H510v105Zm165 495h105v-105H675v105Zm0-165h105v-105H675v105Z",
1357
- fill: "M120-120v-555h165v-165h390v330h165v390H533v-165H427v165H120Zm60-60h105v-105H180v105Zm0-165h105v-105H180v105Zm0-165h105v-105H180v105Zm165 165h105v-105H345v105Zm0-165h105v-105H345v105Zm0-165h105v-105H345v105Zm165 330h105v-105H510v105Zm0-165h105v-105H510v105Zm0-165h105v-105H510v105Zm165 495h105v-105H675v105Zm0-165h105v-105H675v105Z"
1358
- }
1359
- },
1360
- arrow_back: {
1361
- 300: {
1362
- noFill: "M266.31-457.31 512-212l-32 32-300-300 300-300 32 32-245.69 245.31H780v45.38H266.31Z",
1363
- fill: "M266.31-457.31 512-212l-32 32-300-300 300-300 32 32-245.69 245.31H780v45.38H266.31Z"
1364
- },
1365
- 400: {
1366
- noFill: "m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60H274Z",
1367
- fill: "m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60H274Z"
1368
- }
1369
- },
1370
- calendar_today: {
1371
- 300: {
1372
- noFill: "M197.69-100q-23.53 0-40.61-17.08T140-157.69v-579.23q0-23.53 17.08-40.61t40.61-17.08h73.85v-70h50.38v70h317.69v-70h49.23v70h73.47q23.53 0 40.61 17.08T820-736.92v579.23q0 23.53-17.08 40.61T762.31-100H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46V-555H185.39v397.31q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm-12.3-454.99h589.22v-136.54q0-4.62-3.84-8.46-3.85-3.85-8.46-3.85H197.69q-4.61 0-8.46 3.85-3.84 3.84-3.84 8.46v136.54Zm0 0v-148.85 148.85Z",
1373
- fill: "M197.69-100q-23.53 0-40.61-17.08T140-157.69v-579.23q0-23.53 17.08-40.61t40.61-17.08h73.85v-70h50.38v70h317.69v-70h49.23v70h73.47q23.53 0 40.61 17.08T820-736.92v579.23q0 23.53-17.08 40.61T762.31-100H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46V-555H185.39v397.31q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Z"
1374
- },
1375
- 400: {
1376
- noFill: "M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18H180Zm0-60h600v-430H180v430Zm0-490h600v-130H180v130Zm0 0v-130 130Z",
1377
- fill: "M180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18H180Zm0-60h600v-430H180v430Z"
1378
- }
1379
- },
1380
- check: {
1381
- 300: {
1382
- noFill: "M379.15-258.31 168.62-468.85l32.61-32.23 177.92 177.93 379-379.39 32.62 32.62-411.62 411.61Z",
1383
- fill: "M379.15-258.31 168.62-468.85l32.61-32.23 177.92 177.93 379-379.39 32.62 32.62-411.62 411.61Z"
1384
- },
1385
- 400: {
1386
- noFill: "M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z",
1387
- fill: "M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z"
1388
- }
1389
- },
1390
- check_box: {
1391
- 300: {
1392
- noFill: "m420.54-332.54 274-274-32.62-32.61-241.38 241.38-117.85-117.46-32.61 32.61 150.46 150.08ZM197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-564.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm-12.3-589.22v589.22-589.22Z",
1393
- fill: "m420.54-332.54 274-274.61-32.62-32.62-241.38 242-117.85-117.46-32.61 32.61 150.46 150.08ZM197.69-140q-23.61 0-40.65-17.04T140-197.69v-564.62q0-23.61 17.04-40.65T197.69-820h564.62q23.61 0 40.65 17.04T820-762.31v564.62q0 23.61-17.04 40.65T762.31-140H197.69Z"
1394
- },
1395
- 400: {
1396
- noFill: "m419-321 289-289-43-43-246 246-119-119-43 43 162 162ZM180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Zm0-60h600v-600H180v600Zm0-600v600-600Z",
1397
- fill: "m419-321 289-290-43-43-246 247-119-119-43 43 162 162ZM180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z"
1398
- }
1399
- },
1400
- check_circle: {
1401
- 300: {
1402
- noFill: "M421-311.46 690.54-581l-34.85-34.23L421-380.15 302.54-498.61l-33.85 34.23L421-311.46ZM480.07-100q-78.22 0-147.4-29.92t-120.99-81.71q-51.81-51.79-81.75-120.94Q100-401.71 100-479.93q0-78.84 29.92-148.21t81.71-120.68q51.79-51.31 120.94-81.25Q401.71-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.22-29.92 147.4t-81.21 120.99q-51.29 51.81-120.63 81.75Q558.9-100 480.07-100Zm-.07-45.39q139.69 0 237.15-97.76 97.46-97.77 97.46-236.85 0-139.69-97.46-237.15-97.46-97.46-237.15-97.46-139.08 0-236.85 97.46-97.76 97.46-97.76 237.15 0 139.08 97.76 236.85 97.77 97.76 236.85 97.76ZM480-480Z",
1403
- fill: "M421-311.46 690.54-581l-34.85-34.23L421-380.15 302.54-498.61l-33.85 34.23L421-311.46ZM480.07-100q-78.22 0-147.4-29.92t-120.99-81.71q-51.81-51.79-81.75-120.94Q100-401.71 100-479.93q0-78.84 29.92-148.21t81.71-120.68q51.79-51.31 120.94-81.25Q401.71-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.22-29.92 147.4t-81.21 120.99q-51.29 51.81-120.63 81.75Q558.9-100 480.07-100Z"
1404
- },
1405
- 400: {
1406
- noFill: "m421-298 283-283-46-45-237 237-120-120-45 45 165 166Zm59 218q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Zm0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140Zm0-340Z",
1407
- fill: "m421-298 283-283-46-45-237 237-120-120-45 45 165 166Zm59 218q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z"
1408
- }
1409
- },
1410
- close: {
1411
- 300: {
1412
- noFill: "m250.92-218.92-32-32L448-480 218.92-709.08l32-32L480-512l229.08-229.08 32 32L512-480l229.08 229.08-32 32L480-448 250.92-218.92Z",
1413
- fill: "m250.92-218.92-32-32L448-480 218.92-709.08l32-32L480-512l229.08-229.08 32 32L512-480l229.08 229.08-32 32L480-448 250.92-218.92Z"
1414
- },
1415
- 400: {
1416
- noFill: "m249-207-42-42 231-231-231-231 42-42 231 231 231-231 42 42-231 231 231 231-42 42-231-231-231 231Z",
1417
- fill: "m249-207-42-42 231-231-231-231 42-42 231 231 231-231 42 42-231 231 231 231-42 42-231-231-231 231Z"
1418
- }
1419
- },
1420
- close_small: {
1421
- 300: {
1422
- noFill: "m302.69-270.31-32.38-32.38L447.62-480 270.31-656.31l32.38-32.38L480-511.38l176.31-177.31 32.38 32.38L511.38-480l177.31 177.31-32.38 32.38L480-447.62 302.69-270.31Z",
1423
- fill: "m325.2-292.54-32.66-32.38L447.34-480l-154.8-154.46 32.66-32L480-511.77l154.18-154.69 32.28 32L511.66-480l154.8 155.08-32.28 32.38L480-447.23 325.2-292.54Z"
1424
- },
1425
- 400: {
1426
- noFill: "m300-258-42-42 180-180-180-179 42-42 180 180 179-180 42 42-180 179 180 180-42 42-179-180-180 180Z",
1427
- fill: "M328.28-286 286-328l151.72-152L286-631l42.28-42L480-521.39 630.72-673 673-631 521.28-480 673-328l-42.28 42L480-437.61 328.28-286Z"
1428
- }
1429
- },
1430
- cloud_download: {
1431
- 300: {
1432
- noFill: "M253.31-180q-80.88 0-137.09-56.56Q60-293.12 60-373.69q0-74.39 49.54-129.62 49.54-55.23 122.46-62.23 11.92-81.69 77.58-145.04 65.65-63.34 148.34-63.34 18.23 0 31.81 10.42 13.58 10.42 13.58 27.65v304.77l87.23-87.61 32.61 33-142.53 142.15-142.16-142.15 32.62-33 86.84 87.61V-732q-82.92 6.38-135.19 70.69-52.27 64.31-52.27 139.69h-19.38q-60.05 0-102.87 42.62-42.82 42.62-42.82 105.69 0 63.08 43.84 105.5 43.85 42.42 104.18 42.42h494.51q44.23 0 75.46-31.29 31.23-31.29 31.23-75.27 0-43.97-31.23-75.2-31.23-31.23-75.59-31.23h-62.1v-83.24q0-62.99-29.92-110.38-29.92-47.38-77.69-75.61v-50q70.61 28.61 111.8 93.3 41.2 64.7 41.2 142.69v37.85h12.3q65.47-2.38 111.04 41Q900-399.38 900-332.08q0 62.46-44.81 107.27Q810.38-180 747.92-180H253.31ZM480-500.46Z",
1433
- fill: "M253.31-180q-80.69 0-137-56.5T60-373.69q0-73.39 49.23-129.12 49.23-55.73 122.77-62.73 14.54-88.46 77.62-147.11 63.07-58.66 148.3-65.5v347.07l-86.84-87.61-32.62 33 142.16 142.15 142.53-142.15-32.61-33-87.23 87.61v-347.07q96.77 10.23 162.27 83.27 65.5 73.03 65.5 173.26v37.85h12.3q65.47-2.38 111.04 41.31Q900-398.77 900-332.08q0 62.46-44.81 107.27Q810.38-180 747.92-180H253.31Z"
1434
- },
1435
- 400: {
1436
- noFill: "M251-160q-88 0-149.5-61.5T40-371q0-79 50.5-137.5T217-579q15-84 82-148.5T451-792q24 0 42 13.5t18 36.5v294l83-83 43 43-156 156-156-156 43-43 83 83v-289q-86 11-135 75.5T267-522h-19q-61 0-104.5 43T100-371q0 65 45 108t106 43h500q45 0 77-32t32-77q0-45-32-77t-77-32h-63v-84q0-68-33-117.5T570-718v-65q81 29 129.5 101T748-522v24q72-2 122 46t50 123q0 69-50 119t-119 50H251Zm229-347Z",
1437
- fill: "M251-160q-88 0-149.5-61.5T40-371q0-78 50-137t127-71q18-90 83-150t151-68v349l-83-83-43 43 156 156 156-156-43-43-83 83v-349q101 11 169 90t68 185v24q72-2 122 46.5T920-329q0 69-50 119t-119 50H251Z"
1438
- }
1439
- },
1440
- cloud_upload: {
1441
- 300: {
1442
- noFill: "M252.69-180q-79.46 0-136.07-56.72Q60-293.44 60-373.08q0-74.15 49.69-129.8 49.7-55.66 122.31-62.66 15.39-93.15 85.73-153.5 70.35-60.34 163.89-60.34 105.79 0 177.62 75.67 71.84 75.68 71.84 182.09v37.85h12.3q65.47-2.38 111.04 41.31Q900-398.77 900-332.08q0 62.46-44.42 107.27Q811.15-180 748.69-180H515q-23.53 0-40.61-17.08t-17.08-40.61v-257.23l-88 88.38-32.62-32.23L480-582.08l143.31 143.31-32.62 32.23-88-88.38v257.23q0 4.61 3.85 8.46 3.84 3.84 8.46 3.84h232.92q44.23 0 75.46-31.29 31.23-31.29 31.23-75.27 0-43.97-31.23-75.2-31.23-31.23-75.59-31.23h-62.1v-83.24q0-87.08-59.92-149.73Q565.85-734 478.58-734t-147.7 62.65q-60.42 62.65-60.42 149.73h-20.15q-59.69 0-102.31 42.93-42.61 42.92-42.61 105.57 0 60.65 43.14 104.19t104.16 43.54h129.23V-180H252.69ZM480-457.31Z",
1443
- fill: "M457.31-180h-204q-80.69 0-137-56.5T60-373.69q0-73.39 49.23-129.12 49.23-55.73 122.77-62.73 15.39-93.15 85.73-153.5 70.35-60.34 163.89-60.34 104.69 0 177.07 75.73 72.39 75.73 72.39 182.03v37.85h12.3q65.47-2.38 111.04 41.31Q900-398.77 900-332.08q0 62.46-44.81 107.27Q810.38-180 747.92-180H502.69v-314.92l88 88.38 32.62-32.23L480-582.08 336.69-438.77l32.62 32.23 88-88.38V-180Z"
1444
- },
1445
- 400: {
1446
- noFill: "M250-160q-86 0-148-62T40-370q0-78 49.5-137.5T217-579q20-97 94-158.5T482-799q113 0 189.5 81.5T748-522v24q72-2 122 46.5T920-329q0 69-50 119t-119 50H510q-24 0-42-18t-18-42v-258l-83 83-43-43 156-156 156 156-43 43-83-83v258h241q45 0 77-32t32-77q0-45-32-77t-77-32h-63v-84q0-89-60.5-153T478-739q-89 0-150 64t-61 153h-19q-62 0-105 43.5T100-371q0 62 43.93 106.5T250-220h140v60H250Zm230-290Z",
1447
- fill: "M450-160H251q-88 0-149.5-61.5T40-371q0-78 50-137t127-71q20-97 94-158.5T482-799q112 0 189 81.5T748-522v24q72-2 122 46.5T920-329q0 69-50 119t-119 50H510v-318l83 83 43-43-156-156-156 156 43 43 83-83v318Z"
1448
- }
1449
- },
1450
- content_copy: {
1451
- 300: {
1452
- noFill: "M318.46-230.77q-23.53 0-40.61-17.08t-17.08-40.61v-513.85q0-23.53 17.08-40.61T318.46-860h393.85q23.52 0 40.61 17.08Q770-825.84 770-802.31v513.85q0 23.53-17.08 40.61-17.09 17.08-40.61 17.08H318.46Zm0-45.39h393.85q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-513.85q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H318.46q-4.61 0-8.46 3.84-3.85 3.85-3.85 8.46v513.85q0 4.61 3.85 8.46 3.85 3.84 8.46 3.84ZM207.69-120q-23.52 0-40.61-17.08Q150-154.17 150-177.7v-559.22h45.39v559.22q0 4.62 3.84 8.47 3.85 3.84 8.46 3.84h439.23V-120H207.69Zm98.46-156.16v-538.45 538.45Z",
1453
- fill: "M318.46-230.77q-23.53 0-40.61-17.08t-17.08-40.61v-513.85q0-23.53 17.08-40.61T318.46-860h393.85q23.52 0 40.61 17.08Q770-825.84 770-802.31v513.85q0 23.53-17.08 40.61-17.09 17.08-40.61 17.08H318.46ZM207.69-120q-23.52 0-40.61-17.08Q150-154.17 150-177.7v-559.22h45.39v559.22q0 4.62 3.84 8.47 3.85 3.84 8.46 3.84h439.23V-120H207.69Z"
1454
- },
1455
- 400: {
1456
- noFill: "M300-200q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h440q24 0 42 18t18 42v560q0 24-18 42t-42 18H300Zm0-60h440v-560H300v560ZM180-80q-24 0-42-18t-18-42v-620h60v620h500v60H180Zm120-180v-560 560Z",
1457
- fill: "M300-200q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h440q24 0 42 18t18 42v560q0 24-18 42t-42 18H300ZM180-80q-24 0-42-18t-18-42v-620h60v620h500v60H180Z"
1458
- }
1459
- },
1460
- delete_forever: {
1461
- 300: {
1462
- noFill: "M365.23-313.23 480-429.62l115.77 116.39 35.46-36.08-114.77-116.38 114.77-116.77-35.46-36.08L480-502.15 365.23-618.54l-36.46 36.08 115.77 116.77-115.77 116.38 36.46 36.08ZM278.31-140q-23.53 0-40.61-17.08t-17.08-40.61v-544.23H180v-45.39h171.08v-28.07h257.84v28.07H780v45.39h-40.62v544.23q0 23.53-17.08 40.61T681.69-140H278.31ZM694-741.92H266v544.23q0 4.61 3.85 8.46 3.84 3.84 8.46 3.84h403.38q4.62 0 8.46-3.84 3.85-3.85 3.85-8.46v-544.23Zm-428 0v556.53-556.53Z",
1463
- fill: "M365.23-313.23 480-429.62l115.77 116.39 35.46-36.08-114.77-116.38 114.77-116.77-35.46-36.08L480-502.15 365.23-618.54l-36.46 36.08 115.77 116.77-115.77 116.38 36.46 36.08ZM278.31-140q-23.62 0-40.65-17.04-17.04-17.04-17.04-40.65v-544.23H180v-45.39h171.08v-28.07h257.84v28.07H780v45.39h-40.62v544.23q0 23.61-17.04 40.65Q705.31-140 681.69-140H278.31Z"
1464
- },
1465
- 400: {
1466
- noFill: "m361-299 119-121 120 121 47-48-119-121 119-121-47-48-120 121-119-121-48 48 120 121-120 121 48 48ZM261-120q-24 0-42-18t-18-42v-570h-41v-60h188v-30h264v30h188v60h-41v570q0 24-18 42t-42 18H261Zm438-630H261v570h438v-570Zm-438 0v570-570Z",
1467
- fill: "m361-299 119-121 120 121 47-48-119-121 119-121-47-48-120 121-119-121-48 48 120 121-120 121 48 48ZM261-120q-24 0-42-18t-18-42v-570h-41v-60h188v-30h264v30h188v60h-41v570q0 24-18 42t-42 18H261Z"
1468
- }
1469
- },
1470
- edit: {
1471
- 300: {
1472
- noFill: "M185.39-185.39h40.92l468.54-467.92-40.93-40.92-468.53 467.92v40.92ZM140-140v-104.54l561.92-562.07q6.23-5.63 14.66-9.2 8.42-3.57 17.6-3.57 8.57 0 16.81 3.34 8.24 3.35 15.32 9.43l40.92 40.92q6.69 6.69 9.73 15.16 3.04 8.46 3.04 16.93 0 8.6-3.51 17.33-3.5 8.73-9.26 14.96L244.54-140H140Zm634.38-594.31-39.46-39.07 39.46 39.07Zm-99.75 60.68-20.71-20.6 40.93 40.92-20.22-20.32Z",
1473
- fill: "M140-140v-104.54l561.92-562.07q6.23-5.63 14.66-9.2 8.42-3.57 17.6-3.57 8.57 0 16.81 3.34 8.24 3.35 15.32 9.43l40.92 40.92q6.69 6.69 9.73 15.16 3.04 8.46 3.04 16.93 0 8.6-3.51 17.33-3.5 8.73-9.26 14.96L244.54-140H140Zm587.85-548.15L774-733.92l-39.08-39.46-46.15 46.15 39.08 39.08Z"
1474
- },
1475
- 400: {
1476
- noFill: "M180-180h44l472-471-44-44-472 471v44Zm-60 60v-128l575-574q8-8 19-12.5t23-4.5q11 0 22 4.5t20 12.5l44 44q9 9 13 20t4 22q0 11-4.5 22.5T823-694L248-120H120Zm659-617-41-41 41 41Zm-105 64-22-22 44 44-22-22Z",
1477
- fill: "M120-120v-128l575-574q8-8 19-12.5t23-4.5q11 0 22 4.5t20 12.5l44 44q9 9 13 20t4 22q0 11-4.5 22.5T823-694L248-120H120Zm619-577 40-40-41-41-40 40 41 41Z"
1478
- }
1479
- },
1480
- edit_note: {
1481
- 300: {
1482
- noFill: "M180-407.31v-45.38h294.62v45.38H180Zm0-163.84v-45.39h461.92v45.39H180Zm0-163.46V-780h461.92v45.39H180ZM524.62-180v-105.69l217.15-216.16q7.46-7.46 16.11-10.5 8.65-3.03 17.3-3.03 9.43 0 18.25 3.53 8.82 3.54 16.03 10.62l37 37.38q7.08 7.47 10.31 16.16Q860-439 860-430.31t-3.73 17.69q-3.73 9-10.34 16.46L630.31-180H524.62Zm287.69-250.31-37-37.38 37 37.38Zm-240 202.62h38l129.84-130.47-18.38-19-18.62-18.76-130.84 130.23v38Zm149.46-149.47-18.62-18.76 37 37.76-18.38-19Z",
1483
- fill: "M180-407.31v-45.38h294.62v45.38H180Zm0-163.84v-45.39h461.92v45.39H180Zm0-163.46V-780h461.92v45.39H180ZM524.62-180v-105.69l217.15-216.16q7.46-7.07 16.11-10.3 8.65-3.23 17.3-3.23 9.43 0 18.25 3.53 8.82 3.54 16.03 10.62l37 37.38q7.08 7.47 10.31 16.16Q860-439 860-430.31t-3.54 17.69q-3.54 9-10.53 16.46L630.31-180H524.62Zm250.69-211.69 37-38.62-37-37.38-38 38 38 38Z"
1484
- },
1485
- 400: {
1486
- noFill: "M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z",
1487
- fill: "M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm263-224 37-39-37-37-38 38 38 38Z"
1488
- }
1489
- },
1490
- error: {
1491
- 300: {
1492
- noFill: "M499.46-298.52q7.77-7.75 7.77-19.46t-7.75-19.48q-7.75-7.77-19.46-7.77t-19.48 7.75q-7.77 7.75-7.77 19.46t7.75 19.48q7.75 7.77 19.46 7.77t19.48-7.75Zm-39.92-133.33h45.38v-249.53h-45.38v249.53ZM480.33-100q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Zm.17-45.39q139.19 0 236.65-97.76 97.46-97.77 97.46-237.35 0-139.19-97.27-236.65-97.27-97.46-237.34-97.46-139.08 0-236.85 97.27-97.76 97.27-97.76 237.34 0 139.08 97.76 236.85 97.77 97.76 237.35 97.76ZM480-480Z",
1493
- fill: "M499.46-298.52q7.77-7.75 7.77-19.46t-7.75-19.48q-7.75-7.77-19.46-7.77t-19.48 7.75q-7.77 7.75-7.77 19.46t7.75 19.48q7.75 7.77 19.46 7.77t19.48-7.75Zm-39.92-133.33h45.38v-249.53h-45.38v249.53ZM480.33-100q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Z"
1494
- },
1495
- 400: {
1496
- noFill: "M503.5-289.48q9.5-9.48 9.5-23.5t-9.48-23.52q-9.48-9.5-23.5-9.5t-23.52 9.48q-9.5 9.48-9.5 23.5t9.48 23.52q9.48 9.5 23.5 9.5t23.52-9.48ZM453-433h60v-253h-60v253Zm27.27 353q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z",
1497
- fill: "M503.5-289.48q9.5-9.48 9.5-23.5t-9.48-23.52q-9.48-9.5-23.5-9.5t-23.52 9.48q-9.5 9.48-9.5 23.5t9.48 23.52q9.48 9.5 23.5 9.5t23.52-9.48ZM453-433h60v-253h-60v253Zm27.27 353q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Z"
1498
- }
1499
- },
1500
- event: {
1501
- 300: {
1502
- noFill: "M536.08-251.69q-26.08-26.3-26.08-64 0-37.69 26.3-63.77 26.31-26.08 64-26.08 37.7 0 63.78 26.31 26.07 26.3 26.07 64 0 37.69-26.3 63.77-26.3 26.07-64 26.07t-63.77-26.3ZM197.69-100q-23.53 0-40.61-17.08T140-157.69v-579.23q0-23.53 17.08-40.61t40.61-17.08h73.85v-70h50.38v70h317.69v-70h49.23v70h73.47q23.53 0 40.61 17.08T820-736.92v579.23q0 23.53-17.08 40.61T762.31-100H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46V-555H185.39v397.31q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm-12.3-454.99h589.22v-136.54q0-4.62-3.84-8.46-3.85-3.85-8.46-3.85H197.69q-4.61 0-8.46 3.85-3.84 3.84-3.84 8.46v136.54Zm0 0v-148.85 148.85Z",
1503
- fill: "M536.08-251.69q-26.08-26.3-26.08-64 0-37.69 26.3-63.77 26.31-26.08 64-26.08 37.7 0 63.78 26.31 26.07 26.3 26.07 64 0 37.69-26.3 63.77-26.3 26.07-64 26.07t-63.77-26.3ZM197.69-100q-23.53 0-40.61-17.08T140-157.69v-579.23q0-23.53 17.08-40.61t40.61-17.08h73.85v-70h50.38v70h317.69v-70h49.23v70h73.47q23.53 0 40.61 17.08T820-736.92v579.23q0 23.53-17.08 40.61T762.31-100H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46V-555H185.39v397.31q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Z"
1504
- },
1505
- 400: {
1506
- noFill: "M528-248.18q-28-28.19-28-69Q500-358 528.18-386q28.19-28 69-28Q638-414 666-385.82q28 28.19 28 69Q694-276 665.82-248q-28.19 28-69 28Q556-220 528-248.18ZM180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18H180Zm0-60h600v-430H180v430Zm0-490h600v-130H180v130Zm0 0v-130 130Z",
1507
- fill: "M528-248.18q-28-28.19-28-69Q500-358 528.18-386q28.19-28 69-28Q638-414 666-385.82q28 28.19 28 69Q694-276 665.82-248q-28.19 28-69 28Q556-220 528-248.18ZM180-80q-24 0-42-18t-18-42v-620q0-24 18-42t42-18h65v-60h65v60h340v-60h65v60h65q24 0 42 18t18 42v620q0 24-18 42t-42 18H180Zm0-60h600v-430H180v430Z"
1508
- }
1509
- },
1510
- fiber_manual_record: {
1511
- 300: {
1512
- noFill: "M478.38-478.38ZM295.73-295.73Q220-371.46 220-480t75.73-184.27Q371.46-740 480-740t184.27 75.73Q740-588.54 740-480t-75.73 184.27Q588.54-220 480-220t-184.27-75.73Zm336.42-32.06q62.46-62.41 62.46-152.16 0-89.74-62.4-152.2-62.41-62.46-152.16-62.46-89.74 0-152.2 62.4-62.46 62.41-62.46 152.16 0 89.74 62.4 152.2 62.41 62.46 152.16 62.46 89.74 0 152.2-62.4Z",
1513
- fill: "M296.54-296.47Q220-372.93 220-479.93q0-106.99 76.47-183.53Q372.93-740 479.93-740q106.99 0 183.53 76.47Q740-587.07 740-480.07q0 106.99-76.47 183.53Q587.07-220 480.07-220q-106.99 0-183.53-76.47Z"
1514
- },
1515
- 400: {
1516
- noFill: "M478-478ZM281.5-281.5Q200-363 200-480t81.5-198.5Q363-760 480-760t198.5 81.5Q760-597 760-480t-81.5 198.5Q597-200 480-200t-198.5-81.5ZM636-324q64-64 64-156t-64-156q-64-64-156-64t-156 64q-64 64-64 156t64 156q64 64 156 64t156-64Z",
1517
- fill: "M282.5-282.5Q200-365 200-480t82.5-197.5Q365-760 480-760t197.5 82.5Q760-595 760-480t-82.5 197.5Q595-200 480-200t-197.5-82.5Z"
1518
- }
1519
- },
1520
- forward_5: {
1521
- 300: {
1522
- noFill: "M347.39-126.46q-61.85-26.46-108.16-72.77-46.31-46.31-72.77-108.13Q140-369.19 140-439.98t26.46-132.63q26.46-61.85 72.77-108.16 46.31-46.31 108.14-72.77Q409.2-780 480-780h21.77l-76.08-76.08 31-30.99 128.15 127.76-127.38 127.77-31-30.61 72.08-72.46H480q-122.75 0-208.68 85.92t-85.93 208.65q0 122.73 85.92 208.69t208.65 85.96q122.73 0 208.69-85.93T774.61-440H820q0 70.8-26.46 132.63t-72.77 108.14q-46.31 46.31-108.13 72.77Q550.81-100 480.02-100t-132.63-26.46Zm38.76-192.39v-40.38h125.08v-60.23H386.15v-142.31H551v39.39H426.54v60.84h95.08q12.03 0 20.71 8.79 8.67 8.78 8.67 20.98v83.54q0 12.04-8.67 20.71-8.68 8.67-20.71 8.67H386.15Z",
1523
- fill: "M347.39-126.46q-61.85-26.46-108.16-72.77-46.31-46.31-72.77-108.13Q140-369.19 140-439.98t26.46-132.63q26.46-61.85 72.77-108.16 46.31-46.31 108.14-72.77Q409.2-780 480-780h21.77l-76.08-76.08 31-30.99 128.15 127.76-127.38 127.77-31-30.61 72.08-72.46H480q-122.75 0-208.68 85.92t-85.93 208.65q0 122.73 85.92 208.69t208.65 85.96q122.73 0 208.69-85.93T774.61-440H820q0 70.8-26.46 132.63t-72.77 108.14q-46.31 46.31-108.13 72.77Q550.81-100 480.02-100t-132.63-26.46Zm38.76-192.39v-40.38h125.08v-60.23H386.15v-142.31H551v39.39H426.54v60.84h95.08q12.03 0 20.71 8.79 8.67 8.78 8.67 20.98v83.54q0 12.04-8.67 20.71-8.68 8.67-20.71 8.67H386.15Z"
1524
- },
1525
- 400: {
1526
- noFill: "M339.5-108Q274-136 225-185t-77-114.5Q120-365 120-440t28-140.5Q176-646 225-695t114.5-77Q405-800 480-800h21l-78-78 41-41 147 147-147 147-41-41 74-74h-17q-125 0-212.5 87.5T180-440q0 125 87.5 212.5T480-140q125 0 212.5-87.5T780-440h60q0 75-28 140.5T735-185q-49 49-114.5 77T480-80q-75 0-140.5-28ZM380-310v-50h127v-56H380v-155h176v49H430v57h92q14 0 24 10t10 24v87q0 14-10 24t-24 10H380Z",
1527
- fill: "M339.5-108Q274-136 225-185t-77-114.5Q120-365 120-440t28-140.5Q176-646 225-695t114.5-77Q405-800 480-800h21l-78-78 41-41 147 147-147 147-41-41 74-74h-17q-125 0-212.5 87.5T180-440q0 125 87.5 212.5T480-140q125 0 212.5-87.5T780-440h60q0 75-28 140.5T735-185q-49 49-114.5 77T480-80q-75 0-140.5-28ZM380-310v-50h127v-56H380v-155h176v49H430v57h92q14 0 24 10t10 24v87q0 14-10 24t-24 10H380Z"
1528
- }
1529
- },
1530
- group: {
1531
- 300: {
1532
- noFill: "M70.31-187.69v-75.93q0-31.53 16.27-55.8 16.27-24.27 45.55-37.15 64.95-28.51 118.64-42.51 53.69-14 119.54-14 66.23 0 119.42 14t118.52 42.51q28.9 12.88 45.48 37.15 16.58 24.27 16.58 55.8v75.93h-600Zm665.38 0v-74.77q0-53.39-24.86-89.07-24.87-35.69-64.98-58.39 53.23 7.61 101.15 20.81 47.92 13.19 80.15 29.73 28.39 15.92 45.46 40.9 17.08 24.99 17.08 56.02v74.77h-154ZM275-530.31q-37.38-37.38-37.38-95.5 0-58.11 37.38-95.3 37.39-37.2 95.5-37.2 58.12 0 95.31 37.2Q503-683.92 503-625.81q0 58.12-37.19 95.5-37.19 37.39-95.31 37.39-58.11 0-95.5-37.39Zm374.18 0q-37.28 37.39-95.41 37.39-6.77 0-14.5-.93-7.73-.92-14.5-3.38 21.43-23.37 32.52-56.12 11.09-32.75 11.09-72.31 0-39.57-11.53-70.61-11.54-31.04-32.08-58.11 6.38-1.46 14.5-2.7 8.11-1.23 14.5-1.23 58.13 0 95.41 37.2 37.28 37.19 37.28 95.3 0 58.12-37.28 95.5ZM115.69-233.08h509.23v-30.54q0-16-9.11-30.03-9.12-14.04-26.19-22.35-62.77-29.31-110.62-40.5-47.84-11.19-108.69-11.19-60.46 0-108.62 11.19-48.15 11.19-110.92 40.5-17.08 8.31-26.08 22.35-9 14.03-9 30.03v30.54Zm317-330.15q24.93-24.92 24.93-62.38 0-37.47-24.93-62.39-24.92-24.92-62.38-24.92T307.92-688Q283-663.08 283-625.61q0 37.46 24.92 62.38 24.93 24.92 62.39 24.92t62.38-24.92Zm-62.38 330.15Zm0-392.53Z",
1533
- fill: "M70.31-187.69v-75.93q0-31.53 16.27-55.8 16.27-24.27 45.58-37.12 64.92-28.54 118.61-42.54t119.54-14q66.23 0 119.42 14t118.5 42.54q28.92 12.85 45.5 37.12 16.58 24.27 16.58 55.8v75.93h-600Zm665.38 0v-74.77q0-53.39-24.88-89.08-24.89-35.69-64.96-58.38 53.23 7.61 101.15 20.81 47.92 13.19 80.15 29.73 28.39 15.92 45.46 40.84 17.08 24.92 17.08 56.08v74.77h-154ZM275-530.31q-37.38-37.38-37.38-95.5 0-58.11 37.38-95.3 37.39-37.2 95.5-37.2 58.12 0 95.31 37.2Q503-683.92 503-625.81q0 58.12-37.19 95.5-37.19 37.39-95.31 37.39-58.11 0-95.5-37.39Zm374.27 0q-37.19 37.39-95.5 37.39-6.77 0-14.5-.93-7.73-.92-14.5-3.38 21.31-23.46 32.46-56.12 11.15-32.65 11.15-72.26 0-39.62-11.53-70.66-11.54-31.04-32.08-58.11 6.38-1.46 14.5-2.7 8.11-1.23 14.5-1.23 58.31 0 95.5 37.2 37.19 37.19 37.19 95.3 0 58.12-37.19 95.5Z"
1534
- },
1535
- 400: {
1536
- noFill: "M38-160v-94q0-35 18-63.5t50-42.5q73-32 131.5-46T358-420q62 0 120 14t131 46q32 14 50.5 42.5T678-254v94H38Zm700 0v-94q0-63-32-103.5T622-423q69 8 130 23.5t99 35.5q33 19 52 47t19 63v94H738ZM250-523q-42-42-42-108t42-108q42-42 108-42t108 42q42 42 42 108t-42 108q-42 42-108 42t-108-42Zm426 0q-42 42-108 42-11 0-24.5-1.5T519-488q24-25 36.5-61.5T568-631q0-45-12.5-79.5T519-774q11-3 24.5-5t24.5-2q66 0 108 42t42 108q0 66-42 108ZM98-220h520v-34q0-16-9.5-31T585-306q-72-32-121-43t-106-11q-57 0-106.5 11T130-306q-14 6-23 21t-9 31v34Zm324.5-346.5Q448-592 448-631t-25.5-64.5Q397-721 358-721t-64.5 25.5Q268-670 268-631t25.5 64.5Q319-541 358-541t64.5-25.5ZM358-220Zm0-411Z",
1537
- fill: "M38-160v-94q0-35 18-63.5t50-42.5q73-32 131.5-46T358-420q62 0 120 14t131 46q32 14 50.5 42.5T678-254v94H38Zm700 0v-94q0-63-32-103.5T622-423q69 8 130 23.5t99 35.5q33 19 52 47t19 63v94H738ZM250-523q-42-42-42-108t42-108q42-42 108-42t108 42q42 42 42 108t-42 108q-42 42-108 42t-108-42Zm426 0q-42 42-108 42-11 0-24.5-1.5T519-488q24-25 36.5-61.5T568-631q0-45-12.5-79.5T519-774q11-3 24.5-5t24.5-2q66 0 108 42t42 108q0 66-42 108Z"
1538
- }
1539
- },
1540
- groups: {
1541
- 300: {
1542
- noFill: "M20-248.46v-41.46q0-36.65 39.77-60.29t103.68-23.64q10.25 0 21.09.7 10.85.69 21.85 2.34-6.85 16.2-10.47 32.47-3.61 16.28-3.61 33.34v56.54H20Zm240 0v-55q0-28.09 15.77-51.35 15.77-23.27 45.46-40.57 29.69-17.31 70.16-25.96 40.46-8.66 88.46-8.66 48.92 0 89.38 8.66 40.46 8.65 70.15 25.96 29.7 17.3 45.16 40.57Q700-331.55 700-303.46v55H260Zm507.69 0v-56.42q0-17.97-3.11-34.24-3.12-16.26-10.35-31.61 11.77-1.73 22.36-2.42 10.6-.7 20.72-.7 64.03 0 103.36 23.2Q940-327.46 940-289.92v41.46H767.69ZM305-293.85h350v-8.69q1.15-36.61-47.23-59.34-48.39-22.73-127.77-22.73-79 0-127.58 22.73-48.57 22.73-47.42 59.96v8.07ZM162.54-405.38q-25 0-42.81-17.95-17.81-17.94-17.81-43.21 0-25.15 17.95-42.96 17.94-17.81 43.21-17.81 25.15 0 43.15 17.81t18 43.51q0 24.61-17.79 42.61t-43.9 18Zm634.33 0q-24.72 0-42.72-18.07-18-18.06-18-42.97 0-25.27 18.07-43.08 18.06-17.81 43.16-17.81 25.46 0 43.27 17.81 17.81 17.81 17.81 43.4 0 24.96-17.76 42.84-17.76 17.88-43.83 17.88ZM480.14-460q-43.22 0-73.6-30.29-30.38-30.28-30.38-73.55 0-44.14 30.28-73.99 30.29-29.86 73.56-29.86 44.13 0 73.99 29.82 29.85 29.81 29.85 73.89 0 43.21-29.81 73.6Q524.21-460 480.14-460Zm.4-45.38q24.69 0 41.31-16.97 16.61-16.96 16.61-42.04 0-24.68-16.72-41.3-16.71-16.61-41.39-16.61-24.58 0-41.7 16.71-17.11 16.72-17.11 41.4 0 24.58 16.96 41.69 16.97 17.12 42.04 17.12ZM480-293.85Zm0-269.99Z",
1543
- fill: "M20-248.46v-41.46q0-36.65 39.77-60.29t103.68-23.64q10.25 0 21.09.7 10.85.69 21.85 2.34-6.85 16.2-10.47 32.47-3.61 16.28-3.61 33.34v56.54H20Zm240 0v-55q0-28.09 15.77-51.35 15.77-23.27 45.46-40.57 29.69-17.31 70.16-25.96 40.46-8.66 88.46-8.66 48.92 0 89.38 8.66 40.46 8.65 70.15 25.96 29.7 17.3 45.16 40.57Q700-331.55 700-303.46v55H260Zm507.69 0v-56.42q0-17.97-3.11-34.24-3.12-16.26-10.35-31.61 11.77-1.73 22.36-2.42 10.6-.7 20.72-.7 64.03 0 103.36 23.2Q940-327.46 940-289.92v41.46H767.69ZM162.54-405.38q-25 0-42.81-17.95-17.81-17.94-17.81-43.21 0-25.15 17.95-42.96 17.94-17.81 43.21-17.81 25.15 0 43.15 17.81t18 43.51q0 24.61-17.79 42.61t-43.9 18Zm634.33 0q-24.72 0-42.72-18.07-18-18.06-18-42.97 0-25.27 18.07-43.08 18.06-17.81 43.16-17.81 25.46 0 43.27 17.81 17.81 17.81 17.81 43.4 0 24.96-17.76 42.84-17.76 17.88-43.83 17.88ZM480.14-460q-43.22 0-73.6-30.29-30.38-30.28-30.38-73.55 0-44.14 30.28-73.99 30.29-29.86 73.56-29.86 44.13 0 73.99 29.82 29.85 29.81 29.85 73.89 0 43.21-29.81 73.6Q524.21-460 480.14-460Z"
1544
- },
1545
- 400: {
1546
- noFill: "M0-240v-53q0-38.57 41.5-62.78Q83-380 150.38-380q12.16 0 23.39.5t22.23 2.15q-8 17.35-12 35.17-4 17.81-4 37.18v65H0Zm240 0v-65q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v65H240Zm540 0v-65q0-19.86-3.5-37.43T765-377.27q11-1.73 22.17-2.23 11.17-.5 22.83-.5 67.5 0 108.75 23.77T960-293v53H780Zm-480-60h360v-6q0-37-50.5-60.5T480-390q-79 0-129.5 23.5T300-305v5ZM149.57-410q-28.57 0-49.07-20.56Q80-451.13 80-480q0-29 20.56-49.5Q121.13-550 150-550q29 0 49.5 20.5t20.5 49.93q0 28.57-20.5 49.07T149.57-410Zm660 0q-28.57 0-49.07-20.56Q740-451.13 740-480q0-29 20.56-49.5Q781.13-550 810-550q29 0 49.5 20.5t20.5 49.93q0 28.57-20.5 49.07T809.57-410ZM480-480q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Zm.35-60Q506-540 523-557.35t17-43Q540-626 522.85-643t-42.5-17q-25.35 0-42.85 17.15t-17.5 42.5q0 25.35 17.35 42.85t43 17.5ZM480-300Zm0-300Z",
1547
- fill: "M0-240v-53q0-38.57 41.5-62.78Q83-380 150.38-380q12.16 0 23.39.5t22.23 2.15q-8 17.35-12 35.17-4 17.81-4 37.18v65H0Zm240 0v-65q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v65H240Zm540 0v-65q0-19.86-3.5-37.43T765-377.27q11-1.73 22.17-2.23 11.17-.5 22.83-.5 67.5 0 108.75 23.77T960-293v53H780ZM149.57-410q-28.57 0-49.07-20.56Q80-451.13 80-480q0-29 20.56-49.5Q121.13-550 150-550q29 0 49.5 20.5t20.5 49.93q0 28.57-20.5 49.07T149.57-410Zm660 0q-28.57 0-49.07-20.56Q740-451.13 740-480q0-29 20.56-49.5Q781.13-550 810-550q29 0 49.5 20.5t20.5 49.93q0 28.57-20.5 49.07T809.57-410ZM480-480q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Z"
1548
- }
1549
- },
1550
- help: {
1551
- 300: {
1552
- noFill: "M506.58-269.95q9.27-9.48 9.27-22.57 0-13.1-9.3-22.56-9.29-9.46-22.57-9.46-13.29 0-22.75 9.48-9.46 9.49-9.46 22.58 0 13.09 9.48 22.56 9.49 9.46 22.77 9.46 13.29 0 22.56-9.49ZM456.31-398h45.54q.38-24.46 7.65-44.04 7.27-19.58 37.04-44.88 29.84-26.39 42.46-49.85 12.61-23.46 12.61-51.66 0-49.42-32.34-79.88-32.35-30.46-83.65-30.46-44.39 0-78.62 22.77-34.23 22.77-50.46 59.62l41.84 16.15q11.39-26.85 32.43-41.77 21.04-14.92 51.81-14.92 36.69 0 57.3 20.04 20.62 20.03 20.62 49.42 0 21.61-12.23 40.15T513-508.92q-29.23 26-42.96 51.3-13.73 25.31-13.73 59.62Zm23.76 298q-78.22 0-147.4-29.92t-120.99-81.71q-51.81-51.79-81.75-120.94Q100-401.71 100-479.93q0-78.84 29.92-148.21t81.71-120.68q51.79-51.31 120.94-81.25Q401.71-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.22-29.92 147.4t-81.21 120.99q-51.29 51.81-120.63 81.75Q558.9-100 480.07-100Zm-.07-45.39q139.69 0 237.15-97.76 97.46-97.77 97.46-236.85 0-139.69-97.46-237.15-97.46-97.46-237.15-97.46-139.08 0-236.85 97.46-97.76 97.46-97.76 237.15 0 139.08 97.76 236.85 97.77 97.76 236.85 97.76ZM480-480Z",
1553
- fill: "M506.58-269.95q9.27-9.48 9.27-22.57 0-13.1-9.3-22.56-9.29-9.46-22.57-9.46-13.29 0-22.75 9.48-9.46 9.49-9.46 22.58 0 13.09 9.48 22.56 9.49 9.46 22.77 9.46 13.29 0 22.56-9.49ZM456.31-398h45.54q.38-24.46 7.65-44.04 7.27-19.58 37.04-44.88 29.84-26.39 42.46-49.85 12.61-23.46 12.61-51.66 0-49.42-32.34-79.88-32.35-30.46-83.65-30.46-44.39 0-78.62 22.77-34.23 22.77-50.46 59.62l41.84 16.15q11.39-26.85 32.43-41.77 21.04-14.92 51.81-14.92 36.69 0 57.3 20.04 20.62 20.03 20.62 49.42 0 21.61-12.23 40.15T513-508.92q-29.23 26-42.96 51.3-13.73 25.31-13.73 59.62Zm23.76 298q-78.22 0-147.4-29.92t-120.99-81.71q-51.81-51.79-81.75-120.94Q100-401.71 100-479.93q0-78.84 29.92-148.21t81.71-120.68q51.79-51.31 120.94-81.25Q401.71-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.22-29.92 147.4t-81.21 120.99q-51.29 51.81-120.63 81.75Q558.9-100 480.07-100Z"
1554
- },
1555
- 400: {
1556
- noFill: "M511-258q11-11 11-27t-11-27q-11-11-27-11t-27 11q-11 11-11 27t11 27q11 11 27 11t27-11Zm-62-135h59q0-26 6.5-47.5T555-490q31-26 44-51t13-55q0-53-34.5-85T486-713q-49 0-86.5 24.5T345-621l53 20q11-28 33-43.5t52-15.5q34 0 55 18.5t21 47.5q0 22-13 41.5T508-512q-30 26-44.5 51.5T449-393Zm31 313q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Zm0-60q142 0 241-99.5T820-480q0-142-99-241t-241-99q-141 0-240.5 99T140-480q0 141 99.5 240.5T480-140Zm0-340Z",
1557
- fill: "M511-258q11-11 11-27t-11-27q-11-11-27-11t-27 11q-11 11-11 27t11 27q11 11 27 11t27-11Zm-62-135h59q0-26 6.5-47.5T555-490q31-26 44-51t13-55q0-53-34.5-85T486-713q-49 0-86.5 24.5T345-621l53 20q11-28 33-43.5t52-15.5q34 0 55 18.5t21 47.5q0 22-13 41.5T508-512q-30 26-44.5 51.5T449-393Zm31 313q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z"
1558
- }
1559
- },
1560
- id: {
1561
- 300: {
1562
- noFill: "M157.69-100q-23.53 0-40.61-17.08T100-157.69v-444.62q0-23.53 17.08-40.61T157.69-660h244.23v-154.61q0-18.15 13.63-31.77Q429.18-860 447.34-860h65.42q18.16 0 31.74 13.62 13.58 13.62 13.58 31.77V-660h244.23q23.53 0 40.61 17.08T860-602.31v444.62q0 23.53-17.08 40.61T802.31-100H157.69Zm0-45.39h644.62q5.38 0 8.84-3.46t3.46-8.84v-444.62q0-5.38-3.46-8.84t-8.84-3.46H558.08v37.3q0 21.08-13.58 33.23-13.58 12.16-31.81 12.16h-65.38q-18.23 0-31.81-12.16-13.58-12.15-13.58-33.23v-37.3H157.69q-5.38 0-8.84 3.46t-3.46 8.84v444.62q0 5.38 3.46 8.84t8.84 3.46Zm82.77-111.23h226.69v-9q0-16.07-8.03-28.73Q451.08-307 438.23-312q-28.54-10.23-46.92-13.73-18.39-3.5-35.77-3.5-18.62 0-39.54 4.31-20.92 4.3-45.61 12.92-13.85 5-21.89 17.65-8.04 12.66-8.04 28.73v9Zm325.23-65.84H733v-40.39H565.69v40.39Zm-174.93-54.73q14.16-14.35 14.16-35.23 0-20.89-14.16-35.23Q376.59-462 355.72-462q-20.87 0-35.22 14.35-14.35 14.34-14.35 35.23 0 20.88 14.35 35.23 14.35 14.34 35.22 14.34 20.87 0 35.04-14.34Zm174.93-47.89H733v-40.38H565.69v40.38ZM447.31-577.31h65.38v-237.3h-65.38v237.3ZM480-380Z",
1563
- fill: "M157.69-100q-23.53 0-40.61-17.08T100-157.69v-444.62q0-23.53 17.08-40.61T157.69-660h244.23v-154.61q0-17.98 13.72-31.68Q429.36-860 447.34-860h65.42q17.99 0 31.65 13.71 13.67 13.7 13.67 31.68V-660h244.23q23.53 0 40.61 17.08T860-602.31v444.62q0 23.53-17.08 40.61T802.31-100H157.69Zm82.77-156.62h226.69v-9q0-15.92-7.98-28.66-7.99-12.75-20.94-17.72-28.54-10.23-46.93-13.73-18.38-3.5-35.76-3.5-18.62 0-39.54 4.31-20.92 4.3-45.61 12.92-13.96 4.97-21.94 17.72-7.99 12.74-7.99 28.66v9Zm325.23-65.84H733v-40.39H565.69v40.39ZM390.76-377.1q14.16-14.26 14.16-35.23 0-20.98-14.07-35.32Q376.77-462 355.81-462t-35.31 14.26q-14.35 14.25-14.35 35.23 0 20.97 14.26 35.32 14.26 14.34 35.22 14.34t35.13-14.25Zm174.93-47.98H733v-40.38H565.69v40.38ZM447.31-577.31h65.38v-237.3h-65.38v237.3Z"
1564
- },
1565
- 400: {
1566
- noFill: "M140-80q-24 0-42-18t-18-42v-480q0-24 18-42t42-18h250v-140q0-24 18-42t42-18h60q24 0 42 18t18 42v140h250q24 0 42 18t18 42v480q0 24-18 42t-42 18H140Zm0-60h680v-480H570v30q0 28-18 44t-42 16h-60q-24 0-42-16t-18-44v-30H140v480Zm92-107h239v-14q0-18-9-32t-23-19q-32-11-50-14.5t-35-3.5q-19 0-40.5 4.5T265-312q-15 5-24 19t-9 32v14Zm336-67h170v-50H568v50Zm-175.5-65.5Q408-395 408-418t-15.5-38.5Q377-472 354-472t-38.5 15.5Q300-441 300-418t15.5 38.5Q331-364 354-364t38.5-15.5ZM568-427h170v-50H568v50ZM450-590h60v-230h-60v230Zm30 210Z",
1567
- fill: "M140-80q-24 0-42-18t-18-42v-480q0-24 18-42t42-18h250v-140q0-24 18-42t42-18h60q24 0 42 18t18 42v140h250q24 0 42 18t18 42v480q0 24-18 42t-42 18H140Zm92-167h239v-14q0-18-9-32t-23-19q-32-11-50-14.5t-35-3.5q-19 0-40.5 4.5T265-312q-15 5-24 19t-9 32v14Zm336-67h170v-50H568v50Zm-175.5-65.5Q408-395 408-418t-15.5-38.5Q377-472 354-472t-38.5 15.5Q300-441 300-418t15.5 38.5Q331-364 354-364t38.5-15.5ZM568-427h170v-50H568v50ZM450-590h60v-230h-60v230Z"
1568
- }
1569
- },
1570
- id_card: {
1571
- 300: {
1572
- noFill: "M577.69-458.08h166.92v-45.38H577.69v45.38Zm0-115.38h166.92v-45.39H577.69v45.39Zm-362.3 239.61h292.3v-12.07q0-37.77-38.46-60.62-38.46-22.84-107.69-22.84-69.23 0-107.69 22.84-38.46 22.85-38.46 60.62v12.07Zm192.07-181.36q19-18.9 19-45.92 0-27.02-18.9-46.02-18.91-19-45.92-19-27.02 0-46.02 18.9-19 18.9-19 45.92 0 27.02 18.9 46.02 18.9 19 45.92 19 27.02 0 46.02-18.9ZM157.69-180q-23.53 0-40.61-17.08T100-237.69v-484.62q0-23.53 17.08-40.61T157.69-780h644.62q23.53 0 40.61 17.08T860-722.31v484.62q0 23.53-17.08 40.61T802.31-180H157.69Zm0-45.39h644.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-484.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H157.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v484.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm-12.3 0v-509.22 509.22Z",
1573
- fill: "M577.69-458.08h166.92v-45.38H577.69v45.38Zm0-115.38h166.92v-45.39H577.69v45.39Zm-362.3 239.61h292.3v-12.07q0-37.77-38.46-60.62-38.46-22.84-107.69-22.84-69.23 0-107.69 22.84-38.46 22.85-38.46 60.62v12.07Zm192.07-181.44q19-18.98 19-45.92t-18.98-45.94q-18.98-19-45.92-19t-45.94 18.98q-19 18.98-19 45.92t18.98 45.94q18.98 19 45.92 19t45.94-18.98ZM157.69-180q-23.53 0-40.61-17.08T100-237.69v-484.62q0-23.53 17.08-40.61T157.69-780h644.62q23.53 0 40.61 17.08T860-722.31v484.62q0 23.53-17.08 40.61T802.31-180H157.69Z"
1574
- },
1575
- 400: {
1576
- noFill: "M580-450h180v-60H580v60Zm0-120h180v-60H580v60ZM200-320h320v-19q0-42-42.5-68.5T360-434q-75 0-117.5 26.5T200-339v19Zm211.5-195.42q21.5-21.42 21.5-51.5t-21.42-51.58q-21.42-21.5-51.5-21.5t-51.58 21.42q-21.5 21.42-21.5 51.5t21.42 51.58q21.42 21.5 51.5 21.5t51.58-21.42ZM140-160q-24 0-42-18t-18-42v-520q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18H140Zm0-60h680v-520H140v520Zm0 0v-520 520Z",
1577
- fill: "M580-450h180v-60H580v60Zm0-120h180v-60H580v60ZM200-320h320v-19q0-42-42.5-68.5T360-434q-75 0-117.5 26.5T200-339v19Zm211.5-195.5Q433-537 433-567t-21.5-51.5Q390-640 360-640t-51.5 21.5Q287-597 287-567t21.5 51.5Q330-494 360-494t51.5-21.5ZM140-160q-24 0-42-18t-18-42v-520q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18H140Z"
1578
- }
1579
- },
1580
- image: {
1581
- 300: {
1582
- noFill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-564.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm69.47-102.38h429.76L567.23-460.31 446.38-306.23l-82.23-107.38-96.99 125.84Zm-81.77 102.38v-589.22 589.22Z",
1583
- fill: "M197.69-140q-23.61 0-40.65-17.04T140-197.69v-564.62q0-23.61 17.04-40.65T197.69-820h564.62q23.61 0 40.65 17.04T820-762.31v564.62q0 23.61-17.04 40.65T762.31-140H197.69Zm69.47-147.77h429.76L567.23-460.31 446.38-306.23l-82.23-107.38-96.99 125.84Z"
1584
- },
1585
- 400: {
1586
- noFill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Zm0-60h600v-600H180v600Zm56-97h489L578-473 446-302l-93-127-117 152Zm-56 97v-600 600Z",
1587
- fill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Zm56-157h489L578-473 446-302l-93-127-117 152Z"
1588
- }
1589
- },
1590
- indeterminate_check_box: {
1591
- 300: {
1592
- noFill: "M268.08-458.92h424.46v-45.39H268.08v45.39ZM197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H197.69Zm0-45.39h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-564.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84Zm-12.3-589.22v589.22-589.22Z",
1593
- fill: "M268.08-458.92h424.46v-45.39H268.08v45.39ZM197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H197.69Z"
1594
- },
1595
- 400: {
1596
- noFill: "M250-452h461v-60H250v60Zm-70 332q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Zm0-60h600v-600H180v600Zm0-600v600-600Z",
1597
- fill: "M250-452h461v-60H250v60Zm-70 332q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H180Z"
1598
- }
1599
- },
1600
- info: {
1601
- 300: {
1602
- noFill: "M459.54-290h45.38v-230h-45.38v230Zm39.73-301.56q7.96-7.57 7.96-19.05 0-11.95-7.85-19.9-7.85-7.95-19.36-7.95-11.9 0-19.58 7.95-7.67 7.95-7.67 19.9 0 11.48 7.94 19.05 7.95 7.56 19.27 7.56 11.33 0 19.29-7.56ZM480.33-100q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Zm.17-45.39q139.19 0 236.65-97.76 97.46-97.77 97.46-237.35 0-139.19-97.27-236.65-97.27-97.46-237.34-97.46-139.08 0-236.85 97.27-97.76 97.27-97.76 237.34 0 139.08 97.76 236.85 97.77 97.76 237.35 97.76ZM480-480Z",
1603
- fill: "M459.54-290h45.38v-230h-45.38v230Zm39.73-301.56q7.96-7.57 7.96-19.05 0-11.95-7.85-19.9-7.85-7.95-19.36-7.95-11.9 0-19.58 7.95-7.67 7.95-7.67 19.9 0 11.48 7.94 19.05 7.95 7.56 19.27 7.56 11.33 0 19.29-7.56ZM480.33-100q-78.95 0-147.89-29.92-68.95-29.92-120.76-81.71-51.81-51.79-81.75-120.78Q100-401.39 100-480.43q0-78.66 29.92-147.87 29.92-69.21 81.71-120.52 51.79-51.31 120.78-81.25Q401.39-860 480.43-860q78.66 0 147.87 29.92 69.21 29.92 120.52 81.21 51.31 51.29 81.25 120.63Q860-558.9 860-480.33q0 78.95-29.92 147.89-29.92 68.95-81.21 120.57-51.29 51.63-120.63 81.75Q558.9-100 480.33-100Z"
1604
- },
1605
- 400: {
1606
- noFill: "M453-280h60v-240h-60v240Zm50.5-323.2q9.5-9.2 9.5-22.8 0-14.45-9.48-24.22-9.48-9.78-23.5-9.78t-23.52 9.78Q447-640.45 447-626q0 13.6 9.48 22.8 9.48 9.2 23.5 9.2t23.52-9.2ZM480.27-80q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Zm.23-60Q622-140 721-239.5t99-241Q820-622 721.19-721T480-820q-141 0-240.5 98.81T140-480q0 141 99.5 240.5t241 99.5Zm-.5-340Z",
1607
- fill: "M453-280h60v-240h-60v240Zm50.5-323.2q9.5-9.2 9.5-22.8 0-14.45-9.48-24.22-9.48-9.78-23.5-9.78t-23.52 9.78Q447-640.45 447-626q0 13.6 9.48 22.8 9.48 9.2 23.5 9.2t23.52-9.2ZM480.27-80q-82.74 0-155.5-31.5Q252-143 197.5-197.5t-86-127.34Q80-397.68 80-480.5t31.5-155.66Q143-709 197.5-763t127.34-85.5Q397.68-880 480.5-880t155.66 31.5Q709-817 763-763t85.5 127Q880-563 880-480.27q0 82.74-31.5 155.5Q817-252 763-197.68q-54 54.31-127 86Q563-80 480.27-80Z"
1608
- }
1609
- },
1610
- keyboard_arrow_down: {
1611
- 300: {
1612
- noFill: "M480-357.85 253.85-584l32.61-32.61L480-423.08l193.54-193.53L706.15-584 480-357.85Z",
1613
- fill: "M480-357.85 253.85-584l32.61-32.61L480-423.08l193.54-193.53L706.15-584 480-357.85Z"
1614
- },
1615
- 400: {
1616
- noFill: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z",
1617
- fill: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z"
1618
- }
1619
- },
1620
- keyboard_arrow_left: {
1621
- 300: {
1622
- noFill: "M560.62-253.85 333.85-480.62l226.77-227.15 32.61 32.62-194.15 194.53 194.15 194.16-32.61 32.61Z",
1623
- fill: "M560.62-253.85 333.85-480.62l226.77-227.15 32.61 32.62-194.15 194.53 194.15 194.16-32.61 32.61Z"
1624
- },
1625
- 400: {
1626
- noFill: "M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z",
1627
- fill: "M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z"
1628
- }
1629
- },
1630
- keyboard_arrow_right: {
1631
- 300: {
1632
- noFill: "M536.92-480.62 342.77-675.15l32.61-32.62 226.77 227.15-226.77 226.77-32.61-32.61 194.15-194.16Z",
1633
- fill: "M536.92-480.62 342.77-675.15l32.61-32.62 226.77 227.15-226.77 226.77-32.61-32.61 194.15-194.16Z"
1634
- },
1635
- 400: {
1636
- noFill: "M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z",
1637
- fill: "M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z"
1638
- }
1639
- },
1640
- keyboard_arrow_up: {
1641
- 300: {
1642
- noFill: "M480-560.92 286.46-367.39 253.85-400 480-626.15 706.15-400l-32.61 32.61L480-560.92Z",
1643
- fill: "M480-560.92 286.46-367.39 253.85-400 480-626.15 706.15-400l-32.61 32.61L480-560.92Z"
1644
- },
1645
- 400: {
1646
- noFill: "M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z",
1647
- fill: "M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z"
1648
- }
1649
- },
1650
- location_on: {
1651
- 300: {
1652
- noFill: "M526.04-511.65Q545-530.62 545-557.69q0-27.08-18.96-46.04T480-622.69q-27.08 0-46.04 18.96T415-557.69q0 27.07 18.96 46.04 18.96 18.96 46.04 18.96t46.04-18.96ZM480-159.77q125.31-111.77 190.92-213.15 65.62-101.39 65.62-177.16 0-116.07-73.77-190.5Q589-815 480-815q-109 0-182.77 74.42-73.77 74.43-73.77 190.5 0 75.77 66.73 177.16Q356.92-271.54 480-159.77Zm0 60.15Q329-230.46 253.54-343.15q-75.46-112.7-75.46-206.93 0-138.46 89.57-224.19Q357.23-860 480-860t212.35 85.73q89.57 85.73 89.57 224.19 0 94.23-75.46 206.93Q631-230.46 480-99.62Zm0-458.07Z",
1653
- fill: "M526.04-511.77Q545-530.85 545-557.81t-19.08-45.92q-19.08-18.96-46.04-18.96t-45.92 19.08Q415-584.53 415-557.57q0 26.95 19.08 45.92 19.08 18.96 46.04 18.96t45.92-19.08ZM480-99.62Q329-230.46 253.54-343.15q-75.46-112.7-75.46-206.93 0-138.46 89.57-224.19Q357.23-860 480-860t212.35 85.73q89.57 85.73 89.57 224.19 0 94.23-75.46 206.93Q631-230.46 480-99.62Z"
1654
- },
1655
- 400: {
1656
- noFill: "M529.5-510.5Q550-531 550-560t-20.5-49.5Q509-630 480-630t-49.5 20.5Q410-589 410-560t20.5 49.5Q451-490 480-490t49.5-20.5ZM480-159q133-121 196.5-219.5T740-552q0-118-75.5-193T480-820q-109 0-184.5 75T220-552q0 75 65 173.5T480-159Zm0 79Q319-217 239.5-334.5T160-552q0-150 96.5-239T480-880q127 0 223.5 89T800-552q0 100-79.5 217.5T480-80Zm0-480Z",
1657
- fill: "M529.5-510.59q20.5-20.59 20.5-49.5t-20.59-49.41q-20.59-20.5-49.5-20.5t-49.41 20.59q-20.5 20.59-20.5 49.5t20.59 49.41q20.59 20.5 49.5 20.5t49.41-20.59ZM480-80Q319-217 239.5-334.5T160-552q0-150 96.5-239T480-880q127 0 223.5 89T800-552q0 100-79.5 217.5T480-80Z"
1658
- }
1659
- },
1660
- login: {
1661
- 300: {
1662
- noFill: "M480.23-140v-45.39h282.08q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-564.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H480.23V-820h282.08q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H480.23Zm-35.77-187.69-33-32.23 97.39-97.39H140v-45.38h367.62l-97.39-97.39 32.62-32.61 153.3 153.5-151.69 151.5Z",
1663
- fill: "M480.23-140v-45.39h282.08q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-564.62q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H480.23V-820h282.08q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H480.23Zm-35.77-187.69-33-32.23 97.39-97.39H140.39v-45.38h367.23l-97.39-97.39 32.62-32.61 153.3 153.5-151.69 151.5Z"
1664
- },
1665
- 400: {
1666
- noFill: "M481-120v-60h299v-600H481v-60h299q24 0 42 18t18 42v600q0 24-18 42t-42 18H481Zm-55-185-43-43 102-102H120v-60h363L381-612l43-43 176 176-174 174Z",
1667
- fill: "M481-120v-60h299v-600H481v-60h299q24 0 42 18t18 42v600q0 24-18 42t-42 18H481Zm-55-185-43-43 102-102H120v-60h363L381-612l43-43 176 176-174 174Z"
1668
- }
1669
- },
1670
- logout: {
1671
- 300: {
1672
- noFill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h282.08v45.39H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h282.08V-140H197.69Zm470.62-187.69-33-32.23 97.38-97.39H363.85v-45.38h367.61l-97.38-97.39 32.61-32.61L820-479.19l-151.69 151.5Z",
1673
- fill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h282.08v45.39H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h282.08V-140H197.69Zm470.62-187.69-33-32.23 97.38-97.39H363.85v-45.38h367.61l-97.38-97.39 32.61-32.61L820-479.19l-151.69 151.5Z"
1674
- },
1675
- 400: {
1676
- noFill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h299v60H180v600h299v60H180Zm486-185-43-43 102-102H360v-60h363L621-612l43-43 176 176-174 174Z",
1677
- fill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h299v60H180v600h299v60H180Zm486-185-43-43 102-102H360v-60h363L621-612l43-43 176 176-174 174Z"
1678
- }
1679
- },
1680
- more_vert: {
1681
- 300: {
1682
- noFill: "M479.88-189.23q-15.09 0-25.72-10.75-10.62-10.74-10.62-25.83 0-15.09 10.75-25.91 10.74-10.82 25.83-10.82 15.09 0 25.72 10.87 10.62 10.86 10.62 26.12 0 15.1-10.75 25.71-10.74 10.61-25.83 10.61Zm0-254.31q-15.09 0-25.72-10.75-10.62-10.74-10.62-25.83 0-15.09 10.75-25.72 10.74-10.62 25.83-10.62 15.09 0 25.72 10.75 10.62 10.74 10.62 25.83 0 15.09-10.75 25.72-10.74 10.62-25.83 10.62Zm0-253.92q-15.09 0-25.72-10.87-10.62-10.86-10.62-26.12 0-15.1 10.75-25.71 10.74-10.61 25.83-10.61 15.09 0 25.72 10.75 10.62 10.74 10.62 25.83 0 15.09-10.75 25.91-10.74 10.82-25.83 10.82Z",
1683
- fill: "M479.88-189.23q-15.09 0-25.72-10.75-10.62-10.74-10.62-25.83 0-15.09 10.75-25.91 10.74-10.82 25.83-10.82 15.09 0 25.72 10.87 10.62 10.86 10.62 26.12 0 15.1-10.75 25.71-10.74 10.61-25.83 10.61Zm0-254.31q-15.09 0-25.72-10.75-10.62-10.74-10.62-25.83 0-15.09 10.75-25.72 10.74-10.62 25.83-10.62 15.09 0 25.72 10.75 10.62 10.74 10.62 25.83 0 15.09-10.75 25.72-10.74 10.62-25.83 10.62Zm0-253.92q-15.09 0-25.72-10.87-10.62-10.86-10.62-26.12 0-15.1 10.75-25.71 10.74-10.61 25.83-10.61 15.09 0 25.72 10.75 10.62 10.74 10.62 25.83 0 15.09-10.75 25.91-10.74 10.82-25.83 10.82Z"
1684
- },
1685
- 400: {
1686
- noFill: "M479.86-160Q460-160 446-174.14t-14-34Q432-228 446.14-242t34-14Q500-256 514-241.86t14 34Q528-188 513.86-174t-34 14Zm0-272Q460-432 446-446.14t-14-34Q432-500 446.14-514t34-14Q500-528 514-513.86t14 34Q528-460 513.86-446t-34 14Zm0-272Q460-704 446-718.14t-14-34Q432-772 446.14-786t34-14Q500-800 514-785.86t14 34Q528-732 513.86-718t-34 14Z",
1687
- fill: "M479.86-160Q460-160 446-174.14t-14-34Q432-228 446.14-242t34-14Q500-256 514-241.86t14 34Q528-188 513.86-174t-34 14Zm0-272Q460-432 446-446.14t-14-34Q432-500 446.14-514t34-14Q500-528 514-513.86t14 34Q528-460 513.86-446t-34 14Zm0-272Q460-704 446-718.14t-14-34Q432-772 446.14-786t34-14Q500-800 514-785.86t14 34Q528-732 513.86-718t-34 14Z"
1688
- }
1689
- },
1690
- open_in_browser: {
1691
- 300: {
1692
- noFill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H583.46v-45.39h178.85q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-511.54H185.39v511.54q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h178.85V-140H197.69Zm259.62 0v-276.69l-88 87.61-32.62-32.23L480-504.61l143.31 143.3-32.62 32.23-88-87.61V-140h-45.38Z",
1693
- fill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h564.62q23.53 0 40.61 17.08T820-762.31v564.62q0 23.53-17.08 40.61T762.31-140H583.46v-45.39h178.85q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-511.54H185.39v511.54q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h178.85V-140H197.69Zm259.62 0v-276.69l-88 87.61-32.62-32.23L480-504.61l143.31 143.3-32.62 32.23-88-87.61V-140h-45.38Z"
1694
- },
1695
- 400: {
1696
- noFill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H570v-60h210v-540H180v540h210v60H180Zm270 0v-284l-83 83-43-43 156-156 156 156-43 43-83-83v284h-60Z",
1697
- fill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h600q24 0 42 18t18 42v600q0 24-18 42t-42 18H570v-60h210v-540H180v540h210v60H180Zm270 0v-284l-83 83-43-43 156-156 156 156-43 43-83-83v284h-60Z"
1698
- }
1699
- },
1700
- open_in_new: {
1701
- 300: {
1702
- noFill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h251.69v45.39H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-251.69H820v251.69q0 23.53-17.08 40.61T762.31-140H197.69Zm186.62-211.69-32-32.62 390.31-390.3H530.15V-820H820v289.85h-45.39V-742l-390.3 390.31Z",
1703
- fill: "M197.69-140q-23.53 0-40.61-17.08T140-197.69v-564.62q0-23.53 17.08-40.61T197.69-820h251.69v45.39H197.69q-4.61 0-8.46 3.84-3.84 3.85-3.84 8.46v564.62q0 4.61 3.84 8.46 3.85 3.84 8.46 3.84h564.62q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-251.69H820v251.69q0 23.53-17.08 40.61T762.31-140H197.69Zm186.62-211.69-32-32.62 390.31-390.3H530.15V-820H820v289.85h-45.39V-742l-390.3 390.31Z"
1704
- },
1705
- 400: {
1706
- noFill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h279v60H180v600h600v-279h60v279q0 24-18 42t-42 18H180Zm202-219-42-43 398-398H519v-60h321v321h-60v-218L382-339Z",
1707
- fill: "M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h279v60H180v600h600v-279h60v279q0 24-18 42t-42 18H180Zm202-219-42-43 398-398H519v-60h321v321h-60v-218L382-339Z"
1708
- }
1709
- },
1710
- pause: {
1711
- 300: {
1712
- noFill: "M533.85-220v-520H740v520H533.85ZM220-220v-520h206.54v520H220Zm359.23-45.39h115.38v-429.22H579.23v429.22Zm-313.84 0h115.76v-429.22H265.39v429.22Zm0-429.22v429.22-429.22Zm313.84 0v429.22-429.22Z",
1713
- fill: "M556.54-220v-520h160.77v520H556.54Zm-313.85 0v-520h161.16v520H242.69Z"
1714
- },
1715
- 400: {
1716
- noFill: "M525-200v-560h235v560H525Zm-325 0v-560h235v560H200Zm385-60h115v-440H585v440Zm-325 0h115v-440H260v440Zm0-440v440-440Zm325 0v440-440Z",
1717
- fill: "M555-200v-560h175v560H555Zm-325 0v-560h175v560H230Z"
1718
- }
1719
- },
1720
- person: {
1721
- 300: {
1722
- noFill: "M384.69-530.31q-37.38-37.38-37.38-95.5 0-58.11 37.38-95.3 37.39-37.2 95.31-37.2t95.31 37.2q37.38 37.19 37.38 95.3 0 58.12-37.38 95.5-37.39 37.39-95.31 37.39t-95.31-37.39ZM180-187.69v-75.93q0-32.23 17.08-56.15t44.38-36.77q63.16-28.07 121.77-42.31 58.62-14.23 116.77-14.23t116.46 14.54q58.31 14.54 121.46 42 27.92 12.85 45 36.77T780-263.62v75.93H180Zm45.39-45.39h509.22v-30.54q0-15.61-9.88-29.92-9.88-14.31-25.81-22.46-59-28.69-111.3-40.19-52.3-11.5-107.62-11.5-55.32 0-108.43 11.5-53.11 11.5-111.11 40.19-15.92 8.15-25.5 22.46-9.57 14.31-9.57 29.92v30.54Zm316.99-330.15q24.93-24.92 24.93-62.38 0-37.47-24.93-62.39-24.92-24.92-62.38-24.92T417.62-688q-24.93 24.92-24.93 62.39 0 37.46 24.93 62.38 24.92 24.92 62.38 24.92t62.38-24.92ZM480-625.61Zm0 392.53Z",
1723
- fill: "M384.69-530.31q-37.38-37.38-37.38-95.5 0-58.11 37.38-95.3 37.39-37.2 95.31-37.2t95.31 37.2q37.38 37.19 37.38 95.3 0 58.12-37.38 95.5-37.39 37.39-95.31 37.39t-95.31-37.39ZM180-187.69v-75.93q0-32.23 17.08-56.15t44.38-36.77q63.16-28.07 121.77-42.31 58.62-14.23 116.77-14.23t116.46 14.54q58.31 14.54 121.46 42 27.92 12.85 45 36.77T780-263.62v75.93H180Z"
1724
- },
1725
- 400: {
1726
- noFill: "M372-523q-42-42-42-108t42-108q42-42 108-42t108 42q42 42 42 108t-42 108q-42 42-108 42t-108-42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5T731-360q31 14 50 41t19 65v94H160Zm60-60h520v-34q0-16-9.5-30.5T707-306q-64-31-117-42.5T480-360q-57 0-111 11.5T252-306q-14 7-23 21.5t-9 30.5v34Zm324.5-346.5Q570-592 570-631t-25.5-64.5Q519-721 480-721t-64.5 25.5Q390-670 390-631t25.5 64.5Q441-541 480-541t64.5-25.5ZM480-631Zm0 411Z",
1727
- fill: "M372-523q-42-42-42-108t42-108q42-42 108-42t108 42q42 42 42 108t-42 108q-42 42-108 42t-108-42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5T731-360q31 14 50 41t19 65v94H160Z"
1728
- }
1729
- },
1730
- photo_camera: {
1731
- 300: {
1732
- noFill: "M479.69-280.46q66.92 0 112.27-45.35 45.35-45.34 45.35-112.27 0-66.92-45.35-111.96-45.35-45.04-112.27-45.04-66.92 0-111.96 45.04-45.04 45.04-45.04 111.96 0 66.93 45.04 112.27 45.04 45.35 111.96 45.35Zm0-45.39q-48.07 0-79.84-32.07-31.77-32.08-31.77-80.16 0-48.07 31.77-79.84 31.77-31.77 79.84-31.77 48.08 0 80.16 31.77 32.07 31.77 32.07 79.84 0 48.08-32.07 80.16-32.08 32.07-80.16 32.07ZM157.69-140q-23.53 0-40.61-17.08T100-197.69v-479.54q0-23 17.08-40.35 17.08-17.34 40.61-17.34h137.39L368.46-820h223.08l73.38 85.08h137.39q23 0 40.34 17.34Q860-700.23 860-677.23v479.54q0 23.53-17.35 40.61Q825.31-140 802.31-140H157.69Zm0-45.39h644.62q5.38 0 8.84-3.46t3.46-8.84v-479.54q0-5-3.46-8.65-3.46-3.66-8.84-3.66H643.85l-73.39-85.07H389.54l-73.39 85.07H157.69q-5.38 0-8.84 3.66-3.46 3.65-3.46 8.65v479.54q0 5.38 3.46 8.84t8.84 3.46ZM480-437.77Z",
1733
- fill: "M480-280.46q66.61 0 111.96-45.35 45.35-45.34 45.35-111.96 0-67.23-45.35-112.27-45.35-45.04-111.96-45.04-67.23 0-112.27 45.04-45.04 45.04-45.04 112.27 0 66.62 45.04 111.96 45.04 45.35 112.27 45.35Zm0-45.39q-48.38 0-80.15-32.07-31.77-32.08-31.77-79.85 0-48.38 31.77-80.15 31.77-31.77 80.15-31.77 47.77 0 79.85 31.77 32.07 31.77 32.07 80.15 0 47.77-32.07 79.85-32.08 32.07-79.85 32.07ZM157.69-140q-23.61 0-40.65-17.04T100-197.69v-479.54q0-23 17.04-40.35 17.04-17.34 40.65-17.34h137.39L368.46-820h223.08l73.38 85.08h137.39q23 0 40.34 17.34Q860-700.23 860-677.23v479.54q0 23.61-17.35 40.65Q825.31-140 802.31-140H157.69Z"
1734
- },
1735
- 400: {
1736
- noFill: "M479.5-267q72.5 0 121.5-49t49-121.5q0-72.5-49-121T479.5-607q-72.5 0-121 48.5t-48.5 121q0 72.5 48.5 121.5t121 49Zm0-60q-47.5 0-78.5-31.5t-31-79q0-47.5 31-78.5t78.5-31q47.5 0 79 31t31.5 78.5q0 47.5-31.5 79t-79 31.5ZM140-120q-24 0-42-18t-18-42v-513q0-23 18-41.5t42-18.5h147l73-87h240l73 87h147q23 0 41.5 18.5T880-693v513q0 24-18.5 42T820-120H140Zm0-60h680v-513H645l-73-87H388l-73 87H140v513Zm340-257Z",
1737
- fill: "M480-267q72 0 121-49t49-121q0-73-49-121.5T480-607q-73 0-121.5 48.5T310-437q0 72 48.5 121T480-267Zm0-60q-48 0-79-31.5T370-437q0-48 31-79t79-31q47 0 78.5 31t31.5 79q0 47-31.5 78.5T480-327ZM140-120q-24 0-42-18t-18-42v-513q0-23 18-41.5t42-18.5h147l73-87h240l73 87h147q23 0 41.5 18.5T880-693v513q0 24-18.5 42T820-120H140Z"
1738
- }
1739
- },
1740
- photo_library: {
1741
- 300: {
1742
- noFill: "M352.31-389.31h367.15L603.23-545.69l-103 132.31L433-496.15l-80.69 106.84Zm-73.85 158.54q-23.53 0-40.61-17.08t-17.08-40.61v-513.85q0-23.53 17.08-40.61T278.46-860h513.85q23.52 0 40.61 17.08Q850-825.84 850-802.31v513.85q0 23.53-17.08 40.61-17.09 17.08-40.61 17.08H278.46Zm0-45.39h513.85q4.61 0 8.46-3.84 3.84-3.85 3.84-8.46v-513.85q0-4.61-3.84-8.46-3.85-3.84-8.46-3.84H278.46q-4.61 0-8.46 3.84-3.85 3.85-3.85 8.46v513.85q0 4.61 3.85 8.46 3.85 3.84 8.46 3.84ZM167.69-120q-23.52 0-40.61-17.08Q110-154.17 110-177.7v-559.22h45.39v559.22q0 4.62 3.84 8.47 3.85 3.84 8.46 3.84h559.23V-120H167.69Zm98.46-694.61v538.45-538.45Z",
1743
- fill: "M352.31-389.31h367.15L603.23-545.69l-103 132.31L433-496.15l-80.69 106.84Zm-73.85 158.54q-23.53 0-40.61-17.08t-17.08-40.61v-513.85q0-23.53 17.08-40.61T278.46-860h513.85q23.52 0 40.61 17.08Q850-825.84 850-802.31v513.85q0 23.53-17.08 40.61-17.09 17.08-40.61 17.08H278.46ZM167.69-120q-23.52 0-40.61-17.08Q110-154.17 110-177.7v-559.22h45.39v559.22q0 4.62 3.84 8.47 3.85 3.84 8.46 3.84h559.23V-120H167.69Z"
1744
- },
1745
- 400: {
1746
- noFill: "M345-377h391L609-548 506-413l-68-87-93 123Zm-85 177q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h560q24 0 42 18t18 42v560q0 24-18 42t-42 18H260Zm0-60h560v-560H260v560ZM140-80q-24 0-42-18t-18-42v-620h60v620h620v60H140Zm120-740v560-560Z",
1747
- fill: "M345-377h391L609-548 506-413l-68-87-93 123Zm-85 177q-24 0-42-18t-18-42v-560q0-24 18-42t42-18h560q24 0 42 18t18 42v560q0 24-18 42t-42 18H260ZM140-80q-24 0-42-18t-18-42v-620h60v620h620v60H140Z"
1748
- }
1749
- },
1750
- play_arrow: {
1751
- 300: {
1752
- noFill: "M340-238.39v-487.68l383.07 243.84L340-238.39Zm45.39-243.84Zm0 161 253.99-161-253.99-161v322Z",
1753
- fill: "M340-238.39v-487.68l383.07 243.84L340-238.39Z"
1754
- },
1755
- 400: {
1756
- noFill: "M320-203v-560l440 280-440 280Zm60-280Zm0 171 269-171-269-171v342Z",
1757
- fill: "M320-203v-560l440 280-440 280Z"
1758
- }
1759
- },
1760
- replay_5: {
1761
- 300: {
1762
- noFill: "M347.39-126.46q-61.85-26.46-108.16-72.77-46.31-46.31-72.77-108.14Q140-369.2 140-440h45.39q0 122.69 85.96 208.65 85.96 85.96 208.65 85.96 122.69 0 208.65-85.96 85.96-85.96 85.96-208.65 0-122.69-84.03-208.65-84.04-85.96-206.73-85.96h-22.39l71.46 71.46-32 31.61-127.38-127.77 128.15-127.76 31.39 30.99L457-780h23q70.8 0 132.63 26.46t108.14 72.77q46.31 46.31 72.77 108.13Q820-510.81 820-440.02t-26.46 132.63q-26.46 61.85-72.77 108.16-46.31 46.31-108.13 72.77Q550.81-100 480.02-100t-132.63-26.46Zm38.76-192.39v-40.38h125.08v-60.23H386.15v-142.31H551v39.39H426.54v60.84h95.08q12.15 0 20.76 8.81 8.62 8.81 8.62 20.96v83.54q0 12.15-8.62 20.77-8.61 8.61-20.76 8.61H386.15Z",
1763
- fill: "M347.39-126.46q-61.85-26.46-108.16-72.77-46.31-46.31-72.77-108.14Q140-369.2 140-440h45.39q0 122.69 85.96 208.65 85.96 85.96 208.65 85.96 122.69 0 208.65-85.96 85.96-85.96 85.96-208.65 0-122.69-84.03-208.65-84.04-85.96-206.73-85.96h-22.39l71.46 71.46-32 31.61-127.38-127.77 128.15-127.76 31.39 30.99L457-780h23q70.8 0 132.63 26.46t108.14 72.77q46.31 46.31 72.77 108.13Q820-510.81 820-440.02t-26.46 132.63q-26.46 61.85-72.77 108.16-46.31 46.31-108.13 72.77Q550.81-100 480.02-100t-132.63-26.46Zm38.76-192.39v-40.38h125.08v-60.23H386.15v-142.31H551v39.39H426.54v60.84h95.08q12.15 0 20.76 8.81 8.62 8.81 8.62 20.96v83.54q0 12.15-8.62 20.77-8.61 8.61-20.76 8.61H386.15Z"
1764
- },
1765
- 400: {
1766
- noFill: "M339.5-108Q274-136 225-185t-77-114.5Q120-365 120-440h60q0 125 87.5 212.5T480-140q125 0 212.5-87.5T780-440q0-125-85-212.5T485-740h-22l73 73-42 42-147-147 147-147 41 41-78 78h23q75 0 140.5 28T735-695q49 49 77 114.5T840-440q0 75-28 140.5T735-185q-49 49-114.5 77T480-80q-75 0-140.5-28ZM380-310v-50h127v-56H380v-155h176v49H430v57h92q14 0 24 10t10 24v87q0 14-10 24t-24 10H380Z",
1767
- fill: "M339.5-108Q274-136 225-185t-77-114.5Q120-365 120-440h60q0 125 87.5 212.5T480-140q125 0 212.5-87.5T780-440q0-125-85-212.5T485-740h-22l73 73-42 42-147-147 147-147 41 41-78 78h23q75 0 140.5 28T735-695q49 49 77 114.5T840-440q0 75-28 140.5T735-185q-49 49-114.5 77T480-80q-75 0-140.5-28ZM380-310v-50h127v-56H380v-155h176v49H430v57h92q14 0 24 10t10 24v87q0 14-10 24t-24 10H380Z"
1768
- }
1769
- },
1770
- search: {
1771
- 300: {
1772
- noFill: "M790.61-137.54 531.08-397.08q-29.85 26.42-69.65 40.71-39.81 14.29-82.28 14.29-101.62 0-172.31-70.57-70.68-70.58-70.68-171 0-100.43 70.57-171 70.58-70.58 171.72-70.58 100.14 0 170.69 70.58 70.55 70.57 70.55 170.86 0 42.17-14.38 81.98-14.39 39.81-41.62 72.12l260.15 258.54-33.23 33.61ZM378.54-387.46q81.7 0 138.74-57.12 57.03-57.11 57.03-139.07 0-81.97-57.03-139.08-57.04-57.12-138.74-57.12-82.39 0-139.69 57.12-57.31 57.11-57.31 139.08 0 81.96 57.31 139.07 57.3 57.12 139.69 57.12Z",
1773
- fill: "M790.61-137.54 531.08-397.08q-29.85 26.42-69.65 40.71-39.81 14.29-82.28 14.29-101.62 0-172.31-70.57-70.68-70.58-70.68-171 0-100.43 70.57-171 70.58-70.58 171.72-70.58 100.14 0 170.69 70.58 70.55 70.57 70.55 170.86 0 42.17-14.38 81.98-14.39 39.81-41.62 72.12l260.15 258.54-33.23 33.61ZM378.54-387.46q81.7 0 138.74-57.12 57.03-57.11 57.03-139.07 0-81.97-57.03-139.08-57.04-57.12-138.74-57.12-82.39 0-139.69 57.12-57.31 57.11-57.31 139.08 0 81.96 57.31 139.07 57.3 57.12 139.69 57.12Z"
1774
- },
1775
- 400: {
1776
- noFill: "M796-121 533-384q-30 26-70 40.5T378-329q-108 0-183-75t-75-181q0-106 75-181t182-75q106 0 180.5 75T632-585q0 43-14 83t-42 75l264 262-44 44ZM377-389q81 0 138-57.5T572-585q0-81-57-138.5T377-781q-82 0-139.5 57.5T180-585q0 81 57.5 138.5T377-389Z",
1777
- fill: "M796-121 533-384q-30 26-70 40.5T378-329q-108 0-183-75t-75-181q0-106 75-181t182-75q106 0 180.5 75T632-585q0 43-14 83t-42 75l264 262-44 44ZM377-389q81 0 138-57.5T572-585q0-81-57-138.5T377-781q-82 0-139.5 57.5T180-585q0 81 57.5 138.5T377-389Z"
1778
- }
1779
- },
1780
- settings: {
1781
- 300: {
1782
- noFill: "m400.69-100-18.07-120.23q-20.54-7-44.23-20.35-23.7-13.34-40.85-28.27l-111.85 50.93-79.92-141.31 101.08-74.38q-2-10.54-2.89-23.01-.88-12.46-.88-23 0-10.15.88-22.61.89-12.46 2.89-24.16l-101.08-74.76 79.92-140.16 111.46 50.16q18.31-14.93 41.24-28.08 22.92-13.15 43.84-19.54L400.69-860h158.62l18.07 120.62q22.08 8.15 44.16 20.23 22.07 12.07 39.77 28l113.38-50.16 79.54 140.16-102.62 74.3q2.77 11.93 3.47 24 .69 12.08.69 22.85 0 10.38-.89 22.15-.88 11.77-3.27 24.47l102.23 74.15-79.92 141.31-112.61-51.31q-18.7 15.69-40.35 28.96-21.65 13.27-43.58 19.65L559.31-100H400.69Zm36.46-45.39h85.31L536.85-257q31.84-8 59.42-23.85 27.58-15.84 52.73-40.23l104.46 45.23 40-70.84L701-414.92q4-17.77 6.31-33.5 2.3-15.73 2.3-31.58 0-16.62-2-31.96-2-15.35-6.61-32.35l93.23-69-40-70.84-105.62 45.23q-21.07-23.69-50.84-41.77Q568-698.77 536.46-703l-13.61-111.61h-85.7l-13.23 111.23q-33.23 6.61-61.19 22.65t-52.11 41.42l-104.85-44.84-40 70.84 92.46 67.85q-4.38 15.84-6.69 32.15-2.31 16.31-2.31 33.69 0 16.62 2.31 32.54 2.31 15.93 6.31 32.16l-92.08 68.23 40 70.84 104.46-44.84q24 24.38 52.15 40.23 28.16 15.84 61.16 23.84l13.61 111.23Zm41.7-221.92q47.07 0 79.88-32.81 32.81-32.8 32.81-79.88t-32.81-79.88q-32.81-32.81-79.88-32.81-46.7 0-79.7 32.81-32.99 32.8-32.99 79.88t32.99 79.88q33 32.81 79.7 32.81ZM480-480Z",
1783
- fill: "m400.69-100-18.07-120.23q-20.54-7-44.23-20.35-23.7-13.34-40.85-28.27l-111.85 50.93-79.92-141.31 101.08-74.38q-2-10.54-2.89-23.01-.88-12.46-.88-23 0-10.15.88-22.61.89-12.46 2.89-24.16l-101.08-74.76 79.92-140.16 111.46 50.16q18.31-14.93 41.24-28.08 22.92-13.15 43.84-19.54L400.69-860h158.62l18.07 120.62q22.08 8.15 44.16 20.23 22.07 12.07 39.77 28l113.38-50.16 79.54 140.16-102.62 74.3q2.77 11.93 3.47 24 .69 12.08.69 22.85 0 10.38-.89 22.15-.88 11.77-3.27 24.47l102.23 74.15-79.92 141.31-112.61-51.31q-18.7 15.69-40.35 28.96-21.65 13.27-43.58 19.65L559.31-100H400.69Zm78.16-267.31q47.07 0 79.88-32.81 32.81-32.8 32.81-79.88t-32.81-79.88q-32.81-32.81-79.88-32.81-46.7 0-79.7 32.81-32.99 32.8-32.99 79.88t32.99 79.88q33 32.81 79.7 32.81Z"
1784
- },
1785
- 400: {
1786
- noFill: "m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm48-60h88l14-112q33-8 62.5-25t53.5-41l106 46 40-72-94-69q4-17 6.5-33.5T715-480q0-17-2-33.5t-7-33.5l94-69-40-72-106 46q-23-26-52-43.5T538-708l-14-112h-88l-14 112q-34 7-63.5 24T306-642l-106-46-40 72 94 69q-4 17-6.5 33.5T245-480q0 17 2.5 33.5T254-413l-94 69 40 72 106-46q24 24 53.5 41t62.5 25l14 112Zm44-210q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Zm0-130Z",
1787
- fill: "m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm92-270q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Z"
1788
- }
1789
- },
1790
- share: {
1791
- 300: {
1792
- noFill: "M676.68-100q-42.8 0-72.97-30.24t-30.17-72.99q0-7.67 5.38-33.62L281.46-412.23q-14.66 16.62-34.82 26.04-20.16 9.42-43.79 9.42-42.6 0-72.72-30.01Q100-436.8 100-480.09q0-43.29 30.13-73.22 30.12-29.92 72.59-29.92 22.87 0 42.77 8.91 19.9 8.91 34.36 25.32l299.07-173.77q-2.38-8-3.88-16.5t-1.5-17.55q0-42.7 30.26-72.94Q634.07-860 676.86-860q42.79 0 72.97 30.26Q780-799.47 780-756.68q0 42.8-30.24 72.97t-73.1 30.17q-22.36 0-41.59-9-19.22-9-33.69-24L300.46-515.23q3 8 4.5 17.11 1.5 9.12 1.5 17.81t-1.19 16.39q-1.19 7.69-3.58 15.69l300.69 174.15q14.61-15 33.54-23.69 18.93-8.69 40.95-8.69 43.15 0 73.14 30.26Q780-245.93 780-203.14q0 42.79-30.26 72.97Q719.47-100 676.68-100Zm.19-45.39q24.63 0 41.19-16.66 16.55-16.66 16.55-41.28 0-24.63-16.66-41.19t-41.28-16.56q-24.63 0-41.19 16.66t-16.56 41.29q0 24.63 16.66 41.19 16.66 16.55 41.29 16.55ZM202.95-422.15q24.79 0 41.46-16.76t16.67-41.19q0-24.44-16.77-41.09-16.77-16.66-41.57-16.66-24.46 0-40.91 16.76-16.44 16.76-16.44 41.19 0 24.44 16.54 41.09 16.55 16.66 41.02 16.66Zm515.01-293.43q16.65-16.66 16.65-41.29t-16.66-41.19q-16.66-16.55-41.28-16.55-24.63 0-41.19 16.66t-16.56 41.28q0 24.63 16.76 41.19t41.19 16.56q24.44 0 41.09-16.66Zm-41.19 512.35ZM203.23-480Zm473.54-276.77Z",
1793
- fill: "M676.68-100q-42.8 0-72.97-30.24t-30.17-72.99q0-7.62 5.38-33.62L281.46-412.23q-14.74 16.57-34.8 26.02-20.07 9.44-43.81 9.44-42.6 0-72.72-29.92Q100-436.62 100-480t30.13-73.31q30.12-29.92 72.72-29.92 22.74 0 42.64 8.91 19.9 8.91 34.36 25.32l299.07-173.77q-2.38-8-3.88-16.5t-1.5-17.5q0-42.75 30.26-72.99Q634.07-860 676.86-860q42.79 0 72.97 30.26Q780-799.47 780-756.68q0 42.8-30.24 72.97t-72.99 30.17q-22.5 0-41.71-9t-33.68-24L300.46-515.23q3 8 4.5 17.11 1.5 9.12 1.5 17.62 0 8.88-1.19 16.58-1.19 7.69-3.58 15.69l300.69 174.15q14.47-15 33.41-23.69 18.94-8.69 41.13-8.69 43.1 0 73.09 30.26Q780-245.93 780-203.14q0 42.79-30.26 72.97Q719.47-100 676.68-100Z"
1794
- },
1795
- 400: {
1796
- noFill: "M686-80q-47.5 0-80.75-33.25T572-194q0-8 5-34L278-403q-16.28 17.34-37.64 27.17Q219-366 194-366q-47.5 0-80.75-33T80-480q0-48 33.25-81T194-594q24 0 45 9.3 21 9.29 37 25.7l301-173q-2-8-3.5-16.5T572-766q0-47.5 33.25-80.75T686-880q47.5 0 80.75 33.25T800-766q0 47.5-33.25 80.75T686-652q-23.27 0-43.64-9Q622-670 606-685L302-516q3 8 4.5 17.5t1.5 18q0 8.5-1 16t-3 15.5l303 173q16-15 36.09-23.5 20.1-8.5 43.07-8.5Q734-308 767-274.75T800-194q0 47.5-33.25 80.75T686-80Zm.04-60q22.96 0 38.46-15.54 15.5-15.53 15.5-38.5 0-22.96-15.54-38.46-15.53-15.5-38.5-15.5-22.96 0-38.46 15.54-15.5 15.53-15.5 38.5 0 22.96 15.54 38.46 15.53 15.5 38.5 15.5Zm-492-286q22.96 0 38.46-15.54 15.5-15.53 15.5-38.5 0-22.96-15.54-38.46-15.53-15.5-38.5-15.5-22.96 0-38.46 15.54-15.5 15.53-15.5 38.5 0 22.96 15.54 38.46 15.53 15.5 38.5 15.5ZM724.5-727.54q15.5-15.53 15.5-38.5 0-22.96-15.54-38.46-15.53-15.5-38.5-15.5-22.96 0-38.46 15.54-15.5 15.53-15.5 38.5 0 22.96 15.54 38.46 15.53 15.5 38.5 15.5 22.96 0 38.46-15.54ZM686-194ZM194-480Zm492-286Z",
1797
- fill: "M686-80q-47.5 0-80.75-33.25T572-194q0-8 5-34L278-403q-16.28 17.34-37.64 27.17Q219-366 194-366q-47.5 0-80.75-33T80-480q0-48 33.25-81T194-594q24 0 45 9.3 21 9.29 37 25.7l301-173q-2-8-3.5-16.5T572-766q0-47.5 33.25-80.75T686-880q47.5 0 80.75 33.25T800-766q0 47.5-33.25 80.75T686-652q-23.27 0-43.64-9Q622-670 606-685L302-516q3 8 4.5 17.5t1.5 18q0 8.5-1 16t-3 15.5l303 173q16-15 36.09-23.5 20.1-8.5 43.07-8.5Q734-308 767-274.75T800-194q0 47.5-33.25 80.75T686-80Z"
1798
- }
1799
- },
1800
- speed_1_2x: {
1801
- 300: {
1802
- noFill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm108.93 0v-158.84q0-23.53 17.08-40.62 17.08-17.08 40.61-17.08h86.92q5.39 0 8.85-3.46t3.46-8.85v-97.92q0-5-3.46-8.65-3.46-3.66-8.85-3.66H365.08v-45.38h144.61q23.53 0 40.61 17.08t17.08 40.61v97.92q0 23.53-17.08 40.61-17.08 17.09-40.61 17.09h-86.92q-5 0-8.66 3.65-3.65 3.65-3.65 8.66v113.46h156.92v45.38h-202.3Zm-218.23 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM630.92-290l111.69-198.31L639-670h51.54l80.38 141.46L850.31-670h50.76L798.84-489.08 911.54-290H861l-90.46-157.46L681.31-290h-50.39Z",
1803
- fill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm108.93 0v-158.84q0-23.53 17.08-40.62 17.08-17.08 40.61-17.08h86.92q5.39 0 8.85-3.46t3.46-8.85v-97.92q0-5-3.46-8.65-3.46-3.66-8.85-3.66H365.08v-45.38h144.61q23.53 0 40.61 17.08t17.08 40.61v97.92q0 23.53-17.08 40.61-17.08 17.09-40.61 17.09h-86.92q-5 0-8.66 3.65-3.65 3.65-3.65 8.66v113.46h156.92v45.38h-202.3Zm-218.23 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM630.92-290l111.69-198.31L639-670h51.54l80.38 141.46L850.31-670h50.76L798.84-489.08 911.54-290H861l-90.46-157.46L681.31-290h-50.39Z"
1804
- },
1805
- 400: {
1806
- noFill: "M245-277v-60h60v60h-60Zm122 0v-175q0-24 18-42t42-18h90v-111H367v-60h150q24 0 42 18t18 42v111q0 24-18 42t-42 18h-90v115h150v60H367Zm-244 0v-346H40v-60h143v406h-60Zm516-3 114-206-109-194h65l80 143 79-143h65L825-486l115 206h-64l-87-154-85 154h-65Z",
1807
- fill: "M245-277v-60h60v60h-60Zm122 0v-175q0-24 18-42t42-18h90v-111H367v-60h150q24 0 42 18t18 42v111q0 24-18 42t-42 18h-90v115h150v60H367Zm-244 0v-346H40v-60h143v406h-60Zm516-3 114-206-109-194h65l80 143 79-143h65L825-486l115 206h-64l-87-154-85 154h-65Z"
1808
- }
1809
- },
1810
- speed_1_5x: {
1811
- 300: {
1812
- noFill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm-109.3 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM630.92-290l111.69-198.31L639-670h51.54l80.38 141.46L850.31-670h50.76L798.84-489.08 911.54-290H861l-90.46-157.46L681.31-290h-50.39Zm-265.84 2.23v-45.38h144.61q5.39 0 8.85-3.66 3.46-3.65 3.46-8.65v-101.15q0-5.01-3.46-8.66-3.46-3.65-8.85-3.65H365.08v-213.31h202.3v45.38H410.46v122.54h99.23q23.62 0 40.66 17.04 17.03 17.04 17.03 40.66v101.15q0 23.61-17.03 40.65-17.04 17.04-40.66 17.04H365.08Z",
1813
- fill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm-109.3 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM630.92-290l111.69-198.31L639-670h51.54l80.38 141.46L850.31-670h50.76L798.84-489.08 911.54-290H861l-90.46-157.46L681.31-290h-50.39Zm-265.84 2.23v-45.38h144.61q5.39 0 8.85-3.66 3.46-3.65 3.46-8.65v-101.15q0-5.01-3.46-8.66-3.46-3.65-8.85-3.65H365.08v-213.31h202.3v45.38H410.46v122.54h99.23q23.62 0 40.66 17.04 17.03 17.04 17.03 40.66v101.15q0 23.61-17.03 40.65-17.04 17.04-40.66 17.04H365.08Z"
1814
- },
1815
- 400: {
1816
- noFill: "M245-277v-60h60v60h-60Zm-122 0v-346H40v-60h143v406h-60Zm516-3 114-206-109-194h65l80 143 79-143h65L825-486l115 206h-64l-87-154-85 154h-65Zm-272 3v-60h150v-115H367v-231h210v60H427v111h90q24 0 42 18t18 42v115q0 24-18 42t-42 18H367Z",
1817
- fill: "M245-277v-60h60v60h-60Zm-122 0v-346H40v-60h143v406h-60Zm516-3 114-206-109-194h65l80 143 79-143h65L825-486l115 206h-64l-87-154-85 154h-65Zm-272 3v-60h150v-115H367v-231h210v60H427v111h90q24 0 42 18t18 42v115q0 24-18 42t-42 18H367Z"
1818
- }
1819
- },
1820
- speed_1_7x: {
1821
- 300: {
1822
- noFill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm-109.3 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM610.92-290l111.69-198.31L619-670h51.54l80.38 141.46L830.31-670h50.76L778.84-489.08 891.54-290H841l-90.46-157.46L661.31-290h-50.39Zm-202.84 1.61 88.54-338.46H330.08v-45.38h166.15q18.62 0 32.58 12.15 13.96 12.16 13.96 30.39 0 7.23-2.39 14.15l-86.15 327.15h-46.15Z",
1823
- fill: "M256.15-287.77v-45.38h45.39v45.38h-45.39Zm-109.3 0v-339.08H68.46v-45.38h123.77v384.46h-45.38ZM610.92-290l111.69-198.31L619-670h51.54l80.38 141.46L830.31-670h50.76L778.84-489.08 891.54-290H841l-90.46-157.46L661.31-290h-50.39Zm-202.84 1.61 88.54-338.46H330.08v-45.38h166.15q18.62 0 32.58 12.15 13.96 12.16 13.96 30.39 0 7.23-2.39 14.15l-86.15 327.15h-46.15Z"
1824
- },
1825
- 400: {
1826
- noFill: "M245-277v-60h60v60h-60Zm-122 0v-346H40v-60h143v406h-60Zm496-3 114-206-109-194h65l80 143 79-143h65L805-486l115 206h-64l-87-154-85 154h-65Zm-214 2 92-345H327v-60h170q24 0 42 16t18 40q0 3-2 13l-90 336h-60Z",
1827
- fill: "M245-277v-60h60v60h-60Zm-122 0v-346H40v-60h143v406h-60Zm496-3 114-206-109-194h65l80 143 79-143h65L805-486l115 206h-64l-87-154-85 154h-65Zm-214 2 92-345H327v-60h170q24 0 42 16t18 40q0 3-2 13l-90 336h-60Z"
1828
- }
1829
- },
1830
- speed_1x: {
1831
- 300: {
1832
- noFill: "M474.27-316.58q37.73-1.88 54.65-27.88l211.39-316.69-314.62 212.84q-25.77 17.31-27.77 54.96-2 37.66 18.31 58.16t58.04 18.61Zm4.11-462.8q55.85 0 111.31 16.57 55.46 16.58 108.23 55.43L659-678.85q-42.69-28.07-91.12-41.61Q519.46-734 478.47-734q-138.66 0-235.87 98.43-97.21 98.42-97.21 238.43 0 44.22 12.11 88.87 12.12 44.65 34.83 82.88h571.59q22.39-36.38 34.81-82.65 12.42-46.27 12.42-91.5 0-40.46-11.92-88t-41.23-87l29.77-38.92q35.69 54.85 51.42 106.15 15.73 51.31 17.35 103.69 1.23 56.16-11.62 105.31-12.84 49.16-38.69 93.77-8.92 16.46-19.15 20.5-10.23 4.04-26 4.04h-566q-12.82 0-25.26-6.77-12.43-6.77-18.9-19.31Q128-247.92 114-294.54q-14-46.61-14-102.61 0-78.39 29.77-148.04 29.77-69.66 80.88-121.46 51.12-51.81 120.34-82.27 69.22-30.46 147.39-30.46Zm-7.07 309.07Z",
1833
- fill: "M424.15-346.15q21.54 21.53 55.12 20.03t49.04-24.03l214.84-312.23-313 214.07q-22.92 15.7-25.42 47.96-2.5 32.27 19.42 54.2ZM195.08-180q-13.77 0-25.73-6.96t-18.43-19.12q-24.84-44.54-37.88-93.46Q100-348.46 100-399.38q0-78.77 29.96-148.12 29.96-69.35 81.27-120.96 51.31-51.62 120.35-81.58Q400.62-780 478.38-780q78.77 0 148.62 29.77 69.85 29.77 121.65 81.38 51.81 51.62 81.77 120.77 29.96 69.16 29.58 147.93 0 51.3-12.42 101.11-12.43 49.81-37.5 94.5-7.08 12.15-19.43 18.35-12.34 6.19-25.73 6.19H195.08Z"
1834
- },
1835
- 400: {
1836
- noFill: "M473.5-303.5Q517-305 537-336l216-339-335 219q-30 20-32 64t21 67q23 23 66.5 21.5ZM478-799q57 0 119 18.5T716-717l-52 37q-45-30-96.5-44.5T477.98-739q-140.47 0-239.23 100.22Q140-538.57 140-396.02 140-351 152.5-305q12.5 46 35.5 85h579q22-36 35-84t13-94q0-42-12.5-90.5T758-578l39-52q38 56 57 112.5T875-404q2 60-12 113t-41 98q-12 23-25.5 28t-33.5 5H192q-17 0-33.5-8.5T134-193q-26-48-40-97.5T80-396q0-83 31.5-156.5t85.5-128Q251-735 323.68-767T478-799Zm-9 331Z",
1837
- fill: "M418-340q25 25 63 23.5t55-27.5l221-333-333 221q-26 18-28.5 54.5T418-340ZM192-160q-18 0-34-8.5T134-193q-26-48-40-100T80-399q0-83 31.5-156T197-682.5q54-54.5 126.5-86T478-800q83 0 156.5 31.5t128 86Q817-628 848.5-555T880-399q0 54-13 106.5T827-193q-9 16-25 24.5t-34 8.5H192Z"
1838
- }
1839
- },
1840
- speed_2x: {
1841
- 300: {
1842
- noFill: "M221.54-287.77v-158.84q0-23.62 17.04-40.66 17.04-17.04 40.65-17.04h97.31q5 0 8.65-3.46 3.66-3.46 3.66-8.85v-97.92q0-5-3.66-8.65-3.65-3.66-8.65-3.66h-155v-45.38h155q23.23 0 40.46 17.04t17.23 40.65v97.92q0 23.62-17.23 40.66-17.23 17.04-40.46 17.04h-97.31q-5.38 0-8.84 3.65-3.47 3.65-3.47 8.66v113.46h167.31v45.38H221.54ZM492.69-290l111.69-198.31L501.15-670h51.16l80.38 141.46L712.46-670h50.38L660.61-489.08 773.31-290h-50.54l-90.46-157.46L543.46-290h-50.77Z",
1843
- fill: "M221.54-287.77v-158.84q0-23.62 17.04-40.66 17.04-17.04 40.65-17.04h97.31q5 0 8.65-3.46 3.66-3.46 3.66-8.85v-97.92q0-5-3.66-8.65-3.65-3.66-8.65-3.66h-155v-45.38h155q23.23 0 40.46 17.04t17.23 40.65v97.92q0 23.62-17.23 40.66-17.23 17.04-40.46 17.04h-97.31q-5.38 0-8.84 3.65-3.47 3.65-3.47 8.66v113.46h167.31v45.38H221.54ZM492.69-290l111.69-198.31L501.15-670h51.16l80.38 141.46L712.46-670h50.38L660.61-489.08 773.31-290h-50.54l-90.46-157.46L543.46-290h-50.77Z"
1844
- },
1845
- 400: {
1846
- noFill: "M205-277v-175q0-24 18-42t42-18h110v-111H205v-60h170q24 0 42 18t18 42v111q0 24-18 42t-42 18H265v115h170v60H205Zm285-3 114-206-109-194h65l80 143 79-143h65L676-486l115 206h-64l-87-154-85 154h-65Z",
1847
- fill: "M205-277v-175q0-24 18-42t42-18h110v-111H205v-60h170q24 0 42 18t18 42v111q0 24-18 42t-42 18H265v115h170v60H205Zm285-3 114-206-109-194h65l80 143 79-143h65L676-486l115 206h-64l-87-154-85 154h-65Z"
1848
- }
1849
- },
1850
- stop: {
1851
- 300: {
1852
- noFill: "M305.39-654.61v349.22-349.22ZM260-260v-440h440v440H260Zm45.39-45.39h349.22v-349.22H305.39v349.22Z",
1853
- fill: "M260-260v-440h440v440H260Z"
1854
- },
1855
- 400: {
1856
- noFill: "M300-660v360-360Zm-60 420v-480h480v480H240Zm60-60h360v-360H300v360Z",
1857
- fill: "M240-240v-480h480v480H240Z"
2210
+ variant = "button",
2211
+ previewSize = 160,
2212
+ className,
2213
+ disabled,
2214
+ accept,
2215
+ onChange,
2216
+ ...props
2217
+ }) => {
2218
+ const inputId = React17.useId();
2219
+ const helperId = React17.useId();
2220
+ const inputRef = React17.useRef(null);
2221
+ const [previewUrls, setPreviewUrls] = React17.useState([]);
2222
+ const isPreviewVariant = variant === "preview";
2223
+ const showPreview = isPreviewVariant || preview;
2224
+ const handleChange = (e) => {
2225
+ const files = e.currentTarget.files;
2226
+ onFiles?.(files);
2227
+ onChange?.(e);
2228
+ if (showPreview && files) {
2229
+ for (const url of previewUrls) {
2230
+ URL.revokeObjectURL(url);
2231
+ }
2232
+ const urls = [];
2233
+ const limit = isPreviewVariant ? Math.min(1, files.length) : files.length;
2234
+ for (let i = 0; i < limit; i++) {
2235
+ if (files[i].type.startsWith("image/")) {
2236
+ urls.push(URL.createObjectURL(files[i]));
2237
+ }
2238
+ }
2239
+ setPreviewUrls(urls);
2240
+ } else {
2241
+ for (const url of previewUrls) {
2242
+ URL.revokeObjectURL(url);
2243
+ }
2244
+ setPreviewUrls([]);
1858
2245
  }
1859
- },
1860
- visibility: {
1861
- 300: {
1862
- noFill: "M590.31-389.78q45.46-45.56 45.46-110.31 0-64.76-45.55-110.22-45.56-45.46-110.31-45.46-64.76 0-110.22 45.55-45.46 45.56-45.46 110.31 0 64.76 45.55 110.22 45.56 45.46 110.31 45.46 64.76 0 110.22-45.55Zm-189.04-31.49q-32.12-32.11-32.12-78.73 0-46.62 32.12-78.73 32.11-32.12 78.73-32.12 46.62 0 78.73 32.12 32.12 32.11 32.12 78.73 0 46.62-32.12 78.73-32.11 32.12-78.73 32.12-46.62 0-78.73-32.12ZM230.23-297.04Q118-374.08 61.54-500 118-625.92 230.18-702.96 342.35-780 479.95-780q137.59 0 249.82 77.04Q842-625.92 898.46-500 842-374.08 729.82-297.04 617.65-220 480.05-220q-137.59 0-249.82-77.04ZM480-500Zm218.65 170.85Q798.23-392.92 850.46-500q-52.23-107.08-151.81-170.85-99.57-63.76-218.65-63.76-119.08 0-218.65 63.76Q161.77-607.08 108.92-500q52.85 107.08 152.43 170.85 99.57 63.76 218.65 63.76 119.08 0 218.65-63.76Z",
1863
- fill: "M590.31-389.78q45.46-45.56 45.46-110.31 0-64.76-45.55-110.22-45.56-45.46-110.31-45.46-64.76 0-110.22 45.55-45.46 45.56-45.46 110.31 0 64.76 45.55 110.22 45.56 45.46 110.31 45.46 64.76 0 110.22-45.55Zm-189.04-31.49q-32.12-32.11-32.12-78.73 0-46.62 32.12-78.73 32.11-32.12 78.73-32.12 46.62 0 78.73 32.12 32.12 32.11 32.12 78.73 0 46.62-32.12 78.73-32.11 32.12-78.73 32.12-46.62 0-78.73-32.12ZM230.23-297.04Q118-374.08 61.54-500 118-625.92 230.18-702.96 342.35-780 479.95-780q137.59 0 249.82 77.04Q842-625.92 898.46-500 842-374.08 729.82-297.04 617.65-220 480.05-220q-137.59 0-249.82-77.04Z"
1864
- },
1865
- 400: {
1866
- noFill: "M600.5-379.5Q650-429 650-500t-49.5-120.5Q551-670 480-670t-120.5 49.5Q310-571 310-500t49.5 120.5Q409-330 480-330t120.5-49.5Zm-200-41Q368-453 368-500t32.5-79.5Q433-612 480-612t79.5 32.5Q592-547 592-500t-32.5 79.5Q527-388 480-388t-79.5-32.5ZM216-283Q98-366 40-500q58-134 176-217t264-83q146 0 264 83t176 217q-58 134-176 217t-264 83q-146 0-264-83Zm264-217Zm222.5 174.5Q804-391 857-500q-53-109-154.5-174.5T480-740q-121 0-222.5 65.5T102-500q54 109 155.5 174.5T480-260q121 0 222.5-65.5Z",
1867
- fill: "M600.5-379.5Q650-429 650-500t-49.5-120.5Q551-670 480-670t-120.5 49.5Q310-571 310-500t49.5 120.5Q409-330 480-330t120.5-49.5Zm-200-41Q368-453 368-500t32.5-79.5Q433-612 480-612t79.5 32.5Q592-547 592-500t-32.5 79.5Q527-388 480-388t-79.5-32.5ZM216-283Q98-366 40-500q58-134 176-217t264-83q146 0 264 83t176 217q-58 134-176 217t-264 83q-146 0-264-83Z"
2246
+ };
2247
+ const handleRemove = (e) => {
2248
+ e.preventDefault();
2249
+ e.stopPropagation();
2250
+ for (const url of previewUrls) {
2251
+ URL.revokeObjectURL(url);
1868
2252
  }
1869
- },
1870
- visibility_off: {
1871
- 300: {
1872
- noFill: "m620.15-434.39-34.77-34.76q21.39-67.54-28.53-111.47-49.93-43.92-107.7-24.76l-34.76-34.77q13.53-7.93 30.3-11.77 16.77-3.85 35.31-3.85 65.23 0 110.5 45.27 45.27 45.27 45.27 110.5 0 18.54-4.16 36-4.15 17.46-11.46 29.61ZM748-307.69l-31.15-30q45.92-34.08 80.69-75.89 34.77-41.8 52.92-86.42-50-108.31-148.46-171.46-98.46-63.15-214.69-63.15-38.54 0-78.12 7.03-39.57 7.04-65.34 16.89L309-746.15q33.46-14.46 81.42-24.16 47.97-9.69 93.43-9.69 134.53 0 248.03 76.12Q845.38-627.77 898.46-500 874-442.54 836.27-394.35q-37.73 48.19-88.27 86.66Zm59.92 216.76L646.08-250.92q-30.77 13.61-74.39 22.26Q528.08-220 480-220q-137.54 0-250.77-76.12Q116-372.23 61.54-500q21.54-52.38 59.15-101.12 37.62-48.73 87.08-89.11L85.23-812.38l32-32.62 720.46 720.46-29.77 33.61Zm-569.15-567.3q-37.38 26.23-74.96 71-37.58 44.77-54.89 87.23 50.62 108.31 150.81 171.46 100.19 63.15 225.96 63.15 37.23 0 73.66-5.73 36.42-5.73 52.42-14.11l-70.92-70.93q-10.62 5.39-28.35 8.66-17.73 3.27-32.5 3.27-64.61 0-110.19-44.96T324.23-500q0-15 3.27-31.92 3.27-16.93 8.66-28.93l-97.39-97.38ZM531.46-517Zm-106 53.38Z",
1873
- fill: "M807.92-90.93 646.08-250.92q-30.77 13.61-74.39 22.26Q528.08-220 480-220q-137.54 0-250.77-76.12Q116-372.23 61.54-500q21.54-52.38 59.15-101.12 37.62-48.73 87.08-89.11L85.23-812.38l32-32.62 720.46 720.46-29.77 33.61ZM480-344.23q14.77 0 32.69-3.27 17.93-3.27 28.16-9.04L336.54-560.85q-5.77 11.62-9.04 28.73-3.27 17.12-3.27 32.12 0 65.85 45.58 110.81 45.58 44.96 110.19 44.96Zm268 36.54-127.08-126.7q6.93-12.15 10.89-29.61 3.96-17.46 3.96-36 0-65.23-45.27-110.5-45.27-45.27-110.5-45.27-18.54 0-35.31 3.85-16.77 3.84-29.92 11.77L309-746.15q33.46-14.46 81.42-24.16 47.97-9.69 93.43-9.69 134.53 0 248.03 76.12Q845.38-627.77 898.46-500 874-442.54 836.27-394.35q-37.73 48.19-88.27 86.66ZM585.77-469.15 449.54-605.38q27.08-9.08 55.96-2.39 28.88 6.69 50.35 27.15 21.84 21.47 31.03 48.62 9.2 27.15-1.11 62.85Z"
1874
- },
1875
- 400: {
1876
- noFill: "m629-419-44-44q26-71-27-118t-115-24l-44-44q17-11 38-16t43-5q71 0 120.5 49.5T650-500q0 22-5.5 43.5T629-419Zm129 129-40-40q49-36 85.5-80.5T857-500q-50-111-150-175.5T490-740q-42 0-86 8t-69 19l-46-47q35-16 89.5-28T485-800q143 0 261.5 81.5T920-500q-26 64-67 117t-95 93Zm58 226L648-229q-35 14-79 21.5t-89 7.5q-146 0-265-81.5T40-500q20-52 55.5-101.5T182-696L56-822l42-43 757 757-39 44ZM223-654q-37 27-71.5 71T102-500q51 111 153.5 175.5T488-260q33 0 65-4t48-12l-64-64q-11 5-27 7.5t-30 2.5q-70 0-120-49t-50-121q0-15 2.5-30t7.5-27l-97-97Zm305 142Zm-116 58Z",
1877
- fill: "M816-64 648-229q-35 14-79 21.5t-89 7.5q-146 0-265-81.5T40-500q20-52 55.5-101.5T182-696L56-822l42-43 757 757-39 44ZM480-330q14 0 30-2.5t27-7.5L320-557q-5 12-7.5 27t-2.5 30q0 72 50 121t120 49Zm278 40L629-419q10-16 15.5-37.5T650-500q0-71-49.5-120.5T480-670q-22 0-43 5t-38 16L289-760q35-16 89.5-28T485-800q143 0 261.5 81.5T920-500q-26 64-67 117t-95 93ZM585-463 443-605q29-11 60-4.5t54 28.5q23 23 32 51.5t-4 66.5Z"
2253
+ setPreviewUrls([]);
2254
+ if (inputRef.current) {
2255
+ inputRef.current.value = "";
1878
2256
  }
1879
- }
2257
+ onFiles?.(null);
2258
+ };
2259
+ React17.useEffect(() => {
2260
+ return () => {
2261
+ for (const url of previewUrls) {
2262
+ URL.revokeObjectURL(url);
2263
+ }
2264
+ };
2265
+ }, [previewUrls]);
2266
+ const hasImage = previewUrls.length > 0;
2267
+ const rootClassName = cn(
2268
+ "file_input",
2269
+ `file_input_variant_${variant}`,
2270
+ isPreviewVariant && hasImage && "file_input_variant_preview_filled",
2271
+ disabled && "file_input_disabled",
2272
+ className
2273
+ );
2274
+ return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
2275
+ /* @__PURE__ */ jsx(
2276
+ "input",
2277
+ {
2278
+ ...props,
2279
+ ref: inputRef,
2280
+ id: inputId,
2281
+ type: "file",
2282
+ className: "file_input_control",
2283
+ disabled,
2284
+ accept: isPreviewVariant ? accept ?? "image/*" : accept,
2285
+ "aria-describedby": supportingText ? helperId : void 0,
2286
+ onChange: handleChange
2287
+ }
2288
+ ),
2289
+ isPreviewVariant ? /* @__PURE__ */ jsx(
2290
+ "label",
2291
+ {
2292
+ htmlFor: inputId,
2293
+ className: "file_input_label",
2294
+ style: { width: previewSize, height: previewSize },
2295
+ children: hasImage ? (
2296
+ // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
2297
+ /* @__PURE__ */ jsx(
2298
+ "img",
2299
+ {
2300
+ src: previewUrls[0],
2301
+ alt: "",
2302
+ className: "file_input_preview_image"
2303
+ }
2304
+ )
2305
+ ) : /* @__PURE__ */ jsxs("span", { className: "file_input_preview_empty", children: [
2306
+ /* @__PURE__ */ jsx(Image, { size: 32, "aria-hidden": "true" }),
2307
+ /* @__PURE__ */ jsx("span", { className: "file_input_preview_empty_text", children: label })
2308
+ ] })
2309
+ }
2310
+ ) : /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label }),
2311
+ isPreviewVariant && hasImage && !disabled && /* @__PURE__ */ jsx(
2312
+ "button",
2313
+ {
2314
+ type: "button",
2315
+ className: "file_input_preview_remove",
2316
+ onClick: handleRemove,
2317
+ "aria-label": "\uC774\uBBF8\uC9C0 \uC81C\uAC70",
2318
+ children: /* @__PURE__ */ jsx(X, { size: 14, "aria-hidden": "true" })
2319
+ }
2320
+ ),
2321
+ supportingText && /* @__PURE__ */ jsx("span", { id: helperId, className: "file_input_helper", children: supportingText }),
2322
+ !isPreviewVariant && previewUrls.length > 0 && /* @__PURE__ */ jsx("div", { className: "file_input_preview", children: previewUrls.map((url) => (
2323
+ // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
2324
+ /* @__PURE__ */ jsx(
2325
+ "img",
2326
+ {
2327
+ src: url,
2328
+ alt: "",
2329
+ className: "file_input_preview_img"
2330
+ },
2331
+ url
2332
+ )
2333
+ )) })
2334
+ ] });
1880
2335
  };
1881
- var Icon = ({
1882
- name,
1883
- size = 24,
1884
- weight = 400,
1885
- fill = false,
2336
+ var Hero = ({
2337
+ height = "md",
2338
+ align = "left",
2339
+ backgroundImage,
2340
+ backgroundColor,
2341
+ overlay,
2342
+ title,
2343
+ subtitle,
2344
+ eyebrow,
2345
+ textColor = "auto",
2346
+ primaryAction,
2347
+ secondaryAction,
2348
+ children,
2349
+ className,
1886
2350
  style,
1887
2351
  ...props
1888
2352
  }) => {
1889
- const entry = ICON_DATA[name];
1890
- if (!entry) {
1891
- console.warn(`[Icon] Unknown icon name: "${name}"`);
1892
- return null;
1893
- }
1894
- const pathData = fill ? entry[weight].fill : entry[weight].noFill;
2353
+ const resolvedOverlay = overlay === true ? "dark" : overlay;
2354
+ const isDarkOverlay = resolvedOverlay === "dark" || resolvedOverlay === "navy";
2355
+ const resolvedTextColor = textColor === "auto" ? isDarkOverlay || backgroundImage && !resolvedOverlay ? "inverse" : "default" : textColor;
2356
+ const heroClassName = cn(
2357
+ "hero",
2358
+ `hero_height_${height}`,
2359
+ `hero_align_${align}`,
2360
+ resolvedOverlay && `hero_overlay_${resolvedOverlay}`,
2361
+ `hero_text_${resolvedTextColor}`,
2362
+ className
2363
+ );
2364
+ const inlineStyle = { ...style };
2365
+ if (backgroundImage) inlineStyle.backgroundImage = `url("${backgroundImage}")`;
2366
+ if (backgroundColor) inlineStyle.backgroundColor = backgroundColor;
2367
+ return /* @__PURE__ */ jsxs("section", { className: heroClassName, style: inlineStyle, ...props, children: [
2368
+ resolvedOverlay && /* @__PURE__ */ jsx("div", { className: "hero_overlay", "aria-hidden": "true" }),
2369
+ /* @__PURE__ */ jsxs("div", { className: "hero_content", children: [
2370
+ eyebrow && /* @__PURE__ */ jsx("div", { className: "hero_eyebrow", children: eyebrow }),
2371
+ title && /* @__PURE__ */ jsx("h1", { className: "hero_title", children: title }),
2372
+ subtitle && /* @__PURE__ */ jsx("p", { className: "hero_subtitle", children: subtitle }),
2373
+ (primaryAction || secondaryAction || children) && /* @__PURE__ */ jsxs("div", { className: "hero_actions", children: [
2374
+ primaryAction && /* @__PURE__ */ jsx(Button, { size: "lg", variant: "filled", onClick: primaryAction.onClick, children: primaryAction.label }),
2375
+ secondaryAction && /* @__PURE__ */ jsx(Button, { size: "lg", variant: "outline", onClick: secondaryAction.onClick, children: secondaryAction.label }),
2376
+ children
2377
+ ] })
2378
+ ] })
2379
+ ] });
2380
+ };
2381
+ var Icon = ({ icon: IconComponent, ...props }) => {
2382
+ const hasLabel = !!props["aria-label"];
1895
2383
  return /* @__PURE__ */ jsx(
1896
- "svg",
2384
+ IconComponent,
1897
2385
  {
1898
- xmlns: "http://www.w3.org/2000/svg",
1899
- width: size,
1900
- height: size,
1901
- viewBox: "0 -960 960 960",
1902
- fill: "currentColor",
1903
- "aria-hidden": "true",
1904
- focusable: "false",
1905
- style: { display: "inline-block", flexShrink: 0, ...style },
1906
- ...props,
1907
- children: /* @__PURE__ */ jsx("path", { d: pathData })
2386
+ "aria-hidden": hasLabel ? void 0 : true,
2387
+ focusable: hasLabel ? void 0 : false,
2388
+ ...props
1908
2389
  }
1909
2390
  );
1910
2391
  };
@@ -1930,8 +2411,10 @@ var LinearProgress = ({
1930
2411
  className,
1931
2412
  ...props
1932
2413
  }) => {
1933
- const percent = totalSteps > 0 ? Math.min(Math.max(currentStep / totalSteps, 0), 1) * 100 : 0;
1934
- return /* @__PURE__ */ jsx(
2414
+ const clampedStep = totalSteps > 0 ? Math.min(Math.max(currentStep, 0), totalSteps) : 0;
2415
+ const percent = totalSteps > 0 ? clampedStep / totalSteps * 100 : 0;
2416
+ const dotCount = totalSteps + 1;
2417
+ return /* @__PURE__ */ jsxs(
1935
2418
  "div",
1936
2419
  {
1937
2420
  className: cn("linear_progress", className),
@@ -1940,7 +2423,21 @@ var LinearProgress = ({
1940
2423
  "aria-valuemin": 0,
1941
2424
  "aria-valuemax": totalSteps,
1942
2425
  ...props,
1943
- children: /* @__PURE__ */ jsx("div", { className: "linear_progress_indicator", style: { width: `${percent}%` } })
2426
+ children: [
2427
+ /* @__PURE__ */ jsx("div", { className: "linear_progress_track" }),
2428
+ /* @__PURE__ */ jsx("div", { className: "linear_progress_indicator", style: { width: `${percent}%` } }),
2429
+ Array.from({ length: dotCount }, (_, i) => /* @__PURE__ */ jsx(
2430
+ "span",
2431
+ {
2432
+ className: cn(
2433
+ "linear_progress_step",
2434
+ i <= clampedStep && "linear_progress_step_done"
2435
+ ),
2436
+ "aria-hidden": "true"
2437
+ },
2438
+ i
2439
+ ))
2440
+ ]
1944
2441
  }
1945
2442
  );
1946
2443
  };
@@ -1951,16 +2448,20 @@ var ListItem = ({
1951
2448
  metadata,
1952
2449
  leadingElement,
1953
2450
  trailingElement,
1954
- alignment = "top",
2451
+ alignment,
1955
2452
  disabled,
2453
+ selected,
1956
2454
  onClick,
1957
2455
  className,
1958
2456
  ...props
1959
2457
  }) => {
2458
+ const isOneLine = !overline && !supportingText && !metadata;
2459
+ const effectiveAlignment = alignment ?? (isOneLine ? "middle" : "top");
1960
2460
  const rootClassName = cn(
1961
2461
  "list_item",
1962
- `list_item_align_${alignment}`,
2462
+ `list_item_align_${effectiveAlignment}`,
1963
2463
  disabled && "list_item_disabled",
2464
+ selected && "list_item_selected",
1964
2465
  onClick && "list_item_interactive",
1965
2466
  className
1966
2467
  );
@@ -1981,6 +2482,7 @@ var ListItem = ({
1981
2482
  role: onClick ? "button" : void 0,
1982
2483
  tabIndex: onClick && !disabled ? 0 : void 0,
1983
2484
  "aria-disabled": disabled || void 0,
2485
+ "aria-selected": selected || void 0,
1984
2486
  ...props,
1985
2487
  children: /* @__PURE__ */ jsxs("div", { className: "list_item_state_layer", children: [
1986
2488
  leadingElement && /* @__PURE__ */ jsx("div", { className: "list_item_leading", children: leadingElement }),
@@ -1996,29 +2498,89 @@ var ListItem = ({
1996
2498
  )
1997
2499
  );
1998
2500
  };
2501
+ var MediaCard = ({
2502
+ image,
2503
+ imagePosition = "top",
2504
+ aspectRatio,
2505
+ heading,
2506
+ headingAs: HeadingTag = "h3",
2507
+ eyebrow,
2508
+ shadow = "sm",
2509
+ bordered = false,
2510
+ clickable = false,
2511
+ meta,
2512
+ children,
2513
+ className,
2514
+ ...props
2515
+ }) => {
2516
+ const cardClassName = cn(
2517
+ "media_card",
2518
+ `media_card_image_${imagePosition}`,
2519
+ `media_card_shadow_${shadow}`,
2520
+ bordered && "media_card_bordered",
2521
+ clickable && "media_card_clickable",
2522
+ className
2523
+ );
2524
+ const isOverlay = imagePosition === "overlay";
2525
+ const cardStyle = isOverlay && aspectRatio ? { aspectRatio } : void 0;
2526
+ const wrapStyle = !isOverlay && aspectRatio ? { aspectRatio } : void 0;
2527
+ return /* @__PURE__ */ jsxs("div", { className: cardClassName, style: cardStyle, ...props, children: [
2528
+ /* @__PURE__ */ jsxs("div", { className: "media_card_image_wrap", style: wrapStyle, children: [
2529
+ /* @__PURE__ */ jsx("img", { className: "media_card_image", src: image.src, alt: image.alt, loading: "lazy" }),
2530
+ isOverlay && /* @__PURE__ */ jsx("div", { className: "media_card_overlay", "aria-hidden": "true" })
2531
+ ] }),
2532
+ /* @__PURE__ */ jsxs("div", { className: "media_card_body", children: [
2533
+ eyebrow && /* @__PURE__ */ jsx("div", { className: "media_card_eyebrow", children: eyebrow }),
2534
+ heading && /* @__PURE__ */ jsx(HeadingTag, { className: "media_card_heading", children: heading }),
2535
+ children && /* @__PURE__ */ jsx("div", { className: "media_card_content", children }),
2536
+ meta && /* @__PURE__ */ jsx("div", { className: "media_card_meta", children: meta })
2537
+ ] })
2538
+ ] });
2539
+ };
1999
2540
  var Modal = ({
2000
2541
  open,
2001
2542
  onClose,
2002
2543
  closeOnOverlay = true,
2003
- width = 520,
2544
+ width = 480,
2004
2545
  title,
2546
+ description,
2547
+ footer,
2548
+ footerAlign = "end",
2549
+ showCloseIcon = true,
2550
+ closeLabel = "\uB2EB\uAE30",
2005
2551
  children,
2006
2552
  className,
2007
2553
  ariaLabel,
2008
2554
  ...props
2009
2555
  }) => {
2010
- const panelRef = React4.useRef(null);
2011
- const titleId = React4.useId();
2556
+ const panelRef = React17.useRef(null);
2557
+ const titleId = React17.useId();
2558
+ const [shouldRender, setShouldRender] = React17.useState(open);
2012
2559
  useFocusTrap(panelRef, open);
2013
- const handleEscape = React4.useEffectEvent((e) => {
2560
+ React17.useEffect(() => {
2561
+ if (open) setShouldRender(true);
2562
+ }, [open]);
2563
+ const overlayStyle = useSpring({
2564
+ opacity: open ? 1 : 0,
2565
+ config: { tension: 280, friction: 28, clamp: !open },
2566
+ onRest: (result) => {
2567
+ if (!open && result.finished) setShouldRender(false);
2568
+ }
2569
+ });
2570
+ const panelStyle = useSpring({
2571
+ opacity: open ? 1 : 0,
2572
+ transform: open ? "scale(1) translateY(0px)" : "scale(0.96) translateY(-4px)",
2573
+ config: { tension: 280, friction: 28, clamp: !open }
2574
+ });
2575
+ const handleEscape = React17.useEffectEvent((e) => {
2014
2576
  if (e.key === "Escape") onClose?.();
2015
2577
  });
2016
- React4.useEffect(() => {
2578
+ React17.useEffect(() => {
2017
2579
  if (!open) return;
2018
2580
  document.addEventListener("keydown", handleEscape);
2019
2581
  return () => document.removeEventListener("keydown", handleEscape);
2020
2582
  }, [open]);
2021
- React4.useEffect(() => {
2583
+ React17.useEffect(() => {
2022
2584
  if (!open) return;
2023
2585
  const body = document.body;
2024
2586
  const openModals = parseInt(body.dataset.openModals || "0", 10);
@@ -2039,13 +2601,13 @@ var Modal = ({
2039
2601
  }
2040
2602
  };
2041
2603
  }, [open]);
2042
- if (!open) return null;
2043
- const panelClassName = cn("modal_panel", className);
2604
+ if (!shouldRender) return null;
2044
2605
  const hasTitle = !!title;
2045
2606
  return /* @__PURE__ */ jsx(
2046
- "div",
2607
+ animated.div,
2047
2608
  {
2048
2609
  className: "modal",
2610
+ style: overlayStyle,
2049
2611
  role: "dialog",
2050
2612
  "aria-modal": "true",
2051
2613
  "aria-labelledby": hasTitle && !ariaLabel ? titleId : void 0,
@@ -2055,11 +2617,11 @@ var Modal = ({
2055
2617
  if (e.key === "Escape") onClose?.();
2056
2618
  },
2057
2619
  children: /* @__PURE__ */ jsxs(
2058
- "div",
2620
+ animated.div,
2059
2621
  {
2060
2622
  ref: panelRef,
2061
- className: panelClassName,
2062
- style: { width },
2623
+ className: cn("modal_panel", className),
2624
+ style: { ...panelStyle, width },
2063
2625
  role: "document",
2064
2626
  onClick: (e) => e.stopPropagation(),
2065
2627
  onKeyDown: (e) => {
@@ -2067,8 +2629,20 @@ var Modal = ({
2067
2629
  },
2068
2630
  ...props,
2069
2631
  children: [
2070
- title && /* @__PURE__ */ jsx("div", { id: titleId, className: "modal_header", children: title }),
2071
- /* @__PURE__ */ jsx("div", { className: "modal_body", children })
2632
+ showCloseIcon && onClose && /* @__PURE__ */ jsx(
2633
+ "button",
2634
+ {
2635
+ type: "button",
2636
+ className: "modal_close",
2637
+ onClick: onClose,
2638
+ "aria-label": closeLabel,
2639
+ children: /* @__PURE__ */ jsx(X, { size: 18, "aria-hidden": "true" })
2640
+ }
2641
+ ),
2642
+ title && /* @__PURE__ */ jsx("h2", { id: titleId, className: "modal_title", children: title }),
2643
+ description && /* @__PURE__ */ jsx("div", { className: "modal_description", children: description }),
2644
+ children && /* @__PURE__ */ jsx("div", { className: "modal_body", children }),
2645
+ footer && /* @__PURE__ */ jsx("div", { className: cn("modal_footer", `modal_footer_${footerAlign}`), children: footer })
2072
2646
  ]
2073
2647
  }
2074
2648
  )
@@ -2086,11 +2660,12 @@ var OtpInput = ({
2086
2660
  ariaLabel = "OTP \uC785\uB825",
2087
2661
  className
2088
2662
  }) => {
2089
- const inputsRef = React4.useRef([]);
2090
- React4.useEffect(() => {
2663
+ const inputsRef = React17.useRef([]);
2664
+ const isTypingRef = React17.useRef(false);
2665
+ React17.useEffect(() => {
2091
2666
  if (autoFocus) inputsRef.current[0]?.focus();
2092
2667
  }, [autoFocus]);
2093
- const digits = React4.useMemo(() => {
2668
+ const digits = React17.useMemo(() => {
2094
2669
  const chars = value.split("").slice(0, length);
2095
2670
  while (chars.length < length) chars.push("");
2096
2671
  return chars;
@@ -2108,10 +2683,15 @@ var OtpInput = ({
2108
2683
  newDigits[index] = nextDigit;
2109
2684
  updateValue(newDigits);
2110
2685
  if (nextDigit && index < length - 1) {
2686
+ isTypingRef.current = true;
2111
2687
  focusInput(index + 1);
2688
+ setTimeout(() => {
2689
+ isTypingRef.current = false;
2690
+ }, 50);
2112
2691
  }
2113
2692
  };
2114
2693
  const handleFocus = (index) => {
2694
+ if (isTypingRef.current) return;
2115
2695
  const firstEmpty = digits.indexOf("");
2116
2696
  if (firstEmpty !== -1 && firstEmpty < index) {
2117
2697
  focusInput(firstEmpty);
@@ -2224,7 +2804,7 @@ var Pagination = ({
2224
2804
  }) => {
2225
2805
  const prevDisabled = page <= 1;
2226
2806
  const nextDisabled = page >= totalPages;
2227
- const items = React4.useMemo(() => getPaginationItems(page, totalPages), [page, totalPages]);
2807
+ const items = React17.useMemo(() => getPaginationItems(page, totalPages), [page, totalPages]);
2228
2808
  return /* @__PURE__ */ jsxs("nav", { className: "pagination", "aria-label": "Pagination", children: [
2229
2809
  /* @__PURE__ */ jsx(
2230
2810
  "button",
@@ -2283,6 +2863,33 @@ var Radio = ({ label, size = "md", className, ref, ...props }) => {
2283
2863
  ] });
2284
2864
  };
2285
2865
  Radio.displayName = "Radio";
2866
+ var Skeleton = ({
2867
+ variant = "text",
2868
+ width,
2869
+ height,
2870
+ radius: radius2,
2871
+ className,
2872
+ style,
2873
+ ...props
2874
+ }) => {
2875
+ const skeletonClassName = cn(
2876
+ "skeleton",
2877
+ `skeleton_variant_${variant}`,
2878
+ radius2 && `skeleton_radius_${radius2}`,
2879
+ className
2880
+ );
2881
+ const inlineStyle = { ...style };
2882
+ if (width !== void 0) {
2883
+ inlineStyle.width = typeof width === "number" ? `${width}px` : width;
2884
+ }
2885
+ if (height !== void 0) {
2886
+ inlineStyle.height = typeof height === "number" ? `${height}px` : height;
2887
+ }
2888
+ if (variant === "avatar" && width !== void 0 && height === void 0) {
2889
+ inlineStyle.height = inlineStyle.width;
2890
+ }
2891
+ return /* @__PURE__ */ jsx("div", { className: skeletonClassName, style: inlineStyle, "aria-hidden": "true", ...props });
2892
+ };
2286
2893
  var Spinner = ({ size = 24, ariaLabel = "Loading" }) => {
2287
2894
  return /* @__PURE__ */ jsx(
2288
2895
  "span",
@@ -2290,11 +2897,165 @@ var Spinner = ({ size = 24, ariaLabel = "Loading" }) => {
2290
2897
  className: "spinner",
2291
2898
  style: { width: size, height: size },
2292
2899
  role: "status",
2293
- "aria-label": ariaLabel
2900
+ "aria-label": ariaLabel,
2901
+ children: Array.from({ length: 12 }, (_, i) => (
2902
+ // biome-ignore lint/suspicious/noArrayIndexKey: static 12 bars, index is stable key
2903
+ /* @__PURE__ */ jsx("span", { className: "spinner_bar", "aria-hidden": "true" }, i)
2904
+ ))
2905
+ }
2906
+ );
2907
+ };
2908
+ var Table = ({
2909
+ columns,
2910
+ data,
2911
+ keyExtractor,
2912
+ emptyMessage = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",
2913
+ isLoading = false,
2914
+ skeletonRows = 5,
2915
+ size = "md",
2916
+ hoverable = true,
2917
+ stickyHeader = false,
2918
+ ariaLabel,
2919
+ className,
2920
+ onRowClick
2921
+ }) => {
2922
+ const wrapperClassName = cn(
2923
+ "table_wrapper",
2924
+ `table_size_${size}`,
2925
+ stickyHeader && "table_sticky_header",
2926
+ className
2927
+ );
2928
+ const isEmpty = !isLoading && data.length === 0;
2929
+ return /* @__PURE__ */ jsxs("div", { className: wrapperClassName, children: [
2930
+ /* @__PURE__ */ jsxs("table", { className: "table", "aria-label": ariaLabel, children: [
2931
+ /* @__PURE__ */ jsx("thead", { className: "table_thead", children: /* @__PURE__ */ jsx("tr", { children: columns.map((col) => /* @__PURE__ */ jsx(
2932
+ "th",
2933
+ {
2934
+ scope: "col",
2935
+ className: cn("table_th", col.align && `table_align_${col.align}`),
2936
+ style: { width: col.width },
2937
+ children: col.header
2938
+ },
2939
+ col.key
2940
+ )) }) }),
2941
+ /* @__PURE__ */ jsx("tbody", { className: "table_tbody", children: isLoading ? Array.from({ length: skeletonRows }).map((_, rowIndex) => (
2942
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton rows have no stable identity
2943
+ /* @__PURE__ */ jsx("tr", { className: "table_row table_row_skeleton", children: columns.map((col) => /* @__PURE__ */ jsx(
2944
+ "td",
2945
+ {
2946
+ className: cn("table_td", col.align && `table_align_${col.align}`),
2947
+ style: { width: col.width },
2948
+ children: /* @__PURE__ */ jsx(Skeleton, { variant: "text" })
2949
+ },
2950
+ col.key
2951
+ )) }, rowIndex)
2952
+ )) : data.map((item, rowIndex) => /* @__PURE__ */ jsx(
2953
+ "tr",
2954
+ {
2955
+ className: cn(
2956
+ "table_row",
2957
+ hoverable && "table_row_hoverable",
2958
+ onRowClick && "table_row_clickable"
2959
+ ),
2960
+ role: onRowClick ? "button" : void 0,
2961
+ tabIndex: onRowClick ? 0 : void 0,
2962
+ onClick: onRowClick ? () => onRowClick(item, rowIndex) : void 0,
2963
+ onKeyDown: onRowClick ? (e) => {
2964
+ if (e.key === "Enter" || e.key === " ") {
2965
+ e.preventDefault();
2966
+ onRowClick(item, rowIndex);
2967
+ }
2968
+ } : void 0,
2969
+ children: columns.map((col) => /* @__PURE__ */ jsx(
2970
+ "td",
2971
+ {
2972
+ className: cn("table_td", col.align && `table_align_${col.align}`),
2973
+ style: { width: col.width },
2974
+ children: (() => {
2975
+ if (col.render) return col.render(item, rowIndex);
2976
+ const value = item[col.key];
2977
+ return value === null || value === void 0 || value === "" ? "-" : String(value);
2978
+ })()
2979
+ },
2980
+ col.key
2981
+ ))
2982
+ },
2983
+ keyExtractor(item, rowIndex)
2984
+ )) })
2985
+ ] }),
2986
+ isEmpty && /* @__PURE__ */ jsx("div", { className: "table_empty", role: "status", children: emptyMessage })
2987
+ ] });
2988
+ };
2989
+ var ThemeContext = React17.createContext(null);
2990
+ var useTheme = () => {
2991
+ const ctx = React17.useContext(ThemeContext);
2992
+ if (!ctx) {
2993
+ throw new Error(
2994
+ '[Bigtablet DS] useTheme\uB294 <ThemeProvider> \uC548\uC5D0\uC11C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.\n\n\uC571 \uCD5C\uC0C1\uB2E8\uC5D0 <ThemeProvider>\uB85C \uAC10\uC2F8\uC8FC\uC138\uC694:\n <ThemeProvider mode="system">\n <YourApp />\n </ThemeProvider>'
2995
+ );
2996
+ }
2997
+ return ctx;
2998
+ };
2999
+ var isClient = typeof window !== "undefined";
3000
+ function readStored(key) {
3001
+ if (!isClient || !key) return null;
3002
+ try {
3003
+ const value = window.localStorage.getItem(key);
3004
+ if (value === "light" || value === "dark" || value === "system") return value;
3005
+ } catch {
3006
+ }
3007
+ return null;
3008
+ }
3009
+ var ThemeProvider = ({
3010
+ defaultMode = "system",
3011
+ storageKey = "bt-theme",
3012
+ targetSelector,
3013
+ children
3014
+ }) => {
3015
+ const [mode, setModeState] = React17.useState(() => {
3016
+ return readStored(storageKey) ?? defaultMode;
3017
+ });
3018
+ const [systemDark, setSystemDark] = React17.useState(() => {
3019
+ if (!isClient) return false;
3020
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
3021
+ });
3022
+ React17.useEffect(() => {
3023
+ if (!isClient) return;
3024
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
3025
+ const handler = (e) => setSystemDark(e.matches);
3026
+ mq.addEventListener("change", handler);
3027
+ return () => mq.removeEventListener("change", handler);
3028
+ }, []);
3029
+ const resolved = mode === "system" ? systemDark ? "dark" : "light" : mode;
3030
+ React17.useEffect(() => {
3031
+ if (!isClient) return;
3032
+ const target = targetSelector ? document.querySelector(targetSelector) : document.documentElement;
3033
+ if (!target) return;
3034
+ if (mode === "system") {
3035
+ target.removeAttribute("data-theme");
3036
+ } else {
3037
+ target.setAttribute("data-theme", mode);
2294
3038
  }
3039
+ }, [mode, targetSelector]);
3040
+ const setMode = React17.useCallback(
3041
+ (next) => {
3042
+ setModeState(next);
3043
+ if (storageKey && isClient) {
3044
+ try {
3045
+ window.localStorage.setItem(storageKey, next);
3046
+ } catch {
3047
+ }
3048
+ }
3049
+ },
3050
+ [storageKey]
2295
3051
  );
3052
+ const value = React17.useMemo(
3053
+ () => ({ mode, resolved, setMode }),
3054
+ [mode, resolved, setMode]
3055
+ );
3056
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
2296
3057
  };
2297
- var ClearIcon = () => /* @__PURE__ */ jsx(Icon, { name: "close", size: 20 });
3058
+ var ClearIcon = () => /* @__PURE__ */ jsx(X, { size: 20, "aria-hidden": "true" });
2298
3059
  var TextField = ({
2299
3060
  id,
2300
3061
  label,
@@ -2314,27 +3075,28 @@ var TextField = ({
2314
3075
  ref,
2315
3076
  ...props
2316
3077
  }) => {
2317
- const generatedId = React4.useId();
3078
+ const generatedId = useId();
2318
3079
  const inputId = id ?? generatedId;
2319
3080
  const helperId = supportingText ? `${inputId}-help` : void 0;
2320
3081
  const isControlled = value !== void 0;
2321
3082
  const applyTransform = (nextValue) => transformValue ? transformValue(nextValue) : nextValue;
2322
- const [innerValue, setInnerValue] = React4.useState(
3083
+ const [innerValue, setInnerValue] = useState(
2323
3084
  () => applyTransform(value ?? defaultValue ?? "")
2324
3085
  );
2325
- const isComposingRef = React4.useRef(false);
2326
- React4.useEffect(() => {
3086
+ const isComposingRef = useRef(false);
3087
+ useEffect(() => {
2327
3088
  if (!isControlled) return;
2328
3089
  const nextValue = value ?? "";
2329
3090
  setInnerValue(transformValue ? transformValue(nextValue) : nextValue);
2330
3091
  }, [isControlled, value, transformValue]);
2331
- const handleClear = React4.useCallback(() => {
3092
+ const handleClear = useCallback(() => {
2332
3093
  setInnerValue("");
2333
3094
  onChangeAction?.("");
2334
3095
  }, [onChangeAction]);
2335
3096
  const rootClassName = cn(
2336
3097
  "text_field",
2337
3098
  size === "sm" && "text_field_size_sm",
3099
+ size === "lg" && "text_field_size_lg",
2338
3100
  fullWidth && "text_field_full_width",
2339
3101
  error && "text_field_error",
2340
3102
  props.disabled && "text_field_disabled",
@@ -2342,60 +3104,58 @@ var TextField = ({
2342
3104
  );
2343
3105
  const resolvedTrailing = clearable && innerValue ? /* @__PURE__ */ jsx("button", { type: "button", className: "text_field_clear", onClick: handleClear, "aria-label": "Clear", children: /* @__PURE__ */ jsx(ClearIcon, {}) }) : trailingIcon ? /* @__PURE__ */ jsx("span", { className: "text_field_icon", "aria-hidden": "true", children: trailingIcon }) : null;
2344
3106
  return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
2345
- /* @__PURE__ */ jsxs("fieldset", { className: "text_field_container", children: [
2346
- label && showLabel && /* @__PURE__ */ jsx("legend", { className: "text_field_label", children: /* @__PURE__ */ jsx("label", { htmlFor: inputId, children: label }) }),
2347
- /* @__PURE__ */ jsxs("div", { className: "text_field_inner", children: [
2348
- leadingIcon && /* @__PURE__ */ jsx("span", { className: "text_field_icon", "aria-hidden": "true", children: leadingIcon }),
2349
- /* @__PURE__ */ jsx(
2350
- "div",
2351
- {
2352
- className: cn(
2353
- "text_field_input_wrap",
2354
- resolvedTrailing && "text_field_input_wrap_no_pad_right"
2355
- ),
2356
- children: /* @__PURE__ */ jsx(
2357
- "input",
2358
- {
2359
- id: inputId,
2360
- ref,
2361
- className: "text_field_input",
2362
- "aria-invalid": !!error,
2363
- "aria-describedby": helperId,
2364
- "aria-label": !showLabel ? label : void 0,
2365
- ...props,
2366
- value: innerValue,
2367
- onCompositionStart: () => {
2368
- isComposingRef.current = true;
2369
- },
2370
- onCompositionEnd: (event) => {
2371
- isComposingRef.current = false;
2372
- const rawValue = event.currentTarget.value;
2373
- const nextValue = applyTransform(rawValue);
2374
- setInnerValue(nextValue);
2375
- onChangeAction?.(nextValue);
2376
- },
2377
- onChange: (event) => {
2378
- const rawValue = event.target.value;
2379
- if (isComposingRef.current) {
2380
- setInnerValue(rawValue);
2381
- return;
2382
- }
2383
- const nextValue = applyTransform(rawValue);
2384
- setInnerValue(nextValue);
2385
- onChangeAction?.(nextValue);
3107
+ label && showLabel && /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "text_field_label", children: label }),
3108
+ /* @__PURE__ */ jsx("div", { className: "text_field_container", children: /* @__PURE__ */ jsxs("div", { className: "text_field_inner", children: [
3109
+ leadingIcon && /* @__PURE__ */ jsx("span", { className: "text_field_icon", "aria-hidden": "true", children: leadingIcon }),
3110
+ /* @__PURE__ */ jsx(
3111
+ "div",
3112
+ {
3113
+ className: cn(
3114
+ "text_field_input_wrap",
3115
+ resolvedTrailing && "text_field_input_wrap_no_pad_right"
3116
+ ),
3117
+ children: /* @__PURE__ */ jsx(
3118
+ "input",
3119
+ {
3120
+ id: inputId,
3121
+ ref,
3122
+ className: "text_field_input",
3123
+ "aria-invalid": !!error,
3124
+ "aria-describedby": helperId,
3125
+ "aria-label": !showLabel ? label : void 0,
3126
+ ...props,
3127
+ value: innerValue,
3128
+ onCompositionStart: () => {
3129
+ isComposingRef.current = true;
3130
+ },
3131
+ onCompositionEnd: (event) => {
3132
+ isComposingRef.current = false;
3133
+ const rawValue = event.currentTarget.value;
3134
+ const nextValue = applyTransform(rawValue);
3135
+ setInnerValue(nextValue);
3136
+ onChangeAction?.(nextValue);
3137
+ },
3138
+ onChange: (event) => {
3139
+ const rawValue = event.target.value;
3140
+ if (isComposingRef.current) {
3141
+ setInnerValue(rawValue);
3142
+ return;
2386
3143
  }
3144
+ const nextValue = applyTransform(rawValue);
3145
+ setInnerValue(nextValue);
3146
+ onChangeAction?.(nextValue);
2387
3147
  }
2388
- )
2389
- }
2390
- ),
2391
- resolvedTrailing
2392
- ] })
2393
- ] }),
3148
+ }
3149
+ )
3150
+ }
3151
+ ),
3152
+ resolvedTrailing
3153
+ ] }) }),
2394
3154
  supportingText && /* @__PURE__ */ jsx("div", { id: helperId, className: "text_field_helper", children: supportingText })
2395
3155
  ] });
2396
3156
  };
2397
3157
  TextField.displayName = "TextField";
2398
- var ToastContext = React4.createContext(null);
3158
+ var ToastContext = React17.createContext(null);
2399
3159
  var VARIANT_ICONS = {
2400
3160
  success: /* @__PURE__ */ jsx(CheckCircle2, { size: 18 }),
2401
3161
  error: /* @__PURE__ */ jsx(XCircle, { size: 18 }),
@@ -2404,48 +3164,60 @@ var VARIANT_ICONS = {
2404
3164
  default: /* @__PURE__ */ jsx(Bell, { size: 18 })
2405
3165
  };
2406
3166
  var ToastItemComponent = ({ item, onRemove, closeAriaLabel }) => {
2407
- const [exiting, setExiting] = React4.useState(false);
2408
- const closingRef = React4.useRef(false);
2409
- const close = React4.useCallback(() => {
3167
+ const [visible, setVisible] = React17.useState(true);
3168
+ const closingRef = React17.useRef(false);
3169
+ const style = useSpringPresence({
3170
+ visible,
3171
+ from: "translateX(20px)",
3172
+ // 우측에서 슬라이드 인
3173
+ onExitComplete: () => onRemove(item.id)
3174
+ });
3175
+ const close = React17.useCallback(() => {
2410
3176
  if (closingRef.current) return;
2411
3177
  closingRef.current = true;
2412
- setExiting(true);
2413
- setTimeout(() => onRemove(item.id), 260);
2414
- }, [item.id, onRemove]);
2415
- const itemClassName = cn("toast_item", exiting && "toast_item_exiting");
2416
- return /* @__PURE__ */ jsxs("div", { className: itemClassName, role: item.variant === "error" ? "alert" : "status", children: [
2417
- /* @__PURE__ */ jsx("span", { className: `toast_icon toast_icon_${item.variant}`, "aria-hidden": "true", children: VARIANT_ICONS[item.variant] }),
2418
- /* @__PURE__ */ jsx("span", { className: "toast_message", children: item.message }),
2419
- /* @__PURE__ */ jsx("button", { type: "button", className: "toast_close", onClick: close, "aria-label": closeAriaLabel, children: /* @__PURE__ */ jsx(X, { size: 14 }) }),
2420
- /* @__PURE__ */ jsx(
2421
- "div",
2422
- {
2423
- className: `toast_progress toast_progress_${item.variant}`,
2424
- style: { "--toast-duration": `${item.duration}ms` },
2425
- onAnimationEnd: close,
2426
- "aria-hidden": "true"
2427
- }
2428
- )
2429
- ] });
3178
+ setVisible(false);
3179
+ }, []);
3180
+ return /* @__PURE__ */ jsxs(
3181
+ animated.div,
3182
+ {
3183
+ className: "toast_item",
3184
+ style,
3185
+ role: item.variant === "error" ? "alert" : "status",
3186
+ children: [
3187
+ /* @__PURE__ */ jsx("span", { className: `toast_icon toast_icon_${item.variant}`, "aria-hidden": "true", children: VARIANT_ICONS[item.variant] }),
3188
+ /* @__PURE__ */ jsx("span", { className: "toast_message", children: item.message }),
3189
+ /* @__PURE__ */ jsx("button", { type: "button", className: "toast_close", onClick: close, "aria-label": closeAriaLabel, children: /* @__PURE__ */ jsx(X, { size: 14 }) }),
3190
+ /* @__PURE__ */ jsx(
3191
+ "div",
3192
+ {
3193
+ className: `toast_progress toast_progress_${item.variant}`,
3194
+ style: { "--toast-duration": `${item.duration}ms` },
3195
+ onAnimationEnd: close,
3196
+ "aria-hidden": "true"
3197
+ }
3198
+ )
3199
+ ]
3200
+ }
3201
+ );
2430
3202
  };
2431
3203
  var ToastProvider = ({
2432
3204
  children,
2433
3205
  maxCount = 5,
2434
3206
  closeAriaLabel = "Close"
2435
3207
  }) => {
2436
- const [toasts, setToasts] = React4.useState([]);
2437
- const [isMounted, setIsMounted] = React4.useState(false);
2438
- React4.useEffect(() => {
3208
+ const [toasts, setToasts] = React17.useState([]);
3209
+ const [isMounted, setIsMounted] = React17.useState(false);
3210
+ React17.useEffect(() => {
2439
3211
  setIsMounted(true);
2440
3212
  }, []);
2441
- const addToast = React4.useCallback(
3213
+ const addToast = React17.useCallback(
2442
3214
  (message, variant, duration = 3e3) => {
2443
3215
  const id = crypto.randomUUID();
2444
3216
  setToasts((prev) => [{ id, message, variant, duration }, ...prev].slice(0, maxCount));
2445
3217
  },
2446
3218
  [maxCount]
2447
3219
  );
2448
- const removeToast = React4.useCallback((id) => {
3220
+ const removeToast = React17.useCallback((id) => {
2449
3221
  setToasts((prev) => prev.filter((t) => t.id !== id));
2450
3222
  }, []);
2451
3223
  return /* @__PURE__ */ jsxs(ToastContext.Provider, { value: { addToast }, children: [
@@ -2478,7 +3250,9 @@ var ToastProvider = ({
2478
3250
  var useToast = () => {
2479
3251
  const ctx = useContext(ToastContext);
2480
3252
  if (!ctx) {
2481
- throw new Error("useToast must be used within ToastProvider");
3253
+ throw new Error(
3254
+ "[Bigtablet DS] useToast\uB294 <ToastProvider> \uC548\uC5D0\uC11C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.\n\n\uC571 \uCD5C\uC0C1\uB2E8\uC5D0 <ToastProvider>\uB85C \uAC10\uC2F8\uC8FC\uC138\uC694:\n <ToastProvider>\n <YourApp />\n </ToastProvider>"
3255
+ );
2482
3256
  }
2483
3257
  return {
2484
3258
  /** 성공 메시지를 표시한다 */
@@ -2505,7 +3279,7 @@ var Toggle = ({
2505
3279
  ...props
2506
3280
  }) => {
2507
3281
  const isControlled = checked !== void 0;
2508
- const [innerChecked, setInnerChecked] = React4.useState(!!defaultChecked);
3282
+ const [innerChecked, setInnerChecked] = React17.useState(!!defaultChecked);
2509
3283
  const isOn = isControlled ? !!checked : innerChecked;
2510
3284
  const handleToggle = () => {
2511
3285
  if (disabled) return;
@@ -2568,5 +3342,103 @@ var TopLoading = ({
2568
3342
  }
2569
3343
  );
2570
3344
  };
3345
+ var Container = ({
3346
+ size = "xl",
3347
+ center = true,
3348
+ as: Tag = "div",
3349
+ className,
3350
+ children,
3351
+ ...props
3352
+ }) => {
3353
+ return /* @__PURE__ */ jsx(
3354
+ Tag,
3355
+ {
3356
+ className: cn("container", `container_size_${size}`, center && "container_center", className),
3357
+ ...props,
3358
+ children
3359
+ }
3360
+ );
3361
+ };
3362
+ var Section = ({
3363
+ spacing: spacing2 = "md",
3364
+ bg = "default",
3365
+ as: Tag = "section",
3366
+ className,
3367
+ children,
3368
+ ...props
3369
+ }) => {
3370
+ return /* @__PURE__ */ jsx(
3371
+ Tag,
3372
+ {
3373
+ className: cn(
3374
+ "section",
3375
+ `section_spacing_${spacing2}`,
3376
+ `section_bg_${bg}`,
3377
+ className
3378
+ ),
3379
+ ...props,
3380
+ children
3381
+ }
3382
+ );
3383
+ };
3384
+ var Stack = ({
3385
+ direction = "vertical",
3386
+ gap = 16,
3387
+ align,
3388
+ justify,
3389
+ wrap,
3390
+ as: Tag = "div",
3391
+ className,
3392
+ children,
3393
+ style,
3394
+ ...props
3395
+ }) => {
3396
+ return /* @__PURE__ */ jsx(
3397
+ Tag,
3398
+ {
3399
+ className: cn(
3400
+ "stack",
3401
+ `stack_${direction}`,
3402
+ align && `stack_align_${align}`,
3403
+ justify && `stack_justify_${justify}`,
3404
+ wrap && `stack_wrap_${wrap.replace("-", "_")}`,
3405
+ className
3406
+ ),
3407
+ style: { "--stack-gap": `${gap}px`, ...style },
3408
+ ...props,
3409
+ children
3410
+ }
3411
+ );
3412
+ };
3413
+ var Grid = ({
3414
+ cols = 3,
3415
+ minColWidth = "280px",
3416
+ gap = 24,
3417
+ rowGap,
3418
+ colGap,
3419
+ singleColOnMobile = true,
3420
+ as: Tag = "div",
3421
+ className,
3422
+ children,
3423
+ style,
3424
+ ...props
3425
+ }) => {
3426
+ const gridTemplateColumns = cols === "auto" ? `repeat(auto-fill, minmax(${minColWidth}, 1fr))` : `repeat(${cols}, 1fr)`;
3427
+ return /* @__PURE__ */ jsx(
3428
+ Tag,
3429
+ {
3430
+ className: cn("grid_layout", singleColOnMobile && "grid_layout_mobile_single", className),
3431
+ style: {
3432
+ "--grid-cols": gridTemplateColumns,
3433
+ "--grid-gap": `${gap}px`,
3434
+ "--grid-row-gap": rowGap != null ? `${rowGap}px` : void 0,
3435
+ "--grid-col-gap": colGap != null ? `${colGap}px` : void 0,
3436
+ ...style
3437
+ },
3438
+ ...props,
3439
+ children
3440
+ }
3441
+ );
3442
+ };
2571
3443
 
2572
- export { AlertProvider, Button, Card, Checkbox, Chip, DatePicker, Divider, Dropdown, FAB, FileInput, Icon, IconButton, LinearProgress, ListItem, Modal, OtpInput, Pagination, Radio, Dropdown as Select, Spinner, TextField, ToastProvider, Toggle, TopLoading, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useToast, zIndex };
3444
+ export { Accordion, AlertProvider, Avatar, Badge, BottomNav, BottomNavItem, BottomNavSpacer, Breadcrumb, Button, Card, Checkbox, Chip, Container, DatePicker, Divider, Dropdown, EmptyState, FileInput, Grid, Hero, Icon, IconButton, LinearProgress, ListItem, MediaCard, Menu, Modal, NavBar, NavLink, OtpInput, Pagination, Radio, Section, Sidebar, SidebarItem, SidebarSection, Skeleton, Spinner, Stack, Tab, TabList, TabPanel, Table, Tabs, TextField, ThemeProvider, ToastProvider, Toggle, Tooltip, TopLoading, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, cn, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useFocusTrap, useSpringHover, useSpringPresence, useTheme, useToast, zIndex };