@tonyarbor/components 0.2.0 → 0.2.1

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 (108) hide show
  1. package/dist/Banner.d.mts +59 -0
  2. package/dist/Banner.d.ts +59 -0
  3. package/dist/Banner.js +222 -0
  4. package/dist/Banner.js.map +1 -0
  5. package/dist/Banner.mjs +7 -0
  6. package/dist/Banner.mjs.map +1 -0
  7. package/dist/Checkbox.d.mts +4 -0
  8. package/dist/Checkbox.d.ts +4 -0
  9. package/dist/Checkbox.js +45 -16
  10. package/dist/Checkbox.js.map +1 -1
  11. package/dist/Checkbox.mjs +1 -1
  12. package/dist/DatePicker.d.mts +68 -0
  13. package/dist/DatePicker.d.ts +68 -0
  14. package/dist/DatePicker.js +490 -0
  15. package/dist/DatePicker.js.map +1 -0
  16. package/dist/DatePicker.mjs +7 -0
  17. package/dist/DatePicker.mjs.map +1 -0
  18. package/dist/Pagination.d.mts +36 -0
  19. package/dist/Pagination.d.ts +36 -0
  20. package/dist/Pagination.js +301 -0
  21. package/dist/Pagination.js.map +1 -0
  22. package/dist/Pagination.mjs +7 -0
  23. package/dist/Pagination.mjs.map +1 -0
  24. package/dist/Radio.js +32 -12
  25. package/dist/Radio.js.map +1 -1
  26. package/dist/Radio.mjs +1 -1
  27. package/dist/Table.d.mts +80 -0
  28. package/dist/Table.d.ts +80 -0
  29. package/dist/Table.js +347 -0
  30. package/dist/Table.js.map +1 -0
  31. package/dist/Table.mjs +8 -0
  32. package/dist/Table.mjs.map +1 -0
  33. package/dist/TableControls.d.mts +76 -0
  34. package/dist/TableControls.d.ts +76 -0
  35. package/dist/TableControls.js +461 -0
  36. package/dist/TableControls.js.map +1 -0
  37. package/dist/TableControls.mjs +7 -0
  38. package/dist/TableControls.mjs.map +1 -0
  39. package/dist/TableFooterPagination.d.mts +56 -0
  40. package/dist/TableFooterPagination.d.ts +56 -0
  41. package/dist/TableFooterPagination.js +499 -0
  42. package/dist/TableFooterPagination.js.map +1 -0
  43. package/dist/TableFooterPagination.mjs +7 -0
  44. package/dist/TableFooterPagination.mjs.map +1 -0
  45. package/dist/Tabs.d.mts +50 -0
  46. package/dist/Tabs.d.ts +50 -0
  47. package/dist/Tabs.js +187 -0
  48. package/dist/Tabs.js.map +1 -0
  49. package/dist/Tabs.mjs +7 -0
  50. package/dist/Tabs.mjs.map +1 -0
  51. package/dist/TextArea.d.mts +64 -0
  52. package/dist/TextArea.d.ts +64 -0
  53. package/dist/TextArea.js +171 -0
  54. package/dist/TextArea.js.map +1 -0
  55. package/dist/TextArea.mjs +7 -0
  56. package/dist/TextArea.mjs.map +1 -0
  57. package/dist/Toast.d.mts +48 -0
  58. package/dist/Toast.d.ts +48 -0
  59. package/dist/Toast.js +169 -0
  60. package/dist/Toast.js.map +1 -0
  61. package/dist/Toast.mjs +7 -0
  62. package/dist/Toast.mjs.map +1 -0
  63. package/dist/Toggle.d.mts +48 -0
  64. package/dist/Toggle.d.ts +48 -0
  65. package/dist/Toggle.js +291 -0
  66. package/dist/Toggle.js.map +1 -0
  67. package/dist/Toggle.mjs +7 -0
  68. package/dist/Toggle.mjs.map +1 -0
  69. package/dist/Tooltip.d.mts +32 -0
  70. package/dist/Tooltip.d.ts +32 -0
  71. package/dist/Tooltip.js +109 -0
  72. package/dist/Tooltip.js.map +1 -0
  73. package/dist/Tooltip.mjs +7 -0
  74. package/dist/Tooltip.mjs.map +1 -0
  75. package/dist/chunk-52TG3BFX.mjs +463 -0
  76. package/dist/chunk-52TG3BFX.mjs.map +1 -0
  77. package/dist/chunk-AI2U34CF.mjs +159 -0
  78. package/dist/chunk-AI2U34CF.mjs.map +1 -0
  79. package/dist/chunk-C25FFMRQ.mjs +255 -0
  80. package/dist/chunk-C25FFMRQ.mjs.map +1 -0
  81. package/dist/{chunk-BCYJIUQX.mjs → chunk-CUTYEIFE.mjs} +47 -18
  82. package/dist/chunk-CUTYEIFE.mjs.map +1 -0
  83. package/dist/chunk-DULH2KRW.mjs +133 -0
  84. package/dist/chunk-DULH2KRW.mjs.map +1 -0
  85. package/dist/chunk-G5NVKF2G.mjs +434 -0
  86. package/dist/chunk-G5NVKF2G.mjs.map +1 -0
  87. package/dist/{chunk-ARBHNHO7.mjs → chunk-M6DVBEEL.mjs} +33 -13
  88. package/dist/chunk-M6DVBEEL.mjs.map +1 -0
  89. package/dist/chunk-MBUMR2XJ.mjs +135 -0
  90. package/dist/chunk-MBUMR2XJ.mjs.map +1 -0
  91. package/dist/chunk-MNH2TGUX.mjs +73 -0
  92. package/dist/chunk-MNH2TGUX.mjs.map +1 -0
  93. package/dist/chunk-RRMG2SSZ.mjs +265 -0
  94. package/dist/chunk-RRMG2SSZ.mjs.map +1 -0
  95. package/dist/chunk-U4JXKZZG.mjs +186 -0
  96. package/dist/chunk-U4JXKZZG.mjs.map +1 -0
  97. package/dist/chunk-W55QJIAN.mjs +467 -0
  98. package/dist/chunk-W55QJIAN.mjs.map +1 -0
  99. package/dist/chunk-YV4OXFIM.mjs +151 -0
  100. package/dist/chunk-YV4OXFIM.mjs.map +1 -0
  101. package/dist/index.d.mts +11 -0
  102. package/dist/index.d.ts +11 -0
  103. package/dist/index.js +2752 -30
  104. package/dist/index.js.map +1 -1
  105. package/dist/index.mjs +47 -3
  106. package/package.json +58 -1
  107. package/dist/chunk-ARBHNHO7.mjs.map +0 -1
  108. package/dist/chunk-BCYJIUQX.mjs.map +0 -1
@@ -0,0 +1,461 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/TableControls/index.ts
31
+ var TableControls_exports = {};
32
+ __export(TableControls_exports, {
33
+ TableControls: () => TableControls
34
+ });
35
+ module.exports = __toCommonJS(TableControls_exports);
36
+
37
+ // src/TableControls/TableControls.tsx
38
+ var React = __toESM(require("react"));
39
+ var import_clsx = require("clsx");
40
+ var Popover = __toESM(require("@radix-ui/react-popover"));
41
+ var import_lucide_react = require("lucide-react");
42
+ var import_jsx_runtime = require("react/jsx-runtime");
43
+ var containerStyles = {
44
+ display: "flex",
45
+ alignItems: "center",
46
+ justifyContent: "space-between",
47
+ paddingTop: "8px",
48
+ paddingBottom: "8px",
49
+ paddingLeft: 0,
50
+ paddingRight: 0,
51
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
52
+ };
53
+ var actions1Styles = {
54
+ display: "flex",
55
+ gap: "12px",
56
+ alignItems: "center"
57
+ };
58
+ var actions2Styles = {
59
+ display: "flex",
60
+ gap: "12px",
61
+ alignItems: "center",
62
+ justifyContent: "flex-end",
63
+ flexGrow: 1,
64
+ paddingRight: "4px"
65
+ };
66
+ var dropdownButtonStyles = {
67
+ height: "32px",
68
+ backgroundColor: "white",
69
+ border: "1px solid #d1d1d1",
70
+ borderRadius: "8px",
71
+ display: "flex",
72
+ alignItems: "center",
73
+ justifyContent: "center",
74
+ gap: "8px",
75
+ paddingLeft: "12px",
76
+ paddingRight: "8px",
77
+ paddingTop: 0,
78
+ paddingBottom: 0,
79
+ cursor: "pointer",
80
+ transition: "background-color 0.2s ease-in-out",
81
+ outline: "none"
82
+ };
83
+ var dropdownTextStyles = {
84
+ fontSize: "13px",
85
+ fontWeight: 600,
86
+ lineHeight: "1.5",
87
+ color: "#2f2f2f",
88
+ textAlign: "center"
89
+ };
90
+ var iconButtonStyles = {
91
+ width: "32px",
92
+ height: "32px",
93
+ borderRadius: "99px",
94
+ border: "none",
95
+ backgroundColor: "white",
96
+ cursor: "pointer",
97
+ display: "flex",
98
+ alignItems: "center",
99
+ justifyContent: "center",
100
+ padding: 0,
101
+ transition: "background-color 0.2s ease-in-out",
102
+ flexShrink: 0,
103
+ outline: "none"
104
+ };
105
+ var iconButtonDisabledStyles = {
106
+ cursor: "not-allowed",
107
+ opacity: 0.5
108
+ };
109
+ var popoverContentStyles = {
110
+ backgroundColor: "white",
111
+ border: "1px solid #d1d1d1",
112
+ borderRadius: "8px",
113
+ padding: "8px",
114
+ minWidth: "180px",
115
+ boxShadow: "0 4px 12px rgba(0, 0, 0, 0.1)",
116
+ zIndex: 1e3
117
+ };
118
+ var menuItemStyles = {
119
+ padding: "8px 12px",
120
+ fontSize: "13px",
121
+ color: "#2f2f2f",
122
+ cursor: "pointer",
123
+ borderRadius: "4px",
124
+ border: "none",
125
+ backgroundColor: "white",
126
+ width: "100%",
127
+ textAlign: "left",
128
+ transition: "background-color 0.2s ease-in-out"
129
+ };
130
+ var TableControls = React.forwardRef(
131
+ ({
132
+ selectedCount = 0,
133
+ onActionsClick,
134
+ onUndoClick,
135
+ onRedoClick,
136
+ onHideColumnsClick,
137
+ onSearchClick,
138
+ onDownloadClick,
139
+ onTooltipsClick,
140
+ tooltipsEnabled = false,
141
+ onSettingsClick,
142
+ onExpandClick,
143
+ undoDisabled = false,
144
+ redoDisabled = false,
145
+ className,
146
+ style,
147
+ "data-testid": dataTestId
148
+ }, ref) => {
149
+ const [hoveredButton, setHoveredButton] = React.useState(null);
150
+ const [focusedButton, setFocusedButton] = React.useState(null);
151
+ const [actionsOpen, setActionsOpen] = React.useState(false);
152
+ const [hideColumnsOpen, setHideColumnsOpen] = React.useState(false);
153
+ const getIconButtonStyle = (buttonName, disabled = false) => {
154
+ if (disabled) {
155
+ return { ...iconButtonStyles, ...iconButtonDisabledStyles };
156
+ }
157
+ const isHovered = hoveredButton === buttonName;
158
+ const isFocused = focusedButton === buttonName;
159
+ return {
160
+ ...iconButtonStyles,
161
+ backgroundColor: isHovered ? "#f5f5f5" : "white",
162
+ boxShadow: isFocused ? "0 0 0 3px #3cad51" : "none"
163
+ };
164
+ };
165
+ const getDropdownButtonStyle = (buttonName) => {
166
+ const isHovered = hoveredButton === buttonName;
167
+ const isFocused = focusedButton === buttonName;
168
+ return {
169
+ ...dropdownButtonStyles,
170
+ backgroundColor: isHovered ? "#f5f5f5" : "white",
171
+ boxShadow: isFocused ? "0 0 0 3px #3cad51" : "none"
172
+ };
173
+ };
174
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
175
+ "div",
176
+ {
177
+ ref,
178
+ className: (0, import_clsx.clsx)("arbor-table-controls", className),
179
+ style: { ...containerStyles, ...style },
180
+ "data-testid": dataTestId,
181
+ children: [
182
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: actions1Styles, children: [
183
+ onActionsClick && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Popover.Root, { open: actionsOpen, onOpenChange: setActionsOpen, children: [
184
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
185
+ "button",
186
+ {
187
+ type: "button",
188
+ onClick: () => {
189
+ setActionsOpen(!actionsOpen);
190
+ onActionsClick();
191
+ },
192
+ onMouseEnter: () => setHoveredButton("actions"),
193
+ onMouseLeave: () => setHoveredButton(null),
194
+ onFocus: () => setFocusedButton("actions"),
195
+ onBlur: () => setFocusedButton(null),
196
+ style: getDropdownButtonStyle("actions"),
197
+ "aria-label": "Actions",
198
+ children: [
199
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { style: dropdownTextStyles, children: [
200
+ "Actions (",
201
+ selectedCount,
202
+ ")"
203
+ ] }),
204
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { size: 16, color: "#2f2f2f" })
205
+ ]
206
+ }
207
+ ) }),
208
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
209
+ Popover.Content,
210
+ {
211
+ style: popoverContentStyles,
212
+ sideOffset: 4,
213
+ align: "start",
214
+ children: [
215
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
216
+ "button",
217
+ {
218
+ style: menuItemStyles,
219
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
220
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
221
+ onClick: () => {
222
+ console.log("Edit selected items");
223
+ setActionsOpen(false);
224
+ },
225
+ children: "Edit selected items"
226
+ }
227
+ ),
228
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
229
+ "button",
230
+ {
231
+ style: menuItemStyles,
232
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
233
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
234
+ onClick: () => {
235
+ console.log("Delete selected items");
236
+ setActionsOpen(false);
237
+ },
238
+ children: "Delete selected items"
239
+ }
240
+ ),
241
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
242
+ "button",
243
+ {
244
+ style: menuItemStyles,
245
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
246
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
247
+ onClick: () => {
248
+ console.log("Export selected items");
249
+ setActionsOpen(false);
250
+ },
251
+ children: "Export selected items"
252
+ }
253
+ )
254
+ ]
255
+ }
256
+ ) })
257
+ ] }),
258
+ onUndoClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
259
+ "button",
260
+ {
261
+ type: "button",
262
+ onClick: onUndoClick,
263
+ disabled: undoDisabled,
264
+ onMouseEnter: () => setHoveredButton("undo"),
265
+ onMouseLeave: () => setHoveredButton(null),
266
+ onFocus: () => setFocusedButton("undo"),
267
+ onBlur: () => setFocusedButton(null),
268
+ style: getIconButtonStyle("undo", undoDisabled),
269
+ "aria-label": "Undo",
270
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Undo2, { size: 16, color: "#2f2f2f" })
271
+ }
272
+ ),
273
+ onRedoClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
274
+ "button",
275
+ {
276
+ type: "button",
277
+ onClick: onRedoClick,
278
+ disabled: redoDisabled,
279
+ onMouseEnter: () => setHoveredButton("redo"),
280
+ onMouseLeave: () => setHoveredButton(null),
281
+ onFocus: () => setFocusedButton("redo"),
282
+ onBlur: () => setFocusedButton(null),
283
+ style: getIconButtonStyle("redo", redoDisabled),
284
+ "aria-label": "Redo",
285
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Redo2, { size: 16, color: "#2f2f2f" })
286
+ }
287
+ ),
288
+ onHideColumnsClick && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Popover.Root, { open: hideColumnsOpen, onOpenChange: setHideColumnsOpen, children: [
289
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
290
+ "button",
291
+ {
292
+ type: "button",
293
+ onClick: () => {
294
+ setHideColumnsOpen(!hideColumnsOpen);
295
+ onHideColumnsClick();
296
+ },
297
+ onMouseEnter: () => setHoveredButton("hideColumns"),
298
+ onMouseLeave: () => setHoveredButton(null),
299
+ onFocus: () => setFocusedButton("hideColumns"),
300
+ onBlur: () => setFocusedButton(null),
301
+ style: getDropdownButtonStyle("hideColumns"),
302
+ "aria-label": "Hide Columns",
303
+ children: [
304
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: dropdownTextStyles, children: "Hide Columns" }),
305
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { size: 16, color: "#2f2f2f" })
306
+ ]
307
+ }
308
+ ) }),
309
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
310
+ Popover.Content,
311
+ {
312
+ style: popoverContentStyles,
313
+ sideOffset: 4,
314
+ align: "start",
315
+ children: [
316
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
317
+ "button",
318
+ {
319
+ style: menuItemStyles,
320
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
321
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
322
+ onClick: () => {
323
+ console.log("Hide Name column");
324
+ setHideColumnsOpen(false);
325
+ },
326
+ children: "Name"
327
+ }
328
+ ),
329
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
330
+ "button",
331
+ {
332
+ style: menuItemStyles,
333
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
334
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
335
+ onClick: () => {
336
+ console.log("Hide Email column");
337
+ setHideColumnsOpen(false);
338
+ },
339
+ children: "Email"
340
+ }
341
+ ),
342
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
343
+ "button",
344
+ {
345
+ style: menuItemStyles,
346
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
347
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
348
+ onClick: () => {
349
+ console.log("Hide Status column");
350
+ setHideColumnsOpen(false);
351
+ },
352
+ children: "Status"
353
+ }
354
+ ),
355
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
356
+ "button",
357
+ {
358
+ style: menuItemStyles,
359
+ onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "#f5f5f5",
360
+ onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "white",
361
+ onClick: () => {
362
+ console.log("Hide Date column");
363
+ setHideColumnsOpen(false);
364
+ },
365
+ children: "Date"
366
+ }
367
+ )
368
+ ]
369
+ }
370
+ ) })
371
+ ] })
372
+ ] }),
373
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: actions2Styles, children: [
374
+ onSearchClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
375
+ "button",
376
+ {
377
+ type: "button",
378
+ onClick: onSearchClick,
379
+ onMouseEnter: () => setHoveredButton("search"),
380
+ onMouseLeave: () => setHoveredButton(null),
381
+ onFocus: () => setFocusedButton("search"),
382
+ onBlur: () => setFocusedButton(null),
383
+ style: getIconButtonStyle("search"),
384
+ "aria-label": "Search",
385
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Search, { size: 16, color: "#2f2f2f" })
386
+ }
387
+ ),
388
+ onDownloadClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
389
+ "button",
390
+ {
391
+ type: "button",
392
+ onClick: onDownloadClick,
393
+ onMouseEnter: () => setHoveredButton("download"),
394
+ onMouseLeave: () => setHoveredButton(null),
395
+ onFocus: () => setFocusedButton("download"),
396
+ onBlur: () => setFocusedButton(null),
397
+ style: getIconButtonStyle("download"),
398
+ "aria-label": "Download",
399
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Download, { size: 16, color: "#2f2f2f" })
400
+ }
401
+ ),
402
+ onTooltipsClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
403
+ "button",
404
+ {
405
+ type: "button",
406
+ onClick: onTooltipsClick,
407
+ onMouseEnter: () => setHoveredButton("tooltips"),
408
+ onMouseLeave: () => setHoveredButton(null),
409
+ onFocus: () => setFocusedButton("tooltips"),
410
+ onBlur: () => setFocusedButton(null),
411
+ style: getIconButtonStyle("tooltips"),
412
+ "aria-label": tooltipsEnabled ? "Disable tooltips" : "Enable tooltips",
413
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
414
+ import_lucide_react.MessageSquare,
415
+ {
416
+ size: 16,
417
+ color: "#2f2f2f"
418
+ }
419
+ )
420
+ }
421
+ ),
422
+ onSettingsClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
423
+ "button",
424
+ {
425
+ type: "button",
426
+ onClick: onSettingsClick,
427
+ onMouseEnter: () => setHoveredButton("settings"),
428
+ onMouseLeave: () => setHoveredButton(null),
429
+ onFocus: () => setFocusedButton("settings"),
430
+ onBlur: () => setFocusedButton(null),
431
+ style: getIconButtonStyle("settings"),
432
+ "aria-label": "Settings",
433
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Settings, { size: 16, color: "#2f2f2f" })
434
+ }
435
+ ),
436
+ onExpandClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
437
+ "button",
438
+ {
439
+ type: "button",
440
+ onClick: onExpandClick,
441
+ onMouseEnter: () => setHoveredButton("expand"),
442
+ onMouseLeave: () => setHoveredButton(null),
443
+ onFocus: () => setFocusedButton("expand"),
444
+ onBlur: () => setFocusedButton(null),
445
+ style: getIconButtonStyle("expand"),
446
+ "aria-label": "Expand",
447
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Expand, { size: 16, color: "#2f2f2f" })
448
+ }
449
+ )
450
+ ] })
451
+ ]
452
+ }
453
+ );
454
+ }
455
+ );
456
+ TableControls.displayName = "TableControls";
457
+ // Annotate the CommonJS export names for ESM import in node:
458
+ 0 && (module.exports = {
459
+ TableControls
460
+ });
461
+ //# sourceMappingURL=TableControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/TableControls/index.ts","../src/TableControls/TableControls.tsx"],"sourcesContent":["export { TableControls } from './TableControls';\nexport type { TableControlsProps } from './TableControls';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n ChevronDown,\n Undo2,\n Redo2,\n Search,\n Download,\n MessageSquare,\n Settings,\n Expand,\n} from 'lucide-react';\n\nexport interface TableControlsProps {\n /**\n * Number of selected items for the Actions button\n */\n selectedCount?: number;\n /**\n * Callback when Actions dropdown is clicked\n */\n onActionsClick?: () => void;\n /**\n * Callback when Undo is clicked\n */\n onUndoClick?: () => void;\n /**\n * Callback when Redo is clicked\n */\n onRedoClick?: () => void;\n /**\n * Callback when Hide Columns is clicked\n */\n onHideColumnsClick?: () => void;\n /**\n * Callback when Search is clicked\n */\n onSearchClick?: () => void;\n /**\n * Callback when Download is clicked\n */\n onDownloadClick?: () => void;\n /**\n * Callback when Tooltips toggle is clicked\n */\n onTooltipsClick?: () => void;\n /**\n * Whether tooltips are enabled\n */\n tooltipsEnabled?: boolean;\n /**\n * Callback when Settings is clicked\n */\n onSettingsClick?: () => void;\n /**\n * Callback when Expand is clicked\n */\n onExpandClick?: () => void;\n /**\n * Whether undo is disabled\n */\n undoDisabled?: boolean;\n /**\n * Whether redo is disabled\n */\n redoDisabled?: boolean;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n /**\n * Test ID for testing\n */\n 'data-testid'?: string;\n}\n\nconst containerStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: '8px',\n paddingBottom: '8px',\n paddingLeft: 0,\n paddingRight: 0,\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n};\n\nconst actions1Styles: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n};\n\nconst actions2Styles: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexGrow: 1,\n paddingRight: '4px',\n};\n\nconst dropdownButtonStyles: React.CSSProperties = {\n height: '32px',\n backgroundColor: 'white',\n border: '1px solid #d1d1d1',\n borderRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n paddingLeft: '12px',\n paddingRight: '8px',\n paddingTop: 0,\n paddingBottom: 0,\n cursor: 'pointer',\n transition: 'background-color 0.2s ease-in-out',\n outline: 'none',\n};\n\nconst dropdownTextStyles: React.CSSProperties = {\n fontSize: '13px',\n fontWeight: 600,\n lineHeight: '1.5',\n color: '#2f2f2f',\n textAlign: 'center',\n};\n\nconst iconButtonStyles: React.CSSProperties = {\n width: '32px',\n height: '32px',\n borderRadius: '99px',\n border: 'none',\n backgroundColor: 'white',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n transition: 'background-color 0.2s ease-in-out',\n flexShrink: 0,\n outline: 'none',\n};\n\nconst iconButtonDisabledStyles: React.CSSProperties = {\n cursor: 'not-allowed',\n opacity: 0.5,\n};\n\nconst popoverContentStyles: React.CSSProperties = {\n backgroundColor: 'white',\n border: '1px solid #d1d1d1',\n borderRadius: '8px',\n padding: '8px',\n minWidth: '180px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)',\n zIndex: 1000,\n};\n\nconst menuItemStyles: React.CSSProperties = {\n padding: '8px 12px',\n fontSize: '13px',\n color: '#2f2f2f',\n cursor: 'pointer',\n borderRadius: '4px',\n border: 'none',\n backgroundColor: 'white',\n width: '100%',\n textAlign: 'left',\n transition: 'background-color 0.2s ease-in-out',\n};\n\n/**\n * TableControls component - Arbor Design System\n *\n * A toolbar component with action buttons and controls for tables.\n */\nexport const TableControls = React.forwardRef<HTMLDivElement, TableControlsProps>(\n (\n {\n selectedCount = 0,\n onActionsClick,\n onUndoClick,\n onRedoClick,\n onHideColumnsClick,\n onSearchClick,\n onDownloadClick,\n onTooltipsClick,\n tooltipsEnabled = false,\n onSettingsClick,\n onExpandClick,\n undoDisabled = false,\n redoDisabled = false,\n className,\n style,\n 'data-testid': dataTestId,\n },\n ref\n ) => {\n const [hoveredButton, setHoveredButton] = React.useState<string | null>(null);\n const [focusedButton, setFocusedButton] = React.useState<string | null>(null);\n const [actionsOpen, setActionsOpen] = React.useState(false);\n const [hideColumnsOpen, setHideColumnsOpen] = React.useState(false);\n\n const getIconButtonStyle = (\n buttonName: string,\n disabled: boolean = false\n ): React.CSSProperties => {\n if (disabled) {\n return { ...iconButtonStyles, ...iconButtonDisabledStyles };\n }\n\n const isHovered = hoveredButton === buttonName;\n const isFocused = focusedButton === buttonName;\n return {\n ...iconButtonStyles,\n backgroundColor: isHovered ? '#f5f5f5' : 'white',\n boxShadow: isFocused ? '0 0 0 3px #3cad51' : 'none',\n };\n };\n\n const getDropdownButtonStyle = (buttonName: string): React.CSSProperties => {\n const isHovered = hoveredButton === buttonName;\n const isFocused = focusedButton === buttonName;\n return {\n ...dropdownButtonStyles,\n backgroundColor: isHovered ? '#f5f5f5' : 'white',\n boxShadow: isFocused ? '0 0 0 3px #3cad51' : 'none',\n };\n };\n\n return (\n <div\n ref={ref}\n className={clsx('arbor-table-controls', className)}\n style={{ ...containerStyles, ...style }}\n data-testid={dataTestId}\n >\n {/* Left section - Actions 1 */}\n <div style={actions1Styles}>\n {onActionsClick && (\n <Popover.Root open={actionsOpen} onOpenChange={setActionsOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n onClick={() => {\n setActionsOpen(!actionsOpen);\n onActionsClick();\n }}\n onMouseEnter={() => setHoveredButton('actions')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('actions')}\n onBlur={() => setFocusedButton(null)}\n style={getDropdownButtonStyle('actions')}\n aria-label=\"Actions\"\n >\n <span style={dropdownTextStyles}>Actions ({selectedCount})</span>\n <ChevronDown size={16} color=\"#2f2f2f\" />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n style={popoverContentStyles}\n sideOffset={4}\n align=\"start\"\n >\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Edit selected items');\n setActionsOpen(false);\n }}\n >\n Edit selected items\n </button>\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Delete selected items');\n setActionsOpen(false);\n }}\n >\n Delete selected items\n </button>\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Export selected items');\n setActionsOpen(false);\n }}\n >\n Export selected items\n </button>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )}\n\n {onUndoClick && (\n <button\n type=\"button\"\n onClick={onUndoClick}\n disabled={undoDisabled}\n onMouseEnter={() => setHoveredButton('undo')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('undo')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('undo', undoDisabled)}\n aria-label=\"Undo\"\n >\n <Undo2 size={16} color=\"#2f2f2f\" />\n </button>\n )}\n\n {onRedoClick && (\n <button\n type=\"button\"\n onClick={onRedoClick}\n disabled={redoDisabled}\n onMouseEnter={() => setHoveredButton('redo')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('redo')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('redo', redoDisabled)}\n aria-label=\"Redo\"\n >\n <Redo2 size={16} color=\"#2f2f2f\" />\n </button>\n )}\n\n {onHideColumnsClick && (\n <Popover.Root open={hideColumnsOpen} onOpenChange={setHideColumnsOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n onClick={() => {\n setHideColumnsOpen(!hideColumnsOpen);\n onHideColumnsClick();\n }}\n onMouseEnter={() => setHoveredButton('hideColumns')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('hideColumns')}\n onBlur={() => setFocusedButton(null)}\n style={getDropdownButtonStyle('hideColumns')}\n aria-label=\"Hide Columns\"\n >\n <span style={dropdownTextStyles}>Hide Columns</span>\n <ChevronDown size={16} color=\"#2f2f2f\" />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n style={popoverContentStyles}\n sideOffset={4}\n align=\"start\"\n >\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Hide Name column');\n setHideColumnsOpen(false);\n }}\n >\n Name\n </button>\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Hide Email column');\n setHideColumnsOpen(false);\n }}\n >\n Email\n </button>\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Hide Status column');\n setHideColumnsOpen(false);\n }}\n >\n Status\n </button>\n <button\n style={menuItemStyles}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#f5f5f5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = 'white')}\n onClick={() => {\n console.log('Hide Date column');\n setHideColumnsOpen(false);\n }}\n >\n Date\n </button>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )}\n </div>\n\n {/* Right section - Actions 2 */}\n <div style={actions2Styles}>\n {onSearchClick && (\n <button\n type=\"button\"\n onClick={onSearchClick}\n onMouseEnter={() => setHoveredButton('search')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('search')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('search')}\n aria-label=\"Search\"\n >\n <Search size={16} color=\"#2f2f2f\" />\n </button>\n )}\n\n {onDownloadClick && (\n <button\n type=\"button\"\n onClick={onDownloadClick}\n onMouseEnter={() => setHoveredButton('download')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('download')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('download')}\n aria-label=\"Download\"\n >\n <Download size={16} color=\"#2f2f2f\" />\n </button>\n )}\n\n {onTooltipsClick && (\n <button\n type=\"button\"\n onClick={onTooltipsClick}\n onMouseEnter={() => setHoveredButton('tooltips')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('tooltips')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('tooltips')}\n aria-label={tooltipsEnabled ? 'Disable tooltips' : 'Enable tooltips'}\n >\n <MessageSquare\n size={16}\n color=\"#2f2f2f\"\n />\n </button>\n )}\n\n {onSettingsClick && (\n <button\n type=\"button\"\n onClick={onSettingsClick}\n onMouseEnter={() => setHoveredButton('settings')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('settings')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('settings')}\n aria-label=\"Settings\"\n >\n <Settings size={16} color=\"#2f2f2f\" />\n </button>\n )}\n\n {onExpandClick && (\n <button\n type=\"button\"\n onClick={onExpandClick}\n onMouseEnter={() => setHoveredButton('expand')}\n onMouseLeave={() => setHoveredButton(null)}\n onFocus={() => setFocusedButton('expand')}\n onBlur={() => setFocusedButton(null)}\n style={getIconButtonStyle('expand')}\n aria-label=\"Expand\"\n >\n <Expand size={16} color=\"#2f2f2f\" />\n </button>\n )}\n </div>\n </div>\n );\n }\n);\n\nTableControls.displayName = 'TableControls';\n"],"mappings":"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","names":[]}
@@ -0,0 +1,7 @@
1
+ import {
2
+ TableControls
3
+ } from "./chunk-G5NVKF2G.mjs";
4
+ export {
5
+ TableControls
6
+ };
7
+ //# sourceMappingURL=TableControls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+
3
+ interface TableFooterPaginationProps {
4
+ /**
5
+ * Current page number (1-indexed)
6
+ */
7
+ currentPage: number;
8
+ /**
9
+ * Total number of pages
10
+ */
11
+ totalPages: number;
12
+ /**
13
+ * Callback when page changes
14
+ */
15
+ onPageChange: (page: number) => void;
16
+ /**
17
+ * Total number of results
18
+ */
19
+ totalResults: number;
20
+ /**
21
+ * Number of results currently showing
22
+ */
23
+ currentResults: number;
24
+ /**
25
+ * Items per page
26
+ */
27
+ itemsPerPage: number;
28
+ /**
29
+ * Callback when items per page changes
30
+ */
31
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
32
+ /**
33
+ * Callback when expand table is clicked
34
+ */
35
+ onExpandTable?: () => void;
36
+ /**
37
+ * Custom className
38
+ */
39
+ className?: string;
40
+ /**
41
+ * Custom style
42
+ */
43
+ style?: React.CSSProperties;
44
+ /**
45
+ * Test ID for testing
46
+ */
47
+ 'data-testid'?: string;
48
+ }
49
+ /**
50
+ * TableFooterPagination component - Arbor Design System
51
+ *
52
+ * A table footer component with result count, pagination, and table controls.
53
+ */
54
+ declare const TableFooterPagination: React.ForwardRefExoticComponent<TableFooterPaginationProps & React.RefAttributes<HTMLDivElement>>;
55
+
56
+ export { TableFooterPagination, type TableFooterPaginationProps };
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+
3
+ interface TableFooterPaginationProps {
4
+ /**
5
+ * Current page number (1-indexed)
6
+ */
7
+ currentPage: number;
8
+ /**
9
+ * Total number of pages
10
+ */
11
+ totalPages: number;
12
+ /**
13
+ * Callback when page changes
14
+ */
15
+ onPageChange: (page: number) => void;
16
+ /**
17
+ * Total number of results
18
+ */
19
+ totalResults: number;
20
+ /**
21
+ * Number of results currently showing
22
+ */
23
+ currentResults: number;
24
+ /**
25
+ * Items per page
26
+ */
27
+ itemsPerPage: number;
28
+ /**
29
+ * Callback when items per page changes
30
+ */
31
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
32
+ /**
33
+ * Callback when expand table is clicked
34
+ */
35
+ onExpandTable?: () => void;
36
+ /**
37
+ * Custom className
38
+ */
39
+ className?: string;
40
+ /**
41
+ * Custom style
42
+ */
43
+ style?: React.CSSProperties;
44
+ /**
45
+ * Test ID for testing
46
+ */
47
+ 'data-testid'?: string;
48
+ }
49
+ /**
50
+ * TableFooterPagination component - Arbor Design System
51
+ *
52
+ * A table footer component with result count, pagination, and table controls.
53
+ */
54
+ declare const TableFooterPagination: React.ForwardRefExoticComponent<TableFooterPaginationProps & React.RefAttributes<HTMLDivElement>>;
55
+
56
+ export { TableFooterPagination, type TableFooterPaginationProps };