@pibit.ai/cure-design-system 0.3.17 → 0.3.20

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 (144) hide show
  1. package/dist/applications/schedule-calendar/index.d.ts +4 -0
  2. package/dist/applications/schedule-calendar/index.d.ts.map +1 -0
  3. package/dist/applications/schedule-calendar/schedule-calendar.d.ts +3 -0
  4. package/dist/applications/schedule-calendar/schedule-calendar.d.ts.map +1 -0
  5. package/dist/applications/schedule-calendar/schedule-calendar.js +202 -0
  6. package/dist/applications/schedule-calendar/types.d.ts +56 -0
  7. package/dist/applications/schedule-calendar/types.d.ts.map +1 -0
  8. package/dist/applications/schedule-calendar/types.js +40 -0
  9. package/dist/applications/schedule-calendar/utils.d.ts +21 -0
  10. package/dist/applications/schedule-calendar/utils.d.ts.map +1 -0
  11. package/dist/applications/schedule-calendar/utils.js +152 -0
  12. package/dist/applications/schedule-calendar/utils.test.d.ts +2 -0
  13. package/dist/applications/schedule-calendar/utils.test.d.ts.map +1 -0
  14. package/dist/assets/icons/group-by.svg.js +4 -0
  15. package/dist/assets/icons/reorder-dots-new.svg.js +4 -0
  16. package/dist/assets/icons/reorder-dots.svg.js +4 -0
  17. package/dist/assets/icons/resize-1.svg.js +4 -0
  18. package/dist/assets/icons/resize-2.svg.js +4 -0
  19. package/dist/assets/icons/resize-4.svg.js +4 -0
  20. package/dist/assets/icons/resize-5.svg.js +4 -0
  21. package/dist/assets/icons/show-summary.svg.js +4 -0
  22. package/dist/index.d.ts +5 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +132 -59
  25. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Group.js +46 -0
  26. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Item.js +34 -0
  27. package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/auto-scroll.js +65 -0
  28. package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.js +17 -0
  29. package/dist/node_modules/framer-motion/dist/es/context/ReorderContext.js +5 -0
  30. package/dist/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.js +70 -0
  31. package/dist/node_modules/framer-motion/dist/es/value/use-combine-values.js +15 -0
  32. package/dist/node_modules/framer-motion/dist/es/value/use-computed.js +10 -0
  33. package/dist/node_modules/framer-motion/dist/es/value/use-motion-value.js +15 -0
  34. package/dist/node_modules/framer-motion/dist/es/value/use-transform.js +23 -0
  35. package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +1 -1
  36. package/dist/node_modules/motion-dom/dist/es/utils/transform.js +8 -0
  37. package/dist/node_modules/motion-dom/dist/es/value/index.js +21 -18
  38. package/dist/node_modules/motion-utils/dist/es/array.js +15 -6
  39. package/dist/patterns/table/TablePagination.d.ts +23 -0
  40. package/dist/patterns/table/TablePagination.d.ts.map +1 -0
  41. package/dist/patterns/table/TablePagination.js +60 -0
  42. package/dist/patterns/table/TableWrapper.d.ts +2 -72
  43. package/dist/patterns/table/TableWrapper.d.ts.map +1 -1
  44. package/dist/patterns/table/TableWrapper.js +730 -75
  45. package/dist/patterns/table/index.d.ts +11 -1
  46. package/dist/patterns/table/index.d.ts.map +1 -1
  47. package/dist/patterns/table/pagination-base.d.ts +78 -0
  48. package/dist/patterns/table/pagination-base.d.ts.map +1 -0
  49. package/dist/patterns/table/pagination-base.js +127 -0
  50. package/dist/patterns/table/pagination-card.d.ts +9 -0
  51. package/dist/patterns/table/pagination-card.d.ts.map +1 -0
  52. package/dist/patterns/table/pagination-card.js +65 -0
  53. package/dist/patterns/table/row-height-icons.d.ts +9 -0
  54. package/dist/patterns/table/row-height-icons.d.ts.map +1 -0
  55. package/dist/patterns/table/row-height-icons.js +13 -0
  56. package/dist/patterns/table/storyHelpers/mockToolbarSlots.d.ts +7 -0
  57. package/dist/patterns/table/storyHelpers/mockToolbarSlots.d.ts.map +1 -0
  58. package/dist/patterns/table/storyHelpers/useMockTableState.d.ts +31 -0
  59. package/dist/patterns/table/storyHelpers/useMockTableState.d.ts.map +1 -0
  60. package/dist/patterns/table/storyHelpers/useMockTableToolbar.d.ts +3 -0
  61. package/dist/patterns/table/storyHelpers/useMockTableToolbar.d.ts.map +1 -0
  62. package/dist/patterns/table/table.d.ts +10 -13
  63. package/dist/patterns/table/table.d.ts.map +1 -1
  64. package/dist/patterns/table/table.js +235 -312
  65. package/dist/patterns/table/toolbar/AlignDropdown.d.ts +11 -0
  66. package/dist/patterns/table/toolbar/AlignDropdown.d.ts.map +1 -0
  67. package/dist/patterns/table/toolbar/AlignDropdown.js +77 -0
  68. package/dist/patterns/table/toolbar/BasicSortPanel.d.ts +6 -0
  69. package/dist/patterns/table/toolbar/BasicSortPanel.d.ts.map +1 -0
  70. package/dist/patterns/table/toolbar/BulkActionBar.d.ts +12 -0
  71. package/dist/patterns/table/toolbar/BulkActionBar.d.ts.map +1 -0
  72. package/dist/patterns/table/toolbar/BulkActionBar.js +62 -0
  73. package/dist/patterns/table/toolbar/ColumnHeaderMenu.d.ts +41 -0
  74. package/dist/patterns/table/toolbar/ColumnHeaderMenu.d.ts.map +1 -0
  75. package/dist/patterns/table/toolbar/ColumnHeaderMenu.js +171 -0
  76. package/dist/patterns/table/toolbar/GroupByDropdown.d.ts +11 -0
  77. package/dist/patterns/table/toolbar/GroupByDropdown.d.ts.map +1 -0
  78. package/dist/patterns/table/toolbar/GroupByDropdown.js +80 -0
  79. package/dist/patterns/table/toolbar/HideFieldsDropdown.d.ts +13 -0
  80. package/dist/patterns/table/toolbar/HideFieldsDropdown.d.ts.map +1 -0
  81. package/dist/patterns/table/toolbar/HideFieldsDropdown.js +180 -0
  82. package/dist/patterns/table/toolbar/LegacySortFilterTools.d.ts +9 -0
  83. package/dist/patterns/table/toolbar/LegacySortFilterTools.d.ts.map +1 -0
  84. package/dist/patterns/table/toolbar/RowActionsMenu.d.ts +19 -0
  85. package/dist/patterns/table/toolbar/RowActionsMenu.d.ts.map +1 -0
  86. package/dist/patterns/table/toolbar/RowActionsMenu.js +84 -0
  87. package/dist/patterns/table/toolbar/RowHeightDropdown.d.ts +9 -0
  88. package/dist/patterns/table/toolbar/RowHeightDropdown.d.ts.map +1 -0
  89. package/dist/patterns/table/toolbar/RowHeightDropdown.js +60 -0
  90. package/dist/patterns/table/toolbar/ShowSummaryDropdown.d.ts +8 -0
  91. package/dist/patterns/table/toolbar/ShowSummaryDropdown.d.ts.map +1 -0
  92. package/dist/patterns/table/toolbar/ShowSummaryDropdown.js +22 -0
  93. package/dist/patterns/table/toolbar/SummaryFooter.d.ts +16 -0
  94. package/dist/patterns/table/toolbar/SummaryFooter.d.ts.map +1 -0
  95. package/dist/patterns/table/toolbar/SummaryFooter.js +83 -0
  96. package/dist/patterns/table/toolbar/TableToolbar.d.ts +55 -0
  97. package/dist/patterns/table/toolbar/TableToolbar.d.ts.map +1 -0
  98. package/dist/patterns/table/toolbar/TableToolbar.js +234 -0
  99. package/dist/patterns/table/toolbar/ToolbarRadio.d.ts +18 -0
  100. package/dist/patterns/table/toolbar/ToolbarRadio.d.ts.map +1 -0
  101. package/dist/patterns/table/toolbar/ToolbarRadio.js +63 -0
  102. package/dist/patterns/table/toolbar/index.d.ts +24 -0
  103. package/dist/patterns/table/toolbar/index.d.ts.map +1 -0
  104. package/dist/patterns/table/toolbar/legacyToolbarTypes.d.ts +69 -0
  105. package/dist/patterns/table/toolbar/legacyToolbarTypes.d.ts.map +1 -0
  106. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts +35 -0
  107. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts.map +1 -0
  108. package/dist/patterns/table/toolbar/tableToolbarHelpers.js +259 -0
  109. package/dist/patterns/table/toolbar/tableToolbarHelpers.test.d.ts +2 -0
  110. package/dist/patterns/table/toolbar/tableToolbarHelpers.test.d.ts.map +1 -0
  111. package/dist/patterns/table/toolbar/toolbarExtensions.d.ts +12 -0
  112. package/dist/patterns/table/toolbar/toolbarExtensions.d.ts.map +1 -0
  113. package/dist/patterns/table/toolbar/toolbarExtensions.js +18 -0
  114. package/dist/patterns/table/toolbar-icons.d.ts +8 -0
  115. package/dist/patterns/table/toolbar-icons.d.ts.map +1 -0
  116. package/dist/patterns/table/toolbar-icons.js +13 -0
  117. package/dist/patterns/table/types.d.ts +141 -0
  118. package/dist/patterns/table/types.d.ts.map +1 -0
  119. package/dist/patterns/table/useGridKeyboardNavigation.d.ts +38 -0
  120. package/dist/patterns/table/useGridKeyboardNavigation.d.ts.map +1 -0
  121. package/dist/patterns/table/useGridKeyboardNavigation.js +65 -0
  122. package/dist/primitives/checkbox/checkbox.d.ts +2 -2
  123. package/dist/primitives/checkbox/checkbox.d.ts.map +1 -1
  124. package/dist/primitives/dropdown/dropdown.d.ts +32 -0
  125. package/dist/primitives/dropdown/dropdown.d.ts.map +1 -0
  126. package/dist/primitives/dropdown/dropdown.js +118 -0
  127. package/dist/primitives/dropdown/index.d.ts +2 -0
  128. package/dist/primitives/dropdown/index.d.ts.map +1 -0
  129. package/dist/primitives/select/ExpandableSearchInput.d.ts +5 -1
  130. package/dist/primitives/select/ExpandableSearchInput.d.ts.map +1 -1
  131. package/dist/primitives/select/ExpandableSearchInput.js +80 -77
  132. package/dist/primitives/shimmer/index.d.ts +2 -0
  133. package/dist/primitives/shimmer/index.d.ts.map +1 -0
  134. package/dist/primitives/shimmer/shimmer.d.ts +24 -0
  135. package/dist/primitives/shimmer/shimmer.d.ts.map +1 -0
  136. package/dist/primitives/shimmer/shimmer.js +37 -0
  137. package/dist/primitives/snackbar/index.d.ts +2 -0
  138. package/dist/primitives/snackbar/index.d.ts.map +1 -0
  139. package/dist/primitives/snackbar/snackbar.d.ts +27 -0
  140. package/dist/primitives/snackbar/snackbar.d.ts.map +1 -0
  141. package/dist/primitives/snackbar/snackbar.js +107 -0
  142. package/dist/styles/components.css +1 -1
  143. package/dist/styles/theme.css +1 -1
  144. package/package.json +4 -1
@@ -0,0 +1,234 @@
1
+ import { jsx as o, jsxs as p } from "react/jsx-runtime";
2
+ import { useMemo as D, useRef as O, useState as R, useEffect as A, useLayoutEffect as L } from "react";
3
+ import { FlipBackward as K, FlipForward as W, ChevronSelectorVertical as j, DotsHorizontal as k } from "@untitledui/icons";
4
+ import { cx as I } from "../../../utils/cn.js";
5
+ import { AlignDropdown as P } from "./AlignDropdown.js";
6
+ import { GroupByDropdown as T } from "./GroupByDropdown.js";
7
+ import { HideFieldsDropdown as F } from "./HideFieldsDropdown.js";
8
+ import { RowHeightDropdown as G } from "./RowHeightDropdown.js";
9
+ import { ShowSummaryDropdown as U } from "./ShowSummaryDropdown.js";
10
+ import { resolveColumnLabel as _ } from "./tableToolbarHelpers.js";
11
+ import { ExpandableSearchInput as B } from "../../../primitives/select/ExpandableSearchInput.js";
12
+ import { Button as C } from "../../../primitives/button/button.js";
13
+ import { Dropdown as w } from "../../../primitives/dropdown/dropdown.js";
14
+ import { Icon as H } from "../../../primitives/icon/icon.js";
15
+ const $ = () => /* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
16
+ /* @__PURE__ */ o(C, { size: "xs", color: "secondary", iconLeading: /* @__PURE__ */ o(K, { size: 16 }), "aria-label": "Undo", title: "Undo" }),
17
+ /* @__PURE__ */ o(C, { size: "xs", color: "secondary", iconLeading: /* @__PURE__ */ o(W, { size: 16 }), "aria-label": "Redo", title: "Redo" })
18
+ ] }), V = ({ config: e, content: a }) => {
19
+ const l = e.sorts.some((i) => i.field !== "" && i.direction !== "");
20
+ return /* @__PURE__ */ p(
21
+ w.Root,
22
+ {
23
+ isOpen: e.isOpen,
24
+ onOpenChange: (i) => {
25
+ i && e.onSortsChange(e.sorts.map((d) => ({ ...d }))), e.onOpenChange(i);
26
+ },
27
+ children: [
28
+ /* @__PURE__ */ p(
29
+ C,
30
+ {
31
+ size: "xs",
32
+ color: "secondary",
33
+ iconLeading: /* @__PURE__ */ o(j, { size: 12 }),
34
+ className: I(
35
+ l && "ring-1 ring-brand-600 bg-brand-primary text-brand-600 hover:bg-brand-primary hover:text-brand-600"
36
+ ),
37
+ children: [
38
+ "Sort",
39
+ l && /* @__PURE__ */ o("span", { className: "ml-1 text-xs font-semibold text-brand-600", children: e.sorts.length })
40
+ ]
41
+ }
42
+ ),
43
+ /* @__PURE__ */ o(w.Popover, { className: "w-auto min-w-[300px]", children: a })
44
+ ]
45
+ }
46
+ );
47
+ }, q = ({ config: e, content: a }) => {
48
+ const l = e.meaningfulConditionsCount > 0;
49
+ return /* @__PURE__ */ p(w.Root, { isOpen: e.isOpen, onOpenChange: e.onOpenChange, children: [
50
+ /* @__PURE__ */ p(
51
+ C,
52
+ {
53
+ size: "xs",
54
+ color: "secondary",
55
+ iconLeading: /* @__PURE__ */ o(H, { name: "FilterLines", size: 12 }),
56
+ className: I(
57
+ l && "ring-1 ring-brand-600 bg-brand-primary text-brand-600 hover:bg-brand-primary hover:text-brand-600"
58
+ ),
59
+ children: [
60
+ "Filter",
61
+ l && /* @__PURE__ */ o("span", { className: "ml-1 text-xs font-semibold text-brand-600", children: e.meaningfulConditionsCount })
62
+ ]
63
+ }
64
+ ),
65
+ /* @__PURE__ */ o(w.Popover, { className: "w-auto min-w-[300px]", children: a })
66
+ ] });
67
+ }, ce = ({
68
+ className: e,
69
+ fallbackTitle: a,
70
+ showUndoRedo: l = !1,
71
+ sort: i,
72
+ filter: d,
73
+ search: f,
74
+ rowHeight: b,
75
+ hideFields: u,
76
+ align: h,
77
+ groupBy: m,
78
+ summary: g,
79
+ trailing: S,
80
+ searchCollapsible: z,
81
+ disableExtendedTools: n = !1,
82
+ sortContent: r,
83
+ filterContent: t
84
+ }) => {
85
+ const c = D(() => {
86
+ const s = [];
87
+ if (l && s.push({ id: "undo-redo", node: /* @__PURE__ */ o($, {}) }), i && r) {
88
+ const v = i.sorts.some((x) => x.field !== "" && x.direction !== "");
89
+ s.push({
90
+ id: "sort",
91
+ widthKey: v ? String(i.sorts.length) : "",
92
+ node: /* @__PURE__ */ o(V, { config: i, content: r })
93
+ });
94
+ }
95
+ if (d && t && s.push({
96
+ id: "filter",
97
+ widthKey: d.meaningfulConditionsCount > 0 ? String(d.meaningfulConditionsCount) : "",
98
+ node: /* @__PURE__ */ o(q, { config: d, content: t })
99
+ }), b && s.push({
100
+ id: "row-height",
101
+ node: /* @__PURE__ */ o(G, { ...b, isDisabled: n })
102
+ }), u && s.push({
103
+ id: "hide-fields",
104
+ widthKey: u.hiddenColumns.size > 0 ? String(u.hiddenColumns.size) : "",
105
+ node: /* @__PURE__ */ o(F, { ...u, isDisabled: n })
106
+ }), h && s.push({ id: "align", node: /* @__PURE__ */ o(P, { ...h, isDisabled: n }) }), m) {
107
+ const v = m.value ? m.schema.find((N) => N.value === m.value) : void 0, x = v ? _(v, m.labelMeta) : "";
108
+ s.push({
109
+ id: "group-by",
110
+ widthKey: x,
111
+ node: /* @__PURE__ */ o(T, { ...m, isDisabled: n })
112
+ });
113
+ }
114
+ return g && s.push({
115
+ id: "summary",
116
+ node: /* @__PURE__ */ o(U, { ...g, isDisabled: n })
117
+ }), s;
118
+ }, [
119
+ l,
120
+ i,
121
+ r,
122
+ d,
123
+ t,
124
+ b,
125
+ u,
126
+ h,
127
+ m,
128
+ g,
129
+ n
130
+ ]);
131
+ return /* @__PURE__ */ p("div", { className: I("flex justify-between items-center gap-2", e), children: [
132
+ c.length > 0 ? /* @__PURE__ */ o(Q, { items: c }) : a ? /* @__PURE__ */ o("h4", { className: "text-sm font-normal text-secondary", children: a }) : /* @__PURE__ */ o("div", {}),
133
+ /* @__PURE__ */ p("div", { className: "flex items-center gap-2 shrink-0", children: [
134
+ f && /* @__PURE__ */ o(
135
+ B,
136
+ {
137
+ size: "sm",
138
+ placeholder: "Search",
139
+ value: f.value,
140
+ onChange: f.onChange,
141
+ collapsible: z,
142
+ isDisabled: n
143
+ }
144
+ ),
145
+ S
146
+ ] })
147
+ ] });
148
+ }, J = 40, M = 8, Q = ({ items: e }) => {
149
+ const a = O(null), l = O(/* @__PURE__ */ new Map()), [i, d] = R(() => /* @__PURE__ */ new Map()), [f, b] = R(null), u = D(() => e.map((n) => `${n.id}:${n.widthKey ?? ""}`).join("|"), [e]);
150
+ A(() => {
151
+ d(/* @__PURE__ */ new Map());
152
+ }, [u]), L(() => {
153
+ if (i.size === e.length) return;
154
+ const n = /* @__PURE__ */ new Map();
155
+ for (const r of e) {
156
+ const t = l.current.get(r.id);
157
+ t && n.set(r.id, t.getBoundingClientRect().width);
158
+ }
159
+ n.size === e.length && d(n);
160
+ }, [e, i]), L(() => {
161
+ const n = a.current;
162
+ if (!n) return;
163
+ const r = () => {
164
+ a.current && b(a.current.clientWidth);
165
+ };
166
+ r();
167
+ const t = new ResizeObserver(r);
168
+ return t.observe(n), () => t.disconnect();
169
+ }, []);
170
+ const h = i.size === e.length, { visibleIds: m, overflowIds: g } = D(() => {
171
+ if (!h || f == null)
172
+ return {
173
+ visibleIds: new Set(e.map((c) => c.id)),
174
+ overflowIds: /* @__PURE__ */ new Set()
175
+ };
176
+ let n = 0;
177
+ const r = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
178
+ for (let c = 0; c < e.length; c++) {
179
+ const s = e[c].id, v = i.get(s) ?? 0, N = e.length - c - 1 > 0 ? J + M : 0;
180
+ if (n + v + N > f) {
181
+ for (let y = c; y < e.length; y++) t.add(e[y].id);
182
+ break;
183
+ }
184
+ n += v + M, r.add(s);
185
+ }
186
+ return { visibleIds: r, overflowIds: t };
187
+ }, [e, i, f, h]), S = e.filter((n) => m.has(n.id)), z = e.filter((n) => g.has(n.id));
188
+ return /* @__PURE__ */ p(
189
+ "div",
190
+ {
191
+ ref: a,
192
+ className: "flex items-center gap-2 min-w-0 flex-1 overflow-hidden",
193
+ style: h ? void 0 : { visibility: "hidden" },
194
+ children: [
195
+ (h ? S : e).map((n) => /* @__PURE__ */ o(
196
+ "div",
197
+ {
198
+ ref: (r) => {
199
+ l.current.set(n.id, r);
200
+ },
201
+ className: "shrink-0",
202
+ children: n.node
203
+ },
204
+ n.id
205
+ )),
206
+ h && z.length > 0 && /* @__PURE__ */ p(w.Root, { children: [
207
+ /* @__PURE__ */ o(
208
+ C,
209
+ {
210
+ size: "xs",
211
+ color: "secondary",
212
+ iconLeading: /* @__PURE__ */ o(k, { size: 16 }),
213
+ "aria-label": "More tools",
214
+ title: "More tools",
215
+ className: "shrink-0"
216
+ }
217
+ ),
218
+ /* @__PURE__ */ o(w.Popover, { className: "w-auto", children: /* @__PURE__ */ o("div", { className: "flex flex-col items-stretch gap-2 p-2 min-w-[180px]", children: z.map((n) => /* @__PURE__ */ o("div", { className: "[&>*]:w-full", children: n.node }, n.id)) }) })
219
+ ] })
220
+ ]
221
+ }
222
+ );
223
+ };
224
+ function he(e) {
225
+ return {
226
+ sort: e.sort,
227
+ filter: e.filter,
228
+ search: e.search
229
+ };
230
+ }
231
+ export {
232
+ ce as TableToolbar,
233
+ he as pickCoreToolbarProps
234
+ };
@@ -0,0 +1,18 @@
1
+ import { FC, ReactNode, Ref } from 'react';
2
+ import { RadioGroupProps as AriaRadioGroupProps, RadioProps as AriaRadioProps } from 'react-aria-components';
3
+ interface RadioGroupContextType {
4
+ size?: "sm" | "md";
5
+ }
6
+ interface RadioButtonProps extends AriaRadioProps {
7
+ size?: "sm" | "md";
8
+ label?: ReactNode;
9
+ ref?: Ref<HTMLLabelElement>;
10
+ }
11
+ export declare const RadioButton: FC<RadioButtonProps>;
12
+ interface RadioGroupProps extends RadioGroupContextType, AriaRadioGroupProps {
13
+ children: ReactNode;
14
+ className?: string;
15
+ }
16
+ export declare const RadioGroup: FC<RadioGroupProps>;
17
+ export {};
18
+ //# sourceMappingURL=ToolbarRadio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarRadio.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/ToolbarRadio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,EAGL,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,UAAU,IAAI,cAAc,EAClC,MAAM,uBAAuB,CAAC;AAG/B,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAwCD,UAAU,gBAAiB,SAAQ,cAAc;IAC/C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA4B5C,CAAC;AAEF,UAAU,eAAgB,SAAQ,qBAAqB,EAAE,mBAAmB;IAC1E,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAM1C,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { jsx as n, jsxs as c, Fragment as u } from "react/jsx-runtime";
2
+ import { createContext as f, useContext as p } from "react";
3
+ import { RadioGroup as g, Radio as b } from "react-aria-components";
4
+ import { cx as a } from "../../../utils/cn.js";
5
+ const d = f(null), x = ({
6
+ className: r,
7
+ isFocusVisible: e,
8
+ isSelected: o,
9
+ isDisabled: i,
10
+ size: t = "sm"
11
+ }) => /* @__PURE__ */ n(
12
+ "div",
13
+ {
14
+ className: a(
15
+ "flex size-4 min-h-4 min-w-4 cursor-pointer appearance-none items-center justify-center rounded-full bg-primary ring-1 ring-primary ring-inset",
16
+ t === "md" && "size-5 min-h-5 min-w-5",
17
+ o && !i && "bg-brand-solid ring-bg-brand-solid",
18
+ i && "cursor-not-allowed border-disabled bg-disabled_subtle",
19
+ e && "outline-2 outline-offset-2 outline-focus-ring",
20
+ r
21
+ ),
22
+ children: /* @__PURE__ */ n(
23
+ "div",
24
+ {
25
+ className: a(
26
+ "size-1.5 rounded-full bg-fg-white opacity-0 transition-inherit-all",
27
+ t === "md" && "size-2",
28
+ i && "bg-fg-disabled_subtle",
29
+ o && "opacity-100"
30
+ )
31
+ }
32
+ )
33
+ }
34
+ ), v = ({ label: r, className: e, size: o = "sm", ...i }) => {
35
+ const t = p(d);
36
+ return o = (t == null ? void 0 : t.size) ?? o, /* @__PURE__ */ n(
37
+ b,
38
+ {
39
+ ...i,
40
+ className: (s) => a(
41
+ "flex items-center gap-2",
42
+ s.isDisabled && "cursor-not-allowed",
43
+ typeof e == "function" ? e(s) : e
44
+ ),
45
+ children: ({ isSelected: s, isDisabled: l, isFocusVisible: m }) => /* @__PURE__ */ c(u, { children: [
46
+ /* @__PURE__ */ n(
47
+ x,
48
+ {
49
+ size: o,
50
+ isSelected: s,
51
+ isDisabled: l,
52
+ isFocusVisible: m
53
+ }
54
+ ),
55
+ r && /* @__PURE__ */ n("p", { className: "text-sm font-medium text-secondary select-none", children: r })
56
+ ] })
57
+ }
58
+ );
59
+ }, G = ({ children: r, className: e, size: o = "sm", ...i }) => /* @__PURE__ */ n(d.Provider, { value: { size: o }, children: /* @__PURE__ */ n(g, { ...i, className: a("flex flex-col gap-4", e), children: r }) });
60
+ export {
61
+ v as RadioButton,
62
+ G as RadioGroup
63
+ };
@@ -0,0 +1,24 @@
1
+ export { TableToolbar, pickCoreToolbarProps } from './TableToolbar';
2
+ export type { TableToolbarProps, SortToolConfig, FilterToolConfig, SearchToolConfig, RowHeightToolConfig, HideFieldsToolConfig, AlignToolConfig, GroupByToolConfig, SummaryToolConfig, } from './TableToolbar';
3
+ export { RowHeightDropdown } from './RowHeightDropdown';
4
+ export type { RowHeightOption } from './RowHeightDropdown';
5
+ export { ROW_HEIGHT_CLASS } from './tableToolbarHelpers';
6
+ export { HideFieldsDropdown } from './HideFieldsDropdown';
7
+ export { AlignDropdown } from './AlignDropdown';
8
+ export { GroupByDropdown } from './GroupByDropdown';
9
+ export { ShowSummaryDropdown } from './ShowSummaryDropdown';
10
+ export { SummaryFooterRow } from './SummaryFooter';
11
+ export type { SummaryFooterRowProps } from './SummaryFooter';
12
+ export { ColumnHeaderMenu } from './ColumnHeaderMenu';
13
+ export type { ColumnMenuAction, ColumnMenuCapabilities } from './ColumnHeaderMenu';
14
+ export { RowActionsMenu } from './RowActionsMenu';
15
+ export type { RowActionsConfig } from './RowActionsMenu';
16
+ export { BulkActionBar } from './BulkActionBar';
17
+ export { registerToolbarExtensions, getToolbarExtensions } from './toolbarExtensions';
18
+ export type { ToolbarExtensionComponents } from './toolbarExtensions';
19
+ export type { LegacySortToolConfig, LegacyFilterToolConfig, LegacySortColumn, LegacySort, } from './legacyToolbarTypes';
20
+ export { BasicSortPanel } from './BasicSortPanel';
21
+ export { LegacySortTool, LegacyFilterTool } from './LegacySortFilterTools';
22
+ export { applyHideAndReorder, getDefaultAlignmentForType, getEffectiveAlignment, alignmentClass, getAggregationsForType, computeAggregation, groupRows, resolveColumnLabel, AGGREGATION_LABELS, } from './tableToolbarHelpers';
23
+ export type { CellAlignment, AggregationType, AggregationOption, RowGroup } from './tableToolbarHelpers';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { ReactNode } from 'react';
2
+ /** Minimal sort column shape — matches platform-ui `SortColumn`. */
3
+ export interface LegacySortColumn {
4
+ key: string;
5
+ label: string;
6
+ sortKey?: string;
7
+ allowSorting?: boolean;
8
+ }
9
+ export interface LegacySort {
10
+ field: string;
11
+ direction: "asc" | "desc" | "";
12
+ }
13
+ /** Matches platform-ui `SortToolConfig` from `useTableState.sortToolConfig`. */
14
+ export interface LegacySortToolConfig {
15
+ sorts: LegacySort[];
16
+ pendingSorts: LegacySort[];
17
+ sortableColumns: LegacySortColumn[];
18
+ isOpen: boolean;
19
+ onOpenChange: (open: boolean) => void;
20
+ onSortsChange: (sorts: LegacySort[]) => void;
21
+ onApply: () => void;
22
+ onCancel: () => void;
23
+ onClear: () => void;
24
+ isApplyDisabled?: boolean;
25
+ }
26
+ /** Matches platform-ui filter field schema. */
27
+ export interface LegacyFilterableFieldSchema {
28
+ field_identifier?: string;
29
+ id?: string;
30
+ label: string;
31
+ data_type: string;
32
+ options?: {
33
+ key: string;
34
+ value: string;
35
+ }[] | null;
36
+ lookup?: {
37
+ object_identifier: string;
38
+ field?: string;
39
+ display_field?: string;
40
+ } | null;
41
+ }
42
+ export interface LegacyFilterCondition {
43
+ id: string;
44
+ type: string;
45
+ fieldId: string;
46
+ operatorId: string;
47
+ value: unknown;
48
+ }
49
+ /** Matches platform-ui `FilterToolConfig` from `useTableState.filterToolConfig`. */
50
+ export interface LegacyFilterToolConfig {
51
+ filterableFields: LegacyFilterableFieldSchema[];
52
+ pendingConditions: LegacyFilterCondition[];
53
+ setPendingConditions: (conditions: LegacyFilterCondition[]) => void;
54
+ meaningfulConditionsCount: number;
55
+ isOpen: boolean;
56
+ onOpenChange: (open: boolean) => void;
57
+ onApply: () => void;
58
+ onClearAll: () => void;
59
+ }
60
+ /** Legacy toolbar keys still passed by platform-ui `useTableState.toolbarProps`. */
61
+ export type LegacyToolbarExtras = {
62
+ sort?: LegacySortToolConfig;
63
+ filter?: LegacyFilterToolConfig;
64
+ sortContent?: ReactNode;
65
+ filterContent?: ReactNode;
66
+ };
67
+ export declare function isLegacySortToolConfig(value: unknown): value is LegacySortToolConfig;
68
+ export declare function isLegacyFilterToolConfig(value: unknown): value is LegacyFilterToolConfig;
69
+ //# sourceMappingURL=legacyToolbarTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacyToolbarTypes.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/legacyToolbarTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;CAChC;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvF;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,2BAA2B,EAAE,CAAC;IAChD,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,oBAAoB,EAAE,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IACpE,yBAAyB,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAIpF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAIxF"}
@@ -0,0 +1,35 @@
1
+ import { TableColumnSchema, TableColumnValueType } from '../types';
2
+ import { RowHeightOption } from './RowHeightDropdown';
3
+ /** Tailwind class applied to `<Table.Row>` for each row-height option. */
4
+ export declare const ROW_HEIGHT_CLASS: Record<RowHeightOption, string>;
5
+ /** Resolve a dot-separated path on nested JSON (arrays match by field_identifier/id/key). */
6
+ export declare function getObjectLabelByPath<T = unknown>(obj: unknown, path: string | undefined): T | undefined;
7
+ /** Get nested value from object using dot notation. */
8
+ export declare function getNestedValue(obj: Record<string, unknown> | null | undefined, path: string | undefined): unknown;
9
+ /** Resolves the display label for a column. */
10
+ export declare function resolveColumnLabel(column: TableColumnSchema, labelMeta?: unknown): string;
11
+ /** Filter schema through `hidden` and reorder by `order`. */
12
+ export declare function applyHideAndReorder(schema: TableColumnSchema[], hidden: ReadonlySet<string>, order: readonly string[]): TableColumnSchema[];
13
+ export type CellAlignment = "left" | "center" | "right";
14
+ export declare function getDefaultAlignmentForType(valueType: TableColumnValueType | undefined): CellAlignment;
15
+ export declare function getEffectiveAlignment(column: TableColumnSchema, overrides: ReadonlyMap<string, CellAlignment>): CellAlignment;
16
+ export declare function alignmentClass(align: CellAlignment): string;
17
+ export type AggregationType = "none" | "count" | "sum" | "average" | "median" | "min" | "max" | "range" | "totalItems";
18
+ export interface AggregationOption {
19
+ id: AggregationType;
20
+ label: string;
21
+ }
22
+ export declare const AGGREGATION_LABELS: Record<AggregationType, string>;
23
+ export declare const AGGREGATION_CELL_LABELS: Record<AggregationType, string>;
24
+ export declare function mapOmDataTypeToAggregationValueType(omDataType: string | undefined): TableColumnValueType | undefined;
25
+ export declare function resolveAggregationValueType(column: Pick<TableColumnSchema, "value" | "value_type" | "data_type">, fieldDataTypeMap?: Readonly<Record<string, string>>): TableColumnValueType | undefined;
26
+ export declare function getAggregationsForType(valueType: TableColumnValueType | undefined): AggregationOption[];
27
+ export declare function getRowColumnValue(row: Record<string, unknown>, key: string): unknown;
28
+ export declare function computeAggregation(rows: ReadonlyArray<Record<string, unknown>>, columnValueKey: string, aggregation: AggregationType): string;
29
+ export interface RowGroup<T> {
30
+ key: string;
31
+ label: string;
32
+ rows: T[];
33
+ }
34
+ export declare function groupRows<T extends Record<string, unknown>>(rows: ReadonlyArray<T>, groupByKey: string | null): RowGroup<T>[];
35
+ //# sourceMappingURL=tableToolbarHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableToolbarHelpers.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/tableToolbarHelpers.ts"],"names":[],"mappings":"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"}