@pibit.ai/cure-design-system 0.3.16 → 1.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.
Files changed (131) hide show
  1. package/dist/assets/icons/group-by.svg.js +4 -0
  2. package/dist/assets/icons/reorder-dots-new.svg.js +4 -0
  3. package/dist/assets/icons/reorder-dots.svg.js +4 -0
  4. package/dist/assets/icons/resize-1.svg.js +4 -0
  5. package/dist/assets/icons/resize-2.svg.js +4 -0
  6. package/dist/assets/icons/resize-4.svg.js +4 -0
  7. package/dist/assets/icons/resize-5.svg.js +4 -0
  8. package/dist/assets/icons/show-summary.svg.js +4 -0
  9. package/dist/index.d.ts +4 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +124 -62
  12. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Group.js +46 -0
  13. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Item.js +34 -0
  14. package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/auto-scroll.js +65 -0
  15. package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.js +17 -0
  16. package/dist/node_modules/framer-motion/dist/es/context/ReorderContext.js +5 -0
  17. package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.js +70 -0
  18. package/dist/node_modules/framer-motion/dist/es/value/use-combine-values.js +15 -0
  19. package/dist/node_modules/framer-motion/dist/es/value/use-computed.js +10 -0
  20. package/dist/node_modules/framer-motion/dist/es/value/use-motion-value.js +15 -0
  21. package/dist/node_modules/framer-motion/dist/es/value/use-transform.js +23 -0
  22. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +1 -1
  23. package/dist/node_modules/motion-dom/dist/es/utils/transform.js +8 -0
  24. package/dist/node_modules/motion-dom/dist/es/value/index.js +21 -18
  25. package/dist/node_modules/motion-utils/dist/es/array.js +15 -6
  26. package/dist/patterns/table/TablePagination.d.ts +23 -0
  27. package/dist/patterns/table/TablePagination.d.ts.map +1 -0
  28. package/dist/patterns/table/TablePagination.js +60 -0
  29. package/dist/patterns/table/TableWrapper.d.ts +2 -81
  30. package/dist/patterns/table/TableWrapper.d.ts.map +1 -1
  31. package/dist/patterns/table/TableWrapper.js +726 -157
  32. package/dist/patterns/table/index.d.ts +13 -2
  33. package/dist/patterns/table/index.d.ts.map +1 -1
  34. package/dist/patterns/table/pagination-base.d.ts +78 -0
  35. package/dist/patterns/table/pagination-base.d.ts.map +1 -0
  36. package/dist/patterns/table/pagination-base.js +127 -0
  37. package/dist/patterns/table/pagination-card.d.ts +9 -0
  38. package/dist/patterns/table/pagination-card.d.ts.map +1 -0
  39. package/dist/patterns/table/pagination-card.js +65 -0
  40. package/dist/patterns/table/row-height-icons.d.ts +9 -0
  41. package/dist/patterns/table/row-height-icons.d.ts.map +1 -0
  42. package/dist/patterns/table/row-height-icons.js +13 -0
  43. package/dist/patterns/table/storyHelpers/mockToolbarSlots.d.ts +7 -0
  44. package/dist/patterns/table/storyHelpers/mockToolbarSlots.d.ts.map +1 -0
  45. package/dist/patterns/table/storyHelpers/useMockTableState.d.ts +31 -0
  46. package/dist/patterns/table/storyHelpers/useMockTableState.d.ts.map +1 -0
  47. package/dist/patterns/table/storyHelpers/useMockTableToolbar.d.ts +3 -0
  48. package/dist/patterns/table/storyHelpers/useMockTableToolbar.d.ts.map +1 -0
  49. package/dist/patterns/table/table.d.ts +10 -13
  50. package/dist/patterns/table/table.d.ts.map +1 -1
  51. package/dist/patterns/table/table.js +235 -312
  52. package/dist/patterns/table/toolbar/AlignDropdown.d.ts +11 -0
  53. package/dist/patterns/table/toolbar/AlignDropdown.d.ts.map +1 -0
  54. package/dist/patterns/table/toolbar/AlignDropdown.js +77 -0
  55. package/dist/patterns/table/toolbar/BasicSortPanel.d.ts +6 -0
  56. package/dist/patterns/table/toolbar/BasicSortPanel.d.ts.map +1 -0
  57. package/dist/patterns/table/toolbar/BulkActionBar.d.ts +12 -0
  58. package/dist/patterns/table/toolbar/BulkActionBar.d.ts.map +1 -0
  59. package/dist/patterns/table/toolbar/BulkActionBar.js +62 -0
  60. package/dist/patterns/table/toolbar/ColumnHeaderMenu.d.ts +41 -0
  61. package/dist/patterns/table/toolbar/ColumnHeaderMenu.d.ts.map +1 -0
  62. package/dist/patterns/table/toolbar/ColumnHeaderMenu.js +171 -0
  63. package/dist/patterns/table/toolbar/GroupByDropdown.d.ts +11 -0
  64. package/dist/patterns/table/toolbar/GroupByDropdown.d.ts.map +1 -0
  65. package/dist/patterns/table/toolbar/GroupByDropdown.js +80 -0
  66. package/dist/patterns/table/toolbar/HideFieldsDropdown.d.ts +13 -0
  67. package/dist/patterns/table/toolbar/HideFieldsDropdown.d.ts.map +1 -0
  68. package/dist/patterns/table/toolbar/HideFieldsDropdown.js +180 -0
  69. package/dist/patterns/table/toolbar/LegacySortFilterTools.d.ts +9 -0
  70. package/dist/patterns/table/toolbar/LegacySortFilterTools.d.ts.map +1 -0
  71. package/dist/patterns/table/toolbar/RowActionsMenu.d.ts +19 -0
  72. package/dist/patterns/table/toolbar/RowActionsMenu.d.ts.map +1 -0
  73. package/dist/patterns/table/toolbar/RowActionsMenu.js +84 -0
  74. package/dist/patterns/table/toolbar/RowHeightDropdown.d.ts +9 -0
  75. package/dist/patterns/table/toolbar/RowHeightDropdown.d.ts.map +1 -0
  76. package/dist/patterns/table/toolbar/RowHeightDropdown.js +60 -0
  77. package/dist/patterns/table/toolbar/ShowSummaryDropdown.d.ts +8 -0
  78. package/dist/patterns/table/toolbar/ShowSummaryDropdown.d.ts.map +1 -0
  79. package/dist/patterns/table/toolbar/ShowSummaryDropdown.js +22 -0
  80. package/dist/patterns/table/toolbar/SummaryFooter.d.ts +16 -0
  81. package/dist/patterns/table/toolbar/SummaryFooter.d.ts.map +1 -0
  82. package/dist/patterns/table/toolbar/SummaryFooter.js +83 -0
  83. package/dist/patterns/table/toolbar/TableToolbar.d.ts +55 -0
  84. package/dist/patterns/table/toolbar/TableToolbar.d.ts.map +1 -0
  85. package/dist/patterns/table/toolbar/TableToolbar.js +234 -0
  86. package/dist/patterns/table/toolbar/ToolbarRadio.d.ts +18 -0
  87. package/dist/patterns/table/toolbar/ToolbarRadio.d.ts.map +1 -0
  88. package/dist/patterns/table/toolbar/ToolbarRadio.js +63 -0
  89. package/dist/patterns/table/toolbar/index.d.ts +24 -0
  90. package/dist/patterns/table/toolbar/index.d.ts.map +1 -0
  91. package/dist/patterns/table/toolbar/legacyToolbarTypes.d.ts +69 -0
  92. package/dist/patterns/table/toolbar/legacyToolbarTypes.d.ts.map +1 -0
  93. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts +35 -0
  94. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts.map +1 -0
  95. package/dist/patterns/table/toolbar/tableToolbarHelpers.js +259 -0
  96. package/dist/patterns/table/toolbar/tableToolbarHelpers.test.d.ts +2 -0
  97. package/dist/patterns/table/toolbar/tableToolbarHelpers.test.d.ts.map +1 -0
  98. package/dist/patterns/table/toolbar/toolbarExtensions.d.ts +12 -0
  99. package/dist/patterns/table/toolbar/toolbarExtensions.d.ts.map +1 -0
  100. package/dist/patterns/table/toolbar/toolbarExtensions.js +18 -0
  101. package/dist/patterns/table/toolbar-icons.d.ts +8 -0
  102. package/dist/patterns/table/toolbar-icons.d.ts.map +1 -0
  103. package/dist/patterns/table/toolbar-icons.js +13 -0
  104. package/dist/patterns/table/types.d.ts +141 -0
  105. package/dist/patterns/table/types.d.ts.map +1 -0
  106. package/dist/patterns/table/useGridKeyboardNavigation.d.ts +38 -0
  107. package/dist/patterns/table/useGridKeyboardNavigation.d.ts.map +1 -0
  108. package/dist/patterns/table/useGridKeyboardNavigation.js +65 -0
  109. package/dist/primitives/checkbox/checkbox.d.ts +2 -2
  110. package/dist/primitives/checkbox/checkbox.d.ts.map +1 -1
  111. package/dist/primitives/dropdown/dropdown.d.ts +32 -0
  112. package/dist/primitives/dropdown/dropdown.d.ts.map +1 -0
  113. package/dist/primitives/dropdown/dropdown.js +118 -0
  114. package/dist/primitives/dropdown/index.d.ts +2 -0
  115. package/dist/primitives/dropdown/index.d.ts.map +1 -0
  116. package/dist/primitives/select/ExpandableSearchInput.d.ts +5 -1
  117. package/dist/primitives/select/ExpandableSearchInput.d.ts.map +1 -1
  118. package/dist/primitives/select/ExpandableSearchInput.js +80 -77
  119. package/dist/primitives/shimmer/index.d.ts +2 -0
  120. package/dist/primitives/shimmer/index.d.ts.map +1 -0
  121. package/dist/primitives/shimmer/shimmer.d.ts +24 -0
  122. package/dist/primitives/shimmer/shimmer.d.ts.map +1 -0
  123. package/dist/primitives/shimmer/shimmer.js +37 -0
  124. package/dist/primitives/tooltip/ellipsis-content.d.ts +12 -0
  125. package/dist/primitives/tooltip/ellipsis-content.d.ts.map +1 -0
  126. package/dist/primitives/tooltip/ellipsis-content.js +113 -0
  127. package/dist/primitives/tooltip/index.d.ts +1 -0
  128. package/dist/primitives/tooltip/index.d.ts.map +1 -1
  129. package/dist/styles/components.css +1 -1
  130. package/dist/styles/theme.css +1 -1
  131. package/package.json +1 -1
@@ -0,0 +1,180 @@
1
+ import { jsxs as d, jsx as s } from "react/jsx-runtime";
2
+ import { useState as g, useEffect as j, useMemo as x } from "react";
3
+ import { EyeOff as q, Eye as K } from "@untitledui/icons";
4
+ import _ from "../../../primitives/select/SearchInput.js";
5
+ import { cx as I } from "../../../utils/cn.js";
6
+ import { TOOLBAR_ICONS as $ } from "../toolbar-icons.js";
7
+ import { resolveColumnLabel as F } from "./tableToolbarHelpers.js";
8
+ import { Dropdown as H } from "../../../primitives/dropdown/dropdown.js";
9
+ import { Button as z } from "../../../primitives/button/button.js";
10
+ import { useDragControls as G } from "../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.js";
11
+ import { Toggle as M } from "../../../primitives/toggle/toggle.js";
12
+ import { ReorderGroup as J } from "../../../node_modules/framer-motion/dist/es/components/Reorder/Group.js";
13
+ import { ReorderItem as Q } from "../../../node_modules/framer-motion/dist/es/components/Reorder/Item.js";
14
+ const U = ({ columnKey: a, label: o, isHidden: p, isDisabled: i, onToggle: u }) => {
15
+ const l = G();
16
+ return /* @__PURE__ */ d(
17
+ Q,
18
+ {
19
+ value: a,
20
+ as: "div",
21
+ dragListener: !1,
22
+ dragControls: l,
23
+ className: "flex items-center gap-2 rounded-md bg-primary px-2 py-1.5 hover:bg-primary_hover",
24
+ style: { position: "relative" },
25
+ whileDrag: {
26
+ opacity: 0.85,
27
+ scale: 1.02,
28
+ boxShadow: "0 8px 24px rgba(0, 0, 0, 0.12)",
29
+ zIndex: 50
30
+ },
31
+ transition: { type: "spring", stiffness: 300, damping: 25 },
32
+ children: [
33
+ /* @__PURE__ */ s(
34
+ M,
35
+ {
36
+ "aria-label": `Toggle visibility of ${o}`,
37
+ isSelected: !p,
38
+ isDisabled: i,
39
+ onChange: u,
40
+ size: "sm",
41
+ slim: !0
42
+ }
43
+ ),
44
+ /* @__PURE__ */ s(
45
+ "span",
46
+ {
47
+ className: I("flex-1 truncate text-xs", p ? "text-tertiary" : "text-secondary"),
48
+ title: o,
49
+ children: o
50
+ }
51
+ ),
52
+ /* @__PURE__ */ s(
53
+ "div",
54
+ {
55
+ onPointerDown: (v) => l.start(v),
56
+ className: "shrink-0 cursor-grab text-fg-quaternary hover:text-fg-secondary touch-none select-none",
57
+ "aria-label": `Drag ${o}`,
58
+ title: "Drag to reorder",
59
+ children: /* @__PURE__ */ s("img", { src: $.reorderDots, alt: "", className: "h-4 w-4 pointer-events-none" })
60
+ }
61
+ )
62
+ ]
63
+ }
64
+ );
65
+ }, ie = ({
66
+ schema: a,
67
+ hiddenColumns: o,
68
+ setHiddenColumns: p,
69
+ columnOrder: i,
70
+ setColumnOrder: u,
71
+ labelMeta: l,
72
+ isDisabled: v
73
+ }) => {
74
+ const [y, D] = g(!1), [b, R] = g(""), [f, w] = g(() => new Set(o)), [N, m] = g(() => [...i]);
75
+ j(() => {
76
+ y && (w(new Set(o)), m([...i]), R(""));
77
+ }, [y, o, i]);
78
+ const c = x(() => {
79
+ const e = /* @__PURE__ */ new Map();
80
+ for (const r of a) e.set(r.value, F(r, l));
81
+ return e;
82
+ }, [a, l]), n = x(() => {
83
+ const e = /* @__PURE__ */ new Set(), r = [];
84
+ for (const t of N)
85
+ c.has(t) && !e.has(t) && (e.add(t), r.push(t));
86
+ for (const t of a)
87
+ e.has(t.value) || (e.add(t.value), r.push(t.value));
88
+ return r;
89
+ }, [N, a, c]), h = x(() => {
90
+ const e = b.trim().toLowerCase();
91
+ return e ? n.filter((r) => (c.get(r) ?? r).toLowerCase().includes(e)) : n;
92
+ }, [n, b, c]), T = (e) => {
93
+ if (e.length === n.length) {
94
+ m(e);
95
+ return;
96
+ }
97
+ const r = new Set(h), t = [...e], C = n.map((L) => r.has(L) ? t.shift() : L);
98
+ m(C);
99
+ }, A = x(
100
+ () => n.filter((e) => !f.has(e)).length,
101
+ [n, f]
102
+ ), P = (e) => {
103
+ w((r) => {
104
+ const t = new Set(r);
105
+ if (t.has(e))
106
+ t.delete(e);
107
+ else {
108
+ if (n.filter((C) => !r.has(C)).length <= 1)
109
+ return r;
110
+ t.add(e);
111
+ }
112
+ return t;
113
+ });
114
+ }, B = () => {
115
+ w(/* @__PURE__ */ new Set()), m(a.map((e) => e.value));
116
+ }, E = () => {
117
+ p(new Set(f)), u([...N]), D(!1);
118
+ }, O = o.size, S = O > 0;
119
+ return /* @__PURE__ */ d(H.Root, { isOpen: y, onOpenChange: D, children: [
120
+ /* @__PURE__ */ d(
121
+ z,
122
+ {
123
+ size: "xs",
124
+ color: "secondary",
125
+ isDisabled: v,
126
+ iconLeading: S ? /* @__PURE__ */ s(q, { size: 12 }) : /* @__PURE__ */ s(K, { size: 12 }),
127
+ className: I(
128
+ S && "ring-1 ring-brand-600 bg-brand-primary text-brand-600 hover:bg-brand-primary hover:text-brand-600"
129
+ ),
130
+ children: [
131
+ "Hide Fields",
132
+ S && /* @__PURE__ */ s("span", { className: "text-xs font-semibold text-brand-600 ml-1", children: O })
133
+ ]
134
+ }
135
+ ),
136
+ /* @__PURE__ */ s(H.Popover, { className: "max-h-[60vh]", children: /* @__PURE__ */ d("div", { className: "flex flex-col gap-2 p-[6px]", children: [
137
+ /* @__PURE__ */ s(
138
+ _,
139
+ {
140
+ size: "sm",
141
+ placeholder: "Search fields",
142
+ value: b,
143
+ onChange: (e) => R(e),
144
+ className: "w-full ring-0 outline-hidden bg-secondary rounded-lg"
145
+ }
146
+ ),
147
+ /* @__PURE__ */ s("div", { className: "max-h-[40vh] overflow-y-auto scrollbar-hide pr-0.5", children: h.length === 0 ? /* @__PURE__ */ s("p", { className: "px-2 py-3 text-xs text-tertiary", children: "No fields match." }) : /* @__PURE__ */ s(
148
+ J,
149
+ {
150
+ as: "div",
151
+ axis: "y",
152
+ values: h,
153
+ onReorder: T,
154
+ className: "flex flex-col gap-0.5",
155
+ children: h.map((e) => {
156
+ const r = f.has(e);
157
+ return /* @__PURE__ */ s(
158
+ U,
159
+ {
160
+ columnKey: e,
161
+ label: c.get(e) ?? e,
162
+ isHidden: r,
163
+ isDisabled: !r && A === 1,
164
+ onToggle: () => P(e)
165
+ },
166
+ e
167
+ );
168
+ })
169
+ }
170
+ ) }),
171
+ /* @__PURE__ */ d("div", { className: "flex gap-2 pt-1 px-2 pb-2", children: [
172
+ /* @__PURE__ */ s(z, { color: "secondary", size: "xs", onClick: B, className: "flex-1", children: "Reset" }),
173
+ /* @__PURE__ */ s(z, { color: "primary", size: "xs", onClick: E, className: "flex-1", children: "Apply" })
174
+ ] })
175
+ ] }) })
176
+ ] });
177
+ };
178
+ export {
179
+ ie as HideFieldsDropdown
180
+ };
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ import { LegacyFilterToolConfig, LegacySortToolConfig } from './legacyToolbarTypes';
3
+ export declare const LegacySortTool: FC<{
4
+ config: LegacySortToolConfig;
5
+ }>;
6
+ export declare const LegacyFilterTool: FC<{
7
+ config: LegacyFilterToolConfig;
8
+ }>;
9
+ //# sourceMappingURL=LegacySortFilterTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegacySortFilterTools.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/LegacySortFilterTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGzF,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAmD/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAuCnE,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface RowActionsConfig<T extends Record<string, unknown> = Record<string, unknown>> {
2
+ onAddRowAbove?: (sourceRowIndex: number, item: T) => void;
3
+ onAddRowBelow?: (sourceRowIndex: number, item: T) => void;
4
+ onDuplicateRow?: (sourceRowIndex: number, item: T) => void;
5
+ onCopyRowValues?: (sourceRowIndex: number, item: T) => void;
6
+ onPasteRowValues?: (sourceRowIndex: number, item: T) => void;
7
+ onDeleteRow?: (sourceRowIndex: number, item: T) => void;
8
+ canPasteRowValues?: boolean;
9
+ }
10
+ interface RowActionsMenuProps<T extends Record<string, unknown>> {
11
+ config: RowActionsConfig<T>;
12
+ sourceRowIndex: number;
13
+ item: T;
14
+ triggerClassName?: string;
15
+ onOpenChange?: (open: boolean) => void;
16
+ }
17
+ export declare function RowActionsMenu<T extends Record<string, unknown>>({ config, sourceRowIndex, item, triggerClassName, onOpenChange, }: RowActionsMenuProps<T>): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=RowActionsMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowActionsMenu.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/RowActionsMenu.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3F,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1D,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3D,eAAe,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5D,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IACxD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAqCD,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC;IACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAChE,MAAM,EACN,cAAc,EACd,IAAI,EACJ,gBAAgB,EAChB,YAAY,GACb,EAAE,mBAAmB,CAAC,CAAC,CAAC,2CAgExB"}
@@ -0,0 +1,84 @@
1
+ import { jsxs as c, jsx as e, Fragment as v } from "react/jsx-runtime";
2
+ import { useState as A } from "react";
3
+ import { ArrowUp as h, ArrowDown as C, Copy06 as f, Copy01 as D, Clipboard as N, Trash01 as k } from "@untitledui/icons";
4
+ import { Button as P } from "react-aria-components";
5
+ import { cx as u } from "../../../utils/cn.js";
6
+ import { TOOLBAR_ICONS as V } from "../toolbar-icons.js";
7
+ import { Dropdown as b } from "../../../primitives/dropdown/dropdown.js";
8
+ const a = ({ icon: o, label: n, danger: i, disabled: s, onClick: l }) => /* @__PURE__ */ c(
9
+ "button",
10
+ {
11
+ type: "button",
12
+ disabled: s,
13
+ onClick: l,
14
+ className: u(
15
+ "flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-xs font-medium transition-colors outline-none",
16
+ s ? "cursor-not-allowed text-disabled" : i ? "cursor-pointer text-error-primary hover:bg-error-primary" : "cursor-pointer text-secondary hover:bg-primary_hover"
17
+ ),
18
+ children: [
19
+ /* @__PURE__ */ e(
20
+ o,
21
+ {
22
+ size: 16,
23
+ className: u(
24
+ "shrink-0",
25
+ s ? "text-fg-disabled" : i ? "text-error-primary" : "text-fg-quaternary"
26
+ )
27
+ }
28
+ ),
29
+ /* @__PURE__ */ e("span", { className: "flex-1 truncate", children: n })
30
+ ]
31
+ }
32
+ ), y = () => /* @__PURE__ */ e("div", { className: "my-1 h-px w-full bg-secondary" });
33
+ function G({
34
+ config: o,
35
+ sourceRowIndex: n,
36
+ item: i,
37
+ triggerClassName: s,
38
+ onOpenChange: l
39
+ }) {
40
+ const [p, x] = A(!1), d = (t) => {
41
+ x(t), l == null || l(t);
42
+ }, r = (t) => () => {
43
+ t == null || t(n, i), d(!1);
44
+ }, w = o.onAddRowAbove || o.onAddRowBelow, m = o.onDuplicateRow || o.onCopyRowValues || o.onPasteRowValues, R = o.canPasteRowValues ?? !0;
45
+ return /* @__PURE__ */ c(b.Root, { isOpen: p, onOpenChange: d, children: [
46
+ /* @__PURE__ */ e(
47
+ P,
48
+ {
49
+ "aria-label": `Open row actions for row ${n + 1}`,
50
+ className: u(
51
+ "flex items-center justify-center outline-none cursor-pointer",
52
+ "text-fg-quaternary hover:bg-secondary_subtle hover:text-fg-quaternary_hover",
53
+ "data-[pressed]:bg-secondary_subtle data-[focus-visible]:ring-2 data-[focus-visible]:ring-focus-ring",
54
+ p && "opacity-100",
55
+ s
56
+ ),
57
+ children: /* @__PURE__ */ e("img", { src: V.reorderDotsNew, alt: "", className: "h-4 w-4" })
58
+ }
59
+ ),
60
+ /* @__PURE__ */ e(b.Popover, { className: "w-56", children: /* @__PURE__ */ c("div", { className: "flex flex-col px-1.5 py-1", children: [
61
+ o.onAddRowAbove && /* @__PURE__ */ e(a, { icon: h, label: "Add row above", onClick: r(o.onAddRowAbove) }),
62
+ o.onAddRowBelow && /* @__PURE__ */ e(a, { icon: C, label: "Add row below", onClick: r(o.onAddRowBelow) }),
63
+ w && m && /* @__PURE__ */ e(y, {}),
64
+ o.onDuplicateRow && /* @__PURE__ */ e(a, { icon: f, label: "Duplicate row", onClick: r(o.onDuplicateRow) }),
65
+ o.onCopyRowValues && /* @__PURE__ */ e(a, { icon: D, label: "Copy row values", onClick: r(o.onCopyRowValues) }),
66
+ o.onPasteRowValues && /* @__PURE__ */ e(
67
+ a,
68
+ {
69
+ icon: N,
70
+ label: "Paste row values",
71
+ disabled: !R,
72
+ onClick: r(o.onPasteRowValues)
73
+ }
74
+ ),
75
+ o.onDeleteRow && /* @__PURE__ */ c(v, { children: [
76
+ (w || m) && /* @__PURE__ */ e(y, {}),
77
+ /* @__PURE__ */ e(a, { icon: k, label: "Delete row", danger: !0, onClick: r(o.onDeleteRow) })
78
+ ] })
79
+ ] }) })
80
+ ] });
81
+ }
82
+ export {
83
+ G as RowActionsMenu
84
+ };
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ export type RowHeightOption = "small" | "medium" | "large" | "xl";
3
+ export interface RowHeightDropdownProps {
4
+ value: RowHeightOption;
5
+ onChange: (value: RowHeightOption) => void;
6
+ isDisabled?: boolean;
7
+ }
8
+ export declare const RowHeightDropdown: FC<RowHeightDropdownProps>;
9
+ //# sourceMappingURL=RowHeightDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowHeightDropdown.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/RowHeightDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAelE,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA8CxD,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { Check as d } from "@untitledui/icons";
3
+ import { cx as s } from "../../../utils/cn.js";
4
+ import { ROW_HEIGHT_ICONS as l } from "../row-height-icons.js";
5
+ import { Dropdown as o } from "../../../primitives/dropdown/dropdown.js";
6
+ import { Button as x } from "../../../primitives/button/button.js";
7
+ const h = [
8
+ { id: "small", label: "Small", iconSrc: l.small },
9
+ { id: "medium", label: "Medium", iconSrc: l.medium },
10
+ { id: "large", label: "Large", iconSrc: l.large },
11
+ { id: "xl", label: "XL", iconSrc: l.xl }
12
+ ], S = ({ value: c, onChange: n, isDisabled: m }) => {
13
+ const t = c !== "small";
14
+ return /* @__PURE__ */ a(o.Root, { children: [
15
+ /* @__PURE__ */ e(
16
+ x,
17
+ {
18
+ size: "xs",
19
+ color: "secondary",
20
+ isDisabled: m,
21
+ iconLeading: /* @__PURE__ */ e("img", { src: l.small, alt: "", className: "h-3 w-3" }),
22
+ className: s(
23
+ t && "ring-1 ring-brand-600 bg-brand-primary text-brand-600 hover:bg-brand-primary hover:text-brand-600"
24
+ ),
25
+ children: "Row Height"
26
+ }
27
+ ),
28
+ /* @__PURE__ */ e(o.Popover, { className: "w-44", children: /* @__PURE__ */ e("div", { className: "flex flex-col gap-1 py-1 px-2", children: /* @__PURE__ */ e("ul", { className: "flex flex-col", children: h.map((r) => {
29
+ const i = c === r.id;
30
+ return /* @__PURE__ */ a(
31
+ "li",
32
+ {
33
+ className: s([
34
+ "flex items-center gap-2 rounded-md px-2 py-2",
35
+ i && "bg-utility-brand-25",
36
+ !i && "text-secondary hover:bg-primary_hover"
37
+ ]),
38
+ children: [
39
+ /* @__PURE__ */ a(
40
+ "div",
41
+ {
42
+ onClick: () => n(r.id),
43
+ className: "flex w-full items-center gap-2 text-xs font-medium text-left transition-colors",
44
+ children: [
45
+ /* @__PURE__ */ e("img", { src: r.iconSrc, alt: "", className: "h-4 w-4 shrink-0" }),
46
+ /* @__PURE__ */ e("span", { className: "flex-1", children: r.label })
47
+ ]
48
+ }
49
+ ),
50
+ i && /* @__PURE__ */ e(d, { size: 16, className: "shrink-0 text-brand-600" })
51
+ ]
52
+ },
53
+ r.id
54
+ );
55
+ }) }) }) })
56
+ ] });
57
+ };
58
+ export {
59
+ S as RowHeightDropdown
60
+ };
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ export interface ShowSummaryDropdownProps {
3
+ value: boolean;
4
+ onChange: (next: boolean) => void;
5
+ isDisabled?: boolean;
6
+ }
7
+ export declare const ShowSummaryDropdown: FC<ShowSummaryDropdownProps>;
8
+ //# sourceMappingURL=ShowSummaryDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowSummaryDropdown.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/ShowSummaryDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAe5D,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { cx as i } from "../../../utils/cn.js";
3
+ import { TOOLBAR_ICONS as n } from "../toolbar-icons.js";
4
+ import { Button as s } from "../../../primitives/button/button.js";
5
+ const p = ({ value: r, onChange: m, isDisabled: a }) => /* @__PURE__ */ o(
6
+ s,
7
+ {
8
+ size: "xs",
9
+ color: "secondary",
10
+ isDisabled: a,
11
+ iconLeading: /* @__PURE__ */ o("img", { src: n.showSummary, alt: "", className: "h-3 w-3" }),
12
+ onClick: () => m(!r),
13
+ "aria-pressed": r,
14
+ className: i(
15
+ r && "ring-1 ring-brand-600 bg-brand-primary text-brand-600 hover:bg-brand-primary hover:text-brand-600"
16
+ ),
17
+ children: "Show Summary"
18
+ }
19
+ );
20
+ export {
21
+ p as ShowSummaryDropdown
22
+ };
@@ -0,0 +1,16 @@
1
+ import { Dispatch, FC, SetStateAction } from 'react';
2
+ import { TableColumnSchema } from '../types';
3
+ import { AggregationType, CellAlignment } from './tableToolbarHelpers';
4
+ export interface SummaryFooterRowProps {
5
+ schema: TableColumnSchema[];
6
+ summaryByColumn: Record<string, string>;
7
+ summaryAggregations: ReadonlyMap<string, AggregationType>;
8
+ setSummaryAggregations: Dispatch<SetStateAction<Map<string, AggregationType>>>;
9
+ columnAlignments: ReadonlyMap<string, CellAlignment>;
10
+ fieldDataTypeMap?: Readonly<Record<string, string>>;
11
+ hasActionsColumn: boolean;
12
+ hasSelectionColumn?: boolean;
13
+ showBorders: boolean;
14
+ }
15
+ export declare const SummaryFooterRow: FC<SummaryFooterRowProps>;
16
+ //# sourceMappingURL=SummaryFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SummaryFooter.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/SummaryFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAM1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAInB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1D,sBAAsB,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/E,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrD,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB;AAsDD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAkEtD,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { jsxs as u, jsx as e } from "react/jsx-runtime";
2
+ import { ChevronDown as C } from "@untitledui/icons";
3
+ import { Button as A } from "react-aria-components";
4
+ import { Table as m } from "../table.js";
5
+ import { cx as f } from "../../../utils/cn.js";
6
+ import { getEffectiveAlignment as L, getAggregationsForType as j, resolveAggregationValueType as S, AGGREGATION_CELL_LABELS as R } from "./tableToolbarHelpers.js";
7
+ import { Dropdown as d } from "../../../primitives/dropdown/dropdown.js";
8
+ const T = (n) => n === "right" ? "justify-end" : n === "center" ? "justify-center" : "justify-start", _ = ({
9
+ column: n,
10
+ aggregation: l,
11
+ displayValue: a,
12
+ align: g,
13
+ fieldDataTypeMap: p,
14
+ onChange: b
15
+ }) => {
16
+ const i = j(S(n, p)), s = R[l];
17
+ return /* @__PURE__ */ u(d.Root, { children: [
18
+ /* @__PURE__ */ u(
19
+ A,
20
+ {
21
+ className: f(
22
+ "group flex w-full items-center gap-2 rounded px-2 py-1 text-xs outline-hidden",
23
+ "text-tertiary hover:bg-primary_hover cursor-pointer",
24
+ T(g)
25
+ ),
26
+ "aria-label": `${s}${a ? `: ${a}` : ""}`,
27
+ children: [
28
+ /* @__PURE__ */ u("span", { className: "flex items-center gap-1.5 min-w-0", children: [
29
+ /* @__PURE__ */ e("span", { className: "font-normal text-tertiary", children: s }),
30
+ a && /* @__PURE__ */ e("span", { className: "font-semibold text-secondary truncate", children: a })
31
+ ] }),
32
+ /* @__PURE__ */ e(C, { size: 12, className: "ml-auto shrink-0 text-fg-quaternary" })
33
+ ]
34
+ }
35
+ ),
36
+ /* @__PURE__ */ e(d.Popover, { className: "w-44", children: /* @__PURE__ */ e(d.Menu, { selectionMode: "none", onAction: (t) => b(t), children: i.map((t) => /* @__PURE__ */ e(d.Item, { id: t.id, label: t.label, isSelected: l === t.id }, t.id)) }) })
37
+ ] });
38
+ }, k = ({
39
+ schema: n,
40
+ summaryByColumn: l,
41
+ summaryAggregations: a,
42
+ setSummaryAggregations: g,
43
+ columnAlignments: p,
44
+ hasActionsColumn: b,
45
+ hasSelectionColumn: i = !1,
46
+ showBorders: s,
47
+ fieldDataTypeMap: t
48
+ }) => {
49
+ const v = (r, c) => {
50
+ g((h) => {
51
+ const o = new Map(h);
52
+ return c === "count" ? o.delete(r) : o.set(r, c), o;
53
+ });
54
+ }, y = i ? "selection" : n.length > 0 ? "first-schema" : "none", x = () => /* @__PURE__ */ e("span", { className: "text-xs font-medium text-tertiary px-2 py-1", children: "Summary" });
55
+ return /* @__PURE__ */ u(m.Row, { className: "bg-secondary_subtle hover:bg-secondary_subtle", highlightSelectedRow: !1, children: [
56
+ i && /* @__PURE__ */ e(m.Cell, { className: f("relative w-10", s && "border-r border-secondary last:border-r-0"), children: y === "selection" && x() }),
57
+ n.map((r, c) => {
58
+ const h = a.get(r.value) ?? "count", o = L(r, p), N = y === "first-schema" && c === 0;
59
+ return /* @__PURE__ */ e(
60
+ m.Cell,
61
+ {
62
+ className: f("relative", s && "border-r border-secondary last:border-r-0"),
63
+ children: N ? x() : /* @__PURE__ */ e("div", { className: "absolute inset-0 flex items-center px-3", children: /* @__PURE__ */ e(
64
+ _,
65
+ {
66
+ column: r,
67
+ aggregation: h,
68
+ displayValue: l[r.value] ?? "",
69
+ align: o,
70
+ fieldDataTypeMap: t,
71
+ onChange: (w) => v(r.value, w)
72
+ }
73
+ ) })
74
+ },
75
+ r.value
76
+ );
77
+ }),
78
+ b && /* @__PURE__ */ e(m.Cell, { className: f("relative w-14", s && "border-r border-secondary last:border-r-0") })
79
+ ] });
80
+ };
81
+ export {
82
+ k as SummaryFooterRow
83
+ };
@@ -0,0 +1,55 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { AlignDropdownProps } from './AlignDropdown';
3
+ import { GroupByDropdownProps } from './GroupByDropdown';
4
+ import { HideFieldsDropdownProps } from './HideFieldsDropdown';
5
+ import { RowHeightDropdownProps } from './RowHeightDropdown';
6
+ import { ShowSummaryDropdownProps } from './ShowSummaryDropdown';
7
+ import { LegacyFilterToolConfig, LegacySortToolConfig } from './legacyToolbarTypes';
8
+ export type SortToolConfig = LegacySortToolConfig;
9
+ export type FilterToolConfig = LegacyFilterToolConfig;
10
+ export interface SearchToolConfig {
11
+ value: string;
12
+ onChange: (value: string) => void;
13
+ }
14
+ export type RowHeightToolConfig = RowHeightDropdownProps;
15
+ export type HideFieldsToolConfig = HideFieldsDropdownProps;
16
+ export type AlignToolConfig = AlignDropdownProps;
17
+ export type GroupByToolConfig = GroupByDropdownProps;
18
+ export type SummaryToolConfig = ShowSummaryDropdownProps;
19
+ export interface TableToolbarProps {
20
+ className?: string;
21
+ fallbackTitle?: string;
22
+ showUndoRedo?: boolean;
23
+ sort?: SortToolConfig;
24
+ filter?: FilterToolConfig;
25
+ search?: SearchToolConfig;
26
+ rowHeight?: RowHeightToolConfig;
27
+ hideFields?: HideFieldsToolConfig;
28
+ align?: AlignToolConfig;
29
+ groupBy?: GroupByToolConfig;
30
+ summary?: SummaryToolConfig;
31
+ trailing?: ReactNode;
32
+ searchCollapsible?: boolean;
33
+ disableExtendedTools?: boolean;
34
+ /** Consumer-rendered sort UI (e.g. platform-ui `SortComponent`). Required for sort popover content. */
35
+ sortContent?: ReactNode;
36
+ /** Consumer-rendered filter UI (e.g. platform-ui `SchemaFilter`). Required for filter popover content. */
37
+ filterContent?: ReactNode;
38
+ }
39
+ export declare const TableToolbar: FC<TableToolbarProps>;
40
+ /** Sort, filter, and search only — extended tools must be passed explicitly when enabled. */
41
+ export declare function pickCoreToolbarProps(toolbar: {
42
+ sort?: SortToolConfig;
43
+ filter?: FilterToolConfig;
44
+ search?: SearchToolConfig;
45
+ rowHeight?: RowHeightToolConfig;
46
+ hideFields?: HideFieldsToolConfig;
47
+ align?: AlignToolConfig;
48
+ groupBy?: GroupByToolConfig;
49
+ summary?: SummaryToolConfig;
50
+ }): {
51
+ sort?: SortToolConfig;
52
+ filter?: FilterToolConfig;
53
+ search?: SearchToolConfig;
54
+ };
55
+ //# sourceMappingURL=TableToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableToolbar.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/TableToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AACjD,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uGAAuG;IACvG,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,0GAA0G;IAC1G,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AA+DD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAsG9C,CAAC;AAsHF,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG;IACF,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAMA"}