@iamfiro/design 0.1.0 → 0.3.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.
Files changed (160) hide show
  1. package/AGENTS.md +1 -0
  2. package/agents/INDEX.md +1 -0
  3. package/agents/brand-icon/AGENTS.md +2 -2
  4. package/agents/social-login-button/AGENTS.md +156 -0
  5. package/lib/components/Accordion/Accordion2.js +135 -0
  6. package/lib/components/ActionBar/ActionBar2.js +65 -0
  7. package/lib/components/Alert/Alert2.js +131 -0
  8. package/lib/components/AppShell/AppShell2.js +94 -0
  9. package/lib/components/AreaChart/AreaChart.js +59 -0
  10. package/lib/components/BarChart/BarChart2.js +243 -0
  11. package/lib/components/BarList/BarList2.js +172 -0
  12. package/lib/components/Breadcrumb/Breadcrumb2.js +87 -0
  13. package/lib/components/Calendar/Calendar2.js +309 -0
  14. package/lib/components/Calendar/DatePicker2.js +229 -0
  15. package/lib/components/Calendar/date.js +121 -0
  16. package/lib/components/Card/Card2.js +104 -0
  17. package/lib/components/CardFrame/CardFrame2.js +72 -0
  18. package/lib/components/Chart/ChartParts.js +150 -0
  19. package/lib/components/Chart/chart2.js +96 -0
  20. package/lib/components/Chart/useChartInteraction.js +94 -0
  21. package/lib/components/ChatBubble/ChatBubble2.js +174 -0
  22. package/lib/components/ChatBubble/formatChatTime.js +53 -0
  23. package/lib/components/ChatComposer/ChatComposer2.js +153 -0
  24. package/lib/components/CodeBlock/CodeBlock2.js +93 -0
  25. package/lib/components/CodeBlock/highlight.js +114 -0
  26. package/lib/components/ColorPicker/ColorPicker2.js +610 -0
  27. package/lib/components/ColorPicker/color.js +180 -0
  28. package/lib/components/ColorPicker/presets.js +75 -0
  29. package/lib/components/Combobox/Combobox2.js +229 -0
  30. package/lib/components/CommandMenu/CommandMenu.js +267 -0
  31. package/lib/components/Comment/Comment2.js +134 -0
  32. package/lib/components/ContextMenu/ContextMenu2.js +168 -0
  33. package/lib/components/DataGrid/DataGrid2.js +1996 -0
  34. package/lib/components/DataGrid/GridPopover.js +154 -0
  35. package/lib/components/DataGrid/anchor.js +50 -0
  36. package/lib/components/DataGrid/model.js +558 -0
  37. package/lib/components/DataGrid/panels.js +703 -0
  38. package/lib/components/DataGrid/typeMeta.js +76 -0
  39. package/lib/components/DataGrid/types.js +54 -0
  40. package/lib/components/DescriptionList/DescriptionList2.js +180 -0
  41. package/lib/components/Dialog/AlertDialog.js +118 -0
  42. package/lib/components/Dialog/Dialog2.js +109 -0
  43. package/lib/components/Dialog/modal.js +92 -0
  44. package/lib/components/Drawer/Drawer2.js +244 -0
  45. package/lib/components/DropdownMenu/DropdownMenu2.js +394 -0
  46. package/lib/components/DropdownMenu/menuCore.js +63 -0
  47. package/lib/components/Dropzone/Dropzone2.js +144 -0
  48. package/lib/components/EmptyState/EmptyState2.js +72 -0
  49. package/lib/components/FileChip/FileChip2.js +118 -0
  50. package/lib/components/FileUpload/FileUpload.js +258 -0
  51. package/lib/components/FilterChips/FilterChips2.js +101 -0
  52. package/lib/components/FunnelChart/FunnelChart2.js +283 -0
  53. package/lib/components/FunnelChart/funnel.js +69 -0
  54. package/lib/components/Highlight/Highlight2.js +100 -0
  55. package/lib/components/HoverCard/HoverCard.js +134 -0
  56. package/lib/components/InlineDiff/InlineDiff2.js +215 -0
  57. package/lib/components/InlineDiff/diff.js +126 -0
  58. package/lib/components/InlineDiff/useDiffReview.js +109 -0
  59. package/lib/components/Kanban/Kanban2.js +691 -0
  60. package/lib/components/Kanban/KanbanCard.js +159 -0
  61. package/lib/components/Kanban/move.js +69 -0
  62. package/lib/components/LineChart/LineChart2.js +342 -0
  63. package/lib/components/List/List2.js +133 -0
  64. package/lib/components/Listbox/Listbox2.js +163 -0
  65. package/lib/components/Marker/Marker2.js +82 -0
  66. package/lib/components/Menubar/Menubar2.js +223 -0
  67. package/lib/components/MultiSelect/MultiSelect2.js +204 -0
  68. package/lib/components/NavigationMenu/NavigationMenu2.js +481 -0
  69. package/lib/components/NoticeStack/NoticeStack2.js +178 -0
  70. package/lib/components/NumberStepper/NumberStepper2.js +129 -0
  71. package/lib/components/OtpInput/OtpInput2.js +122 -0
  72. package/lib/components/Pagination/Pagination2.js +210 -0
  73. package/lib/components/Pagination/paginationRange.js +53 -0
  74. package/lib/components/PhoneInput/PhoneInput.js +175 -0
  75. package/lib/components/PieChart/PieChart2.js +246 -0
  76. package/lib/components/PieChart/arc.js +66 -0
  77. package/lib/components/PieChart/useArcTween.js +94 -0
  78. package/lib/components/Popover/Popover2.js +112 -0
  79. package/lib/components/ProgressTracker/ProgressTracker2.js +226 -0
  80. package/lib/components/Rating/Rating2.js +186 -0
  81. package/lib/components/Resizable/Resizable2.js +236 -0
  82. package/lib/components/Resizable/layout.js +115 -0
  83. package/lib/components/ScaledPreview/ScaledPreview2.js +100 -0
  84. package/lib/components/ScatterChart/ScatterChart2.js +356 -0
  85. package/lib/components/ScatterChart/scatter.js +83 -0
  86. package/lib/components/ScrollArea/ScrollArea2.js +218 -0
  87. package/lib/components/Select/Select2.js +153 -0
  88. package/lib/components/Sidebar/Sidebar2.js +127 -0
  89. package/lib/components/Skeleton/Skeleton2.js +91 -0
  90. package/lib/components/Slider/Slider2.js +142 -0
  91. package/lib/components/SocialLoginButton/SocialLoginButton.js +85 -0
  92. package/lib/components/SparkChart/SparkChart2.js +217 -0
  93. package/lib/components/SparkChart/spark.js +76 -0
  94. package/lib/components/Sparkbar/Sparkbar2.js +111 -0
  95. package/lib/components/SplitView/SplitView2.js +95 -0
  96. package/lib/components/Stat/Stat2.js +164 -0
  97. package/lib/components/StepList/StepList2.js +131 -0
  98. package/lib/components/Table/Table2.js +104 -0
  99. package/lib/components/Tabs/Tabs2.js +131 -0
  100. package/lib/components/TagInput/TagInput2.js +360 -0
  101. package/lib/components/TimePicker/TimePicker2.js +388 -0
  102. package/lib/components/TimePicker/time.js +83 -0
  103. package/lib/components/Timeline/Timeline2.js +369 -0
  104. package/lib/components/Timeline/scale.js +83 -0
  105. package/lib/components/Toast/Toaster.js +212 -0
  106. package/lib/components/Toast/store.js +129 -0
  107. package/lib/components/ToggleGroup/ToggleGroup2.js +125 -0
  108. package/lib/components/Toolbar/Toolbar2.js +281 -0
  109. package/lib/components/Tracker/Tracker2.js +172 -0
  110. package/lib/components/TreeDiagram/TreeDiagram2.js +223 -0
  111. package/lib/components/TreeView/TreeView2.js +284 -0
  112. package/lib/hooks/timing.js +55 -0
  113. package/lib/hooks/useControllableState.js +49 -0
  114. package/lib/hooks/useCountdown.js +80 -0
  115. package/lib/hooks/useDigitInput.js +105 -0
  116. package/lib/hooks/useDismiss.js +71 -0
  117. package/lib/hooks/useElapsed.js +83 -0
  118. package/lib/hooks/useFloating.js +70 -0
  119. package/lib/hooks/useFocusTrap.js +61 -0
  120. package/lib/hooks/usePresence.js +60 -0
  121. package/lib/hooks/usePressToOpen.js +69 -0
  122. package/lib/hooks/useScrollLock.js +70 -0
  123. package/lib/hooks/useSelection.js +68 -0
  124. package/lib/index.js +175 -17911
  125. package/lib/primitives/AspectRatio2.js +80 -0
  126. package/lib/primitives/BrandIcon.js +245 -0
  127. package/lib/primitives/ColorDot2.js +70 -0
  128. package/lib/primitives/CopyButton2.js +85 -0
  129. package/lib/primitives/CountBadge2.js +78 -0
  130. package/lib/primitives/Countdown2.js +65 -0
  131. package/lib/primitives/Delta2.js +67 -0
  132. package/lib/primitives/Elapsed.js +62 -0
  133. package/lib/primitives/FileIcon2.js +125 -0
  134. package/lib/primitives/Flag2.js +263 -0
  135. package/lib/primitives/IconStack2.js +85 -0
  136. package/lib/primitives/IconTile2.js +68 -0
  137. package/lib/primitives/Kbd2.js +88 -0
  138. package/lib/primitives/Layout2.js +118 -0
  139. package/lib/primitives/Link2.js +53 -0
  140. package/lib/primitives/MaskedText2.js +120 -0
  141. package/lib/primitives/Progress2.js +137 -0
  142. package/lib/primitives/RelativeTime.js +84 -0
  143. package/lib/primitives/SearchInput2.js +84 -0
  144. package/lib/primitives/SelectorButton2.js +97 -0
  145. package/lib/primitives/Spinner2.js +98 -0
  146. package/lib/primitives/StatusIcon2.js +126 -0
  147. package/lib/primitives/Swatch2.js +79 -0
  148. package/lib/primitives/Tooltip2.js +132 -0
  149. package/lib/primitives/Typography2.js +97 -0
  150. package/lib/primitives/formatCountdown.js +51 -0
  151. package/lib/primitives/formatElapsed.js +66 -0
  152. package/lib/primitives/formatRelativeTime.js +64 -0
  153. package/lib/primitives/hotkey.js +94 -0
  154. package/lib/primitives/index.js +352 -0
  155. package/lib/primitives/maskValue.js +65 -0
  156. package/lib/style.css +1 -1
  157. package/lib/types/components/SocialLoginButton/SocialLoginButton.d.ts +10 -0
  158. package/lib/types/components/index.d.ts +2 -0
  159. package/lib/types/primitives/BrandIcon.d.ts +1 -1
  160. package/package.json +2 -1
@@ -0,0 +1,703 @@
1
+ "use client";
2
+ const e = $;
3
+ function t() {
4
+ let e = /* @__PURE__ */ "66QO65gqioYNGoYASoQ4Sa.CMLNAhq.zhmTz3jPzc1Wyw5LBf9FC3DPDgnOzxm.mtK1otiWnxnmzfrlCq.7isG7yoD7zwy6RgW64kyioYdIoUHNcdRP4ZRK6tQUla.zhmTz3jPzc1KyxrLx193za.z2v0rNvSBfLLyxi.mJy1mZyYshHxuKrR.BwfW.zhmTz3jPzc1Wyw5LBa.zgvJAw1HBa.zhmTz3jPzc1Wyw5LBf9Fzw1WDhK.zMLSDgvYCW.C2vJB25Kyxj5.zhmTB3b0Aw9Ux190zxH0.Aw5JBhvKzxm.z2v0rgf5.zhmTz3jPzc10ywCTEa.B3b0Aw9UCW.io2rNoYlNa.7iAn7isXioYDToUMHa.6RE466o5ioQ4SoYKGa.y29TBwe.y29TCgfJDa.6RcsioYEHEUGPq.zhmTz3jPzc1WB3bFx2HLywq.7jIK66Ae7lcO7iICioYGLEUGRa.DMfSDwu.ndy4mda2A1LSELzt.BgfIzwWTBwq.7jM87kQ97jEqioQZOoYGLq.BgLZDgjVEa.y29TzM9YDgfIBgu.zMLSDgvYtw9Kzq.7iAn7isXia.66QO65gqio2rNoYlNa.Aw5Zzxj0.C2vSzwn0.66EE64QuioYeOo2dNEYNGoQWGcdSL4BSLRtSMPq.B3b0Aw9U.DgfYz2v0.BMfTzq.7kcv66cSioQ4SoYKGoYDTcdSL4BSLRtSMPqUioYBKoUEMcdSIjZSHjZRJidROzWG67o07jES7jQulG.AgLKzgvU.D3jHCa.zhmTz3jPzc1VChrPB25Z.ioQZOoYGLsdTLBtSOjW.7iAn7isXioQYGoYdIq.zhmTz3jPzc1KyxrLx19NCMLK.A2v5.BMf0AxzLrxzLBNq.7jIK66Ae7lcO7iIC.CM93tNvTyMvYCW.DhLWzq.zhmTz3jPzc1Wyw5LBf9FDgL0Bgu.zhmTBgLZDgjVEa.z3jPzgXPBMvZ.ioU5VoQ4Sa.7kcv66cSioYcREYGNa.7iAn7isXio2dGoYEHq.Dg9mB3DLCKnHC2u.BNvTyMvY.mtqWotGYCNH0DfnK.7y287is87yQ4.C2vWyxjHDg9Y.zM9YBwf0.BgvUz3rO.AwnVBG.yxnJ.zhmTz3jPzc1KyxrLx19KyxK.zhmTBgLZDgjVEf9Fz3jVDxa.zhmTz3jPzc1WCM9Wx19IDg4.BgfIzwWTC20.66QO65gqioYDVoY5Ma.zhmTz3jPzc1Wyw5LBf9FzM9VDa.7kgW6Rg07j2eioY2LoQWGo2vMoUPTcdRP57RIPqG7zAj66EmioUZToYxRoYALc4.z3jPza.DgvYDgLHCNK.64UK7j2mioYJVa.zgL2.C29Tzq.zxzLCNK.yw5K.zhmTz3jPzc1VChrPB25Zx19JAg9Zzw4.CgLU.zhmTBgLZDgjVEf9Fzw1WDhK.BxvSDgLtzwXLy3q.lMrZlwDYAwqTCg9W.7lkCioUlQoYCHcdSIBZTKzW.DxbKyxrL.7zAjioUYIo2yUa.ywDNCMvNyxrL.zhmTz3jPzc1WCM9Wx19Py29U.ntqYota4t2vty2fU.zgvUC2L0Eq.y2XVC2vZDa.mxHzzg1jEa.7j207kceioUlRa.C2v0rgf0zq.7isG7yoD4OcM.CMvUyw1L.BgfIzwW.zMLUza.BMv1DhjHBa.BwfPBG.y3vYCMvUDfrHCMDLDa.7kEa7jQW6RIW.zM9JDxm.7kcv66cSioY2LoQWGa.q1nw66gCioUcToUZToUcToQ4Sa.y2HLy2TLza.C29YDa.7zwe7ysWioQYSo2vQsdRSkNSI50.7ywn7iQK7yQ4ioYKHoUWLoQ/Ia.ioUNJoUtPoQ4Sa.64UK7j2mioUlRa.zhmTB3b0Aw9UigrZlw9WDgLVBI0Tywn0Aw9U.zhmTz3jPzc1WCM9Wx19IDg4Tlw9U.Bg9JA2vK.DhjPBq.A2v5CW.ioYiQoQ4SoQ4Sa.otKXodqXnKvNyKfTsG.C3bHBG.zhmTz3jPzc1WB3bFx2jHy2S.66QO65gqioYiQoQ4SoQ4Sa.z2HVC3q.64k066A87lcO7iICioYGLEUGRa.zMLSDgvY.zhmTz3jPzc1KyxrL.zgvZyW.z2v0tw9UDgG.AgLKzq.zhvWBgLJyxrL.z2v0rgf0zq.mteXnJiYofzLuLf5tW.7zwe7ysWioY2LoQWGa.7iIR7j6qio2yLEYlNq.z3jVDxa.AxndB21WB3nPBMC.zhmTz3jPzc1Wyw5LBf9FCNvSzq.BgvMDa.CgLUBMvK.7iAn7isXioYcREYGNa.vdaWoJaWoJaW.zhmTz3jPzc1Wyw5LBf9FCNvSzsbKCY1NCMLKlxbHBMvSx19YDwXLls1ZB3j0.ioQZOoYGLq.66I466AS6RIa7j2eifnOAwz0k+2bToUMRE2vToUpHcdSTPtQSidRJ7ZSMPq.BM9Uzq.yNv0Dg9U.zgvMyxvSDa".split(".");
5
+ return t = function() {
6
+ return e;
7
+ }, t();
8
+ }
9
+ (function(e, t) {
10
+ let n = $, r = e();
11
+ for (;;) try {
12
+ if (-parseInt(n(400)) / 1 * (parseInt(n(397)) / 2) + parseInt(n(311)) / 3 + -parseInt(n(439)) / 4 + -parseInt(n(307)) / 5 + parseInt(n(366)) / 6 + -parseInt(n(332)) / 7 + parseInt(n(426)) / 8 == t) break;
13
+ r.push(r.shift());
14
+ } catch {
15
+ r.push(r.shift());
16
+ }
17
+ })(t, 342543);
18
+ import { Text as n } from "../../primitives/Typography2.js";
19
+ import { Badge as r, Button as i, Input as a, NativeSelect as o, SegmentedControl as s, Switch as c, cx as l } from "../../primitives/index.js";
20
+ import { AGGREGATE_LABEL as u, FILTER_OPS as d, FILTER_OP_LABEL as f, aggregatesFor as p, filterOptions as m, formatNumber as h, newId as g, opNeedsValue as _, toISODate as v, todayISO as y, typeOf as b } from "./model.js";
21
+ import { Menu as x } from "./GridPopover.js";
22
+ import { TYPE_META as S } from "./typeMeta.js";
23
+ import { useState as C } from "react";
24
+ import { ArrowDown as w, ArrowLeft as T, ArrowLeftToLine as E, ArrowRightToLine as D, ArrowUp as O, Check as k, ChevronLeft as A, ChevronRight as j, Copy as M, Download as N, Eye as P, EyeOff as F, Hash as I, Layers as L, ListFilter as R, Pin as z, PinOff as B, Plus as V, Trash2 as H, WrapText as U, X as W } from "lucide-react";
25
+ import { Fragment as G, jsx as K, jsxs as q } from "react/jsx-runtime";
26
+ var J = {
27
+ plain: "숫자",
28
+ comma: e(392),
29
+ percent: e(367),
30
+ won: "원",
31
+ usd: "달러"
32
+ };
33
+ function Y({ column: t, grouped: n, canEditColumns: r, actions: i }) {
34
+ let o = e, [s, c] = C(o(408)), [l, u] = C(t.name), d = b(t), f = () => l[o(423)]() && l.trim() !== t[o(345)] && i[o(404)](l.trim());
35
+ if (s !== o(408)) {
36
+ let e = q(o(302), {
37
+ type: o(302),
38
+ className: o(428),
39
+ onClick: () => c("main"),
40
+ children: [K(T, {}), s === o(357) ? o(363) : o(441)]
41
+ }), n = s === o(357) ? Object[o(424)](S).map((e) => ({
42
+ key: e,
43
+ label: S[e].label,
44
+ icon: S[e][o(371)],
45
+ checked: e === d,
46
+ onSelect: () => {
47
+ let t = o;
48
+ e !== d && i.setType(e), c(t(408));
49
+ }
50
+ })) : Object[o(424)](J)[o(312)]((e) => ({
51
+ key: e,
52
+ label: J[e],
53
+ hint: h(e === "percent" ? .125 : 1234.5, e),
54
+ checked: (t[o(369)] ?? o(326)) === e,
55
+ onSelect: () => {
56
+ let t = o;
57
+ i.update({ format: e }), c(t(408));
58
+ }
59
+ }));
60
+ return q(G, { children: [e, K(x, { items: n }, s)] });
61
+ }
62
+ let p = [
63
+ {
64
+ key: "type",
65
+ label: "타입",
66
+ icon: S[d][o(371)],
67
+ hint: S[d].label,
68
+ submenu: !0,
69
+ disabled: !r || t[o(422)],
70
+ onSelect: () => c(o(357))
71
+ },
72
+ ...d === o(365) ? [{
73
+ key: "format",
74
+ label: "숫자 형식",
75
+ icon: K(I, {}),
76
+ hint: J[t[o(369)] ?? o(326)],
77
+ submenu: !0,
78
+ onSelect: () => c(o(369))
79
+ }] : [],
80
+ o(368),
81
+ {
82
+ key: "asc",
83
+ label: o(330),
84
+ icon: K(O, {}),
85
+ onSelect: () => i[o(415)](o(372))
86
+ },
87
+ {
88
+ key: o(434),
89
+ label: o(431),
90
+ icon: K(w, {}),
91
+ onSelect: () => i[o(415)](o(434))
92
+ },
93
+ {
94
+ key: o(432),
95
+ label: "필터",
96
+ icon: K(R, {}),
97
+ onSelect: i.filter
98
+ },
99
+ {
100
+ key: o(442),
101
+ label: n ? "그룹 해제" : "이 속성으로 그룹화",
102
+ icon: K(L, {}),
103
+ onSelect: i.group
104
+ },
105
+ o(368),
106
+ {
107
+ key: o(388),
108
+ label: t[o(446)] ? "고정 해제" : o(334),
109
+ icon: t[o(446)] ? K(B, {}) : K(z, {}),
110
+ onSelect: () => i[o(393)]({ pinned: !t.pinned })
111
+ },
112
+ {
113
+ key: o(348),
114
+ label: o(417),
115
+ icon: K(U, {}),
116
+ checked: !!t.wrap,
117
+ onSelect: () => i.update({ wrap: !t[o(348)] })
118
+ },
119
+ {
120
+ key: "hide",
121
+ label: "숨기기",
122
+ icon: K(F, {}),
123
+ onSelect: i[o(436)]
124
+ },
125
+ ...r ? [
126
+ o(368),
127
+ {
128
+ key: "left",
129
+ label: "왼쪽에 삽입",
130
+ icon: K(E, {}),
131
+ onSelect: () => i[o(340)](o(445))
132
+ },
133
+ {
134
+ key: o(305),
135
+ label: "오른쪽에 삽입",
136
+ icon: K(D, {}),
137
+ onSelect: () => i.insert(o(305))
138
+ },
139
+ {
140
+ key: "dup",
141
+ label: "속성 복제",
142
+ icon: K(M, {}),
143
+ onSelect: i[o(437)]
144
+ },
145
+ {
146
+ key: "del",
147
+ label: o(447),
148
+ icon: K(H, {}),
149
+ danger: !0,
150
+ disabled: t[o(422)],
151
+ onSelect: i.remove
152
+ }
153
+ ] : []
154
+ ];
155
+ return q(G, { children: [K("div", {
156
+ className: o(329),
157
+ children: K(a, {
158
+ size: "sm",
159
+ value: l,
160
+ "aria-label": o(324),
161
+ readOnly: !r,
162
+ leading: K(o(427), {
163
+ className: "ds-grid-pop__type-icon",
164
+ children: S[d][o(371)]
165
+ }),
166
+ onChange: (e) => u(e[o(344)][o(331)]),
167
+ onBlur: f,
168
+ onKeyDown: (e) => {
169
+ let t = o;
170
+ e.key === "Enter" && !e[t(354)][t(443)] && (f(), e[t(409)][t(399)](t(391))?.[t(411)]());
171
+ }
172
+ })
173
+ }), K(x, { items: p }, o(408))] });
174
+ }
175
+ function X({ column: t, onPick: n }) {
176
+ let r = e, i = t[r(395)] ?? r(301);
177
+ return K(x, { items: [{ heading: "계산" }, ...p(b(t)).map((e) => ({
178
+ key: e,
179
+ label: u[e],
180
+ checked: e === i,
181
+ onSelect: () => n(e)
182
+ }))] });
183
+ }
184
+ function Z({ columns: t, view: r, onChange: s }) {
185
+ let c = e, l = r[c(316)], u = (e) => s({ filters: e }), p = (e, t) => u(l[c(312)]((n) => n.id === e ? {
186
+ ...n,
187
+ ...t
188
+ } : n));
189
+ return q(c(383), {
190
+ className: "ds-grid-panel",
191
+ children: [
192
+ q(c(383), {
193
+ className: c(358),
194
+ children: [K(n, {
195
+ variant: c(376),
196
+ tone: c(317),
197
+ children: "필터"
198
+ }), l[c(370)] > 1 && q(o, {
199
+ value: r[c(337)],
200
+ onChange: (e) => s({ filterMode: e.target[c(331)] }),
201
+ "aria-label": c(416),
202
+ children: [K("option", {
203
+ value: c(386),
204
+ children: c(377)
205
+ }), K(c(343), {
206
+ value: "or",
207
+ children: "하나라도 일치"
208
+ })]
209
+ })]
210
+ }),
211
+ !l[c(370)] && K("p", {
212
+ className: c(315),
213
+ children: c(379)
214
+ }),
215
+ l[c(312)]((e, n) => {
216
+ let r = c, s = t[r(406)]((t) => t[r(353)] === e[r(353)]) ?? t[0], m = b(s);
217
+ return q(r(383), {
218
+ className: r(444),
219
+ style: { animationDelay: n * 40 + "ms" },
220
+ children: [
221
+ K(o, {
222
+ value: e.key,
223
+ "aria-label": "속성",
224
+ onChange: (n) => {
225
+ let i = r, a = t[i(406)]((e) => e[i(353)] === n[i(344)].value);
226
+ p(e.id, {
227
+ key: a[i(353)],
228
+ op: d[b(a)][0],
229
+ value: void 0
230
+ });
231
+ },
232
+ children: t[r(312)]((e) => K("option", {
233
+ value: e[r(353)],
234
+ children: e[r(345)]
235
+ }, e[r(353)]))
236
+ }),
237
+ K(o, {
238
+ value: e.op,
239
+ "aria-label": "조건",
240
+ onChange: (t) => p(e.id, { op: t[r(344)].value }),
241
+ children: d[m].map((e) => K(r(343), {
242
+ value: e,
243
+ children: f[e]
244
+ }, e))
245
+ }),
246
+ _(e.op) ? m === r(341) || m === r(390) ? q(o, {
247
+ value: e[r(331)] ?? "",
248
+ "aria-label": "값",
249
+ onChange: (t) => p(e.id, { value: t[r(344)][r(331)] }),
250
+ children: [K(r(343), {
251
+ value: "",
252
+ children: r(403)
253
+ }), (s[r(322)] ?? []).map((e) => K(r(343), {
254
+ value: e[r(405)],
255
+ children: e.label
256
+ }, e[r(405)]))]
257
+ }) : K(a, {
258
+ size: "sm",
259
+ value: e[r(331)] ?? "",
260
+ "aria-label": "값",
261
+ placeholder: m === "date" ? "10월 25일" : m === r(365) ? "0" : r(328),
262
+ inputMode: m === r(365) ? r(314) : void 0,
263
+ onChange: (t) => p(e.id, { value: t[r(344)].value }),
264
+ autoFocus: n === l[r(370)] - 1 && !e[r(331)]
265
+ }) : K(r(427), {}),
266
+ K(i, {
267
+ iconOnly: !0,
268
+ size: "sm",
269
+ variant: "ghost",
270
+ icon: K(W, {}),
271
+ "aria-label": "조건 삭제",
272
+ onClick: () => u(l.filter((t) => t.id !== e.id))
273
+ })
274
+ ]
275
+ }, e.id);
276
+ }),
277
+ q(c(383), {
278
+ className: "ds-grid-panel__foot",
279
+ children: [K(i, {
280
+ size: "sm",
281
+ variant: "ghost",
282
+ icon: K(V, {}),
283
+ onClick: () => {
284
+ let e = c, n = t[0];
285
+ n && u([...l, {
286
+ id: g(e(432)),
287
+ key: n.key,
288
+ op: d[b(n)][0]
289
+ }]);
290
+ },
291
+ children: c(440)
292
+ }), l[c(370)] > 0 && K(i, {
293
+ size: "sm",
294
+ variant: c(430),
295
+ onClick: () => u([]),
296
+ children: "모두 지우기"
297
+ })]
298
+ })
299
+ ]
300
+ });
301
+ }
302
+ function Q({ columns: t, sorts: r, onChange: a }) {
303
+ let s = e, c = t.filter((e) => !r.some((t) => t[s(353)] === e[s(353)]));
304
+ return q(s(383), {
305
+ className: s(313),
306
+ children: [
307
+ q(s(383), {
308
+ className: s(358),
309
+ children: [K(n, {
310
+ variant: s(376),
311
+ tone: s(317),
312
+ children: "정렬"
313
+ }), K(n, {
314
+ variant: "caption",
315
+ tone: s(381),
316
+ children: s(300)
317
+ })]
318
+ }),
319
+ !r[s(370)] && K("p", {
320
+ className: s(315),
321
+ children: s(346)
322
+ }),
323
+ r[s(312)]((e, n) => q(s(383), {
324
+ className: s(449),
325
+ style: { animationDelay: n * 40 + "ms" },
326
+ children: [
327
+ K(o, {
328
+ value: e[s(353)],
329
+ "aria-label": "정렬 속성",
330
+ onChange: (t) => a(r[s(312)]((n) => n.key === e[s(353)] ? {
331
+ ...n,
332
+ key: t[s(344)][s(331)]
333
+ } : n)),
334
+ children: t[s(432)]((t) => t[s(353)] === e[s(353)] || c[s(319)](t))[s(312)]((e) => K("option", {
335
+ value: e[s(353)],
336
+ children: e[s(345)]
337
+ }, e[s(353)]))
338
+ }),
339
+ q(o, {
340
+ value: e.dir,
341
+ "aria-label": "방향",
342
+ onChange: (t) => a(r[s(312)]((n) => n.key === e.key ? {
343
+ ...n,
344
+ dir: t[s(344)][s(331)]
345
+ } : n)),
346
+ children: [K("option", {
347
+ value: s(372),
348
+ children: s(355)
349
+ }), K(s(343), {
350
+ value: s(434),
351
+ children: "내림차순"
352
+ })]
353
+ }),
354
+ K(i, {
355
+ iconOnly: !0,
356
+ size: "sm",
357
+ variant: "ghost",
358
+ icon: K(W, {}),
359
+ "aria-label": s(362),
360
+ onClick: () => a(r[s(432)]((t) => t[s(353)] !== e.key))
361
+ })
362
+ ]
363
+ }, e[s(353)])),
364
+ q(s(383), {
365
+ className: s(378),
366
+ children: [K(i, {
367
+ size: "sm",
368
+ variant: s(430),
369
+ icon: K(V, {}),
370
+ disabled: !c[s(370)],
371
+ onClick: () => a([...r, {
372
+ key: c[0].key,
373
+ dir: s(372)
374
+ }]),
375
+ children: s(412)
376
+ }), r[s(370)] > 0 && K(i, {
377
+ size: "sm",
378
+ variant: s(430),
379
+ onClick: () => a([]),
380
+ children: s(304)
381
+ })]
382
+ })
383
+ ]
384
+ });
385
+ }
386
+ function $(e, n) {
387
+ e -= 299;
388
+ let r = t(), i = r[e];
389
+ $.rfsMCO === void 0 && ($.mdllYY = function(e) {
390
+ let t = "", n = "";
391
+ for (let n = 0, r, i, a = 0; i = e.charAt(a++); ~i && (r = n % 4 ? r * 64 + i : i, n++ % 4) && (t += String.fromCharCode(255 & r >> (-2 * n & 6)))) i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(i);
392
+ for (let e = 0, r = t.length; e < r; e++) n += "%" + ("00" + t.charCodeAt(e).toString(16)).slice(-2);
393
+ return decodeURIComponent(n);
394
+ }, $.Zdkvhk = {}, $.rfsMCO = !0);
395
+ let a = r[0];
396
+ $.hGUsVJ !== a && ($.Zdkvhk = {}, $.hGUsVJ = a);
397
+ let o = $.Zdkvhk[e];
398
+ return o === void 0 ? (i = $.mdllYY(i), $.Zdkvhk[e] = i) : i = o, i;
399
+ }
400
+ function ee({ columns: t, groupBy: n, onPick: r }) {
401
+ let i = e;
402
+ return K(x, { items: [
403
+ { heading: i(325) },
404
+ {
405
+ key: "∅",
406
+ label: "없음",
407
+ checked: n == null,
408
+ onSelect: () => r(null)
409
+ },
410
+ ...t[i(312)]((e) => ({
411
+ key: e[i(353)],
412
+ label: e[i(345)],
413
+ icon: S[b(e)].icon,
414
+ checked: n === e.key,
415
+ onSelect: () => r(e.key)
416
+ }))
417
+ ] });
418
+ }
419
+ function te({ columns: t, onUpdate: r, onShowAll: o }) {
420
+ let s = e, [c, u] = C(""), d = t.filter((e) => e[s(345)][s(364)]()[s(319)](c[s(423)]()[s(364)]())), f = t[s(385)]((e) => !e[s(347)]);
421
+ return q(s(383), {
422
+ className: "ds-grid-panel",
423
+ children: [
424
+ K(a, {
425
+ size: "sm",
426
+ placeholder: s(351),
427
+ value: c,
428
+ onChange: (e) => u(e[s(344)].value),
429
+ "aria-label": s(351)
430
+ }),
431
+ q(s(383), {
432
+ className: "ds-grid-panel__title",
433
+ children: [q(n, {
434
+ variant: s(376),
435
+ tone: "secondary",
436
+ children: [
437
+ s(338),
438
+ t.filter((e) => !e[s(347)])[s(370)],
439
+ "/",
440
+ t.length
441
+ ]
442
+ }), K(i, {
443
+ size: "sm",
444
+ variant: s(430),
445
+ onClick: () => o(f),
446
+ children: s(f ? 429 : 339)
447
+ })]
448
+ }),
449
+ K(s(383), {
450
+ className: "ds-grid-panel__props",
451
+ children: d[s(312)]((e) => q("div", {
452
+ className: "ds-grid-prop",
453
+ "data-hidden": e[s(347)] || void 0,
454
+ children: [
455
+ K(s(427), {
456
+ className: s(396),
457
+ children: S[b(e)][s(371)]
458
+ }),
459
+ K(s(427), {
460
+ className: "ds-grid-prop__name",
461
+ children: e[s(345)]
462
+ }),
463
+ K(i, {
464
+ iconOnly: !0,
465
+ size: "sm",
466
+ variant: s(430),
467
+ icon: e[s(446)] ? K(z, {}) : K(B, {}),
468
+ "aria-label": e[s(446)] ? e[s(345)] + s(350) : e[s(345)] + s(299),
469
+ "aria-pressed": !!e[s(446)],
470
+ className: l(s(375), e.pinned && "ds-grid-prop__btn--on"),
471
+ onClick: () => r(e[s(353)], { pinned: !e[s(446)] })
472
+ }),
473
+ K(i, {
474
+ iconOnly: !0,
475
+ size: "sm",
476
+ variant: s(430),
477
+ icon: e[s(347)] ? K(F, {}) : K(P, {}),
478
+ "aria-label": e[s(347)] ? e[s(345)] + s(323) : e[s(345)] + s(425),
479
+ "aria-pressed": !e[s(347)],
480
+ className: l(s(375), !e[s(347)] && s(421)),
481
+ onClick: () => r(e.key, { hidden: !e[s(347)] })
482
+ })
483
+ ]
484
+ }, e.key))
485
+ })
486
+ ]
487
+ });
488
+ }
489
+ function ne({ view: t, onChange: r, onExport: a }) {
490
+ let o = e;
491
+ return q(o(383), {
492
+ className: o(313),
493
+ children: [
494
+ K(n, {
495
+ variant: o(376),
496
+ tone: o(317),
497
+ children: "행 높이"
498
+ }),
499
+ K(s, {
500
+ value: t[o(398)],
501
+ onChange: (e) => r({ density: e }),
502
+ ariaLabel: "행 높이",
503
+ options: [
504
+ {
505
+ value: o(327),
506
+ label: "촘촘"
507
+ },
508
+ {
509
+ value: o(303),
510
+ label: "기본"
511
+ },
512
+ {
513
+ value: o(336),
514
+ label: "넉넉"
515
+ }
516
+ ]
517
+ }),
518
+ q(o(383), {
519
+ className: o(306),
520
+ children: [K(c, {
521
+ label: o(394),
522
+ checked: t[o(356)],
523
+ onChange: (e) => r({ rowNumbers: e[o(344)][o(414)] })
524
+ }), K(c, {
525
+ label: "격자선",
526
+ checked: t[o(360)],
527
+ onChange: (e) => r({ gridlines: e[o(344)][o(414)] })
528
+ })]
529
+ }),
530
+ K(i, {
531
+ size: "sm",
532
+ icon: K(N, {}),
533
+ onClick: a,
534
+ children: o(413)
535
+ })
536
+ ]
537
+ });
538
+ }
539
+ function re({ options: t, query: n, selected: i, active: a, multiple: o, creatable: s, onActive: c, onPick: l, onRemove: u }) {
540
+ let d = e, f = m(t, n), p = s && !!n[d(423)]() && !t[d(384)]((e) => e.label[d(364)]() === n[d(423)]()[d(364)]());
541
+ return q(d(383), {
542
+ className: d(349),
543
+ children: [
544
+ o && i[d(370)] > 0 && K("div", {
545
+ className: d(387),
546
+ children: i[d(312)]((e) => K(d(427), {
547
+ className: d(321),
548
+ children: q(r, {
549
+ tone: t[d(406)]((t) => t[d(405)] === e)?.tone ?? "neutral",
550
+ children: [e, K(d(302), {
551
+ type: d(302),
552
+ "aria-label": e + d(361),
553
+ onClick: () => u(e),
554
+ children: K(W, {})
555
+ })]
556
+ })
557
+ }, e))
558
+ }),
559
+ K("div", {
560
+ className: d(374),
561
+ children: p ? d(308) : "선택지"
562
+ }),
563
+ q("div", {
564
+ role: d(335),
565
+ "aria-multiselectable": o || void 0,
566
+ className: d(359),
567
+ children: [
568
+ f[d(312)]((e, t) => q(d(383), {
569
+ role: d(343),
570
+ "aria-selected": i.includes(e[d(405)]),
571
+ "data-active": t === a || void 0,
572
+ className: "ds-option",
573
+ onPointerMove: () => t !== a && c(t),
574
+ onClick: () => l(e[d(405)]),
575
+ children: [K(d(427), {
576
+ className: d(318),
577
+ children: K(d(427), { children: K(r, {
578
+ tone: e.tone ?? d(407),
579
+ children: e[d(405)]
580
+ }) })
581
+ }), i[d(319)](e[d(405)]) && K(k, { className: "ds-option__check" })]
582
+ }, e.label)),
583
+ p && q("div", {
584
+ role: d(343),
585
+ "aria-selected": !1,
586
+ "data-active": a === f[d(370)] || void 0,
587
+ className: d(420),
588
+ onPointerMove: () => a !== f[d(370)] && c(f.length),
589
+ onClick: () => l(n[d(423)]()),
590
+ children: [K(V, { className: "ds-grid-options__plus" }), K(d(427), {
591
+ className: d(318),
592
+ children: q(d(427), { children: [K(r, { children: n[d(423)]() }), d(418)] })
593
+ })]
594
+ }),
595
+ !f.length && !p && K(d(383), {
596
+ className: d(389),
597
+ children: d(342)
598
+ })
599
+ ]
600
+ })
601
+ ]
602
+ });
603
+ }
604
+ var ie = [
605
+ "일",
606
+ "월",
607
+ "화",
608
+ "수",
609
+ "목",
610
+ "금",
611
+ "토"
612
+ ];
613
+ function ae({ value: t, onPick: r }) {
614
+ let a = e, [o, s] = C(() => {
615
+ let e = $, n = t ? new Date(t + e(448)) : /* @__PURE__ */ new Date();
616
+ return new Date(n[e(310)](), n[e(435)](), 1);
617
+ }), [c] = C(y), l = new Date(o[a(310)](), o[a(435)](), 1 - o[a(320)]()), u = Array.from({ length: 42 }, (e, t) => new Date(l[a(310)](), l.getMonth(), l.getDate() + t)), d = (e) => s(new Date(o[a(310)](), o[a(435)]() + e, 1)), f = (e) => {
618
+ let t = a, n = /* @__PURE__ */ new Date();
619
+ n[t(402)](n[t(438)]() + e), r(v(n));
620
+ };
621
+ return q(a(383), {
622
+ className: a(433),
623
+ children: [
624
+ q(a(383), {
625
+ className: "ds-grid-date__head",
626
+ children: [q(n, {
627
+ variant: a(333),
628
+ numeric: !0,
629
+ children: [
630
+ o.getFullYear(),
631
+ "년 ",
632
+ o[a(435)]() + 1,
633
+ "월"
634
+ ]
635
+ }), q(a(383), { children: [K(i, {
636
+ iconOnly: !0,
637
+ size: "sm",
638
+ variant: a(430),
639
+ icon: K(A, {}),
640
+ "aria-label": a(401),
641
+ onClick: () => d(-1)
642
+ }), K(i, {
643
+ iconOnly: !0,
644
+ size: "sm",
645
+ variant: "ghost",
646
+ icon: K(j, {}),
647
+ "aria-label": a(419),
648
+ onClick: () => d(1)
649
+ })] })]
650
+ }),
651
+ q(a(383), {
652
+ className: a(352),
653
+ role: a(380),
654
+ children: [ie[a(312)]((e) => K(a(427), {
655
+ className: a(309),
656
+ children: e
657
+ }, e)), u[a(312)]((e) => {
658
+ let n = a, i = v(e);
659
+ return K(n(302), {
660
+ type: n(302),
661
+ className: n(373),
662
+ "data-outside": e[n(435)]() !== o[n(435)]() || void 0,
663
+ "data-today": i === c || void 0,
664
+ "aria-pressed": i === t,
665
+ onClick: () => r(i),
666
+ children: e[n(438)]()
667
+ }, i);
668
+ })]
669
+ }),
670
+ q(a(383), {
671
+ className: "ds-grid-date__quick",
672
+ children: [
673
+ K(i, {
674
+ size: "sm",
675
+ variant: a(430),
676
+ onClick: () => f(0),
677
+ children: "오늘"
678
+ }),
679
+ K(i, {
680
+ size: "sm",
681
+ variant: "ghost",
682
+ onClick: () => f(1),
683
+ children: "내일"
684
+ }),
685
+ K(i, {
686
+ size: "sm",
687
+ variant: a(430),
688
+ onClick: () => f(7),
689
+ children: a(382)
690
+ }),
691
+ K(i, {
692
+ size: "sm",
693
+ variant: "ghost",
694
+ onClick: () => r(null),
695
+ disabled: !t,
696
+ children: a(410)
697
+ })
698
+ ]
699
+ })
700
+ ]
701
+ });
702
+ }
703
+ export { X as AggregateMenu, Y as ColumnMenu, ae as DatePicker, Z as FilterPanel, ee as GroupMenu, re as OptionList, te as PropertiesPanel, Q as SortPanel, ne as ViewPanel };