@simpleapps-com/augur-web 2.2.22 → 2.2.24

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 (69) hide show
  1. package/dist/button.d.cts +1 -1
  2. package/dist/button.d.ts +1 -1
  3. package/dist/chunk-32XB3REY.cjs +34 -0
  4. package/dist/chunk-32XB3REY.cjs.map +1 -0
  5. package/dist/chunk-KHIHHL3A.js +52 -0
  6. package/dist/chunk-KHIHHL3A.js.map +1 -0
  7. package/dist/chunk-NEY26NNF.cjs +75 -0
  8. package/dist/chunk-NEY26NNF.cjs.map +1 -0
  9. package/dist/chunk-RGJT67PN.js +34 -0
  10. package/dist/chunk-RGJT67PN.js.map +1 -0
  11. package/dist/chunk-UB7HYAAC.js +34 -0
  12. package/dist/chunk-UB7HYAAC.js.map +1 -0
  13. package/dist/chunk-UFL6PVLI.cjs +52 -0
  14. package/dist/chunk-UFL6PVLI.cjs.map +1 -0
  15. package/dist/chunk-WFMP6TZN.js +51 -0
  16. package/dist/chunk-WFMP6TZN.js.map +1 -0
  17. package/dist/chunk-WJUDOEVB.cjs +51 -0
  18. package/dist/chunk-WJUDOEVB.cjs.map +1 -0
  19. package/dist/chunk-XIKSI7NY.js +75 -0
  20. package/dist/chunk-XIKSI7NY.js.map +1 -0
  21. package/dist/chunk-Z57QBVUC.cjs +34 -0
  22. package/dist/chunk-Z57QBVUC.cjs.map +1 -0
  23. package/dist/command.d.cts +7 -7
  24. package/dist/command.d.ts +7 -7
  25. package/dist/confirm-dialog.cjs +49 -0
  26. package/dist/confirm-dialog.cjs.map +1 -0
  27. package/dist/confirm-dialog.d.cts +35 -0
  28. package/dist/confirm-dialog.d.ts +35 -0
  29. package/dist/confirm-dialog.js +49 -0
  30. package/dist/confirm-dialog.js.map +1 -0
  31. package/dist/data-table.cjs +134 -0
  32. package/dist/data-table.cjs.map +1 -0
  33. package/dist/data-table.d.cts +58 -0
  34. package/dist/data-table.d.ts +58 -0
  35. package/dist/data-table.js +134 -0
  36. package/dist/data-table.js.map +1 -0
  37. package/dist/detail-panel.cjs +142 -0
  38. package/dist/detail-panel.cjs.map +1 -0
  39. package/dist/detail-panel.d.cts +59 -0
  40. package/dist/detail-panel.d.ts +59 -0
  41. package/dist/detail-panel.js +142 -0
  42. package/dist/detail-panel.js.map +1 -0
  43. package/dist/form-input.cjs +5 -28
  44. package/dist/form-input.cjs.map +1 -1
  45. package/dist/form-input.js +4 -27
  46. package/dist/form-input.js.map +1 -1
  47. package/dist/form-select.cjs +5 -45
  48. package/dist/form-select.cjs.map +1 -1
  49. package/dist/form-select.js +4 -44
  50. package/dist/form-select.js.map +1 -1
  51. package/dist/form-textarea.cjs +5 -28
  52. package/dist/form-textarea.cjs.map +1 -1
  53. package/dist/form-textarea.js +4 -27
  54. package/dist/form-textarea.js.map +1 -1
  55. package/dist/resource-tabs.cjs +25 -0
  56. package/dist/resource-tabs.cjs.map +1 -0
  57. package/dist/resource-tabs.d.cts +33 -0
  58. package/dist/resource-tabs.d.ts +33 -0
  59. package/dist/resource-tabs.js +25 -0
  60. package/dist/resource-tabs.js.map +1 -0
  61. package/dist/table.cjs +20 -72
  62. package/dist/table.cjs.map +1 -1
  63. package/dist/table.js +10 -62
  64. package/dist/table.js.map +1 -1
  65. package/dist/tabs.cjs +12 -49
  66. package/dist/tabs.cjs.map +1 -1
  67. package/dist/tabs.js +6 -43
  68. package/dist/tabs.js.map +1 -1
  69. package/package.json +29 -7
@@ -8,7 +8,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
8
8
  ref?: React.Ref<HTMLDivElement>;
9
9
  } & {
10
10
  asChild?: boolean;
11
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
11
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
12
12
  label?: string;
13
13
  shouldFilter?: boolean;
14
14
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -25,7 +25,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
25
25
  ref?: React.Ref<HTMLInputElement>;
26
26
  } & {
27
27
  asChild?: boolean;
28
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "onChange" | "value"> & {
28
+ }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
29
29
  value?: string;
30
30
  onValueChange?: (search: string) => void;
31
31
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -35,7 +35,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
35
35
  ref?: React.Ref<HTMLDivElement>;
36
36
  } & {
37
37
  asChild?: boolean;
38
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
38
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
39
39
  label?: string;
40
40
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
41
41
  declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
@@ -44,14 +44,14 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
44
44
  ref?: React.Ref<HTMLDivElement>;
45
45
  } & {
46
46
  asChild?: boolean;
47
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
47
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
48
48
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
49
49
  children?: React.ReactNode;
50
50
  } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
51
51
  ref?: React.Ref<HTMLDivElement>;
52
52
  } & {
53
53
  asChild?: boolean;
54
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
54
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
55
55
  heading?: React.ReactNode;
56
56
  value?: string;
57
57
  forceMount?: boolean;
@@ -60,7 +60,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
60
60
  ref?: React.Ref<HTMLDivElement>;
61
61
  } & {
62
62
  asChild?: boolean;
63
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
63
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
64
64
  alwaysRender?: boolean;
65
65
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
66
66
  declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
@@ -69,7 +69,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
69
69
  ref?: React.Ref<HTMLDivElement>;
70
70
  } & {
71
71
  asChild?: boolean;
72
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "value" | "disabled"> & {
72
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
73
73
  disabled?: boolean;
74
74
  onSelect?: (value: string) => void;
75
75
  value?: string;
package/dist/command.d.ts CHANGED
@@ -8,7 +8,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
8
8
  ref?: React.Ref<HTMLDivElement>;
9
9
  } & {
10
10
  asChild?: boolean;
11
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
11
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
12
12
  label?: string;
13
13
  shouldFilter?: boolean;
14
14
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -25,7 +25,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
25
25
  ref?: React.Ref<HTMLInputElement>;
26
26
  } & {
27
27
  asChild?: boolean;
28
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "onChange" | "value"> & {
28
+ }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
29
29
  value?: string;
30
30
  onValueChange?: (search: string) => void;
31
31
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -35,7 +35,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
35
35
  ref?: React.Ref<HTMLDivElement>;
36
36
  } & {
37
37
  asChild?: boolean;
38
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
38
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
39
39
  label?: string;
40
40
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
41
41
  declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
@@ -44,14 +44,14 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
44
44
  ref?: React.Ref<HTMLDivElement>;
45
45
  } & {
46
46
  asChild?: boolean;
47
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
47
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
48
48
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
49
49
  children?: React.ReactNode;
50
50
  } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
51
51
  ref?: React.Ref<HTMLDivElement>;
52
52
  } & {
53
53
  asChild?: boolean;
54
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
54
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
55
55
  heading?: React.ReactNode;
56
56
  value?: string;
57
57
  forceMount?: boolean;
@@ -60,7 +60,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
60
60
  ref?: React.Ref<HTMLDivElement>;
61
61
  } & {
62
62
  asChild?: boolean;
63
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
63
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
64
64
  alwaysRender?: boolean;
65
65
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
66
66
  declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
@@ -69,7 +69,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
69
69
  ref?: React.Ref<HTMLDivElement>;
70
70
  } & {
71
71
  asChild?: boolean;
72
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "value" | "disabled"> & {
72
+ }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
73
73
  disabled?: boolean;
74
74
  onSelect?: (value: string) => void;
75
75
  value?: string;
@@ -0,0 +1,49 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+ "use client";
3
+
4
+
5
+ var _chunk5VMEEKZ5cjs = require('./chunk-5VMEEKZ5.cjs');
6
+
7
+
8
+ var _chunkVL6L4GDAcjs = require('./chunk-VL6L4GDA.cjs');
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ var _chunkT52J3SHPcjs = require('./chunk-T52J3SHP.cjs');
17
+
18
+ // src/confirm-dialog.tsx
19
+ var _jsxruntime = require('react/jsx-runtime');
20
+ function ConfirmDialog({
21
+ open,
22
+ onOpenChange,
23
+ title,
24
+ description,
25
+ confirmLabel = "Confirm",
26
+ cancelLabel = "Cancel",
27
+ variant = "default",
28
+ onConfirm,
29
+ loading = false
30
+ }) {
31
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT52J3SHPcjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT52J3SHPcjs.DialogContent, { children: [
32
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT52J3SHPcjs.DialogHeader, { children: [
33
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT52J3SHPcjs.DialogTitle, { children: title }),
34
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT52J3SHPcjs.DialogDescription, { children: description })
35
+ ] }),
36
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT52J3SHPcjs.DialogFooter, { children: [
37
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVL6L4GDAcjs.Button, { variant: "outline", onClick: () => onOpenChange(false), disabled: loading, children: cancelLabel }),
38
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVL6L4GDAcjs.Button, { variant, onClick: onConfirm, disabled: loading, children: [
39
+ loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5VMEEKZ5cjs.Spinner, { size: "sm", className: "mr-2" }),
40
+ confirmLabel
41
+ ] })
42
+ ] })
43
+ ] }) });
44
+ }
45
+ ConfirmDialog.displayName = "ConfirmDialog";
46
+
47
+
48
+ exports.ConfirmDialog = ConfirmDialog;
49
+ //# sourceMappingURL=confirm-dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/confirm-dialog.cjs","../src/confirm-dialog.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ,YAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACuCQ,+CAAA;AAdR,SAAS,aAAA,CAAc;AAAA,EACrB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,QAAA;AAAA,EACd,QAAA,EAAU,SAAA;AAAA,EACV,SAAA;AAAA,EACA,QAAA,EAAU;AACZ,CAAA,EAAuB;AACrB,EAAA,uBACE,6BAAA,wBAAC,EAAA,EAAO,IAAA,EAAY,YAAA,EAClB,QAAA,kBAAA,8BAAA,+BAAC,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,8BAAA,8BAAC,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,6BAAA,6BAAC,EAAA,EAAa,QAAA,EAAA,MAAA,CAAM,CAAA;AAAA,MACnB,YAAA,mBAAe,6BAAA,mCAAC,EAAA,EAAmB,QAAA,EAAA,YAAA,CAAY;AAAA,IAAA,EAAA,CAClD,CAAA;AAAA,oBACA,8BAAA,8BAAC,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,6BAAA,wBAAC,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,CAAA,EAAA,GAAM,YAAA,CAAa,KAAK,CAAA,EAAG,QAAA,EAAU,OAAA,EACrE,QAAA,EAAA,YAAA,CACH,CAAA;AAAA,sBACA,8BAAA,wBAAC,EAAA,EAAO,OAAA,EAAkB,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,OAAA,EACrD,QAAA,EAAA;AAAA,QAAA,QAAA,mBAAW,6BAAA,yBAAC,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,OAAA,CAAO,CAAA;AAAA,QAC/C;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF,CAAA;AAEJ;AACA,aAAA,CAAc,YAAA,EAAc,eAAA;AD5B5B;AACE;AACF,sCAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/confirm-dialog.cjs","sourcesContent":[null,"/** Reusable confirmation dialog composing Dialog + Button. */\n\"use client\";\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from \"./dialog\";\nimport { Button } from \"./button\";\nimport { Spinner } from \"./spinner\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: \"default\" | \"destructive\";\n onConfirm: () => void;\n loading?: boolean;\n}\n\n/**\n * Pre-composed confirmation dialog for delete/action confirmations.\n *\n * @example\n * ```tsx\n * <ConfirmDialog\n * open={showDelete}\n * onOpenChange={setShowDelete}\n * title=\"Delete brand?\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteBrand.mutate(uid)}\n * loading={deleteBrand.isPending}\n * />\n * ```\n */\nfunction ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"default\",\n onConfirm,\n loading = false,\n}: ConfirmDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)} disabled={loading}>\n {cancelLabel}\n </Button>\n <Button variant={variant} onClick={onConfirm} disabled={loading}>\n {loading && <Spinner size=\"sm\" className=\"mr-2\" />}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\nConfirmDialog.displayName = \"ConfirmDialog\";\n\nexport { ConfirmDialog };\n"]}
@@ -0,0 +1,35 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ConfirmDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ title: string;
7
+ description?: string;
8
+ confirmLabel?: string;
9
+ cancelLabel?: string;
10
+ variant?: "default" | "destructive";
11
+ onConfirm: () => void;
12
+ loading?: boolean;
13
+ }
14
+ /**
15
+ * Pre-composed confirmation dialog for delete/action confirmations.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <ConfirmDialog
20
+ * open={showDelete}
21
+ * onOpenChange={setShowDelete}
22
+ * title="Delete brand?"
23
+ * description="This action cannot be undone."
24
+ * variant="destructive"
25
+ * onConfirm={() => deleteBrand.mutate(uid)}
26
+ * loading={deleteBrand.isPending}
27
+ * />
28
+ * ```
29
+ */
30
+ declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, variant, onConfirm, loading, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
31
+ declare namespace ConfirmDialog {
32
+ var displayName: string;
33
+ }
34
+
35
+ export { ConfirmDialog, type ConfirmDialogProps };
@@ -0,0 +1,35 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ConfirmDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ title: string;
7
+ description?: string;
8
+ confirmLabel?: string;
9
+ cancelLabel?: string;
10
+ variant?: "default" | "destructive";
11
+ onConfirm: () => void;
12
+ loading?: boolean;
13
+ }
14
+ /**
15
+ * Pre-composed confirmation dialog for delete/action confirmations.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <ConfirmDialog
20
+ * open={showDelete}
21
+ * onOpenChange={setShowDelete}
22
+ * title="Delete brand?"
23
+ * description="This action cannot be undone."
24
+ * variant="destructive"
25
+ * onConfirm={() => deleteBrand.mutate(uid)}
26
+ * loading={deleteBrand.isPending}
27
+ * />
28
+ * ```
29
+ */
30
+ declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, variant, onConfirm, loading, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
31
+ declare namespace ConfirmDialog {
32
+ var displayName: string;
33
+ }
34
+
35
+ export { ConfirmDialog, type ConfirmDialogProps };
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ Spinner
5
+ } from "./chunk-UMNTUD2P.js";
6
+ import {
7
+ Button
8
+ } from "./chunk-QICSGVX3.js";
9
+ import {
10
+ Dialog,
11
+ DialogContent,
12
+ DialogDescription,
13
+ DialogFooter,
14
+ DialogHeader,
15
+ DialogTitle
16
+ } from "./chunk-JNYGRU2F.js";
17
+
18
+ // src/confirm-dialog.tsx
19
+ import { jsx, jsxs } from "react/jsx-runtime";
20
+ function ConfirmDialog({
21
+ open,
22
+ onOpenChange,
23
+ title,
24
+ description,
25
+ confirmLabel = "Confirm",
26
+ cancelLabel = "Cancel",
27
+ variant = "default",
28
+ onConfirm,
29
+ loading = false
30
+ }) {
31
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { children: [
32
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
33
+ /* @__PURE__ */ jsx(DialogTitle, { children: title }),
34
+ description && /* @__PURE__ */ jsx(DialogDescription, { children: description })
35
+ ] }),
36
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
37
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), disabled: loading, children: cancelLabel }),
38
+ /* @__PURE__ */ jsxs(Button, { variant, onClick: onConfirm, disabled: loading, children: [
39
+ loading && /* @__PURE__ */ jsx(Spinner, { size: "sm", className: "mr-2" }),
40
+ confirmLabel
41
+ ] })
42
+ ] })
43
+ ] }) });
44
+ }
45
+ ConfirmDialog.displayName = "ConfirmDialog";
46
+ export {
47
+ ConfirmDialog
48
+ };
49
+ //# sourceMappingURL=confirm-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/confirm-dialog.tsx"],"sourcesContent":["/** Reusable confirmation dialog composing Dialog + Button. */\n\"use client\";\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from \"./dialog\";\nimport { Button } from \"./button\";\nimport { Spinner } from \"./spinner\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: \"default\" | \"destructive\";\n onConfirm: () => void;\n loading?: boolean;\n}\n\n/**\n * Pre-composed confirmation dialog for delete/action confirmations.\n *\n * @example\n * ```tsx\n * <ConfirmDialog\n * open={showDelete}\n * onOpenChange={setShowDelete}\n * title=\"Delete brand?\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * onConfirm={() => deleteBrand.mutate(uid)}\n * loading={deleteBrand.isPending}\n * />\n * ```\n */\nfunction ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"default\",\n onConfirm,\n loading = false,\n}: ConfirmDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)} disabled={loading}>\n {cancelLabel}\n </Button>\n <Button variant={variant} onClick={onConfirm} disabled={loading}>\n {loading && <Spinner size=\"sm\" className=\"mr-2\" />}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\nConfirmDialog.displayName = \"ConfirmDialog\";\n\nexport { ConfirmDialog };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwDQ,SACE,KADF;AAdR,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,cAAc;AAAA,EACd,UAAU;AAAA,EACV;AAAA,EACA,UAAU;AACZ,GAAuB;AACrB,SACE,oBAAC,UAAO,MAAY,cAClB,+BAAC,iBACC;AAAA,yBAAC,gBACC;AAAA,0BAAC,eAAa,iBAAM;AAAA,MACnB,eAAe,oBAAC,qBAAmB,uBAAY;AAAA,OAClD;AAAA,IACA,qBAAC,gBACC;AAAA,0BAAC,UAAO,SAAQ,WAAU,SAAS,MAAM,aAAa,KAAK,GAAG,UAAU,SACrE,uBACH;AAAA,MACA,qBAAC,UAAO,SAAkB,SAAS,WAAW,UAAU,SACrD;AAAA,mBAAW,oBAAC,WAAQ,MAAK,MAAK,WAAU,QAAO;AAAA,QAC/C;AAAA,SACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;AACA,cAAc,cAAc;","names":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+ "use client";
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+ var _chunkNEY26NNFcjs = require('./chunk-NEY26NNF.cjs');
11
+
12
+
13
+ var _chunk7EXXNELXcjs = require('./chunk-7EXXNELX.cjs');
14
+
15
+
16
+ var _chunk5VMEEKZ5cjs = require('./chunk-5VMEEKZ5.cjs');
17
+
18
+ // src/data-table.tsx
19
+ var _react = require('react'); var React = _interopRequireWildcard(_react);
20
+
21
+
22
+
23
+
24
+
25
+
26
+ var _reacttable = require('@tanstack/react-table');
27
+ var _web = require('@simpleapps-com/augur-utils/web');
28
+ var _lu = require('react-icons/lu');
29
+ var _jsxruntime = require('react/jsx-runtime');
30
+ function buildTanstackColumns(columns) {
31
+ return columns.map((col) => ({
32
+ id: col.key,
33
+ accessorKey: col.key,
34
+ header: col.header,
35
+ enableSorting: _nullishCoalesce(col.sortable, () => ( false)),
36
+ cell: col.render ? (info) => col.render(info.row.original) : (info) => String(_nullishCoalesce(info.getValue(), () => ( ""))),
37
+ meta: { align: col.align }
38
+ }));
39
+ }
40
+ var alignClass = {
41
+ left: "text-left",
42
+ center: "text-center",
43
+ right: "text-right"
44
+ };
45
+ function DataTable({
46
+ columns,
47
+ data,
48
+ searchable = false,
49
+ searchPlaceholder = "Search...",
50
+ onRowClick,
51
+ loading = false,
52
+ emptyMessage = "No results.",
53
+ toolbar,
54
+ className,
55
+ getRowId
56
+ }) {
57
+ const [sorting, setSorting] = React.useState([]);
58
+ const [globalFilter, setGlobalFilter] = React.useState("");
59
+ const tanstackColumns = React.useMemo(() => buildTanstackColumns(columns), [columns]);
60
+ const table = _reacttable.useReactTable.call(void 0, {
61
+ data,
62
+ columns: tanstackColumns,
63
+ state: { sorting, globalFilter },
64
+ onSortingChange: setSorting,
65
+ onGlobalFilterChange: setGlobalFilter,
66
+ getCoreRowModel: _reacttable.getCoreRowModel.call(void 0, ),
67
+ getSortedRowModel: _reacttable.getSortedRowModel.call(void 0, ),
68
+ getFilteredRowModel: _reacttable.getFilteredRowModel.call(void 0, ),
69
+ getRowId: getRowId ? (row) => getRowId(row) : void 0
70
+ });
71
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _web.cn.call(void 0, "space-y-4", className), children: [
72
+ (searchable || toolbar) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4", children: [
73
+ searchable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
74
+ _chunk7EXXNELXcjs.Input,
75
+ {
76
+ placeholder: searchPlaceholder,
77
+ value: globalFilter,
78
+ onChange: (e) => setGlobalFilter(e.target.value),
79
+ className: "max-w-sm"
80
+ }
81
+ ),
82
+ toolbar
83
+ ] }),
84
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNEY26NNFcjs.Table, { children: [
85
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableRow, { children: headerGroup.headers.map((header) => {
86
+ const align = _nullishCoalesce(_optionalChain([header, 'access', _ => _.column, 'access', _2 => _2.columnDef, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.align]), () => ( "left"));
87
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
88
+ _chunkNEY26NNFcjs.TableHead,
89
+ {
90
+ className: _web.cn.call(void 0,
91
+ alignClass[align],
92
+ header.column.getCanSort() && "cursor-pointer select-none"
93
+ ),
94
+ onClick: header.column.getToggleSortingHandler(),
95
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex items-center gap-1", children: [
96
+ _reacttable.flexRender.call(void 0, header.column.columnDef.header, header.getContext()),
97
+ header.column.getCanSort() && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIndicator, { direction: header.column.getIsSorted() })
98
+ ] })
99
+ },
100
+ header.id
101
+ );
102
+ }) }, headerGroup.id)) }),
103
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableBody, { children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableRow, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableCell, { colSpan: columns.length, className: "h-24 text-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5VMEEKZ5cjs.Spinner, { size: "lg", className: "mx-auto" }) }) }) : table.getRowModel().rows.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableRow, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEY26NNFcjs.TableCell, { colSpan: columns.length, className: "h-24 text-center", children: emptyMessage }) }) : table.getRowModel().rows.map((row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
104
+ _chunkNEY26NNFcjs.TableRow,
105
+ {
106
+ className: _web.cn.call(void 0, onRowClick && "cursor-pointer"),
107
+ onClick: onRowClick ? () => onRowClick(row.original) : void 0,
108
+ children: row.getVisibleCells().map((cell) => {
109
+ const align = _nullishCoalesce(_optionalChain([cell, 'access', _5 => _5.column, 'access', _6 => _6.columnDef, 'access', _7 => _7.meta, 'optionalAccess', _8 => _8.align]), () => ( "left"));
110
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
111
+ _chunkNEY26NNFcjs.TableCell,
112
+ {
113
+ className: alignClass[align],
114
+ children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext())
115
+ },
116
+ cell.id
117
+ );
118
+ })
119
+ },
120
+ row.id
121
+ )) })
122
+ ] })
123
+ ] });
124
+ }
125
+ DataTable.displayName = "DataTable";
126
+ function SortIndicator({ direction }) {
127
+ if (direction === "asc") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lu.LuArrowUp, { className: "h-4 w-4" });
128
+ if (direction === "desc") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lu.LuArrowDown, { className: "h-4 w-4" });
129
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lu.LuArrowUpDown, { className: "text-muted-foreground/50 h-4 w-4" });
130
+ }
131
+
132
+
133
+ exports.DataTable = DataTable;
134
+ //# sourceMappingURL=data-table.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/data-table.cjs","../src/data-table.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/data-table.cjs","sourcesContent":[null,"/** Sortable, searchable data table built on TanStack Table. */\n\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n useReactTable,\n type ColumnDef as TanstackColumnDef,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { LuArrowDown, LuArrowUp, LuArrowUpDown } from \"react-icons/lu\";\nimport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"./table\";\nimport { Input } from \"./input\";\nimport { Spinner } from \"./spinner\";\n\nexport interface ColumnDef<T> {\n /** Property key on the data object. */\n key: keyof T & string;\n /** Column header label. */\n header: string;\n /** Enable sorting on this column. */\n sortable?: boolean;\n /** Custom cell renderer. Receives the row data object. */\n render?: (row: T) => React.ReactNode;\n /** Text alignment. */\n align?: \"left\" | \"center\" | \"right\";\n}\n\nexport interface DataTableProps<T> {\n /** Column definitions describing each table column. */\n columns: ColumnDef<T>[];\n /** Data rows to display. */\n data: T[];\n /** Show a search input above the table. */\n searchable?: boolean;\n /** Placeholder text for the search input. */\n searchPlaceholder?: string;\n /** Callback when a row is clicked. Receives the row data. */\n onRowClick?: (row: T) => void;\n /** Show a loading spinner instead of data. */\n loading?: boolean;\n /** Message shown when data is empty. */\n emptyMessage?: string;\n /** Additional toolbar content rendered between search and table. */\n toolbar?: React.ReactNode;\n /** Additional class name for the root container. */\n className?: string;\n /** Row key extractor. Defaults to the row index. */\n getRowId?: (row: T) => string;\n}\n\nfunction buildTanstackColumns<T>(columns: ColumnDef<T>[]): TanstackColumnDef<T, unknown>[] {\n return columns.map((col) => ({\n id: col.key,\n accessorKey: col.key,\n header: col.header,\n enableSorting: col.sortable ?? false,\n cell: col.render\n ? (info) => col.render!(info.row.original)\n : (info) => String(info.getValue() ?? \"\"),\n meta: { align: col.align },\n }));\n}\n\nconst alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n} as const;\n\n/**\n * Data-driven table with sorting and search. Wraps TanStack Table with\n * the augur-web Table primitives.\n *\n * @example\n * ```tsx\n * const columns: ColumnDef<Brand>[] = [\n * { key: \"brandsUid\", header: \"UID\", sortable: true },\n * { key: \"brandsName\", header: \"Name\", sortable: true },\n * { key: \"brandsDesc\", header: \"Description\" },\n * ];\n *\n * <DataTable columns={columns} data={brands} searchable onRowClick={selectBrand} />\n * ```\n */\nfunction DataTable<T>({\n columns,\n data,\n searchable = false,\n searchPlaceholder = \"Search...\",\n onRowClick,\n loading = false,\n emptyMessage = \"No results.\",\n toolbar,\n className,\n getRowId,\n}: DataTableProps<T>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = React.useState(\"\");\n\n const tanstackColumns = React.useMemo(() => buildTanstackColumns(columns), [columns]);\n\n const table = useReactTable({\n data,\n columns: tanstackColumns,\n state: { sorting, globalFilter },\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getRowId: getRowId ? (row) => getRowId(row) : undefined,\n });\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {(searchable || toolbar) && (\n <div className=\"flex items-center gap-4\">\n {searchable && (\n <Input\n placeholder={searchPlaceholder}\n value={globalFilter}\n onChange={(e) => setGlobalFilter(e.target.value)}\n className=\"max-w-sm\"\n />\n )}\n {toolbar}\n </div>\n )}\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const align =\n (header.column.columnDef.meta as { align?: string } | undefined)?.align ?? \"left\";\n return (\n <TableHead\n key={header.id}\n className={cn(\n alignClass[align as keyof typeof alignClass],\n header.column.getCanSort() && \"cursor-pointer select-none\",\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"inline-flex items-center gap-1\">\n {flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getCanSort() && (\n <SortIndicator direction={header.column.getIsSorted()} />\n )}\n </span>\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n <Spinner size=\"lg\" className=\"mx-auto\" />\n </TableCell>\n </TableRow>\n ) : table.getRowModel().rows.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n {emptyMessage}\n </TableCell>\n </TableRow>\n ) : (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n className={cn(onRowClick && \"cursor-pointer\")}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n >\n {row.getVisibleCells().map((cell) => {\n const align =\n (cell.column.columnDef.meta as { align?: string } | undefined)?.align ?? \"left\";\n return (\n <TableCell\n key={cell.id}\n className={alignClass[align as keyof typeof alignClass]}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n );\n}\nDataTable.displayName = \"DataTable\";\n\nfunction SortIndicator({ direction }: { direction: false | \"asc\" | \"desc\" }) {\n if (direction === \"asc\") return <LuArrowUp className=\"h-4 w-4\" />;\n if (direction === \"desc\") return <LuArrowDown className=\"h-4 w-4\" />;\n return <LuArrowUpDown className=\"text-muted-foreground/50 h-4 w-4\" />;\n}\n\nexport { DataTable };\n"]}
@@ -0,0 +1,58 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface ColumnDef<T> {
5
+ /** Property key on the data object. */
6
+ key: keyof T & string;
7
+ /** Column header label. */
8
+ header: string;
9
+ /** Enable sorting on this column. */
10
+ sortable?: boolean;
11
+ /** Custom cell renderer. Receives the row data object. */
12
+ render?: (row: T) => React.ReactNode;
13
+ /** Text alignment. */
14
+ align?: "left" | "center" | "right";
15
+ }
16
+ interface DataTableProps<T> {
17
+ /** Column definitions describing each table column. */
18
+ columns: ColumnDef<T>[];
19
+ /** Data rows to display. */
20
+ data: T[];
21
+ /** Show a search input above the table. */
22
+ searchable?: boolean;
23
+ /** Placeholder text for the search input. */
24
+ searchPlaceholder?: string;
25
+ /** Callback when a row is clicked. Receives the row data. */
26
+ onRowClick?: (row: T) => void;
27
+ /** Show a loading spinner instead of data. */
28
+ loading?: boolean;
29
+ /** Message shown when data is empty. */
30
+ emptyMessage?: string;
31
+ /** Additional toolbar content rendered between search and table. */
32
+ toolbar?: React.ReactNode;
33
+ /** Additional class name for the root container. */
34
+ className?: string;
35
+ /** Row key extractor. Defaults to the row index. */
36
+ getRowId?: (row: T) => string;
37
+ }
38
+ /**
39
+ * Data-driven table with sorting and search. Wraps TanStack Table with
40
+ * the augur-web Table primitives.
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * const columns: ColumnDef<Brand>[] = [
45
+ * { key: "brandsUid", header: "UID", sortable: true },
46
+ * { key: "brandsName", header: "Name", sortable: true },
47
+ * { key: "brandsDesc", header: "Description" },
48
+ * ];
49
+ *
50
+ * <DataTable columns={columns} data={brands} searchable onRowClick={selectBrand} />
51
+ * ```
52
+ */
53
+ declare function DataTable<T>({ columns, data, searchable, searchPlaceholder, onRowClick, loading, emptyMessage, toolbar, className, getRowId, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
54
+ declare namespace DataTable {
55
+ var displayName: string;
56
+ }
57
+
58
+ export { type ColumnDef, DataTable, type DataTableProps };
@@ -0,0 +1,58 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface ColumnDef<T> {
5
+ /** Property key on the data object. */
6
+ key: keyof T & string;
7
+ /** Column header label. */
8
+ header: string;
9
+ /** Enable sorting on this column. */
10
+ sortable?: boolean;
11
+ /** Custom cell renderer. Receives the row data object. */
12
+ render?: (row: T) => React.ReactNode;
13
+ /** Text alignment. */
14
+ align?: "left" | "center" | "right";
15
+ }
16
+ interface DataTableProps<T> {
17
+ /** Column definitions describing each table column. */
18
+ columns: ColumnDef<T>[];
19
+ /** Data rows to display. */
20
+ data: T[];
21
+ /** Show a search input above the table. */
22
+ searchable?: boolean;
23
+ /** Placeholder text for the search input. */
24
+ searchPlaceholder?: string;
25
+ /** Callback when a row is clicked. Receives the row data. */
26
+ onRowClick?: (row: T) => void;
27
+ /** Show a loading spinner instead of data. */
28
+ loading?: boolean;
29
+ /** Message shown when data is empty. */
30
+ emptyMessage?: string;
31
+ /** Additional toolbar content rendered between search and table. */
32
+ toolbar?: React.ReactNode;
33
+ /** Additional class name for the root container. */
34
+ className?: string;
35
+ /** Row key extractor. Defaults to the row index. */
36
+ getRowId?: (row: T) => string;
37
+ }
38
+ /**
39
+ * Data-driven table with sorting and search. Wraps TanStack Table with
40
+ * the augur-web Table primitives.
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * const columns: ColumnDef<Brand>[] = [
45
+ * { key: "brandsUid", header: "UID", sortable: true },
46
+ * { key: "brandsName", header: "Name", sortable: true },
47
+ * { key: "brandsDesc", header: "Description" },
48
+ * ];
49
+ *
50
+ * <DataTable columns={columns} data={brands} searchable onRowClick={selectBrand} />
51
+ * ```
52
+ */
53
+ declare function DataTable<T>({ columns, data, searchable, searchPlaceholder, onRowClick, loading, emptyMessage, toolbar, className, getRowId, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
54
+ declare namespace DataTable {
55
+ var displayName: string;
56
+ }
57
+
58
+ export { type ColumnDef, DataTable, type DataTableProps };