@bigtablet/design-system 2.4.4 → 3.0.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,871 @@
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 React16 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 } from 'react/jsx-runtime';
5
8
  import { createPortal } from 'react-dom';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
7
- import { X, ChevronDown, Check, 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 = React16.useRef(null);
42
+ React16.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] = React16.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] = React16.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] = React16.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 Breadcrumb = ({
267
+ items,
268
+ separator,
269
+ className,
270
+ ...props
271
+ }) => {
272
+ const sep = separator ?? /* @__PURE__ */ jsx(ChevronRight, { size: 14, "aria-hidden": "true" });
273
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", className: cn("breadcrumb", className), ...props, children: /* @__PURE__ */ jsx("ol", { className: "breadcrumb_list", children: items.map((item, idx) => {
274
+ const isLast = idx === items.length - 1;
275
+ return (
276
+ // biome-ignore lint/suspicious/noArrayIndexKey: breadcrumb items have stable order
277
+ /* @__PURE__ */ jsxs("li", { className: "breadcrumb_item", children: [
278
+ isLast ? /* @__PURE__ */ jsx("span", { className: "breadcrumb_current", "aria-current": "page", children: item.label }) : item.href ? (
279
+ // biome-ignore lint/a11y/useValidAnchor: navigation link
280
+ /* @__PURE__ */ jsx("a", { className: "breadcrumb_link", href: item.href, onClick: item.onClick, children: item.label })
281
+ ) : /* @__PURE__ */ jsx(
282
+ "button",
283
+ {
284
+ type: "button",
285
+ className: "breadcrumb_link",
286
+ onClick: item.onClick,
287
+ children: item.label
288
+ }
289
+ ),
290
+ !isLast && /* @__PURE__ */ jsx("span", { className: "breadcrumb_separator", "aria-hidden": "true", children: sep })
291
+ ] }, idx)
292
+ );
293
+ }) }) });
294
+ };
295
+ var EmptyState = ({
296
+ illustration,
297
+ title,
298
+ description,
299
+ action,
300
+ size = "md",
301
+ className,
302
+ ...props
303
+ }) => {
304
+ return /* @__PURE__ */ jsxs("div", { className: cn("empty_state", `empty_state_size_${size}`, className), ...props, children: [
305
+ illustration && /* @__PURE__ */ jsx("div", { className: "empty_state_illustration", "aria-hidden": "true", children: illustration }),
306
+ title && /* @__PURE__ */ jsx("h3", { className: "empty_state_title", children: title }),
307
+ description && /* @__PURE__ */ jsx("p", { className: "empty_state_description", children: description }),
308
+ action && /* @__PURE__ */ jsx("div", { className: "empty_state_action", children: action })
309
+ ] });
310
+ };
311
+ var Menu = ({ items, trigger, align = "start" }) => {
312
+ const [open, setOpen] = React16.useState(false);
313
+ const wrapperRef = React16.useRef(null);
314
+ const menuId = React16.useId();
315
+ const style = useSpringPresence({ visible: open, from: "translateY(-4px)" });
316
+ React16.useEffect(() => {
317
+ if (!open) return;
318
+ const handleClick = (e) => {
319
+ if (!wrapperRef.current?.contains(e.target)) setOpen(false);
320
+ };
321
+ const handleEsc = (e) => {
322
+ if (e.key === "Escape") setOpen(false);
323
+ };
324
+ document.addEventListener("mousedown", handleClick);
325
+ document.addEventListener("keydown", handleEsc);
326
+ return () => {
327
+ document.removeEventListener("mousedown", handleClick);
328
+ document.removeEventListener("keydown", handleEsc);
329
+ };
330
+ }, [open]);
331
+ const triggerWithProps = React16.cloneElement(
332
+ trigger,
333
+ {
334
+ onClick: () => setOpen((o) => !o),
335
+ "aria-haspopup": "menu",
336
+ "aria-expanded": open,
337
+ "aria-controls": open ? menuId : void 0
338
+ }
339
+ );
340
+ return /* @__PURE__ */ jsxs("span", { className: "menu_wrapper", ref: wrapperRef, children: [
341
+ triggerWithProps,
342
+ open && /* @__PURE__ */ jsx(
343
+ animated.div,
344
+ {
345
+ id: menuId,
346
+ role: "menu",
347
+ style,
348
+ className: cn("menu", `menu_align_${align}`),
349
+ children: items.map((item) => /* @__PURE__ */ jsxs(
350
+ "button",
351
+ {
352
+ type: "button",
353
+ role: "menuitem",
354
+ disabled: item.disabled,
355
+ className: cn(
356
+ "menu_item",
357
+ item.destructive && "menu_item_destructive",
358
+ item.disabled && "menu_item_disabled"
359
+ ),
360
+ onClick: () => {
361
+ if (item.disabled) return;
362
+ item.onSelect?.();
363
+ setOpen(false);
364
+ },
365
+ children: [
366
+ item.icon && /* @__PURE__ */ jsx("span", { className: "menu_item_icon", "aria-hidden": "true", children: item.icon }),
367
+ /* @__PURE__ */ jsx("span", { className: "menu_item_label", children: item.label })
368
+ ]
369
+ },
370
+ item.key
371
+ ))
372
+ }
373
+ )
374
+ ] });
375
+ };
376
+ var NavBar = ({
377
+ brand,
378
+ searchSlot,
379
+ actions,
380
+ locale,
381
+ profile,
382
+ divider = true,
383
+ variant = "default",
384
+ layout = "contained",
385
+ sticky = false,
386
+ className,
387
+ children,
388
+ ...props
389
+ }) => {
390
+ const showDivider = divider && !!profile && (!!actions || !!locale || !!searchSlot);
391
+ const linksRef = useRef(null);
392
+ const [indicator, setIndicator] = useState(null);
393
+ const [hasMounted, setHasMounted] = useState(false);
394
+ useLayoutEffect(() => {
395
+ const links = linksRef.current;
396
+ if (!links) return;
397
+ const update = () => {
398
+ const active = links.querySelector(".nav_bar_link_active");
399
+ if (active) {
400
+ setIndicator({ left: active.offsetLeft, width: active.offsetWidth });
401
+ } else {
402
+ setIndicator(null);
403
+ }
404
+ };
405
+ update();
406
+ const mountTimer = setTimeout(() => setHasMounted(true), 50);
407
+ const mo = new MutationObserver(update);
408
+ mo.observe(links, {
409
+ subtree: true,
410
+ attributes: true,
411
+ attributeFilter: ["class", "aria-current"]
412
+ });
413
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
414
+ ro?.observe(links);
415
+ const handleResize = () => update();
416
+ window.addEventListener("resize", handleResize);
417
+ return () => {
418
+ clearTimeout(mountTimer);
419
+ mo.disconnect();
420
+ ro?.disconnect();
421
+ window.removeEventListener("resize", handleResize);
422
+ };
423
+ }, []);
424
+ return /* @__PURE__ */ jsx(
425
+ "header",
426
+ {
427
+ className: cn(
428
+ "nav_bar",
429
+ `nav_bar_variant_${variant}`,
430
+ `nav_bar_layout_${layout}`,
431
+ sticky && "nav_bar_sticky",
432
+ className
433
+ ),
434
+ ...props,
435
+ children: /* @__PURE__ */ jsxs("div", { className: "nav_bar_inner", children: [
436
+ brand && /* @__PURE__ */ jsx("div", { className: "nav_bar_brand", children: brand }),
437
+ children && /* @__PURE__ */ jsxs("nav", { ref: linksRef, className: "nav_bar_links", children: [
438
+ children,
439
+ indicator && /* @__PURE__ */ jsx(
440
+ "span",
441
+ {
442
+ "aria-hidden": "true",
443
+ className: cn(
444
+ "nav_bar_indicator",
445
+ hasMounted && "nav_bar_indicator_animated"
446
+ ),
447
+ style: { left: indicator.left, width: indicator.width }
448
+ }
449
+ )
450
+ ] }),
451
+ searchSlot && /* @__PURE__ */ jsx("div", { className: "nav_bar_search", children: searchSlot }),
452
+ /* @__PURE__ */ jsxs("div", { className: "nav_bar_right", children: [
453
+ actions && /* @__PURE__ */ jsx("div", { className: "nav_bar_actions", children: actions }),
454
+ locale && /* @__PURE__ */ jsx(LocaleSwitcher, { locale }),
455
+ showDivider && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "nav_bar_divider" }),
456
+ profile && /* @__PURE__ */ jsx("div", { className: "nav_bar_profile", children: profile })
457
+ ] })
458
+ ] })
459
+ }
460
+ );
461
+ };
462
+ var LocaleSwitcher = ({ locale }) => {
463
+ const [open, setOpen] = useState(false);
464
+ const wrapperRef = useRef(null);
465
+ const menuId = useId();
466
+ const currentOption = locale.options.find((o) => o.value === locale.current);
467
+ useEffect(() => {
468
+ if (!open) return;
469
+ const handler = (e) => {
470
+ if (!wrapperRef.current?.contains(e.target)) setOpen(false);
471
+ };
472
+ const escHandler = (e) => {
473
+ if (e.key === "Escape") setOpen(false);
474
+ };
475
+ document.addEventListener("mousedown", handler);
476
+ document.addEventListener("keydown", escHandler);
477
+ return () => {
478
+ document.removeEventListener("mousedown", handler);
479
+ document.removeEventListener("keydown", escHandler);
480
+ };
481
+ }, [open]);
482
+ const handleSelect = (value) => {
483
+ locale.onChange(value);
484
+ setOpen(false);
485
+ };
486
+ return /* @__PURE__ */ jsxs("div", { ref: wrapperRef, className: "nav_bar_locale", children: [
487
+ /* @__PURE__ */ jsxs(
488
+ "button",
489
+ {
490
+ type: "button",
491
+ className: "nav_bar_locale_trigger",
492
+ "aria-haspopup": "menu",
493
+ "aria-expanded": open,
494
+ "aria-controls": menuId,
495
+ onClick: () => setOpen((p) => !p),
496
+ children: [
497
+ /* @__PURE__ */ jsx(Globe, { size: 16, "aria-hidden": "true" }),
498
+ !locale.hideLabel && /* @__PURE__ */ jsx("span", { className: "nav_bar_locale_label", children: currentOption?.label ?? locale.current.toUpperCase() }),
499
+ /* @__PURE__ */ jsx(ChevronDown, { size: 14, "aria-hidden": "true", className: "nav_bar_locale_chevron" })
500
+ ]
501
+ }
502
+ ),
503
+ 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(
504
+ "button",
505
+ {
506
+ type: "button",
507
+ role: "menuitem",
508
+ className: cn(
509
+ "nav_bar_locale_item",
510
+ opt.value === locale.current && "nav_bar_locale_item_active"
511
+ ),
512
+ onClick: () => handleSelect(opt.value),
513
+ children: opt.label
514
+ }
515
+ ) }, opt.value)) })
516
+ ] });
517
+ };
518
+ var NavLink = ({ active, className, children, ...props }) => {
519
+ return (
520
+ // biome-ignore lint/a11y/useValidAnchor: navigation link
521
+ /* @__PURE__ */ jsx(
522
+ "a",
523
+ {
524
+ className: cn("nav_bar_link", active && "nav_bar_link_active"),
525
+ "aria-current": active ? "page" : void 0,
526
+ ...props,
527
+ children
528
+ }
529
+ )
530
+ );
531
+ };
532
+ var Sidebar = ({
533
+ header,
534
+ headerCollapsed,
535
+ footer,
536
+ collapsed: collapsedProp,
537
+ defaultCollapsed = false,
538
+ onCollapsedChange,
539
+ collapsible = true,
540
+ toggleLabel = "\uC0AC\uC774\uB4DC\uBC14 \uD1A0\uAE00",
541
+ width = 240,
542
+ collapsedWidth = 64,
543
+ className,
544
+ children,
545
+ style,
546
+ ...props
547
+ }) => {
548
+ const isControlled = collapsedProp !== void 0;
549
+ const [internalCollapsed, setInternalCollapsed] = React16.useState(defaultCollapsed);
550
+ const collapsed = isControlled ? collapsedProp : internalCollapsed;
551
+ const toggle = React16.useCallback(() => {
552
+ const next = !collapsed;
553
+ if (!isControlled) setInternalCollapsed(next);
554
+ onCollapsedChange?.(next);
555
+ }, [collapsed, isControlled, onCollapsedChange]);
556
+ return /* @__PURE__ */ jsxs(
557
+ "aside",
558
+ {
559
+ className: cn("sidebar", collapsed && "sidebar_collapsed", className),
560
+ style: { width: collapsed ? collapsedWidth : width, ...style },
561
+ ...props,
562
+ children: [
563
+ (header || headerCollapsed) && /* @__PURE__ */ jsx("div", { className: "sidebar_header", children: /* @__PURE__ */ jsxs("div", { className: "sidebar_header_layers", children: [
564
+ header && /* @__PURE__ */ jsx("div", { className: "sidebar_header_layer sidebar_header_layer_full", children: header }),
565
+ headerCollapsed && /* @__PURE__ */ jsx("div", { className: "sidebar_header_layer sidebar_header_layer_mark", children: headerCollapsed })
566
+ ] }) }),
567
+ /* @__PURE__ */ jsx("nav", { className: "sidebar_nav", children }),
568
+ footer && /* @__PURE__ */ jsx("div", { className: "sidebar_footer", children: footer }),
569
+ collapsible && /* @__PURE__ */ jsx(
570
+ "button",
571
+ {
572
+ type: "button",
573
+ className: "sidebar_collapse_btn",
574
+ onClick: toggle,
575
+ "aria-label": toggleLabel,
576
+ "aria-expanded": !collapsed,
577
+ children: collapsed ? /* @__PURE__ */ jsx(ChevronRight, { size: 14 }) : /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
578
+ }
579
+ )
580
+ ]
581
+ }
582
+ );
583
+ };
584
+ var SidebarItem = ({
585
+ icon,
586
+ active,
587
+ trailing,
588
+ as = "button",
589
+ href,
590
+ className,
591
+ children,
592
+ type,
593
+ ...props
594
+ }) => {
595
+ const classes = cn("sidebar_item", active && "sidebar_item_active", className);
596
+ const ariaCurrent = active ? "page" : void 0;
597
+ if (as === "a" && href) {
598
+ return (
599
+ // biome-ignore lint/a11y/useValidAnchor: navigation link with optional active state
600
+ /* @__PURE__ */ jsxs("a", { className: classes, href, "aria-current": ariaCurrent, ...props, children: [
601
+ icon && /* @__PURE__ */ jsx("span", { className: "sidebar_item_icon", "aria-hidden": "true", children: icon }),
602
+ /* @__PURE__ */ jsx("span", { className: "sidebar_item_label", children }),
603
+ trailing && /* @__PURE__ */ jsx("span", { className: "sidebar_item_trailing", children: trailing })
604
+ ] })
605
+ );
606
+ }
607
+ return /* @__PURE__ */ jsxs(
608
+ "button",
609
+ {
610
+ type: type ?? "button",
611
+ className: classes,
612
+ "aria-current": ariaCurrent,
613
+ ...props,
614
+ children: [
615
+ icon && /* @__PURE__ */ jsx("span", { className: "sidebar_item_icon", "aria-hidden": "true", children: icon }),
616
+ /* @__PURE__ */ jsx("span", { className: "sidebar_item_label", children }),
617
+ trailing && /* @__PURE__ */ jsx("span", { className: "sidebar_item_trailing", children: trailing })
618
+ ]
619
+ }
620
+ );
621
+ };
622
+ var SidebarSection = ({ label, className, children, ...props }) => {
623
+ return /* @__PURE__ */ jsxs("div", { className: cn("sidebar_section", className), ...props, children: [
624
+ label && /* @__PURE__ */ jsx("div", { className: "sidebar_section_label", children: label }),
625
+ children
626
+ ] });
627
+ };
628
+ var TabsContext = React16.createContext(null);
629
+ function useTabsContext() {
630
+ const ctx = React16.useContext(TabsContext);
631
+ if (!ctx) {
632
+ throw new Error(
633
+ '[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>'
634
+ );
635
+ }
636
+ return ctx;
637
+ }
638
+ var Tabs = ({
639
+ value: controlledValue,
640
+ defaultValue = "",
641
+ onValueChange,
642
+ variant = "line",
643
+ size = "md",
644
+ className,
645
+ children,
646
+ ...props
647
+ }) => {
648
+ const isControlled = controlledValue !== void 0;
649
+ const [internalValue, setInternalValue] = React16.useState(defaultValue);
650
+ const value = isControlled ? controlledValue : internalValue;
651
+ const setValue = React16.useCallback(
652
+ (v) => {
653
+ if (!isControlled) setInternalValue(v);
654
+ onValueChange?.(v);
655
+ },
656
+ [isControlled, onValueChange]
657
+ );
658
+ const idPrefix = React16.useId();
659
+ const ctx = React16.useMemo(
660
+ () => ({ value, setValue, variant, size, idPrefix }),
661
+ [value, setValue, variant, size, idPrefix]
662
+ );
663
+ return /* @__PURE__ */ jsx(TabsContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx("div", { className: cn("tabs", `tabs_variant_${variant}`, `tabs_size_${size}`, className), ...props, children }) });
664
+ };
665
+ var TabList = ({ ariaLabel, className, children, ...props }) => {
666
+ const { variant } = useTabsContext();
667
+ const listRef = React16.useRef(null);
668
+ const [indicator, setIndicator] = React16.useState(null);
669
+ const [hasMounted, setHasMounted] = React16.useState(false);
670
+ React16.useLayoutEffect(() => {
671
+ const list = listRef.current;
672
+ if (!list) return;
673
+ const update = () => {
674
+ const active = list.querySelector('[role="tab"][aria-selected="true"]');
675
+ if (active) {
676
+ setIndicator({ left: active.offsetLeft, width: active.offsetWidth });
677
+ } else {
678
+ setIndicator(null);
679
+ }
680
+ };
681
+ update();
682
+ const mountTimer = setTimeout(() => setHasMounted(true), 50);
683
+ const mo = new MutationObserver(update);
684
+ mo.observe(list, {
685
+ subtree: true,
686
+ attributes: true,
687
+ attributeFilter: ["aria-selected"]
688
+ });
689
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
690
+ ro?.observe(list);
691
+ const handleResize = () => update();
692
+ window.addEventListener("resize", handleResize);
693
+ return () => {
694
+ clearTimeout(mountTimer);
695
+ mo.disconnect();
696
+ ro?.disconnect();
697
+ window.removeEventListener("resize", handleResize);
698
+ };
699
+ }, [variant]);
700
+ return /* @__PURE__ */ jsxs(
701
+ "div",
702
+ {
703
+ ref: listRef,
704
+ role: "tablist",
705
+ "aria-label": ariaLabel,
706
+ className: cn("tabs_list", `tabs_list_${variant}`, className),
707
+ ...props,
708
+ children: [
709
+ indicator && /* @__PURE__ */ jsx(
710
+ "span",
711
+ {
712
+ "aria-hidden": "true",
713
+ className: cn(
714
+ "tabs_indicator",
715
+ `tabs_indicator_${variant}`,
716
+ hasMounted && "tabs_indicator_animated"
717
+ ),
718
+ style: { left: indicator.left, width: indicator.width }
719
+ }
720
+ ),
721
+ children
722
+ ]
723
+ }
724
+ );
725
+ };
726
+ var Tab = ({ value, className, children, onClick, ...props }) => {
727
+ const ctx = useTabsContext();
728
+ const isActive = ctx.value === value;
729
+ const panelId = `${ctx.idPrefix}-panel-${value}`;
730
+ const tabId = `${ctx.idPrefix}-tab-${value}`;
731
+ const handleClick = (e) => {
732
+ ctx.setValue(value);
733
+ onClick?.(e);
734
+ };
735
+ const handleKeyDown = (e) => {
736
+ if (e.key !== "ArrowLeft" && e.key !== "ArrowRight" && e.key !== "Home" && e.key !== "End") return;
737
+ const list = e.currentTarget.closest('[role="tablist"]');
738
+ if (!list) return;
739
+ const tabs = Array.from(list.querySelectorAll('[role="tab"]:not([disabled])'));
740
+ const currentIndex = tabs.indexOf(e.currentTarget);
741
+ if (currentIndex < 0) return;
742
+ e.preventDefault();
743
+ let next = currentIndex;
744
+ if (e.key === "ArrowRight") next = (currentIndex + 1) % tabs.length;
745
+ else if (e.key === "ArrowLeft") next = (currentIndex - 1 + tabs.length) % tabs.length;
746
+ else if (e.key === "Home") next = 0;
747
+ else if (e.key === "End") next = tabs.length - 1;
748
+ const targetValue = tabs[next].dataset.value;
749
+ if (targetValue) {
750
+ ctx.setValue(targetValue);
751
+ tabs[next].focus();
752
+ }
753
+ };
754
+ return /* @__PURE__ */ jsx(
755
+ "button",
756
+ {
757
+ type: "button",
758
+ role: "tab",
759
+ id: tabId,
760
+ "data-value": value,
761
+ "aria-selected": isActive,
762
+ "aria-controls": panelId,
763
+ tabIndex: isActive ? 0 : -1,
764
+ className: cn("tabs_tab", isActive && "tabs_tab_active", className),
765
+ onClick: handleClick,
766
+ onKeyDown: handleKeyDown,
767
+ ...props,
768
+ children
769
+ }
770
+ );
771
+ };
772
+ var TabPanel = ({
773
+ value,
774
+ unmountInactive = true,
775
+ className,
776
+ children,
777
+ ...props
778
+ }) => {
779
+ const ctx = useTabsContext();
780
+ const isActive = ctx.value === value;
781
+ const panelId = `${ctx.idPrefix}-panel-${value}`;
782
+ const tabId = `${ctx.idPrefix}-tab-${value}`;
783
+ if (!isActive && unmountInactive) return null;
784
+ return /* @__PURE__ */ jsx(
785
+ "div",
786
+ {
787
+ role: "tabpanel",
788
+ id: panelId,
789
+ "aria-labelledby": tabId,
790
+ hidden: !isActive,
791
+ tabIndex: 0,
792
+ className: cn("tabs_panel", className),
793
+ ...props,
794
+ children
795
+ }
796
+ );
797
+ };
798
+ var Tooltip = ({
799
+ content,
800
+ placement = "top",
801
+ delay = 200,
802
+ disabled = false,
803
+ children
804
+ }) => {
805
+ const [open, setOpen] = React16.useState(false);
806
+ const timerRef = React16.useRef(null);
807
+ const tooltipId = React16.useId();
808
+ const show = React16.useCallback(() => {
809
+ if (timerRef.current) clearTimeout(timerRef.current);
810
+ timerRef.current = setTimeout(() => setOpen(true), delay);
811
+ }, [delay]);
812
+ const hide = React16.useCallback(() => {
813
+ if (timerRef.current) clearTimeout(timerRef.current);
814
+ setOpen(false);
815
+ }, []);
816
+ React16.useEffect(() => {
817
+ return () => {
818
+ if (timerRef.current) clearTimeout(timerRef.current);
819
+ };
820
+ }, []);
821
+ const fromTransform = (() => {
822
+ switch (placement) {
823
+ case "top":
824
+ return "translateY(4px)";
825
+ case "bottom":
826
+ return "translateY(-4px)";
827
+ case "left":
828
+ return "translateX(4px)";
829
+ case "right":
830
+ return "translateX(-4px)";
831
+ }
832
+ })();
833
+ const style = useSpringPresence({ visible: open, from: fromTransform });
834
+ const trigger = React16.cloneElement(children, {
835
+ onMouseEnter: show,
836
+ onMouseLeave: hide,
837
+ onFocus: show,
838
+ onBlur: hide,
839
+ "aria-describedby": open ? tooltipId : void 0
840
+ });
841
+ if (disabled) return children;
842
+ return /* @__PURE__ */ jsxs("span", { className: "tooltip_wrapper", children: [
843
+ trigger,
844
+ open && /* @__PURE__ */ jsx("span", { className: cn("tooltip_position", `tooltip_placement_${placement}`), children: /* @__PURE__ */ jsx(
845
+ animated.span,
846
+ {
847
+ id: tooltipId,
848
+ role: "tooltip",
849
+ style,
850
+ className: cn("tooltip", `tooltip_placement_${placement}`),
851
+ children: content
852
+ }
853
+ ) })
854
+ ] });
855
+ };
8
856
 
9
857
  // src/styles/a11y/index.ts
10
858
  var a11y = {
11
859
  focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)",
12
860
  focusRingError: "0 0 0 3px rgba(239, 68, 68, 0.15)",
13
861
  focusRingSuccess: "0 0 0 3px rgba(16, 185, 129, 0.15)",
14
- tapMinSize: "44px"
862
+ tapMinSize: "44px",
863
+ tapTarget: {
864
+ dense: "32px",
865
+ compact: "40px",
866
+ comfortable: "48px",
867
+ spacious: "56px"
868
+ }
15
869
  };
16
870
 
17
871
  // src/styles/border-width/index.ts
@@ -23,6 +877,7 @@ var baseBorderWidth = {
23
877
  var borderWidth = {
24
878
  none: baseBorderWidth["0"],
25
879
  standard: baseBorderWidth["1"],
880
+ thick: baseBorderWidth["2"],
26
881
  indicator: baseBorderWidth["2"]
27
882
  };
28
883
 
@@ -44,6 +899,7 @@ var baseColors = {
44
899
  blue600: "#1A73E8",
45
900
  neutral0: "#FFFFFF",
46
901
  neutral50: "#F4F4F4",
902
+ neutral100: "#F2F2F2",
47
903
  neutral200: "#E5E5E5",
48
904
  neutral300: "#999999",
49
905
  neutral400: "#B3B3B3",
@@ -56,6 +912,17 @@ var baseColors = {
56
912
  statusSuccess: "#10B981",
57
913
  statusWarning: "#F59E0B",
58
914
  statusInfo: "#3B82F6",
915
+ // Navy — Bigtablet 초기 홈페이지 컬러. #47555E 메인 navy + sky blue 패밀리.
916
+ navy50: "#F2F5F8",
917
+ navy100: "#DDE3E9",
918
+ navy200: "#B4C2CD",
919
+ navy300: "#7AA5D2",
920
+ navy400: "#5A8DCB",
921
+ navy500: "#4C7CB6",
922
+ navy600: "#47555E",
923
+ navy700: "#3D4852",
924
+ navy800: "#303841",
925
+ navy900: "#1F2630",
59
926
  alphaBlack5: "rgba(0, 0, 0, 0.05)",
60
927
  alphaBlack8: "rgba(0, 0, 0, 0.08)",
61
928
  alphaBlack12: "rgba(26, 26, 26, 0.12)",
@@ -97,13 +964,22 @@ var colors = {
97
964
  hover: baseColors.neutral400,
98
965
  subtle: baseColors.alphaBlack8,
99
966
  focus: baseColors.neutral900,
100
- disabled: "#F2F2F2"
967
+ disabled: baseColors.neutral100
101
968
  },
102
969
  status: {
103
970
  error: baseColors.statusError,
104
971
  success: baseColors.statusSuccess,
105
972
  warning: baseColors.statusWarning,
106
973
  info: baseColors.statusInfo
974
+ },
975
+ // Accent (Bigtablet navy) — 메인 brand 검정과 함께 B2C/마케팅 강조에 사용.
976
+ accent: {
977
+ subtle: baseColors.navy50,
978
+ muted: baseColors.navy100,
979
+ light: baseColors.navy300,
980
+ default: baseColors.navy600,
981
+ strong: baseColors.navy800,
982
+ onSurface: baseColors.neutral0
107
983
  }
108
984
  };
109
985
 
@@ -127,7 +1003,15 @@ var motion = {
127
1003
  fade: "0.15s ease-in-out",
128
1004
  slide: "0.25s ease-in-out",
129
1005
  scale: "0.2s cubic-bezier(0.2, 0.8, 0.2, 1)",
130
- state: "0.18s ease-in-out"
1006
+ state: "0.18s ease-in-out",
1007
+ enterFast: "0.15s cubic-bezier(0.16, 1, 0.3, 1)",
1008
+ enterBase: "0.2s cubic-bezier(0.16, 1, 0.3, 1)",
1009
+ exitFast: "0.12s cubic-bezier(0.4, 0, 1, 1)",
1010
+ exitBase: "0.15s cubic-bezier(0.4, 0, 1, 1)"
1011
+ },
1012
+ easing: {
1013
+ enter: "cubic-bezier(0.16, 1, 0.3, 1)",
1014
+ exit: "cubic-bezier(0.4, 0, 1, 1)"
131
1015
  }
132
1016
  };
133
1017
 
@@ -244,7 +1128,8 @@ var baseTypography = {
244
1128
  "60": "60px"
245
1129
  },
246
1130
  letterSpacing: {
247
- normal: "0px"
1131
+ normal: "0px",
1132
+ tight: "0.32px"
248
1133
  }
249
1134
  };
250
1135
  var { fontSize: fs, fontWeight: fw, lineHeight: lh, letterSpacing: ls } = baseTypography;
@@ -453,104 +1338,53 @@ var zIndex = {
453
1338
  level4: 500,
454
1339
  level5: 1e3
455
1340
  };
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(" ");
1341
+ var Button = ({
1342
+ variant = "filled",
1343
+ size = "md",
1344
+ leadingIcon,
1345
+ trailingIcon,
1346
+ fullWidth = false,
1347
+ radius: radius2,
1348
+ danger = false,
1349
+ className,
1350
+ children,
1351
+ ...props
1352
+ }) => {
1353
+ const buttonClassName = cn(
1354
+ "button",
1355
+ `button_variant_${variant}`,
1356
+ `button_size_${size}`,
1357
+ fullWidth && "button_full_width",
1358
+ radius2 && `button_radius_${radius2}`,
1359
+ danger && "button_danger",
1360
+ className
1361
+ );
1362
+ return /* @__PURE__ */ jsxs("button", { className: buttonClassName, ...props, children: [
1363
+ leadingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: leadingIcon }),
1364
+ children && /* @__PURE__ */ jsx("span", { className: "button_label", children }),
1365
+ trailingIcon && /* @__PURE__ */ jsx("span", { className: "button_icon", "aria-hidden": "true", children: trailingIcon })
1366
+ ] });
1367
+ };
1368
+ var ICONS = {
1369
+ info: /* @__PURE__ */ jsx(Info, { size: 20, "aria-hidden": "true" }),
1370
+ success: /* @__PURE__ */ jsx(CheckCircle2, { size: 20, "aria-hidden": "true" }),
1371
+ warning: /* @__PURE__ */ jsx(AlertTriangle, { size: 20, "aria-hidden": "true" }),
1372
+ error: /* @__PURE__ */ jsx(XCircle, { size: 20, "aria-hidden": "true" })
478
1373
  };
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
1374
  var AlertContext = createContext(null);
538
1375
  var useAlert = () => {
539
1376
  const context = useContext(AlertContext);
540
1377
  if (!context) {
541
- throw new Error("useAlert must be used within AlertProvider");
1378
+ throw new Error(
1379
+ "[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>"
1380
+ );
542
1381
  }
543
1382
  return context;
544
1383
  };
545
1384
  var AlertProvider = ({ children }) => {
546
- const [alertState, setAlertState] = useState({
547
- isOpen: false
548
- });
1385
+ const [alertState, setAlertState] = useState({ isOpen: false });
549
1386
  const showAlert = useCallback((options) => {
550
- setAlertState({
551
- ...options,
552
- isOpen: true
553
- });
1387
+ setAlertState({ ...options, isOpen: true });
554
1388
  }, []);
555
1389
  const handleClose = useCallback(() => {
556
1390
  setAlertState((prev) => ({ ...prev, isOpen: false }));
@@ -565,98 +1399,107 @@ var AlertProvider = ({ children }) => {
565
1399
  }, [alertState.onCancel, handleClose]);
566
1400
  return /* @__PURE__ */ jsxs(AlertContext.Provider, { value: { showAlert }, children: [
567
1401
  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
1402
+ /* @__PURE__ */ jsx(
1403
+ AlertModal,
1404
+ {
1405
+ ...alertState,
1406
+ onConfirm: handleConfirm,
1407
+ onCancel: handleCancel,
1408
+ onClose: handleClose
1409
+ }
579
1410
  )
580
1411
  ] });
581
1412
  };
582
1413
  var AlertModal = ({
1414
+ isOpen,
583
1415
  variant = "info",
584
1416
  title,
585
1417
  message,
586
1418
  confirmText = "\uD655\uC778",
587
1419
  cancelText = "\uCDE8\uC18C",
588
1420
  showCancel = false,
1421
+ destructive = false,
589
1422
  actionsAlign = "right",
1423
+ showIcon = false,
590
1424
  onConfirm,
591
1425
  onCancel,
592
1426
  onClose
593
1427
  }) => {
594
- const panelRef = React4.useRef(null);
595
- const titleId = React4.useId();
596
- const messageId = React4.useId();
597
- useFocusTrap(panelRef, true);
1428
+ const panelRef = React16.useRef(null);
1429
+ const titleId = React16.useId();
1430
+ const messageId = React16.useId();
1431
+ const [shouldRender, setShouldRender] = useState(isOpen);
1432
+ useFocusTrap(panelRef, isOpen);
1433
+ React16.useEffect(() => {
1434
+ if (isOpen) setShouldRender(true);
1435
+ }, [isOpen]);
1436
+ const overlayStyle = useSpring({
1437
+ opacity: isOpen ? 1 : 0,
1438
+ config: { tension: 280, friction: 28, clamp: !isOpen },
1439
+ onRest: (result) => {
1440
+ if (!isOpen && result.finished) setShouldRender(false);
1441
+ }
1442
+ });
1443
+ const panelStyle = useSpring({
1444
+ opacity: isOpen ? 1 : 0,
1445
+ transform: isOpen ? "scale(1) translateY(0px)" : "scale(0.96) translateY(-4px)",
1446
+ config: { tension: 280, friction: 28, clamp: !isOpen }
1447
+ });
1448
+ if (!shouldRender) return null;
1449
+ const confirmVariant = "filled";
1450
+ const cancelVariant = "outline";
598
1451
  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)
1452
+ return createPortal(
1453
+ // biome-ignore lint/a11y/noStaticElementInteractions: modal overlay pattern
602
1454
  /* @__PURE__ */ jsx(
603
- "div",
1455
+ animated.div,
604
1456
  {
605
1457
  className: "alert_overlay",
1458
+ style: overlayStyle,
606
1459
  role: "presentation",
607
1460
  onClick: onClose,
608
1461
  onKeyDown: (e) => e.key === "Escape" && onClose(),
609
1462
  children: /* @__PURE__ */ jsxs(
610
- "div",
1463
+ animated.div,
611
1464
  {
612
1465
  ref: panelRef,
613
1466
  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
1467
+ style: panelStyle,
1468
+ onClick: (e) => e.stopPropagation(),
1469
+ onKeyDown: (e) => {
1470
+ if (e.key !== "Escape") e.stopPropagation();
1471
+ },
1472
+ role: "alertdialog",
1473
+ "aria-modal": "true",
1474
+ "aria-labelledby": title ? titleId : void 0,
1475
+ "aria-describedby": message ? messageId : void 0,
1476
+ children: [
1477
+ (showIcon || title) && /* @__PURE__ */ jsxs("div", { className: "alert_header", children: [
1478
+ showIcon && /* @__PURE__ */ jsx("span", { className: cn("alert_icon", `alert_icon_${variant}`), "aria-hidden": "true", children: ICONS[variant] }),
1479
+ title && /* @__PURE__ */ jsx("div", { className: "alert_title", id: titleId, children: title })
1480
+ ] }),
1481
+ message && /* @__PURE__ */ jsx("div", { className: "alert_message", id: messageId, children: message }),
1482
+ /* @__PURE__ */ jsxs("div", { className: cn("alert_actions", `alert_actions_${actionsAlign}`), children: [
1483
+ showCancel && /* @__PURE__ */ jsx(Button, { variant: cancelVariant, size: "md", radius: "md", onClick: onCancel, children: cancelText }),
1484
+ /* @__PURE__ */ jsx(
1485
+ Button,
1486
+ {
1487
+ variant: confirmVariant,
1488
+ danger: destructive,
1489
+ size: "md",
1490
+ radius: "md",
1491
+ onClick: onConfirm,
1492
+ children: confirmText
1493
+ }
1494
+ )
1495
+ ] })
1496
+ ]
1497
+ }
1498
+ )
1499
+ }
1500
+ ),
1501
+ document.body
654
1502
  );
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
1503
  };
661
1504
  var Card = ({
662
1505
  heading,
@@ -664,6 +1507,7 @@ var Card = ({
664
1507
  shadow = "sm",
665
1508
  padding = "md",
666
1509
  bordered = false,
1510
+ variant = "default",
667
1511
  className,
668
1512
  children,
669
1513
  ...props
@@ -672,6 +1516,7 @@ var Card = ({
672
1516
  "card",
673
1517
  `card_shadow_${shadow}`,
674
1518
  `card_p_${padding}`,
1519
+ variant !== "default" && `card_variant_${variant}`,
675
1520
  { card_bordered: bordered },
676
1521
  className
677
1522
  );
@@ -688,12 +1533,12 @@ var Checkbox = ({
688
1533
  ref,
689
1534
  ...props
690
1535
  }) => {
691
- const inputRef = React4.useRef(null);
692
- React4.useImperativeHandle(
1536
+ const inputRef = React16.useRef(null);
1537
+ React16.useImperativeHandle(
693
1538
  ref,
694
1539
  () => inputRef.current
695
1540
  );
696
- React4.useEffect(() => {
1541
+ React16.useEffect(() => {
697
1542
  if (!inputRef.current) return;
698
1543
  inputRef.current.indeterminate = Boolean(indeterminate);
699
1544
  }, [indeterminate]);
@@ -757,32 +1602,58 @@ var ChevronDownIcon = () => /* @__PURE__ */ jsx(
757
1602
  );
758
1603
  var Chip = ({
759
1604
  type = "basic",
1605
+ size,
1606
+ tone = "default",
760
1607
  label,
761
1608
  selected,
762
1609
  removable,
763
1610
  disabled,
764
1611
  open,
1612
+ leadingIcon,
765
1613
  onClick,
766
1614
  onRemove,
767
1615
  className,
768
1616
  ...props
769
1617
  }) => {
770
1618
  const [iconHovered, setIconHovered] = useState(false);
771
- const hasLeading = selected;
772
- const hasTrailingButton = type === "input" && removable;
1619
+ const isStatic = type === "static";
1620
+ const hasLeading = !isStatic && selected;
1621
+ const hasStaticLeading = isStatic && !!leadingIcon;
1622
+ const hasTrailingButton = (type === "input" || isStatic) && removable;
773
1623
  const hasTrailingIcon = hasTrailingButton || type === "filter";
774
1624
  const enterIcon = () => setIconHovered(true);
775
1625
  const leaveIcon = () => setIconHovered(false);
776
1626
  const chipClassName = cn(
777
1627
  "chip",
778
1628
  `chip_type_${type}`,
1629
+ size && `chip_size_${size}`,
1630
+ isStatic && `chip_tone_${tone}`,
779
1631
  selected && "chip_selected",
780
- hasLeading && "chip_has_leading",
1632
+ (hasLeading || hasStaticLeading) && "chip_has_leading",
781
1633
  hasTrailingIcon && "chip_has_trailing",
782
1634
  disabled && "chip_disabled",
783
1635
  iconHovered && "chip_icon_hovered",
784
1636
  className
785
1637
  );
1638
+ if (isStatic) {
1639
+ return /* @__PURE__ */ jsxs("span", { className: chipClassName, ...props, children: [
1640
+ /* @__PURE__ */ jsxs("span", { className: "chip_content", children: [
1641
+ hasStaticLeading && /* @__PURE__ */ jsx("span", { className: "chip_icon", "aria-hidden": "true", children: leadingIcon }),
1642
+ /* @__PURE__ */ jsx("span", { className: "chip_label", children: label })
1643
+ ] }),
1644
+ hasTrailingButton && /* @__PURE__ */ jsx(
1645
+ "button",
1646
+ {
1647
+ type: "button",
1648
+ className: "chip_trailing",
1649
+ disabled,
1650
+ onClick: onRemove,
1651
+ "aria-label": "Remove",
1652
+ children: /* @__PURE__ */ jsx("span", { className: "chip_icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx(CloseIcon, {}) })
1653
+ }
1654
+ )
1655
+ ] });
1656
+ }
786
1657
  return /* @__PURE__ */ jsxs("div", { className: chipClassName, ...props, children: [
787
1658
  /* @__PURE__ */ jsxs(
788
1659
  "button",
@@ -849,25 +1720,23 @@ var Dropdown = ({
849
1720
  defaultValue = null,
850
1721
  disabled,
851
1722
  size = "md",
852
- fullWidth,
853
1723
  className
854
1724
  }) => {
855
- const internalId = React4.useId();
1725
+ const internalId = useId();
856
1726
  const dropdownId = id ?? internalId;
857
1727
  const isControlled = value !== void 0;
858
- const [internalValue, setInternalValue] = React4.useState(defaultValue);
1728
+ const [internalValue, setInternalValue] = useState(defaultValue);
859
1729
  const currentValue = isControlled ? value ?? null : internalValue;
860
- const [isOpen, setIsOpen] = React4.useState(false);
861
- const [activeIndex, setActiveIndex] = React4.useState(-1);
862
- const [dropUp, setDropUp] = React4.useState(false);
863
- const wrapperRef = React4.useRef(null);
864
- const controlRef = React4.useRef(null);
865
- const currentOption = React4.useMemo(
1730
+ const [isOpen, setIsOpen] = useState(false);
1731
+ const [activeIndex, setActiveIndex] = useState(-1);
1732
+ const [dropUp, setDropUp] = useState(false);
1733
+ const wrapperRef = useRef(null);
1734
+ const controlRef = useRef(null);
1735
+ const currentOption = useMemo(
866
1736
  () => options.find((o) => o.value === currentValue) ?? null,
867
1737
  [options, currentValue]
868
1738
  );
869
- const isLabelVisible = isOpen || !!currentOption;
870
- const setValue = React4.useCallback(
1739
+ const setValue = useCallback(
871
1740
  (next) => {
872
1741
  const option = options.find((o) => o.value === next) ?? null;
873
1742
  if (!isControlled) setInternalValue(next);
@@ -875,7 +1744,7 @@ var Dropdown = ({
875
1744
  },
876
1745
  [isControlled, onChange, options]
877
1746
  );
878
- React4.useEffect(() => {
1747
+ useEffect(() => {
879
1748
  const handleOutsideClick = (e) => {
880
1749
  if (!wrapperRef.current?.contains(e.target)) {
881
1750
  setIsOpen(false);
@@ -946,7 +1815,7 @@ var Dropdown = ({
946
1815
  break;
947
1816
  }
948
1817
  };
949
- React4.useEffect(() => {
1818
+ useEffect(() => {
950
1819
  if (!isOpen) return;
951
1820
  const matchedIndex = options.findIndex((o) => o.value === currentValue && !o.disabled);
952
1821
  setActiveIndex(
@@ -956,82 +1825,98 @@ var Dropdown = ({
956
1825
  )
957
1826
  );
958
1827
  }, [isOpen, options, currentValue]);
959
- React4.useLayoutEffect(() => {
1828
+ useEffect(() => {
960
1829
  if (!isOpen || !controlRef.current) return;
961
1830
  const rect = controlRef.current.getBoundingClientRect();
962
- const listHeight = Math.min(options.length * 56, 288);
963
1831
  const spaceBelow = window.innerHeight - rect.bottom;
964
1832
  const spaceAbove = rect.top;
965
- setDropUp(spaceBelow < listHeight && spaceAbove > spaceBelow);
966
- }, [isOpen, options.length]);
1833
+ const MIN_BELOW = 120;
1834
+ setDropUp(spaceBelow < MIN_BELOW && spaceAbove > spaceBelow);
1835
+ }, [isOpen]);
967
1836
  const rootClassName = cn("dropdown", `dropdown_size_${size}`, className);
968
1837
  const fieldsetClassName = cn("dropdown_fieldset", { is_open: isOpen, is_disabled: disabled });
969
1838
  const listClassName = cn("dropdown_list", { dropdown_list_up: dropUp });
1839
+ const listStyle = useSpringPresence({
1840
+ visible: isOpen,
1841
+ from: dropUp ? "translateY(4px)" : "translateY(-4px)"
1842
+ });
970
1843
  return /* @__PURE__ */ jsxs(
971
1844
  "div",
972
1845
  {
973
1846
  ref: wrapperRef,
974
1847
  className: rootClassName,
975
- style: fullWidth ? { width: "100%" } : void 0,
976
1848
  children: [
977
- /* @__PURE__ */ jsxs("div", { className: fieldsetClassName, children: [
978
- label && /* @__PURE__ */ jsx("span", { className: cn("dropdown_label", { is_visible: isLabelVisible }), "aria-hidden": "true", children: label }),
979
- /* @__PURE__ */ jsxs(
980
- "button",
981
- {
982
- ref: controlRef,
983
- id: dropdownId,
984
- type: "button",
985
- className: cn("dropdown_control", { is_disabled: disabled }),
986
- "aria-haspopup": "listbox",
987
- "aria-expanded": isOpen,
988
- "aria-controls": `${dropdownId}_listbox`,
989
- "aria-label": label,
990
- onClick: () => !disabled && setIsOpen((o) => !o),
991
- onKeyDown,
992
- disabled,
993
- children: [
994
- /* @__PURE__ */ jsx("span", { className: currentOption ? "dropdown_value" : "dropdown_placeholder", children: currentOption ? currentOption.label : placeholder }),
995
- /* @__PURE__ */ jsx("span", { className: "dropdown_icon", "aria-hidden": "true", children: isOpen ? /* @__PURE__ */ jsx(X, { size: 24 }) : /* @__PURE__ */ jsx(ChevronDown, { size: 24 }) })
996
- ]
997
- }
998
- )
999
- ] }),
1000
- isOpen && /* @__PURE__ */ jsx("div", { id: `${dropdownId}_listbox`, role: "listbox", className: listClassName, children: options.map((opt, i) => {
1001
- const selected = currentValue === opt.value;
1002
- const active = i === activeIndex;
1003
- return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
1004
- /* @__PURE__ */ jsxs(
1005
- "div",
1006
- {
1007
- role: "option",
1008
- tabIndex: -1,
1009
- "aria-selected": selected,
1010
- "aria-disabled": opt.disabled ? true : void 0,
1011
- className: cn("dropdown_option", {
1012
- is_selected: selected,
1013
- is_active: active,
1014
- is_disabled: opt.disabled
1015
- }),
1016
- onMouseEnter: () => !opt.disabled && setActiveIndex(i),
1017
- onClick: () => {
1018
- if (opt.disabled) return;
1019
- setValue(opt.value);
1020
- setIsOpen(false);
1021
- },
1022
- children: [
1023
- opt.leadingIcon && /* @__PURE__ */ jsx("span", { className: "dropdown_option_icon", children: opt.leadingIcon }),
1024
- /* @__PURE__ */ jsxs("span", { className: "dropdown_option_content", children: [
1025
- /* @__PURE__ */ jsx("span", { className: "dropdown_option_label", children: opt.label }),
1026
- opt.supportingText && /* @__PURE__ */ jsx("span", { className: "dropdown_option_supporting", children: opt.supportingText })
1027
- ] }),
1028
- (selected || opt.trailingIcon) && /* @__PURE__ */ jsx("span", { className: "dropdown_option_trailing", children: opt.trailingIcon ?? /* @__PURE__ */ jsx(Check, { size: 16, "aria-hidden": "true" }) })
1029
- ]
1030
- }
1031
- ),
1032
- opt.showDivider && /* @__PURE__ */ jsx("hr", { className: "dropdown_option_divider" })
1033
- ] }, opt.value);
1034
- }) })
1849
+ label && /* @__PURE__ */ jsx("label", { htmlFor: dropdownId, className: "dropdown_label", children: label }),
1850
+ /* @__PURE__ */ jsx("div", { className: fieldsetClassName, children: /* @__PURE__ */ jsxs(
1851
+ "button",
1852
+ {
1853
+ ref: controlRef,
1854
+ id: dropdownId,
1855
+ type: "button",
1856
+ className: cn("dropdown_control", { is_disabled: disabled }),
1857
+ "aria-haspopup": "listbox",
1858
+ "aria-expanded": isOpen,
1859
+ "aria-controls": `${dropdownId}_listbox`,
1860
+ onClick: () => !disabled && setIsOpen((o) => !o),
1861
+ onKeyDown,
1862
+ disabled,
1863
+ children: [
1864
+ /* @__PURE__ */ jsx("span", { className: currentOption ? "dropdown_value" : "dropdown_placeholder", children: currentOption ? currentOption.label : placeholder }),
1865
+ /* @__PURE__ */ jsx(
1866
+ "span",
1867
+ {
1868
+ className: cn("dropdown_icon", { dropdown_icon_open: isOpen }),
1869
+ "aria-hidden": "true",
1870
+ children: /* @__PURE__ */ jsx(ChevronDown, { size: 20 })
1871
+ }
1872
+ )
1873
+ ]
1874
+ }
1875
+ ) }),
1876
+ isOpen && /* @__PURE__ */ jsx(
1877
+ animated.div,
1878
+ {
1879
+ id: `${dropdownId}_listbox`,
1880
+ role: "listbox",
1881
+ className: listClassName,
1882
+ style: listStyle,
1883
+ children: options.map((opt, i) => {
1884
+ const selected = currentValue === opt.value;
1885
+ const active = i === activeIndex;
1886
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1887
+ /* @__PURE__ */ jsxs(
1888
+ "div",
1889
+ {
1890
+ role: "option",
1891
+ tabIndex: -1,
1892
+ "aria-selected": selected,
1893
+ "aria-disabled": opt.disabled ? true : void 0,
1894
+ className: cn("dropdown_option", {
1895
+ is_selected: selected,
1896
+ is_active: active,
1897
+ is_disabled: opt.disabled
1898
+ }),
1899
+ onMouseEnter: () => !opt.disabled && setActiveIndex(i),
1900
+ onClick: () => {
1901
+ if (opt.disabled) return;
1902
+ setValue(opt.value);
1903
+ setIsOpen(false);
1904
+ },
1905
+ children: [
1906
+ opt.leadingIcon && /* @__PURE__ */ jsx("span", { className: "dropdown_option_icon", children: opt.leadingIcon }),
1907
+ /* @__PURE__ */ jsxs("span", { className: "dropdown_option_content", children: [
1908
+ /* @__PURE__ */ jsx("span", { className: "dropdown_option_label", children: opt.label }),
1909
+ opt.supportingText && /* @__PURE__ */ jsx("span", { className: "dropdown_option_supporting", children: opt.supportingText })
1910
+ ] }),
1911
+ (selected || opt.trailingIcon) && /* @__PURE__ */ jsx("span", { className: "dropdown_option_trailing", children: opt.trailingIcon ?? /* @__PURE__ */ jsx(Check, { size: 16, "aria-hidden": "true" }) })
1912
+ ]
1913
+ }
1914
+ ),
1915
+ opt.showDivider && /* @__PURE__ */ jsx("hr", { className: "dropdown_option_divider" })
1916
+ ] }, opt.value);
1917
+ })
1918
+ }
1919
+ )
1035
1920
  ]
1036
1921
  }
1037
1922
  );
@@ -1058,9 +1943,9 @@ var DatePicker = ({
1058
1943
  minDateSrFormat = "Minimum date: {date}",
1059
1944
  selectableRangeUntilTodaySrText = "Selectable up to today"
1060
1945
  }) => {
1061
- const groupId = React4.useId();
1062
- const constraintId = React4.useId();
1063
- const { todayYear, todayMonth, todayDay } = React4.useMemo(() => {
1946
+ const groupId = React16.useId();
1947
+ const constraintId = React16.useId();
1948
+ const { todayYear, todayMonth, todayDay } = React16.useMemo(() => {
1064
1949
  const now = /* @__PURE__ */ new Date();
1065
1950
  return {
1066
1951
  todayYear: now.getFullYear(),
@@ -1069,7 +1954,7 @@ var DatePicker = ({
1069
1954
  };
1070
1955
  }, []);
1071
1956
  const endYear = endYearProp ?? todayYear + 10;
1072
- const parsed = React4.useMemo(() => {
1957
+ const parsed = React16.useMemo(() => {
1073
1958
  if (!value) return { year: 0, month: 0, day: 0 };
1074
1959
  const [y, m, d] = value.split("-").map(Number);
1075
1960
  return {
@@ -1078,7 +1963,7 @@ var DatePicker = ({
1078
1963
  day: d || 0
1079
1964
  };
1080
1965
  }, [value]);
1081
- const min = React4.useMemo(() => {
1966
+ const min = React16.useMemo(() => {
1082
1967
  if (!minDate) return { year: 0, month: 0, day: 0 };
1083
1968
  const [y, m, d] = minDate.split("-").map(Number);
1084
1969
  return {
@@ -1098,7 +1983,7 @@ var DatePicker = ({
1098
1983
  min.year > 0 && min.month > 0 && year === min.year && month === min.month ? min.day : 1
1099
1984
  )
1100
1985
  );
1101
- const maxDay = React4.useMemo(() => {
1986
+ const maxDay = React16.useMemo(() => {
1102
1987
  if (!year || !month) return 31;
1103
1988
  const daysInMonth = getDaysInMonth(year, month);
1104
1989
  if (selectableRange === "until-today" && year === todayYear && month === todayMonth) {
@@ -1106,28 +1991,28 @@ var DatePicker = ({
1106
1991
  }
1107
1992
  return daysInMonth;
1108
1993
  }, [year, month, selectableRange, todayYear, todayMonth, todayDay]);
1109
- const yearOptions = React4.useMemo(
1994
+ const yearOptions = React16.useMemo(
1110
1995
  () => range(startYear, maxYear).map((y) => ({
1111
1996
  value: String(y),
1112
1997
  label: String(y)
1113
1998
  })),
1114
1999
  [startYear, maxYear]
1115
2000
  );
1116
- const monthOptions = React4.useMemo(
2001
+ const monthOptions = React16.useMemo(
1117
2002
  () => range(minMonth, Math.max(minMonth, maxMonth)).map((m) => ({
1118
2003
  value: String(m),
1119
2004
  label: pad(m)
1120
2005
  })),
1121
2006
  [minMonth, maxMonth]
1122
2007
  );
1123
- const dayOptions = React4.useMemo(
2008
+ const dayOptions = React16.useMemo(
1124
2009
  () => range(minDay, Math.max(minDay, maxDay)).map((d) => ({
1125
2010
  value: String(d),
1126
2011
  label: pad(d)
1127
2012
  })),
1128
2013
  [minDay, maxDay]
1129
2014
  );
1130
- const emit = React4.useCallback(
2015
+ const emit = React16.useCallback(
1131
2016
  (yy, mm, dd) => {
1132
2017
  if (mode === "year-month") {
1133
2018
  onChange(`${yy}-${pad(mm)}`);
@@ -1138,7 +2023,7 @@ var DatePicker = ({
1138
2023
  },
1139
2024
  [mode, onChange]
1140
2025
  );
1141
- const handleYearChange = React4.useCallback(
2026
+ const handleYearChange = React16.useCallback(
1142
2027
  (raw) => {
1143
2028
  if (!raw) return;
1144
2029
  const newYear = Number(raw);
@@ -1155,14 +2040,14 @@ var DatePicker = ({
1155
2040
  },
1156
2041
  [month, day, min.year, min.month, selectableRange, todayYear, todayMonth, emit]
1157
2042
  );
1158
- const handleMonthChange = React4.useCallback(
2043
+ const handleMonthChange = React16.useCallback(
1159
2044
  (raw) => {
1160
2045
  if (!raw || !year) return;
1161
2046
  emit(year, Number(raw), day || void 0);
1162
2047
  },
1163
2048
  [year, day, emit]
1164
2049
  );
1165
- const handleDayChange = React4.useCallback(
2050
+ const handleDayChange = React16.useCallback(
1166
2051
  (raw) => {
1167
2052
  if (!raw || !year || !month) return;
1168
2053
  emit(year, month, Number(raw));
@@ -1237,673 +2122,190 @@ var Divider = ({ weight = "standard", className, ...props }) => {
1237
2122
  const dividerClassName = cn("divider", `divider_weight_${weight}`, className);
1238
2123
  return /* @__PURE__ */ jsx("hr", { className: dividerClassName, ...props });
1239
2124
  };
1240
- var FAB = ({ variant = "primary", icon, className, ...props }) => {
1241
- const fabClassName = cn("fab", `fab_variant_${variant}`, className);
1242
- return /* @__PURE__ */ jsx("button", { className: fabClassName, ...props, children: /* @__PURE__ */ jsx("span", { className: "fab_icon", "aria-hidden": "true", children: icon }) });
1243
- };
1244
2125
  var FileInput = ({
1245
2126
  label = "Choose file",
1246
2127
  onFiles,
1247
2128
  supportingText,
1248
2129
  preview = false,
1249
- className,
1250
- disabled,
1251
- ...props
1252
- }) => {
1253
- const inputId = React4.useId();
1254
- const helperId = React4.useId();
1255
- const [previewUrls, setPreviewUrls] = React4.useState([]);
1256
- const handleChange = (e) => {
1257
- const files = e.currentTarget.files;
1258
- onFiles?.(files);
1259
- if (preview && files) {
1260
- for (const url of previewUrls) {
1261
- URL.revokeObjectURL(url);
1262
- }
1263
- const urls = [];
1264
- for (let i = 0; i < files.length; i++) {
1265
- if (files[i].type.startsWith("image/")) {
1266
- urls.push(URL.createObjectURL(files[i]));
1267
- }
1268
- }
1269
- setPreviewUrls(urls);
1270
- } else {
1271
- for (const url of previewUrls) {
1272
- URL.revokeObjectURL(url);
1273
- }
1274
- setPreviewUrls([]);
1275
- }
1276
- };
1277
- React4.useEffect(() => {
1278
- return () => {
1279
- for (const url of previewUrls) {
1280
- URL.revokeObjectURL(url);
1281
- }
1282
- };
1283
- }, [previewUrls]);
1284
- const rootClassName = cn("file_input", disabled && "file_input_disabled", className);
1285
- return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
1286
- /* @__PURE__ */ jsx(
1287
- "input",
1288
- {
1289
- id: inputId,
1290
- type: "file",
1291
- className: "file_input_control",
1292
- disabled,
1293
- "aria-describedby": supportingText ? helperId : void 0,
1294
- onChange: handleChange,
1295
- ...props
1296
- }
1297
- ),
1298
- /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label }),
1299
- supportingText && /* @__PURE__ */ jsx("span", { id: helperId, className: "file_input_helper", children: supportingText }),
1300
- previewUrls.length > 0 && /* @__PURE__ */ jsx("div", { className: "file_input_preview", children: previewUrls.map((url) => (
1301
- // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
1302
- /* @__PURE__ */ jsx("img", { src: url, alt: "", className: "file_input_preview_img" }, url)
1303
- )) })
1304
- ] });
1305
- };
1306
-
1307
- // src/ui/icon/icon-data.ts
1308
- var ICON_DATA = {
1309
- add_a_photo: {
1310
- 300: {
1311
- 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",
1312
- 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"
1313
- },
1314
- 400: {
1315
- 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",
1316
- 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"
1317
- }
1318
- },
1319
- add_circle: {
1320
- 300: {
1321
- 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",
1322
- 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"
1323
- },
1324
- 400: {
1325
- 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",
1326
- 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"
1327
- }
1328
- },
1329
- add_lg: {
1330
- 300: {
1331
- noFill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z",
1332
- fill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z"
1333
- },
1334
- 400: {
1335
- noFill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z",
1336
- fill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z"
1337
- }
1338
- },
1339
- add_md: {
1340
- 300: {
1341
- noFill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z",
1342
- fill: "M457.31-457.31H220v-45.38h237.31V-740h45.38v237.31H740v45.38H502.69V-220h-45.38v-237.31Z"
1343
- },
1344
- 400: {
1345
- noFill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z",
1346
- fill: "M450-450H200v-60h250v-250h60v250h250v60H510v250h-60v-250Z"
1347
- }
1348
- },
1349
- apartment: {
1350
- 300: {
1351
- 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",
1352
- 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"
1353
- },
1354
- 400: {
1355
- 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",
1356
- 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"
1357
- }
1358
- },
1359
- arrow_back: {
1360
- 300: {
1361
- noFill: "M266.31-457.31 512-212l-32 32-300-300 300-300 32 32-245.69 245.31H780v45.38H266.31Z",
1362
- fill: "M266.31-457.31 512-212l-32 32-300-300 300-300 32 32-245.69 245.31H780v45.38H266.31Z"
1363
- },
1364
- 400: {
1365
- noFill: "m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60H274Z",
1366
- fill: "m274-450 248 248-42 42-320-320 320-320 42 42-248 248h526v60H274Z"
1367
- }
1368
- },
1369
- calendar_today: {
1370
- 300: {
1371
- 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",
1372
- 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"
1373
- },
1374
- 400: {
1375
- 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",
1376
- 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"
1377
- }
1378
- },
1379
- check: {
1380
- 300: {
1381
- 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",
1382
- 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"
1383
- },
1384
- 400: {
1385
- noFill: "M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z",
1386
- fill: "M378-246 154-470l43-43 181 181 384-384 43 43-427 427Z"
1387
- }
1388
- },
1389
- check_box: {
1390
- 300: {
1391
- 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",
1392
- 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"
1393
- },
1394
- 400: {
1395
- 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",
1396
- 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"
1397
- }
1398
- },
1399
- check_circle: {
1400
- 300: {
1401
- 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",
1402
- 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"
1403
- },
1404
- 400: {
1405
- 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",
1406
- 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"
1407
- }
1408
- },
1409
- close: {
1410
- 300: {
1411
- 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",
1412
- 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"
1413
- },
1414
- 400: {
1415
- 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",
1416
- 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"
1417
- }
1418
- },
1419
- close_small: {
1420
- 300: {
1421
- 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",
1422
- 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"
1423
- },
1424
- 400: {
1425
- 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",
1426
- 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"
1427
- }
1428
- },
1429
- cloud_download: {
1430
- 300: {
1431
- 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",
1432
- 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"
1433
- },
1434
- 400: {
1435
- 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",
1436
- 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"
1437
- }
1438
- },
1439
- cloud_upload: {
1440
- 300: {
1441
- 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",
1442
- 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"
1443
- },
1444
- 400: {
1445
- 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",
1446
- 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"
1447
- }
1448
- },
1449
- content_copy: {
1450
- 300: {
1451
- 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",
1452
- 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"
1453
- },
1454
- 400: {
1455
- 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",
1456
- 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"
1457
- }
1458
- },
1459
- delete_forever: {
1460
- 300: {
1461
- 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",
1462
- 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"
1463
- },
1464
- 400: {
1465
- 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",
1466
- 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"
1467
- }
1468
- },
1469
- edit: {
1470
- 300: {
1471
- 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",
1472
- 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"
1473
- },
1474
- 400: {
1475
- 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",
1476
- 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"
1477
- }
1478
- },
1479
- edit_note: {
1480
- 300: {
1481
- 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",
1482
- 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"
1483
- },
1484
- 400: {
1485
- 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",
1486
- 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"
1487
- }
1488
- },
1489
- error: {
1490
- 300: {
1491
- 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",
1492
- 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"
1493
- },
1494
- 400: {
1495
- 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",
1496
- 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"
1497
- }
1498
- },
1499
- event: {
1500
- 300: {
1501
- 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",
1502
- 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"
1503
- },
1504
- 400: {
1505
- 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",
1506
- 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"
1507
- }
1508
- },
1509
- fiber_manual_record: {
1510
- 300: {
1511
- 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",
1512
- 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"
1513
- },
1514
- 400: {
1515
- 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",
1516
- 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"
1517
- }
1518
- },
1519
- forward_5: {
1520
- 300: {
1521
- 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",
1522
- 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"
1523
- },
1524
- 400: {
1525
- 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",
1526
- 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"
1527
- }
1528
- },
1529
- group: {
1530
- 300: {
1531
- 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",
1532
- 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"
1533
- },
1534
- 400: {
1535
- 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",
1536
- 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"
1537
- }
1538
- },
1539
- groups: {
1540
- 300: {
1541
- 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",
1542
- 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"
1543
- },
1544
- 400: {
1545
- 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",
1546
- 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"
1547
- }
1548
- },
1549
- help: {
1550
- 300: {
1551
- 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",
1552
- 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"
1553
- },
1554
- 400: {
1555
- 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",
1556
- 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"
1557
- }
1558
- },
1559
- id: {
1560
- 300: {
1561
- 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",
1562
- 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"
1563
- },
1564
- 400: {
1565
- 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",
1566
- 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"
1567
- }
1568
- },
1569
- id_card: {
1570
- 300: {
1571
- 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",
1572
- 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"
1573
- },
1574
- 400: {
1575
- 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",
1576
- 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"
1577
- }
1578
- },
1579
- image: {
1580
- 300: {
1581
- 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",
1582
- 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"
1583
- },
1584
- 400: {
1585
- 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",
1586
- 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"
1587
- }
1588
- },
1589
- indeterminate_check_box: {
1590
- 300: {
1591
- 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",
1592
- 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"
1593
- },
1594
- 400: {
1595
- 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",
1596
- 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"
1597
- }
1598
- },
1599
- info: {
1600
- 300: {
1601
- 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",
1602
- 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"
1603
- },
1604
- 400: {
1605
- 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",
1606
- 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"
1607
- }
1608
- },
1609
- keyboard_arrow_down: {
1610
- 300: {
1611
- noFill: "M480-357.85 253.85-584l32.61-32.61L480-423.08l193.54-193.53L706.15-584 480-357.85Z",
1612
- fill: "M480-357.85 253.85-584l32.61-32.61L480-423.08l193.54-193.53L706.15-584 480-357.85Z"
1613
- },
1614
- 400: {
1615
- noFill: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z",
1616
- fill: "M480-344 240-584l43-43 197 197 197-197 43 43-240 240Z"
1617
- }
1618
- },
1619
- keyboard_arrow_left: {
1620
- 300: {
1621
- 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",
1622
- 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"
1623
- },
1624
- 400: {
1625
- noFill: "M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z",
1626
- fill: "M561-240 320-481l241-241 43 43-198 198 198 198-43 43Z"
1627
- }
1628
- },
1629
- keyboard_arrow_right: {
1630
- 300: {
1631
- 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",
1632
- 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"
1633
- },
1634
- 400: {
1635
- noFill: "M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z",
1636
- fill: "M530-481 332-679l43-43 241 241-241 241-43-43 198-198Z"
1637
- }
1638
- },
1639
- keyboard_arrow_up: {
1640
- 300: {
1641
- noFill: "M480-560.92 286.46-367.39 253.85-400 480-626.15 706.15-400l-32.61 32.61L480-560.92Z",
1642
- fill: "M480-560.92 286.46-367.39 253.85-400 480-626.15 706.15-400l-32.61 32.61L480-560.92Z"
1643
- },
1644
- 400: {
1645
- noFill: "M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z",
1646
- fill: "M480-554 283-357l-43-43 240-240 240 240-43 43-197-197Z"
1647
- }
1648
- },
1649
- location_on: {
1650
- 300: {
1651
- 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",
1652
- 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"
1653
- },
1654
- 400: {
1655
- 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",
1656
- 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"
1657
- }
1658
- },
1659
- login: {
1660
- 300: {
1661
- 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",
1662
- 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"
1663
- },
1664
- 400: {
1665
- 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",
1666
- 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"
1667
- }
1668
- },
1669
- logout: {
1670
- 300: {
1671
- 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",
1672
- 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"
1673
- },
1674
- 400: {
1675
- 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",
1676
- 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"
1677
- }
1678
- },
1679
- more_vert: {
1680
- 300: {
1681
- 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",
1682
- 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"
1683
- },
1684
- 400: {
1685
- 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",
1686
- 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"
1687
- }
1688
- },
1689
- open_in_browser: {
1690
- 300: {
1691
- 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",
1692
- 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"
1693
- },
1694
- 400: {
1695
- 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",
1696
- 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"
1697
- }
1698
- },
1699
- open_in_new: {
1700
- 300: {
1701
- 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",
1702
- 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"
1703
- },
1704
- 400: {
1705
- 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",
1706
- 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"
1707
- }
1708
- },
1709
- pause: {
1710
- 300: {
1711
- 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",
1712
- fill: "M556.54-220v-520h160.77v520H556.54Zm-313.85 0v-520h161.16v520H242.69Z"
1713
- },
1714
- 400: {
1715
- noFill: "M525-200v-560h235v560H525Zm-325 0v-560h235v560H200Zm385-60h115v-440H585v440Zm-325 0h115v-440H260v440Zm0-440v440-440Zm325 0v440-440Z",
1716
- fill: "M555-200v-560h175v560H555Zm-325 0v-560h175v560H230Z"
1717
- }
1718
- },
1719
- person: {
1720
- 300: {
1721
- 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",
1722
- 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"
1723
- },
1724
- 400: {
1725
- 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",
1726
- 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"
1727
- }
1728
- },
1729
- photo_camera: {
1730
- 300: {
1731
- 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",
1732
- 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"
1733
- },
1734
- 400: {
1735
- 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",
1736
- 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"
1737
- }
1738
- },
1739
- photo_library: {
1740
- 300: {
1741
- 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",
1742
- 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"
1743
- },
1744
- 400: {
1745
- 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",
1746
- 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"
1747
- }
1748
- },
1749
- play_arrow: {
1750
- 300: {
1751
- noFill: "M340-238.39v-487.68l383.07 243.84L340-238.39Zm45.39-243.84Zm0 161 253.99-161-253.99-161v322Z",
1752
- fill: "M340-238.39v-487.68l383.07 243.84L340-238.39Z"
1753
- },
1754
- 400: {
1755
- noFill: "M320-203v-560l440 280-440 280Zm60-280Zm0 171 269-171-269-171v342Z",
1756
- fill: "M320-203v-560l440 280-440 280Z"
1757
- }
1758
- },
1759
- replay_5: {
1760
- 300: {
1761
- 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",
1762
- 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"
1763
- },
1764
- 400: {
1765
- 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",
1766
- 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"
1767
- }
1768
- },
1769
- search: {
1770
- 300: {
1771
- 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",
1772
- 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"
1773
- },
1774
- 400: {
1775
- 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",
1776
- 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"
1777
- }
1778
- },
1779
- settings: {
1780
- 300: {
1781
- 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",
1782
- 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"
1783
- },
1784
- 400: {
1785
- 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",
1786
- 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"
1787
- }
1788
- },
1789
- share: {
1790
- 300: {
1791
- 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",
1792
- 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"
1793
- },
1794
- 400: {
1795
- 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",
1796
- 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"
1797
- }
1798
- },
1799
- speed_1_2x: {
1800
- 300: {
1801
- 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",
1802
- 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"
1803
- },
1804
- 400: {
1805
- 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",
1806
- 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"
1807
- }
1808
- },
1809
- speed_1_5x: {
1810
- 300: {
1811
- 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",
1812
- 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"
1813
- },
1814
- 400: {
1815
- 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",
1816
- 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"
1817
- }
1818
- },
1819
- speed_1_7x: {
1820
- 300: {
1821
- 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",
1822
- 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"
1823
- },
1824
- 400: {
1825
- 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",
1826
- 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"
1827
- }
1828
- },
1829
- speed_1x: {
1830
- 300: {
1831
- 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",
1832
- 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"
1833
- },
1834
- 400: {
1835
- 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",
1836
- 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"
1837
- }
1838
- },
1839
- speed_2x: {
1840
- 300: {
1841
- 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",
1842
- 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"
1843
- },
1844
- 400: {
1845
- 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",
1846
- 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"
1847
- }
1848
- },
1849
- stop: {
1850
- 300: {
1851
- noFill: "M305.39-654.61v349.22-349.22ZM260-260v-440h440v440H260Zm45.39-45.39h349.22v-349.22H305.39v349.22Z",
1852
- fill: "M260-260v-440h440v440H260Z"
1853
- },
1854
- 400: {
1855
- noFill: "M300-660v360-360Zm-60 420v-480h480v480H240Zm60-60h360v-360H300v360Z",
1856
- fill: "M240-240v-480h480v480H240Z"
2130
+ variant = "button",
2131
+ previewSize = 160,
2132
+ className,
2133
+ disabled,
2134
+ accept,
2135
+ onChange,
2136
+ ...props
2137
+ }) => {
2138
+ const inputId = React16.useId();
2139
+ const helperId = React16.useId();
2140
+ const inputRef = React16.useRef(null);
2141
+ const [previewUrls, setPreviewUrls] = React16.useState([]);
2142
+ const isPreviewVariant = variant === "preview";
2143
+ const showPreview = isPreviewVariant || preview;
2144
+ const handleChange = (e) => {
2145
+ const files = e.currentTarget.files;
2146
+ onFiles?.(files);
2147
+ onChange?.(e);
2148
+ if (showPreview && files) {
2149
+ for (const url of previewUrls) {
2150
+ URL.revokeObjectURL(url);
2151
+ }
2152
+ const urls = [];
2153
+ const limit = isPreviewVariant ? Math.min(1, files.length) : files.length;
2154
+ for (let i = 0; i < limit; i++) {
2155
+ if (files[i].type.startsWith("image/")) {
2156
+ urls.push(URL.createObjectURL(files[i]));
2157
+ }
2158
+ }
2159
+ setPreviewUrls(urls);
2160
+ } else {
2161
+ for (const url of previewUrls) {
2162
+ URL.revokeObjectURL(url);
2163
+ }
2164
+ setPreviewUrls([]);
1857
2165
  }
1858
- },
1859
- visibility: {
1860
- 300: {
1861
- 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",
1862
- 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"
1863
- },
1864
- 400: {
1865
- 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",
1866
- 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"
2166
+ };
2167
+ const handleRemove = (e) => {
2168
+ e.preventDefault();
2169
+ e.stopPropagation();
2170
+ for (const url of previewUrls) {
2171
+ URL.revokeObjectURL(url);
1867
2172
  }
1868
- },
1869
- visibility_off: {
1870
- 300: {
1871
- 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",
1872
- 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"
1873
- },
1874
- 400: {
1875
- 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",
1876
- 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"
2173
+ setPreviewUrls([]);
2174
+ if (inputRef.current) {
2175
+ inputRef.current.value = "";
1877
2176
  }
1878
- }
2177
+ onFiles?.(null);
2178
+ };
2179
+ React16.useEffect(() => {
2180
+ return () => {
2181
+ for (const url of previewUrls) {
2182
+ URL.revokeObjectURL(url);
2183
+ }
2184
+ };
2185
+ }, [previewUrls]);
2186
+ const hasImage = previewUrls.length > 0;
2187
+ const rootClassName = cn(
2188
+ "file_input",
2189
+ `file_input_variant_${variant}`,
2190
+ isPreviewVariant && hasImage && "file_input_variant_preview_filled",
2191
+ disabled && "file_input_disabled",
2192
+ className
2193
+ );
2194
+ return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
2195
+ /* @__PURE__ */ jsx(
2196
+ "input",
2197
+ {
2198
+ ...props,
2199
+ ref: inputRef,
2200
+ id: inputId,
2201
+ type: "file",
2202
+ className: "file_input_control",
2203
+ disabled,
2204
+ accept: isPreviewVariant ? accept ?? "image/*" : accept,
2205
+ "aria-describedby": supportingText ? helperId : void 0,
2206
+ onChange: handleChange
2207
+ }
2208
+ ),
2209
+ isPreviewVariant ? /* @__PURE__ */ jsx(
2210
+ "label",
2211
+ {
2212
+ htmlFor: inputId,
2213
+ className: "file_input_label",
2214
+ style: { width: previewSize, height: previewSize },
2215
+ children: hasImage ? (
2216
+ // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
2217
+ /* @__PURE__ */ jsx(
2218
+ "img",
2219
+ {
2220
+ src: previewUrls[0],
2221
+ alt: "",
2222
+ className: "file_input_preview_image"
2223
+ }
2224
+ )
2225
+ ) : /* @__PURE__ */ jsxs("span", { className: "file_input_preview_empty", children: [
2226
+ /* @__PURE__ */ jsx(Image, { size: 32, "aria-hidden": "true" }),
2227
+ /* @__PURE__ */ jsx("span", { className: "file_input_preview_empty_text", children: label })
2228
+ ] })
2229
+ }
2230
+ ) : /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label }),
2231
+ isPreviewVariant && hasImage && !disabled && /* @__PURE__ */ jsx(
2232
+ "button",
2233
+ {
2234
+ type: "button",
2235
+ className: "file_input_preview_remove",
2236
+ onClick: handleRemove,
2237
+ "aria-label": "\uC774\uBBF8\uC9C0 \uC81C\uAC70",
2238
+ children: /* @__PURE__ */ jsx(X, { size: 14, "aria-hidden": "true" })
2239
+ }
2240
+ ),
2241
+ supportingText && /* @__PURE__ */ jsx("span", { id: helperId, className: "file_input_helper", children: supportingText }),
2242
+ !isPreviewVariant && previewUrls.length > 0 && /* @__PURE__ */ jsx("div", { className: "file_input_preview", children: previewUrls.map((url) => (
2243
+ // biome-ignore lint/performance/noImgElement: framework-agnostic DS — host app should swap with next/image if needed
2244
+ /* @__PURE__ */ jsx(
2245
+ "img",
2246
+ {
2247
+ src: url,
2248
+ alt: "",
2249
+ className: "file_input_preview_img"
2250
+ },
2251
+ url
2252
+ )
2253
+ )) })
2254
+ ] });
1879
2255
  };
1880
- var Icon = ({
1881
- name,
1882
- size = 24,
1883
- weight = 400,
1884
- fill = false,
2256
+ var Hero = ({
2257
+ height = "md",
2258
+ align = "left",
2259
+ backgroundImage,
2260
+ backgroundColor,
2261
+ overlay,
2262
+ title,
2263
+ subtitle,
2264
+ eyebrow,
2265
+ textColor = "auto",
2266
+ primaryAction,
2267
+ secondaryAction,
2268
+ children,
2269
+ className,
1885
2270
  style,
1886
2271
  ...props
1887
2272
  }) => {
1888
- const entry = ICON_DATA[name];
1889
- if (!entry) {
1890
- console.warn(`[Icon] Unknown icon name: "${name}"`);
1891
- return null;
1892
- }
1893
- const pathData = fill ? entry[weight].fill : entry[weight].noFill;
2273
+ const resolvedOverlay = overlay === true ? "dark" : overlay;
2274
+ const isDarkOverlay = resolvedOverlay === "dark" || resolvedOverlay === "navy";
2275
+ const resolvedTextColor = textColor === "auto" ? isDarkOverlay || backgroundImage && !resolvedOverlay ? "inverse" : "default" : textColor;
2276
+ const heroClassName = cn(
2277
+ "hero",
2278
+ `hero_height_${height}`,
2279
+ `hero_align_${align}`,
2280
+ resolvedOverlay && `hero_overlay_${resolvedOverlay}`,
2281
+ `hero_text_${resolvedTextColor}`,
2282
+ className
2283
+ );
2284
+ const inlineStyle = { ...style };
2285
+ if (backgroundImage) inlineStyle.backgroundImage = `url("${backgroundImage}")`;
2286
+ if (backgroundColor) inlineStyle.backgroundColor = backgroundColor;
2287
+ return /* @__PURE__ */ jsxs("section", { className: heroClassName, style: inlineStyle, ...props, children: [
2288
+ resolvedOverlay && /* @__PURE__ */ jsx("div", { className: "hero_overlay", "aria-hidden": "true" }),
2289
+ /* @__PURE__ */ jsxs("div", { className: "hero_content", children: [
2290
+ eyebrow && /* @__PURE__ */ jsx("div", { className: "hero_eyebrow", children: eyebrow }),
2291
+ title && /* @__PURE__ */ jsx("h1", { className: "hero_title", children: title }),
2292
+ subtitle && /* @__PURE__ */ jsx("p", { className: "hero_subtitle", children: subtitle }),
2293
+ (primaryAction || secondaryAction || children) && /* @__PURE__ */ jsxs("div", { className: "hero_actions", children: [
2294
+ primaryAction && /* @__PURE__ */ jsx(Button, { size: "lg", variant: "filled", onClick: primaryAction.onClick, children: primaryAction.label }),
2295
+ secondaryAction && /* @__PURE__ */ jsx(Button, { size: "lg", variant: "outline", onClick: secondaryAction.onClick, children: secondaryAction.label }),
2296
+ children
2297
+ ] })
2298
+ ] })
2299
+ ] });
2300
+ };
2301
+ var Icon = ({ icon: IconComponent, ...props }) => {
2302
+ const hasLabel = !!props["aria-label"];
1894
2303
  return /* @__PURE__ */ jsx(
1895
- "svg",
2304
+ IconComponent,
1896
2305
  {
1897
- xmlns: "http://www.w3.org/2000/svg",
1898
- width: size,
1899
- height: size,
1900
- viewBox: "0 -960 960 960",
1901
- fill: "currentColor",
1902
- "aria-hidden": "true",
1903
- focusable: "false",
1904
- style: { display: "inline-block", flexShrink: 0, ...style },
1905
- ...props,
1906
- children: /* @__PURE__ */ jsx("path", { d: pathData })
2306
+ "aria-hidden": hasLabel ? void 0 : true,
2307
+ focusable: hasLabel ? void 0 : false,
2308
+ ...props
1907
2309
  }
1908
2310
  );
1909
2311
  };
@@ -1929,8 +2331,10 @@ var LinearProgress = ({
1929
2331
  className,
1930
2332
  ...props
1931
2333
  }) => {
1932
- const percent = totalSteps > 0 ? Math.min(Math.max(currentStep / totalSteps, 0), 1) * 100 : 0;
1933
- return /* @__PURE__ */ jsx(
2334
+ const clampedStep = totalSteps > 0 ? Math.min(Math.max(currentStep, 0), totalSteps) : 0;
2335
+ const percent = totalSteps > 0 ? clampedStep / totalSteps * 100 : 0;
2336
+ const dotCount = totalSteps + 1;
2337
+ return /* @__PURE__ */ jsxs(
1934
2338
  "div",
1935
2339
  {
1936
2340
  className: cn("linear_progress", className),
@@ -1939,7 +2343,21 @@ var LinearProgress = ({
1939
2343
  "aria-valuemin": 0,
1940
2344
  "aria-valuemax": totalSteps,
1941
2345
  ...props,
1942
- children: /* @__PURE__ */ jsx("div", { className: "linear_progress_indicator", style: { width: `${percent}%` } })
2346
+ children: [
2347
+ /* @__PURE__ */ jsx("div", { className: "linear_progress_track" }),
2348
+ /* @__PURE__ */ jsx("div", { className: "linear_progress_indicator", style: { width: `${percent}%` } }),
2349
+ Array.from({ length: dotCount }, (_, i) => /* @__PURE__ */ jsx(
2350
+ "span",
2351
+ {
2352
+ className: cn(
2353
+ "linear_progress_step",
2354
+ i <= clampedStep && "linear_progress_step_done"
2355
+ ),
2356
+ "aria-hidden": "true"
2357
+ },
2358
+ i
2359
+ ))
2360
+ ]
1943
2361
  }
1944
2362
  );
1945
2363
  };
@@ -1950,16 +2368,20 @@ var ListItem = ({
1950
2368
  metadata,
1951
2369
  leadingElement,
1952
2370
  trailingElement,
1953
- alignment = "top",
2371
+ alignment,
1954
2372
  disabled,
2373
+ selected,
1955
2374
  onClick,
1956
2375
  className,
1957
2376
  ...props
1958
2377
  }) => {
2378
+ const isOneLine = !overline && !supportingText && !metadata;
2379
+ const effectiveAlignment = alignment ?? (isOneLine ? "middle" : "top");
1959
2380
  const rootClassName = cn(
1960
2381
  "list_item",
1961
- `list_item_align_${alignment}`,
2382
+ `list_item_align_${effectiveAlignment}`,
1962
2383
  disabled && "list_item_disabled",
2384
+ selected && "list_item_selected",
1963
2385
  onClick && "list_item_interactive",
1964
2386
  className
1965
2387
  );
@@ -1980,6 +2402,7 @@ var ListItem = ({
1980
2402
  role: onClick ? "button" : void 0,
1981
2403
  tabIndex: onClick && !disabled ? 0 : void 0,
1982
2404
  "aria-disabled": disabled || void 0,
2405
+ "aria-selected": selected || void 0,
1983
2406
  ...props,
1984
2407
  children: /* @__PURE__ */ jsxs("div", { className: "list_item_state_layer", children: [
1985
2408
  leadingElement && /* @__PURE__ */ jsx("div", { className: "list_item_leading", children: leadingElement }),
@@ -1995,29 +2418,89 @@ var ListItem = ({
1995
2418
  )
1996
2419
  );
1997
2420
  };
2421
+ var MediaCard = ({
2422
+ image,
2423
+ imagePosition = "top",
2424
+ aspectRatio,
2425
+ heading,
2426
+ headingAs: HeadingTag = "h3",
2427
+ eyebrow,
2428
+ shadow = "sm",
2429
+ bordered = false,
2430
+ clickable = false,
2431
+ meta,
2432
+ children,
2433
+ className,
2434
+ ...props
2435
+ }) => {
2436
+ const cardClassName = cn(
2437
+ "media_card",
2438
+ `media_card_image_${imagePosition}`,
2439
+ `media_card_shadow_${shadow}`,
2440
+ bordered && "media_card_bordered",
2441
+ clickable && "media_card_clickable",
2442
+ className
2443
+ );
2444
+ const isOverlay = imagePosition === "overlay";
2445
+ const cardStyle = isOverlay && aspectRatio ? { aspectRatio } : void 0;
2446
+ const wrapStyle = !isOverlay && aspectRatio ? { aspectRatio } : void 0;
2447
+ return /* @__PURE__ */ jsxs("div", { className: cardClassName, style: cardStyle, ...props, children: [
2448
+ /* @__PURE__ */ jsxs("div", { className: "media_card_image_wrap", style: wrapStyle, children: [
2449
+ /* @__PURE__ */ jsx("img", { className: "media_card_image", src: image.src, alt: image.alt, loading: "lazy" }),
2450
+ isOverlay && /* @__PURE__ */ jsx("div", { className: "media_card_overlay", "aria-hidden": "true" })
2451
+ ] }),
2452
+ /* @__PURE__ */ jsxs("div", { className: "media_card_body", children: [
2453
+ eyebrow && /* @__PURE__ */ jsx("div", { className: "media_card_eyebrow", children: eyebrow }),
2454
+ heading && /* @__PURE__ */ jsx(HeadingTag, { className: "media_card_heading", children: heading }),
2455
+ children && /* @__PURE__ */ jsx("div", { className: "media_card_content", children }),
2456
+ meta && /* @__PURE__ */ jsx("div", { className: "media_card_meta", children: meta })
2457
+ ] })
2458
+ ] });
2459
+ };
1998
2460
  var Modal = ({
1999
2461
  open,
2000
2462
  onClose,
2001
2463
  closeOnOverlay = true,
2002
- width = 520,
2464
+ width = 480,
2003
2465
  title,
2466
+ description,
2467
+ footer,
2468
+ footerAlign = "end",
2469
+ showCloseIcon = true,
2470
+ closeLabel = "\uB2EB\uAE30",
2004
2471
  children,
2005
2472
  className,
2006
2473
  ariaLabel,
2007
2474
  ...props
2008
2475
  }) => {
2009
- const panelRef = React4.useRef(null);
2010
- const titleId = React4.useId();
2476
+ const panelRef = React16.useRef(null);
2477
+ const titleId = React16.useId();
2478
+ const [shouldRender, setShouldRender] = React16.useState(open);
2011
2479
  useFocusTrap(panelRef, open);
2012
- const handleEscape = React4.useEffectEvent((e) => {
2480
+ React16.useEffect(() => {
2481
+ if (open) setShouldRender(true);
2482
+ }, [open]);
2483
+ const overlayStyle = useSpring({
2484
+ opacity: open ? 1 : 0,
2485
+ config: { tension: 280, friction: 28, clamp: !open },
2486
+ onRest: (result) => {
2487
+ if (!open && result.finished) setShouldRender(false);
2488
+ }
2489
+ });
2490
+ const panelStyle = useSpring({
2491
+ opacity: open ? 1 : 0,
2492
+ transform: open ? "scale(1) translateY(0px)" : "scale(0.96) translateY(-4px)",
2493
+ config: { tension: 280, friction: 28, clamp: !open }
2494
+ });
2495
+ const handleEscape = React16.useEffectEvent((e) => {
2013
2496
  if (e.key === "Escape") onClose?.();
2014
2497
  });
2015
- React4.useEffect(() => {
2498
+ React16.useEffect(() => {
2016
2499
  if (!open) return;
2017
2500
  document.addEventListener("keydown", handleEscape);
2018
2501
  return () => document.removeEventListener("keydown", handleEscape);
2019
2502
  }, [open]);
2020
- React4.useEffect(() => {
2503
+ React16.useEffect(() => {
2021
2504
  if (!open) return;
2022
2505
  const body = document.body;
2023
2506
  const openModals = parseInt(body.dataset.openModals || "0", 10);
@@ -2038,13 +2521,13 @@ var Modal = ({
2038
2521
  }
2039
2522
  };
2040
2523
  }, [open]);
2041
- if (!open) return null;
2042
- const panelClassName = cn("modal_panel", className);
2524
+ if (!shouldRender) return null;
2043
2525
  const hasTitle = !!title;
2044
2526
  return /* @__PURE__ */ jsx(
2045
- "div",
2527
+ animated.div,
2046
2528
  {
2047
2529
  className: "modal",
2530
+ style: overlayStyle,
2048
2531
  role: "dialog",
2049
2532
  "aria-modal": "true",
2050
2533
  "aria-labelledby": hasTitle && !ariaLabel ? titleId : void 0,
@@ -2054,11 +2537,11 @@ var Modal = ({
2054
2537
  if (e.key === "Escape") onClose?.();
2055
2538
  },
2056
2539
  children: /* @__PURE__ */ jsxs(
2057
- "div",
2540
+ animated.div,
2058
2541
  {
2059
2542
  ref: panelRef,
2060
- className: panelClassName,
2061
- style: { width },
2543
+ className: cn("modal_panel", className),
2544
+ style: { ...panelStyle, width },
2062
2545
  role: "document",
2063
2546
  onClick: (e) => e.stopPropagation(),
2064
2547
  onKeyDown: (e) => {
@@ -2066,8 +2549,20 @@ var Modal = ({
2066
2549
  },
2067
2550
  ...props,
2068
2551
  children: [
2069
- title && /* @__PURE__ */ jsx("div", { id: titleId, className: "modal_header", children: title }),
2070
- /* @__PURE__ */ jsx("div", { className: "modal_body", children })
2552
+ showCloseIcon && onClose && /* @__PURE__ */ jsx(
2553
+ "button",
2554
+ {
2555
+ type: "button",
2556
+ className: "modal_close",
2557
+ onClick: onClose,
2558
+ "aria-label": closeLabel,
2559
+ children: /* @__PURE__ */ jsx(X, { size: 18, "aria-hidden": "true" })
2560
+ }
2561
+ ),
2562
+ title && /* @__PURE__ */ jsx("h2", { id: titleId, className: "modal_title", children: title }),
2563
+ description && /* @__PURE__ */ jsx("div", { className: "modal_description", children: description }),
2564
+ children && /* @__PURE__ */ jsx("div", { className: "modal_body", children }),
2565
+ footer && /* @__PURE__ */ jsx("div", { className: cn("modal_footer", `modal_footer_${footerAlign}`), children: footer })
2071
2566
  ]
2072
2567
  }
2073
2568
  )
@@ -2085,11 +2580,12 @@ var OtpInput = ({
2085
2580
  ariaLabel = "OTP \uC785\uB825",
2086
2581
  className
2087
2582
  }) => {
2088
- const inputsRef = React4.useRef([]);
2089
- React4.useEffect(() => {
2583
+ const inputsRef = React16.useRef([]);
2584
+ const isTypingRef = React16.useRef(false);
2585
+ React16.useEffect(() => {
2090
2586
  if (autoFocus) inputsRef.current[0]?.focus();
2091
2587
  }, [autoFocus]);
2092
- const digits = React4.useMemo(() => {
2588
+ const digits = React16.useMemo(() => {
2093
2589
  const chars = value.split("").slice(0, length);
2094
2590
  while (chars.length < length) chars.push("");
2095
2591
  return chars;
@@ -2107,10 +2603,15 @@ var OtpInput = ({
2107
2603
  newDigits[index] = nextDigit;
2108
2604
  updateValue(newDigits);
2109
2605
  if (nextDigit && index < length - 1) {
2606
+ isTypingRef.current = true;
2110
2607
  focusInput(index + 1);
2608
+ setTimeout(() => {
2609
+ isTypingRef.current = false;
2610
+ }, 50);
2111
2611
  }
2112
2612
  };
2113
2613
  const handleFocus = (index) => {
2614
+ if (isTypingRef.current) return;
2114
2615
  const firstEmpty = digits.indexOf("");
2115
2616
  if (firstEmpty !== -1 && firstEmpty < index) {
2116
2617
  focusInput(firstEmpty);
@@ -2223,7 +2724,7 @@ var Pagination = ({
2223
2724
  }) => {
2224
2725
  const prevDisabled = page <= 1;
2225
2726
  const nextDisabled = page >= totalPages;
2226
- const items = React4.useMemo(() => getPaginationItems(page, totalPages), [page, totalPages]);
2727
+ const items = React16.useMemo(() => getPaginationItems(page, totalPages), [page, totalPages]);
2227
2728
  return /* @__PURE__ */ jsxs("nav", { className: "pagination", "aria-label": "Pagination", children: [
2228
2729
  /* @__PURE__ */ jsx(
2229
2730
  "button",
@@ -2282,6 +2783,33 @@ var Radio = ({ label, size = "md", className, ref, ...props }) => {
2282
2783
  ] });
2283
2784
  };
2284
2785
  Radio.displayName = "Radio";
2786
+ var Skeleton = ({
2787
+ variant = "text",
2788
+ width,
2789
+ height,
2790
+ radius: radius2,
2791
+ className,
2792
+ style,
2793
+ ...props
2794
+ }) => {
2795
+ const skeletonClassName = cn(
2796
+ "skeleton",
2797
+ `skeleton_variant_${variant}`,
2798
+ radius2 && `skeleton_radius_${radius2}`,
2799
+ className
2800
+ );
2801
+ const inlineStyle = { ...style };
2802
+ if (width !== void 0) {
2803
+ inlineStyle.width = typeof width === "number" ? `${width}px` : width;
2804
+ }
2805
+ if (height !== void 0) {
2806
+ inlineStyle.height = typeof height === "number" ? `${height}px` : height;
2807
+ }
2808
+ if (variant === "avatar" && width !== void 0 && height === void 0) {
2809
+ inlineStyle.height = inlineStyle.width;
2810
+ }
2811
+ return /* @__PURE__ */ jsx("div", { className: skeletonClassName, style: inlineStyle, "aria-hidden": "true", ...props });
2812
+ };
2285
2813
  var Spinner = ({ size = 24, ariaLabel = "Loading" }) => {
2286
2814
  return /* @__PURE__ */ jsx(
2287
2815
  "span",
@@ -2289,11 +2817,165 @@ var Spinner = ({ size = 24, ariaLabel = "Loading" }) => {
2289
2817
  className: "spinner",
2290
2818
  style: { width: size, height: size },
2291
2819
  role: "status",
2292
- "aria-label": ariaLabel
2820
+ "aria-label": ariaLabel,
2821
+ children: Array.from({ length: 12 }, (_, i) => (
2822
+ // biome-ignore lint/suspicious/noArrayIndexKey: static 12 bars, index is stable key
2823
+ /* @__PURE__ */ jsx("span", { className: "spinner_bar", "aria-hidden": "true" }, i)
2824
+ ))
2825
+ }
2826
+ );
2827
+ };
2828
+ var Table = ({
2829
+ columns,
2830
+ data,
2831
+ keyExtractor,
2832
+ emptyMessage = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4",
2833
+ isLoading = false,
2834
+ skeletonRows = 5,
2835
+ size = "md",
2836
+ hoverable = true,
2837
+ stickyHeader = false,
2838
+ ariaLabel,
2839
+ className,
2840
+ onRowClick
2841
+ }) => {
2842
+ const wrapperClassName = cn(
2843
+ "table_wrapper",
2844
+ `table_size_${size}`,
2845
+ stickyHeader && "table_sticky_header",
2846
+ className
2847
+ );
2848
+ const isEmpty = !isLoading && data.length === 0;
2849
+ return /* @__PURE__ */ jsxs("div", { className: wrapperClassName, children: [
2850
+ /* @__PURE__ */ jsxs("table", { className: "table", "aria-label": ariaLabel, children: [
2851
+ /* @__PURE__ */ jsx("thead", { className: "table_thead", children: /* @__PURE__ */ jsx("tr", { children: columns.map((col) => /* @__PURE__ */ jsx(
2852
+ "th",
2853
+ {
2854
+ scope: "col",
2855
+ className: cn("table_th", col.align && `table_align_${col.align}`),
2856
+ style: { width: col.width },
2857
+ children: col.header
2858
+ },
2859
+ col.key
2860
+ )) }) }),
2861
+ /* @__PURE__ */ jsx("tbody", { className: "table_tbody", children: isLoading ? Array.from({ length: skeletonRows }).map((_, rowIndex) => (
2862
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton rows have no stable identity
2863
+ /* @__PURE__ */ jsx("tr", { className: "table_row table_row_skeleton", children: columns.map((col) => /* @__PURE__ */ jsx(
2864
+ "td",
2865
+ {
2866
+ className: cn("table_td", col.align && `table_align_${col.align}`),
2867
+ style: { width: col.width },
2868
+ children: /* @__PURE__ */ jsx(Skeleton, { variant: "text" })
2869
+ },
2870
+ col.key
2871
+ )) }, rowIndex)
2872
+ )) : data.map((item, rowIndex) => /* @__PURE__ */ jsx(
2873
+ "tr",
2874
+ {
2875
+ className: cn(
2876
+ "table_row",
2877
+ hoverable && "table_row_hoverable",
2878
+ onRowClick && "table_row_clickable"
2879
+ ),
2880
+ role: onRowClick ? "button" : void 0,
2881
+ tabIndex: onRowClick ? 0 : void 0,
2882
+ onClick: onRowClick ? () => onRowClick(item, rowIndex) : void 0,
2883
+ onKeyDown: onRowClick ? (e) => {
2884
+ if (e.key === "Enter" || e.key === " ") {
2885
+ e.preventDefault();
2886
+ onRowClick(item, rowIndex);
2887
+ }
2888
+ } : void 0,
2889
+ children: columns.map((col) => /* @__PURE__ */ jsx(
2890
+ "td",
2891
+ {
2892
+ className: cn("table_td", col.align && `table_align_${col.align}`),
2893
+ style: { width: col.width },
2894
+ children: (() => {
2895
+ if (col.render) return col.render(item, rowIndex);
2896
+ const value = item[col.key];
2897
+ return value === null || value === void 0 || value === "" ? "-" : String(value);
2898
+ })()
2899
+ },
2900
+ col.key
2901
+ ))
2902
+ },
2903
+ keyExtractor(item, rowIndex)
2904
+ )) })
2905
+ ] }),
2906
+ isEmpty && /* @__PURE__ */ jsx("div", { className: "table_empty", role: "status", children: emptyMessage })
2907
+ ] });
2908
+ };
2909
+ var ThemeContext = React16.createContext(null);
2910
+ var useTheme = () => {
2911
+ const ctx = React16.useContext(ThemeContext);
2912
+ if (!ctx) {
2913
+ throw new Error(
2914
+ '[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>'
2915
+ );
2916
+ }
2917
+ return ctx;
2918
+ };
2919
+ var isClient = typeof window !== "undefined";
2920
+ function readStored(key) {
2921
+ if (!isClient || !key) return null;
2922
+ try {
2923
+ const value = window.localStorage.getItem(key);
2924
+ if (value === "light" || value === "dark" || value === "system") return value;
2925
+ } catch {
2926
+ }
2927
+ return null;
2928
+ }
2929
+ var ThemeProvider = ({
2930
+ defaultMode = "system",
2931
+ storageKey = "bt-theme",
2932
+ targetSelector,
2933
+ children
2934
+ }) => {
2935
+ const [mode, setModeState] = React16.useState(() => {
2936
+ return readStored(storageKey) ?? defaultMode;
2937
+ });
2938
+ const [systemDark, setSystemDark] = React16.useState(() => {
2939
+ if (!isClient) return false;
2940
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
2941
+ });
2942
+ React16.useEffect(() => {
2943
+ if (!isClient) return;
2944
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
2945
+ const handler = (e) => setSystemDark(e.matches);
2946
+ mq.addEventListener("change", handler);
2947
+ return () => mq.removeEventListener("change", handler);
2948
+ }, []);
2949
+ const resolved = mode === "system" ? systemDark ? "dark" : "light" : mode;
2950
+ React16.useEffect(() => {
2951
+ if (!isClient) return;
2952
+ const target = targetSelector ? document.querySelector(targetSelector) : document.documentElement;
2953
+ if (!target) return;
2954
+ if (mode === "system") {
2955
+ target.removeAttribute("data-theme");
2956
+ } else {
2957
+ target.setAttribute("data-theme", mode);
2293
2958
  }
2959
+ }, [mode, targetSelector]);
2960
+ const setMode = React16.useCallback(
2961
+ (next) => {
2962
+ setModeState(next);
2963
+ if (storageKey && isClient) {
2964
+ try {
2965
+ window.localStorage.setItem(storageKey, next);
2966
+ } catch {
2967
+ }
2968
+ }
2969
+ },
2970
+ [storageKey]
2294
2971
  );
2972
+ const value = React16.useMemo(
2973
+ () => ({ mode, resolved, setMode }),
2974
+ [mode, resolved, setMode]
2975
+ );
2976
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
2295
2977
  };
2296
- var ClearIcon = () => /* @__PURE__ */ jsx(Icon, { name: "close", size: 20 });
2978
+ var ClearIcon = () => /* @__PURE__ */ jsx(X, { size: 20, "aria-hidden": "true" });
2297
2979
  var TextField = ({
2298
2980
  id,
2299
2981
  label,
@@ -2313,27 +2995,28 @@ var TextField = ({
2313
2995
  ref,
2314
2996
  ...props
2315
2997
  }) => {
2316
- const generatedId = React4.useId();
2998
+ const generatedId = useId();
2317
2999
  const inputId = id ?? generatedId;
2318
3000
  const helperId = supportingText ? `${inputId}-help` : void 0;
2319
3001
  const isControlled = value !== void 0;
2320
3002
  const applyTransform = (nextValue) => transformValue ? transformValue(nextValue) : nextValue;
2321
- const [innerValue, setInnerValue] = React4.useState(
3003
+ const [innerValue, setInnerValue] = useState(
2322
3004
  () => applyTransform(value ?? defaultValue ?? "")
2323
3005
  );
2324
- const isComposingRef = React4.useRef(false);
2325
- React4.useEffect(() => {
3006
+ const isComposingRef = useRef(false);
3007
+ useEffect(() => {
2326
3008
  if (!isControlled) return;
2327
3009
  const nextValue = value ?? "";
2328
3010
  setInnerValue(transformValue ? transformValue(nextValue) : nextValue);
2329
3011
  }, [isControlled, value, transformValue]);
2330
- const handleClear = React4.useCallback(() => {
3012
+ const handleClear = useCallback(() => {
2331
3013
  setInnerValue("");
2332
3014
  onChangeAction?.("");
2333
3015
  }, [onChangeAction]);
2334
3016
  const rootClassName = cn(
2335
3017
  "text_field",
2336
3018
  size === "sm" && "text_field_size_sm",
3019
+ size === "lg" && "text_field_size_lg",
2337
3020
  fullWidth && "text_field_full_width",
2338
3021
  error && "text_field_error",
2339
3022
  props.disabled && "text_field_disabled",
@@ -2341,60 +3024,58 @@ var TextField = ({
2341
3024
  );
2342
3025
  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;
2343
3026
  return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
2344
- /* @__PURE__ */ jsxs("fieldset", { className: "text_field_container", children: [
2345
- label && showLabel && /* @__PURE__ */ jsx("legend", { className: "text_field_label", children: /* @__PURE__ */ jsx("label", { htmlFor: inputId, children: label }) }),
2346
- /* @__PURE__ */ jsxs("div", { className: "text_field_inner", children: [
2347
- leadingIcon && /* @__PURE__ */ jsx("span", { className: "text_field_icon", "aria-hidden": "true", children: leadingIcon }),
2348
- /* @__PURE__ */ jsx(
2349
- "div",
2350
- {
2351
- className: cn(
2352
- "text_field_input_wrap",
2353
- resolvedTrailing && "text_field_input_wrap_no_pad_right"
2354
- ),
2355
- children: /* @__PURE__ */ jsx(
2356
- "input",
2357
- {
2358
- id: inputId,
2359
- ref,
2360
- className: "text_field_input",
2361
- "aria-invalid": !!error,
2362
- "aria-describedby": helperId,
2363
- "aria-label": !showLabel ? label : void 0,
2364
- ...props,
2365
- value: innerValue,
2366
- onCompositionStart: () => {
2367
- isComposingRef.current = true;
2368
- },
2369
- onCompositionEnd: (event) => {
2370
- isComposingRef.current = false;
2371
- const rawValue = event.currentTarget.value;
2372
- const nextValue = applyTransform(rawValue);
2373
- setInnerValue(nextValue);
2374
- onChangeAction?.(nextValue);
2375
- },
2376
- onChange: (event) => {
2377
- const rawValue = event.target.value;
2378
- if (isComposingRef.current) {
2379
- setInnerValue(rawValue);
2380
- return;
2381
- }
2382
- const nextValue = applyTransform(rawValue);
2383
- setInnerValue(nextValue);
2384
- onChangeAction?.(nextValue);
3027
+ label && showLabel && /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "text_field_label", children: label }),
3028
+ /* @__PURE__ */ jsx("div", { className: "text_field_container", children: /* @__PURE__ */ jsxs("div", { className: "text_field_inner", children: [
3029
+ leadingIcon && /* @__PURE__ */ jsx("span", { className: "text_field_icon", "aria-hidden": "true", children: leadingIcon }),
3030
+ /* @__PURE__ */ jsx(
3031
+ "div",
3032
+ {
3033
+ className: cn(
3034
+ "text_field_input_wrap",
3035
+ resolvedTrailing && "text_field_input_wrap_no_pad_right"
3036
+ ),
3037
+ children: /* @__PURE__ */ jsx(
3038
+ "input",
3039
+ {
3040
+ id: inputId,
3041
+ ref,
3042
+ className: "text_field_input",
3043
+ "aria-invalid": !!error,
3044
+ "aria-describedby": helperId,
3045
+ "aria-label": !showLabel ? label : void 0,
3046
+ ...props,
3047
+ value: innerValue,
3048
+ onCompositionStart: () => {
3049
+ isComposingRef.current = true;
3050
+ },
3051
+ onCompositionEnd: (event) => {
3052
+ isComposingRef.current = false;
3053
+ const rawValue = event.currentTarget.value;
3054
+ const nextValue = applyTransform(rawValue);
3055
+ setInnerValue(nextValue);
3056
+ onChangeAction?.(nextValue);
3057
+ },
3058
+ onChange: (event) => {
3059
+ const rawValue = event.target.value;
3060
+ if (isComposingRef.current) {
3061
+ setInnerValue(rawValue);
3062
+ return;
2385
3063
  }
3064
+ const nextValue = applyTransform(rawValue);
3065
+ setInnerValue(nextValue);
3066
+ onChangeAction?.(nextValue);
2386
3067
  }
2387
- )
2388
- }
2389
- ),
2390
- resolvedTrailing
2391
- ] })
2392
- ] }),
3068
+ }
3069
+ )
3070
+ }
3071
+ ),
3072
+ resolvedTrailing
3073
+ ] }) }),
2393
3074
  supportingText && /* @__PURE__ */ jsx("div", { id: helperId, className: "text_field_helper", children: supportingText })
2394
3075
  ] });
2395
3076
  };
2396
3077
  TextField.displayName = "TextField";
2397
- var ToastContext = React4.createContext(null);
3078
+ var ToastContext = React16.createContext(null);
2398
3079
  var VARIANT_ICONS = {
2399
3080
  success: /* @__PURE__ */ jsx(CheckCircle2, { size: 18 }),
2400
3081
  error: /* @__PURE__ */ jsx(XCircle, { size: 18 }),
@@ -2403,48 +3084,60 @@ var VARIANT_ICONS = {
2403
3084
  default: /* @__PURE__ */ jsx(Bell, { size: 18 })
2404
3085
  };
2405
3086
  var ToastItemComponent = ({ item, onRemove, closeAriaLabel }) => {
2406
- const [exiting, setExiting] = React4.useState(false);
2407
- const closingRef = React4.useRef(false);
2408
- const close = React4.useCallback(() => {
3087
+ const [visible, setVisible] = React16.useState(true);
3088
+ const closingRef = React16.useRef(false);
3089
+ const style = useSpringPresence({
3090
+ visible,
3091
+ from: "translateX(20px)",
3092
+ // 우측에서 슬라이드 인
3093
+ onExitComplete: () => onRemove(item.id)
3094
+ });
3095
+ const close = React16.useCallback(() => {
2409
3096
  if (closingRef.current) return;
2410
3097
  closingRef.current = true;
2411
- setExiting(true);
2412
- setTimeout(() => onRemove(item.id), 260);
2413
- }, [item.id, onRemove]);
2414
- const itemClassName = cn("toast_item", exiting && "toast_item_exiting");
2415
- return /* @__PURE__ */ jsxs("div", { className: itemClassName, role: item.variant === "error" ? "alert" : "status", children: [
2416
- /* @__PURE__ */ jsx("span", { className: `toast_icon toast_icon_${item.variant}`, "aria-hidden": "true", children: VARIANT_ICONS[item.variant] }),
2417
- /* @__PURE__ */ jsx("span", { className: "toast_message", children: item.message }),
2418
- /* @__PURE__ */ jsx("button", { type: "button", className: "toast_close", onClick: close, "aria-label": closeAriaLabel, children: /* @__PURE__ */ jsx(X, { size: 14 }) }),
2419
- /* @__PURE__ */ jsx(
2420
- "div",
2421
- {
2422
- className: `toast_progress toast_progress_${item.variant}`,
2423
- style: { "--toast-duration": `${item.duration}ms` },
2424
- onAnimationEnd: close,
2425
- "aria-hidden": "true"
2426
- }
2427
- )
2428
- ] });
3098
+ setVisible(false);
3099
+ }, []);
3100
+ return /* @__PURE__ */ jsxs(
3101
+ animated.div,
3102
+ {
3103
+ className: "toast_item",
3104
+ style,
3105
+ role: item.variant === "error" ? "alert" : "status",
3106
+ children: [
3107
+ /* @__PURE__ */ jsx("span", { className: `toast_icon toast_icon_${item.variant}`, "aria-hidden": "true", children: VARIANT_ICONS[item.variant] }),
3108
+ /* @__PURE__ */ jsx("span", { className: "toast_message", children: item.message }),
3109
+ /* @__PURE__ */ jsx("button", { type: "button", className: "toast_close", onClick: close, "aria-label": closeAriaLabel, children: /* @__PURE__ */ jsx(X, { size: 14 }) }),
3110
+ /* @__PURE__ */ jsx(
3111
+ "div",
3112
+ {
3113
+ className: `toast_progress toast_progress_${item.variant}`,
3114
+ style: { "--toast-duration": `${item.duration}ms` },
3115
+ onAnimationEnd: close,
3116
+ "aria-hidden": "true"
3117
+ }
3118
+ )
3119
+ ]
3120
+ }
3121
+ );
2429
3122
  };
2430
3123
  var ToastProvider = ({
2431
3124
  children,
2432
3125
  maxCount = 5,
2433
3126
  closeAriaLabel = "Close"
2434
3127
  }) => {
2435
- const [toasts, setToasts] = React4.useState([]);
2436
- const [isMounted, setIsMounted] = React4.useState(false);
2437
- React4.useEffect(() => {
3128
+ const [toasts, setToasts] = React16.useState([]);
3129
+ const [isMounted, setIsMounted] = React16.useState(false);
3130
+ React16.useEffect(() => {
2438
3131
  setIsMounted(true);
2439
3132
  }, []);
2440
- const addToast = React4.useCallback(
3133
+ const addToast = React16.useCallback(
2441
3134
  (message, variant, duration = 3e3) => {
2442
3135
  const id = crypto.randomUUID();
2443
3136
  setToasts((prev) => [{ id, message, variant, duration }, ...prev].slice(0, maxCount));
2444
3137
  },
2445
3138
  [maxCount]
2446
3139
  );
2447
- const removeToast = React4.useCallback((id) => {
3140
+ const removeToast = React16.useCallback((id) => {
2448
3141
  setToasts((prev) => prev.filter((t) => t.id !== id));
2449
3142
  }, []);
2450
3143
  return /* @__PURE__ */ jsxs(ToastContext.Provider, { value: { addToast }, children: [
@@ -2477,7 +3170,9 @@ var ToastProvider = ({
2477
3170
  var useToast = () => {
2478
3171
  const ctx = useContext(ToastContext);
2479
3172
  if (!ctx) {
2480
- throw new Error("useToast must be used within ToastProvider");
3173
+ throw new Error(
3174
+ "[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>"
3175
+ );
2481
3176
  }
2482
3177
  return {
2483
3178
  /** 성공 메시지를 표시한다 */
@@ -2504,7 +3199,7 @@ var Toggle = ({
2504
3199
  ...props
2505
3200
  }) => {
2506
3201
  const isControlled = checked !== void 0;
2507
- const [innerChecked, setInnerChecked] = React4.useState(!!defaultChecked);
3202
+ const [innerChecked, setInnerChecked] = React16.useState(!!defaultChecked);
2508
3203
  const isOn = isControlled ? !!checked : innerChecked;
2509
3204
  const handleToggle = () => {
2510
3205
  if (disabled) return;
@@ -2567,5 +3262,103 @@ var TopLoading = ({
2567
3262
  }
2568
3263
  );
2569
3264
  };
3265
+ var Container = ({
3266
+ size = "xl",
3267
+ center = true,
3268
+ as: Tag = "div",
3269
+ className,
3270
+ children,
3271
+ ...props
3272
+ }) => {
3273
+ return /* @__PURE__ */ jsx(
3274
+ Tag,
3275
+ {
3276
+ className: cn("container", `container_size_${size}`, center && "container_center", className),
3277
+ ...props,
3278
+ children
3279
+ }
3280
+ );
3281
+ };
3282
+ var Section = ({
3283
+ spacing: spacing2 = "md",
3284
+ bg = "default",
3285
+ as: Tag = "section",
3286
+ className,
3287
+ children,
3288
+ ...props
3289
+ }) => {
3290
+ return /* @__PURE__ */ jsx(
3291
+ Tag,
3292
+ {
3293
+ className: cn(
3294
+ "section",
3295
+ `section_spacing_${spacing2}`,
3296
+ `section_bg_${bg}`,
3297
+ className
3298
+ ),
3299
+ ...props,
3300
+ children
3301
+ }
3302
+ );
3303
+ };
3304
+ var Stack = ({
3305
+ direction = "vertical",
3306
+ gap = 16,
3307
+ align,
3308
+ justify,
3309
+ wrap,
3310
+ as: Tag = "div",
3311
+ className,
3312
+ children,
3313
+ style,
3314
+ ...props
3315
+ }) => {
3316
+ return /* @__PURE__ */ jsx(
3317
+ Tag,
3318
+ {
3319
+ className: cn(
3320
+ "stack",
3321
+ `stack_${direction}`,
3322
+ align && `stack_align_${align}`,
3323
+ justify && `stack_justify_${justify}`,
3324
+ wrap && `stack_wrap_${wrap.replace("-", "_")}`,
3325
+ className
3326
+ ),
3327
+ style: { "--stack-gap": `${gap}px`, ...style },
3328
+ ...props,
3329
+ children
3330
+ }
3331
+ );
3332
+ };
3333
+ var Grid = ({
3334
+ cols = 3,
3335
+ minColWidth = "280px",
3336
+ gap = 24,
3337
+ rowGap,
3338
+ colGap,
3339
+ singleColOnMobile = true,
3340
+ as: Tag = "div",
3341
+ className,
3342
+ children,
3343
+ style,
3344
+ ...props
3345
+ }) => {
3346
+ const gridTemplateColumns = cols === "auto" ? `repeat(auto-fill, minmax(${minColWidth}, 1fr))` : `repeat(${cols}, 1fr)`;
3347
+ return /* @__PURE__ */ jsx(
3348
+ Tag,
3349
+ {
3350
+ className: cn("grid_layout", singleColOnMobile && "grid_layout_mobile_single", className),
3351
+ style: {
3352
+ "--grid-cols": gridTemplateColumns,
3353
+ "--grid-gap": `${gap}px`,
3354
+ "--grid-row-gap": rowGap != null ? `${rowGap}px` : void 0,
3355
+ "--grid-col-gap": colGap != null ? `${colGap}px` : void 0,
3356
+ ...style
3357
+ },
3358
+ ...props,
3359
+ children
3360
+ }
3361
+ );
3362
+ };
2570
3363
 
2571
- 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 };
3364
+ export { Accordion, AlertProvider, Avatar, Badge, 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 };