@definable/ui 0.1.12 → 0.1.14
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.
- package/dist/badge.d.ts +1 -1
- package/dist/command.d.ts +7 -7
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/command.d.ts +7 -7
- package/dist/components/dialog.esm.js +23 -23
- package/dist/components/dialog.esm.js.map +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/image-cropper.esm.js +1 -1
- package/dist/components/image-cropper.esm.js.map +1 -1
- package/dist/components/image-cropper.js +1 -1
- package/dist/components/image-cropper.js.map +1 -1
- package/dist/components/input.esm.js +1 -1
- package/dist/components/input.esm.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/modal.d.ts +5 -1
- package/dist/components/modal.esm.js +72 -46
- package/dist/components/modal.esm.js.map +1 -1
- package/dist/components/modal.js +1 -1
- package/dist/components/modal.js.map +1 -1
- package/dist/components/table-mobile.esm.js +1 -1
- package/dist/components/table-mobile.esm.js.map +1 -1
- package/dist/components/table-mobile.js +1 -1
- package/dist/components/table-mobile.js.map +1 -1
- package/dist/components/table.d.ts +2 -2
- package/dist/components/table.esm.js +103 -89
- package/dist/components/table.esm.js.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/use-toast.esm.js +1 -1
- package/dist/components/use-toast.esm.js.map +1 -1
- package/dist/components/use-toast.js +1 -1
- package/dist/components/use-toast.js.map +1 -1
- package/dist/index.d.ts +15 -11
- package/dist/modal.d.ts +6 -2
- package/dist/stepper.d.ts +4 -0
- package/dist/styles.css +1 -1
- package/dist/table-mobile.d.ts +1 -1
- package/dist/table.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,57 +1,64 @@
|
|
|
1
1
|
import { j as r } from "../jsx-runtime-DGlMoOmv.js";
|
|
2
2
|
import { c as s } from "../utils-qaFjX9_3.js";
|
|
3
|
-
import { Checkbox as
|
|
4
|
-
import { Tooltip as
|
|
5
|
-
import { useState as
|
|
6
|
-
import { TableEmpty as
|
|
7
|
-
const
|
|
8
|
-
function
|
|
3
|
+
import { Checkbox as u } from "./checkbox.esm.js";
|
|
4
|
+
import { Tooltip as T } from "./tooltip.esm.js";
|
|
5
|
+
import { useState as $ } from "react";
|
|
6
|
+
import { TableEmpty as k } from "./table-empty.esm.js";
|
|
7
|
+
const c = ({ children: d, className: t }) => /* @__PURE__ */ r.jsx("div", { className: s("border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm", t), children: d });
|
|
8
|
+
function B({
|
|
9
9
|
data: d,
|
|
10
10
|
columns: t,
|
|
11
11
|
showCheckbox: o = !0,
|
|
12
12
|
onRowClick: p,
|
|
13
|
-
className:
|
|
13
|
+
className: h,
|
|
14
14
|
selectedItems: a,
|
|
15
15
|
onSelect: l,
|
|
16
|
-
emptyState:
|
|
17
|
-
isLoading:
|
|
18
|
-
loadingRows:
|
|
19
|
-
|
|
16
|
+
emptyState: f,
|
|
17
|
+
isLoading: g = !1,
|
|
18
|
+
loadingRows: b = 5,
|
|
19
|
+
tableHeightOffset: v
|
|
20
20
|
}) {
|
|
21
|
-
const [
|
|
21
|
+
const [N, m] = $(null), j = { height: v ? `calc(100vh - ${v})` : "calc(100vh - 8rem)" }, x = [
|
|
22
22
|
o ? "40px" : null,
|
|
23
23
|
...t.map((i) => i.width || "1fr")
|
|
24
|
-
].filter(Boolean).join(" "),
|
|
24
|
+
].filter(Boolean).join(" "), y = () => /* @__PURE__ */ r.jsx(
|
|
25
25
|
"div",
|
|
26
26
|
{
|
|
27
|
-
className: "
|
|
28
|
-
style:
|
|
29
|
-
children:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
children: /* @__PURE__ */ r.jsx(
|
|
27
|
+
className: s("divide-y divide-border/50 overflow-y-auto"),
|
|
28
|
+
style: j,
|
|
29
|
+
children: Array(b).fill(0).map((i, n) => /* @__PURE__ */ r.jsxs(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
className: "grid items-center px-6 py-4 text-sm",
|
|
33
|
+
style: { gridTemplateColumns: x },
|
|
34
|
+
children: [
|
|
35
|
+
o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx("div", { className: "h-4 w-4 rounded bg-muted animate-pulse" }) }),
|
|
36
|
+
t.map((e) => /* @__PURE__ */ r.jsx(
|
|
36
37
|
"div",
|
|
37
38
|
{
|
|
38
|
-
className: "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
className: s("px-2 relative min-w-0", e.className),
|
|
40
|
+
children: /* @__PURE__ */ r.jsx(
|
|
41
|
+
"div",
|
|
42
|
+
{
|
|
43
|
+
className: "h-4 bg-muted rounded animate-pulse",
|
|
44
|
+
style: { width: Math.random() * 40 + 40 + "%" }
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
},
|
|
48
|
+
`skeleton-col-${e.id}`
|
|
49
|
+
))
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
`skeleton-${n}`
|
|
53
|
+
))
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
return g ? /* @__PURE__ */ r.jsx(c, { className: h, children: /* @__PURE__ */ r.jsxs("div", { className: "relative bg-card", children: [
|
|
50
57
|
/* @__PURE__ */ r.jsxs(
|
|
51
58
|
"div",
|
|
52
59
|
{
|
|
53
60
|
className: s(
|
|
54
|
-
"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/
|
|
61
|
+
"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10"
|
|
55
62
|
),
|
|
56
63
|
style: { gridTemplateColumns: x },
|
|
57
64
|
children: [
|
|
@@ -60,18 +67,18 @@ function P({
|
|
|
60
67
|
]
|
|
61
68
|
}
|
|
62
69
|
),
|
|
63
|
-
/* @__PURE__ */ r.jsx(
|
|
64
|
-
] }) }) : d.length === 0 ? /* @__PURE__ */ r.jsx(
|
|
70
|
+
/* @__PURE__ */ r.jsx(y, {})
|
|
71
|
+
] }) }) : d.length === 0 ? /* @__PURE__ */ r.jsx(c, { className: h, children: /* @__PURE__ */ r.jsx("div", { className: "relative bg-card", children: /* @__PURE__ */ r.jsx(k, { ...f }) }) }) : /* @__PURE__ */ r.jsx(c, { className: h, children: /* @__PURE__ */ r.jsxs("div", { className: "relative bg-card", children: [
|
|
65
72
|
/* @__PURE__ */ r.jsxs(
|
|
66
73
|
"div",
|
|
67
74
|
{
|
|
68
75
|
className: s(
|
|
69
|
-
"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/
|
|
76
|
+
"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10"
|
|
70
77
|
),
|
|
71
78
|
style: { gridTemplateColumns: x },
|
|
72
79
|
children: [
|
|
73
80
|
o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx(
|
|
74
|
-
|
|
81
|
+
u,
|
|
75
82
|
{
|
|
76
83
|
checked: d.length > 0 && (a == null ? void 0 : a.size) === d.length,
|
|
77
84
|
onClick: (i) => {
|
|
@@ -83,61 +90,68 @@ function P({
|
|
|
83
90
|
]
|
|
84
91
|
}
|
|
85
92
|
),
|
|
86
|
-
/* @__PURE__ */ r.jsx(
|
|
93
|
+
/* @__PURE__ */ r.jsx(
|
|
87
94
|
"div",
|
|
88
95
|
{
|
|
89
|
-
className: s(
|
|
90
|
-
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
className: s(
|
|
108
|
-
"px-2 relative min-w-0",
|
|
109
|
-
e.className
|
|
110
|
-
),
|
|
111
|
-
onMouseEnter: () => e.tooltipValue && c(`${n}-${e.id}`),
|
|
112
|
-
onMouseLeave: () => c(null),
|
|
113
|
-
children: [
|
|
114
|
-
/* @__PURE__ */ r.jsx("div", { className: s(
|
|
115
|
-
"flex items-center gap-2",
|
|
116
|
-
e.truncate && "overflow-hidden"
|
|
117
|
-
), children: /* @__PURE__ */ r.jsx("div", { className: s(
|
|
118
|
-
"w-full",
|
|
119
|
-
e.truncate && "truncate"
|
|
120
|
-
), children: e.cell(i) }) }),
|
|
121
|
-
e.tooltipValue && b === `${n}-${e.id}` && /* @__PURE__ */ r.jsx(
|
|
122
|
-
y,
|
|
123
|
-
{
|
|
124
|
-
content: e.tooltipValue(i),
|
|
125
|
-
side: "bottom",
|
|
126
|
-
align: "start",
|
|
127
|
-
isVisible: !0
|
|
96
|
+
className: s("divide-y divide-border/30 overflow-y-auto"),
|
|
97
|
+
style: j,
|
|
98
|
+
children: d.map((i, n) => /* @__PURE__ */ r.jsxs(
|
|
99
|
+
"div",
|
|
100
|
+
{
|
|
101
|
+
className: s(
|
|
102
|
+
"grid items-center px-6 py-4 text-sm text-foreground hover:bg-muted/30 transition-colors duration-150 group cursor-pointer"
|
|
103
|
+
),
|
|
104
|
+
style: { gridTemplateColumns: x },
|
|
105
|
+
onClick: () => p == null ? void 0 : p(i),
|
|
106
|
+
children: [
|
|
107
|
+
o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx(
|
|
108
|
+
u,
|
|
109
|
+
{
|
|
110
|
+
checked: a == null ? void 0 : a.has(i.id),
|
|
111
|
+
onClick: (e) => {
|
|
112
|
+
e.stopPropagation(), l == null || l(i.id, !(a != null && a.has(i.id)));
|
|
128
113
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
114
|
+
}
|
|
115
|
+
) }),
|
|
116
|
+
t.map((e) => /* @__PURE__ */ r.jsxs(
|
|
117
|
+
"div",
|
|
118
|
+
{
|
|
119
|
+
className: s(
|
|
120
|
+
"px-2 relative min-w-0",
|
|
121
|
+
e.className
|
|
122
|
+
),
|
|
123
|
+
onMouseEnter: () => e.tooltipValue && m(`${n}-${e.id}`),
|
|
124
|
+
onMouseLeave: () => m(null),
|
|
125
|
+
children: [
|
|
126
|
+
/* @__PURE__ */ r.jsx("div", { className: s(
|
|
127
|
+
"flex items-center gap-2",
|
|
128
|
+
e.truncate && "overflow-hidden"
|
|
129
|
+
), children: /* @__PURE__ */ r.jsx("div", { className: s(
|
|
130
|
+
"w-full",
|
|
131
|
+
e.truncate && "truncate"
|
|
132
|
+
), children: e.cell(i) }) }),
|
|
133
|
+
e.tooltipValue && N === `${n}-${e.id}` && /* @__PURE__ */ r.jsx(
|
|
134
|
+
T,
|
|
135
|
+
{
|
|
136
|
+
content: e.tooltipValue(i),
|
|
137
|
+
side: "bottom",
|
|
138
|
+
align: "start",
|
|
139
|
+
isVisible: !0
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
e.id
|
|
145
|
+
))
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
i.id
|
|
149
|
+
))
|
|
150
|
+
}
|
|
151
|
+
)
|
|
138
152
|
] }) });
|
|
139
153
|
}
|
|
140
154
|
export {
|
|
141
|
-
|
|
155
|
+
B as Table
|
|
142
156
|
};
|
|
143
157
|
//# sourceMappingURL=table.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.esm.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeight?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeight\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", `h-[calc(100vh-${tableHeight})]`)}>\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", tableHeight || \"h-[calc(100vh-12rem)]\")}>\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeight","hoveredText","setHoveredText","useState","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","e","item","Tooltip"],"mappings":";;;;;;AAoCA,MAAMA,IAAiB,CAAC,EAAE,UAAAC,GAAU,WAAAC,8BAE/B,OAAA,EAAI,WAAWC,EAAG,8EAA8ED,CAAS,GACvG,UAAAD,GACH;AAGG,SAASG,EAAgC;AAAA,EAC9C,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,YAAAC;AAAA,EACA,WAAAN;AAAA,EACA,eAAAO;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAAA,EACd,aAAAC;AACF,GAAkB;AAChB,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAwB,IAAI,GAG5DC,IAAsB;AAAA,IAC1BX,IAAe,SAAS;AAAA,IACxB,GAAGD,EAAQ,IAAI,CAAAa,MAAOA,EAAI,SAAS,KAAK;AAAA,EAAA,EACxC,OAAO,OAAO,EAAE,KAAK,GAAG,GAGpBC,IAAgB,MACpBC,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWlB,EAAG,6CAA6C,iBAAiBW,CAAW,IAAI,GAC7F,UAAA,MAAMD,CAAW,EAAE,KAAK,CAAC,EAAE,IAAI,CAACS,GAAGC,MAClCC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAU;AAAA,MACV,OAAO,EAAE,qBAAAN,EAAA;AAAA,MAER,UAAA;AAAA,QAAAX,KACCc,gBAAAA,EAAAA,IAAC,SAAI,WAAU,oCACb,gCAAC,OAAA,EAAI,WAAU,0CAAyC,EAAA,CAC1D;AAAA,QAGDf,EAAQ,IAAI,CAAAmB,MACXJ,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWlB,EAAG,yBAAyBsB,EAAO,SAAS;AAAA,YAEvD,UAAAJ,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAAI,WAAU;AAAA,gBACV,OAAO,EAAE,OAAO,KAAK,WAAW,KAAK,KAAK,IAAA;AAAA,cAAI;AAAA,YAAA;AAAA,UAAG;AAAA,UAJjD,gBAAgBI,EAAO,EAAE;AAAA,QAAA,CAMjC;AAAA,MAAA;AAAA,IAAA;AAAA,IAlBI,YAAYF,CAAK;AAAA,EAAA,CAoBzB,GACH;AAGF,SAAIX,0BAECZ,GAAA,EAAe,WAAAE,GACd,UAAAsB,gBAAAA,OAAC,OAAA,EAAI,WAAU,YAEb,UAAA;AAAA,IAAAA,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAAI,WAAWrB;AAAA,UACd;AAAA,QAAA;AAAA,QAEF,OAAO,EAAE,qBAAAe,EAAA;AAAA,QAEN,UAAA;AAAA,UAAAX,KACCc,gBAAAA,EAAAA,IAAC,SAAI,WAAU,oCACb,gCAAC,OAAA,EAAI,WAAU,0CAAyC,EAAA,CAC1D;AAAA,UAEDf,EAAQ,IAAI,CAAAmB,MACXJ,gBAAAA,EAAAA,IAAC,SAAoB,WAAWlB,EAAG,oBAAoBsB,EAAO,SAAS,GACpE,UAAAA,EAAO,OAAA,GADAA,EAAO,EAEjB,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,0BAGFL,GAAA,CAAA,CAAc;AAAA,EAAA,EAAA,CACjB,EAAA,CACF,IAIAf,EAAK,WAAW,IAEhBgB,gBAAAA,EAAAA,IAACrB,GAAA,EAAe,WAAAE,GACd,UAAAmB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,YACb,UAAAA,gBAAAA,EAAAA,IAACK,GAAA,EAAY,GAAGf,EAAA,CAAY,EAAA,CAC9B,GACF,0BAKDX,GAAA,EAAe,WAAAE,GACd,UAAAsB,gBAAAA,OAAC,OAAA,EAAI,WAAU,YAEb,UAAA;AAAA,IAAAA,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAAI,WAAWrB;AAAA,UACd;AAAA,QAAA;AAAA,QAEF,OAAO,EAAE,qBAAAe,EAAA;AAAA,QAEN,UAAA;AAAA,UAAAX,KACCc,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oCACb,UAAAA,gBAAAA,EAAAA;AAAAA,YAACM;AAAA,YAAA;AAAA,cACC,SAAStB,EAAK,SAAS,MAAKI,KAAA,gBAAAA,EAAe,UAASJ,EAAK;AAAA,cACzD,SAAS,CAACuB,MAAM;AACd,gBAAAA,EAAE,gBAAA,GACFvB,EAAK,QAAQ,CAAAwB,MAAQnB,KAAA,gBAAAA,EAAWmB,EAAK,IAAI,EAACpB,KAAA,QAAAA,EAAe,IAAIoB,EAAK,KAAI;AAAA,cACxE;AAAA,YAAA;AAAA,UAAA,GAEJ;AAAA,UAEDvB,EAAQ,IAAI,CAAAmB,MACXJ,gBAAAA,EAAAA,IAAC,SAAoB,WAAWlB,EAAG,oBAAoBsB,EAAO,SAAS,GACpE,UAAAA,EAAO,OAAA,GADAA,EAAO,EAEjB,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAIHJ,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWlB,EAAG,6CAA6CW,KAAe,uBAAuB,GACnG,UAAAT,EAAK,IAAI,CAACwB,GAAMN,MACfC,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAWrB;AAAA,UACT;AAAA,QAAA;AAAA,QAEF,OAAO,EAAE,qBAAAe,EAAA;AAAA,QACT,SAAS,MAAMV,KAAA,gBAAAA,EAAaqB;AAAA,QAE3B,UAAA;AAAA,UAAAtB,KACCc,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oCACb,UAAAA,gBAAAA,EAAAA;AAAAA,YAACM;AAAA,YAAA;AAAA,cACC,SAASlB,KAAA,gBAAAA,EAAe,IAAIoB,EAAK;AAAA,cACjC,SAAS,CAAC,MAAM;AACd,kBAAE,gBAAA,GACFnB,KAAA,QAAAA,EAAWmB,EAAK,IAAI,EAACpB,KAAA,QAAAA,EAAe,IAAIoB,EAAK;AAAA,cAC/C;AAAA,YAAA;AAAA,UAAA,GAEJ;AAAA,UAGDvB,EAAQ,IAAI,CAAAmB,MACXD,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWrB;AAAA,gBACT;AAAA,gBACAsB,EAAO;AAAA,cAAA;AAAA,cAET,cAAc,MAAMA,EAAO,gBAAgBT,EAAe,GAAGO,CAAK,IAAIE,EAAO,EAAE,EAAE;AAAA,cACjF,cAAc,MAAMT,EAAe,IAAI;AAAA,cAEvC,UAAA;AAAA,gBAAAK,gBAAAA,MAAC,SAAI,WAAWlB;AAAA,kBACd;AAAA,kBACAsB,EAAO,YAAY;AAAA,gBAAA,GAEnB,UAAAJ,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWlB;AAAA,kBACd;AAAA,kBACAsB,EAAO,YAAY;AAAA,gBAAA,GAElB,UAAAA,EAAO,KAAKI,CAAI,GACnB,EAAA,CACF;AAAA,gBACCJ,EAAO,gBAAgBV,MAAgB,GAAGQ,CAAK,IAAIE,EAAO,EAAE,MAC3DJ,gBAAAA,EAAAA;AAAAA,kBAACS;AAAA,kBAAA;AAAA,oBACC,SAASL,EAAO,aAAaI,CAAI;AAAA,oBACjC,MAAK;AAAA,oBACL,OAAM;AAAA,oBACN,WAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,YAzBGJ,EAAO;AAAA,UAAA,CA4Bf;AAAA,QAAA;AAAA,MAAA;AAAA,MAjDII,EAAK;AAAA,IAAA,CAmDb,EAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"table.esm.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeightOffset?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeightOffset\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n const height = tableHeightOffset ? `calc(100vh - ${tableHeightOffset})` : \"calc(100vh - 8rem)\";\n const heightStyle = { height };\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/50 overflow-y-auto\")}\n style={heightStyle}\n >\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\")}\n style={heightStyle}\n >\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeightOffset","hoveredText","setHoveredText","useState","heightStyle","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","e","item","Tooltip"],"mappings":"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"}
|
package/dist/components/table.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../jsx-runtime-BYECrxsp.cjs"),t=require("../utils-DSKoFOjv.cjs"),v=require("./checkbox.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../jsx-runtime-BYECrxsp.cjs"),t=require("../utils-DSKoFOjv.cjs"),v=require("./checkbox.js"),y=require("./tooltip.js"),N=require("react"),T=require("./table-empty.js"),j=({children:n,className:x})=>s.jsxRuntimeExports.jsx("div",{className:t.cn("border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm",x),children:n});function $({data:n,columns:x,showCheckbox:o=!0,onRowClick:p,className:l,selectedItems:i,onSelect:d,emptyState:E,isLoading:b=!1,loadingRows:g=5,tableHeightOffset:c}){const[R,m]=N.useState(null),h={height:c?`calc(100vh - ${c})`:"calc(100vh - 8rem)"},u=[o?"40px":null,...x.map(e=>e.width||"1fr")].filter(Boolean).join(" "),f=()=>s.jsxRuntimeExports.jsx("div",{className:t.cn("divide-y divide-border/50 overflow-y-auto"),style:h,children:Array(g).fill(0).map((e,a)=>s.jsxRuntimeExports.jsxs("div",{className:"grid items-center px-6 py-4 text-sm",style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"})}),x.map(r=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 relative min-w-0",r.className),children:s.jsxRuntimeExports.jsx("div",{className:"h-4 bg-muted rounded animate-pulse",style:{width:Math.random()*40+40+"%"}})},`skeleton-col-${r.id}`))]},`skeleton-${a}`))});return b?s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsxs("div",{className:"relative bg-card",children:[s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10"),style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"})}),x.map(e=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 font-medium",e.className),children:e.header},e.id))]}),s.jsxRuntimeExports.jsx(f,{})]})}):n.length===0?s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsx("div",{className:"relative bg-card",children:s.jsxRuntimeExports.jsx(T.TableEmpty,{...E})})}):s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsxs("div",{className:"relative bg-card",children:[s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10"),style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx(v.Checkbox,{checked:n.length>0&&(i==null?void 0:i.size)===n.length,onClick:e=>{e.stopPropagation(),n.forEach(a=>d==null?void 0:d(a.id,!(i!=null&&i.has(a.id))))}})}),x.map(e=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 font-medium",e.className),children:e.header},e.id))]}),s.jsxRuntimeExports.jsx("div",{className:t.cn("divide-y divide-border/30 overflow-y-auto"),style:h,children:n.map((e,a)=>s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-4 text-sm text-foreground hover:bg-muted/30 transition-colors duration-150 group cursor-pointer"),style:{gridTemplateColumns:u},onClick:()=>p==null?void 0:p(e),children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx(v.Checkbox,{checked:i==null?void 0:i.has(e.id),onClick:r=>{r.stopPropagation(),d==null||d(e.id,!(i!=null&&i.has(e.id)))}})}),x.map(r=>s.jsxRuntimeExports.jsxs("div",{className:t.cn("px-2 relative min-w-0",r.className),onMouseEnter:()=>r.tooltipValue&&m(`${a}-${r.id}`),onMouseLeave:()=>m(null),children:[s.jsxRuntimeExports.jsx("div",{className:t.cn("flex items-center gap-2",r.truncate&&"overflow-hidden"),children:s.jsxRuntimeExports.jsx("div",{className:t.cn("w-full",r.truncate&&"truncate"),children:r.cell(e)})}),r.tooltipValue&&R===`${a}-${r.id}`&&s.jsxRuntimeExports.jsx(y.Tooltip,{content:r.tooltipValue(e),side:"bottom",align:"start",isVisible:!0})]},r.id))]},e.id))})]})})}exports.Table=$;
|
|
2
2
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeight?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeight\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", `h-[calc(100vh-${tableHeight})]`)}>\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", tableHeight || \"h-[calc(100vh-12rem)]\")}>\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeight","hoveredText","setHoveredText","useState","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","item","e","Tooltip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeightOffset?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeightOffset\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n const height = tableHeightOffset ? `calc(100vh - ${tableHeightOffset})` : \"calc(100vh - 8rem)\";\n const heightStyle = { height };\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/50 overflow-y-auto\")}\n style={heightStyle}\n >\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative bg-card\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/50 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\")}\n style={heightStyle}\n >\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeightOffset","hoveredText","setHoveredText","useState","heightStyle","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","item","e","Tooltip"],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ const d = () => {
|
|
|
38
38
|
return t.length === 0 ? null : /* @__PURE__ */ n.jsx("div", { className: "fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]", children: t.map((e) => /* @__PURE__ */ n.jsxs(
|
|
39
39
|
"div",
|
|
40
40
|
{
|
|
41
|
-
className: `p-4 rounded-lg shadow-lg border border-border transition-all duration-300 ease-in-out ${e.type === "error" ? "bg-destructive text-destructive-foreground" : e.type === "success" ? "bg-green-50 text-green-800 border-green-200" : e.type === "warning" ? "bg-amber-50 text-amber-800 border-amber-200" : "bg-background text-foreground"}`,
|
|
41
|
+
className: `p-4 rounded-lg shadow-lg border border-border/50 transition-all duration-300 ease-in-out ${e.type === "error" ? "bg-destructive text-destructive-foreground" : e.type === "success" ? "bg-green-50 text-green-800 border-green-200" : e.type === "warning" ? "bg-amber-50 text-amber-800 border-amber-200" : "bg-background text-foreground"}`,
|
|
42
42
|
children: [
|
|
43
43
|
/* @__PURE__ */ n.jsxs("div", { className: "flex justify-between items-start", children: [
|
|
44
44
|
/* @__PURE__ */ n.jsx("div", { className: "font-medium", children: e.title }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-toast.esm.js","sources":["../../src/components/use-toast.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { createRoot } from 'react-dom/client';\n\ntype ToastProps = {\n title: string;\n description?: string;\n type?: 'default' | 'success' | 'error' | 'warning';\n duration?: number;\n};\n\ntype Toast = ToastProps & {\n id: string;\n};\n\nlet toasts: Toast[] = [];\nlet listeners: ((toasts: Toast[]) => void)[] = [];\n\nconst notifyListeners = () => {\n listeners.forEach(listener => listener([...toasts]));\n};\n\nexport const toast = (props: ToastProps) => {\n const id = `toast-${Date.now()}`;\n const newToast = { \n id, \n ...props,\n duration: props.duration || 5000,\n type: props.type || 'default' \n };\n \n toasts.push(newToast);\n notifyListeners();\n\n // Auto-dismiss after duration\n setTimeout(() => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }, newToast.duration);\n\n return {\n dismiss: () => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\nexport const useToast = () => {\n const [currentToasts, setCurrentToasts] = useState<Toast[]>(toasts);\n\n const registerListener = useCallback(() => {\n const listener = (updatedToasts: Toast[]) => {\n setCurrentToasts(updatedToasts);\n };\n \n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n }, []);\n\n // Register listener on mount\n useState(() => {\n const unregister = registerListener();\n return unregister;\n });\n\n return { \n toast,\n toasts: currentToasts,\n dismiss: (id: string) => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\n// Toast Container Component\nexport const ToastContainer = () => {\n const { toasts, dismiss } = useToast();\n\n if (toasts.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]\">\n {toasts.map(toast => (\n <div \n key={toast.id}\n className={`p-4 rounded-lg shadow-lg border border-border transition-all duration-300 ease-in-out ${\n toast.type === 'error' ? 'bg-destructive text-destructive-foreground' : \n toast.type === 'success' ? 'bg-green-50 text-green-800 border-green-200' : \n toast.type === 'warning' ? 'bg-amber-50 text-amber-800 border-amber-200' : \n 'bg-background text-foreground'\n }`}\n >\n <div className=\"flex justify-between items-start\">\n <div className=\"font-medium\">{toast.title}</div>\n <button \n onClick={() => dismiss(toast.id)}\n className=\"text-sm opacity-70 hover:opacity-100\"\n >\n ×\n </button>\n </div>\n {toast.description && (\n <div className=\"mt-1 text-sm opacity-80\">{toast.description}</div>\n )}\n </div>\n ))}\n </div>\n );\n}; "],"names":["toasts","listeners","notifyListeners","listener","toast","props","id","newToast","useToast","currentToasts","setCurrentToasts","useState","registerListener","useCallback","updatedToasts","l","ToastContainer","dismiss","jsx","jsxs"],"mappings":";;AAcA,IAAIA,IAAkB,CAAA,GAClBC,IAA2C,CAAA;AAE/C,MAAMC,IAAkB,MAAM;AAC5B,EAAAD,EAAU,QAAQ,CAAAE,MAAYA,EAAS,CAAC,GAAGH,CAAM,CAAC,CAAC;AACrD,GAEaI,IAAQ,CAACC,MAAsB;AAC1C,QAAMC,IAAK,SAAS,KAAK,IAAA,CAAK,IACxBC,IAAW;AAAA,IACf,IAAAD;AAAA,IACA,GAAGD;AAAA,IACH,UAAUA,EAAM,YAAY;AAAA,IAC5B,MAAMA,EAAM,QAAQ;AAAA,EAAA;AAGtB,SAAAL,EAAO,KAAKO,CAAQ,GACpBL,EAAA,GAGA,WAAW,MAAM;AACf,IAAAF,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,EACF,GAAGK,EAAS,QAAQ,GAEb;AAAA,IACL,SAAS,MAAM;AACb,MAAAP,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,IACF;AAAA,EAAA;AAEJ,GAEaM,IAAW,MAAM;AAC5B,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAkBX,CAAM,GAE5DY,IAAmBC,EAAY,MAAM;AACzC,UAAMV,IAAW,CAACW,MAA2B;AAC3C,MAAAJ,EAAiBI,CAAa;AAAA,IAChC;AAEA,WAAAb,EAAU,KAAKE,CAAQ,GAChB,MAAM;AACX,MAAAF,IAAYA,EAAU,OAAO,CAAAc,MAAKA,MAAMZ,CAAQ;AAAA,IAClD;AAAA,EACF,GAAG,CAAA,CAAE;AAGL,SAAAQ,EAAS,MACYC,EAAA,CAEpB,GAEM;AAAA,IACL,OAAAR;AAAA,IACA,QAAQK;AAAA,IACR,SAAS,CAACH,MAAe;AACvB,MAAAN,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,IACF;AAAA,EAAA;AAEJ,GAGac,IAAiB,MAAM;AAClC,QAAM,EAAE,QAAAhB,GAAQ,SAAAiB,EAAA,IAAYT,EAAA;AAE5B,SAAIR,EAAO,WAAW,IAAU,OAG9BkB,gBAAAA,EAAAA,IAAC,SAAI,WAAU,0DACZ,UAAAlB,EAAO,IAAI,CAAAI,MACVe,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW,
|
|
1
|
+
{"version":3,"file":"use-toast.esm.js","sources":["../../src/components/use-toast.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { createRoot } from 'react-dom/client';\n\ntype ToastProps = {\n title: string;\n description?: string;\n type?: 'default' | 'success' | 'error' | 'warning';\n duration?: number;\n};\n\ntype Toast = ToastProps & {\n id: string;\n};\n\nlet toasts: Toast[] = [];\nlet listeners: ((toasts: Toast[]) => void)[] = [];\n\nconst notifyListeners = () => {\n listeners.forEach(listener => listener([...toasts]));\n};\n\nexport const toast = (props: ToastProps) => {\n const id = `toast-${Date.now()}`;\n const newToast = { \n id, \n ...props,\n duration: props.duration || 5000,\n type: props.type || 'default' \n };\n \n toasts.push(newToast);\n notifyListeners();\n\n // Auto-dismiss after duration\n setTimeout(() => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }, newToast.duration);\n\n return {\n dismiss: () => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\nexport const useToast = () => {\n const [currentToasts, setCurrentToasts] = useState<Toast[]>(toasts);\n\n const registerListener = useCallback(() => {\n const listener = (updatedToasts: Toast[]) => {\n setCurrentToasts(updatedToasts);\n };\n \n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n }, []);\n\n // Register listener on mount\n useState(() => {\n const unregister = registerListener();\n return unregister;\n });\n\n return { \n toast,\n toasts: currentToasts,\n dismiss: (id: string) => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\n// Toast Container Component\nexport const ToastContainer = () => {\n const { toasts, dismiss } = useToast();\n\n if (toasts.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]\">\n {toasts.map(toast => (\n <div \n key={toast.id}\n className={`p-4 rounded-lg shadow-lg border border-border/50 transition-all duration-300 ease-in-out ${\n toast.type === 'error' ? 'bg-destructive text-destructive-foreground' : \n toast.type === 'success' ? 'bg-green-50 text-green-800 border-green-200' : \n toast.type === 'warning' ? 'bg-amber-50 text-amber-800 border-amber-200' : \n 'bg-background text-foreground'\n }`}\n >\n <div className=\"flex justify-between items-start\">\n <div className=\"font-medium\">{toast.title}</div>\n <button \n onClick={() => dismiss(toast.id)}\n className=\"text-sm opacity-70 hover:opacity-100\"\n >\n ×\n </button>\n </div>\n {toast.description && (\n <div className=\"mt-1 text-sm opacity-80\">{toast.description}</div>\n )}\n </div>\n ))}\n </div>\n );\n}; "],"names":["toasts","listeners","notifyListeners","listener","toast","props","id","newToast","useToast","currentToasts","setCurrentToasts","useState","registerListener","useCallback","updatedToasts","l","ToastContainer","dismiss","jsx","jsxs"],"mappings":";;AAcA,IAAIA,IAAkB,CAAA,GAClBC,IAA2C,CAAA;AAE/C,MAAMC,IAAkB,MAAM;AAC5B,EAAAD,EAAU,QAAQ,CAAAE,MAAYA,EAAS,CAAC,GAAGH,CAAM,CAAC,CAAC;AACrD,GAEaI,IAAQ,CAACC,MAAsB;AAC1C,QAAMC,IAAK,SAAS,KAAK,IAAA,CAAK,IACxBC,IAAW;AAAA,IACf,IAAAD;AAAA,IACA,GAAGD;AAAA,IACH,UAAUA,EAAM,YAAY;AAAA,IAC5B,MAAMA,EAAM,QAAQ;AAAA,EAAA;AAGtB,SAAAL,EAAO,KAAKO,CAAQ,GACpBL,EAAA,GAGA,WAAW,MAAM;AACf,IAAAF,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,EACF,GAAGK,EAAS,QAAQ,GAEb;AAAA,IACL,SAAS,MAAM;AACb,MAAAP,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,IACF;AAAA,EAAA;AAEJ,GAEaM,IAAW,MAAM;AAC5B,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAkBX,CAAM,GAE5DY,IAAmBC,EAAY,MAAM;AACzC,UAAMV,IAAW,CAACW,MAA2B;AAC3C,MAAAJ,EAAiBI,CAAa;AAAA,IAChC;AAEA,WAAAb,EAAU,KAAKE,CAAQ,GAChB,MAAM;AACX,MAAAF,IAAYA,EAAU,OAAO,CAAAc,MAAKA,MAAMZ,CAAQ;AAAA,IAClD;AAAA,EACF,GAAG,CAAA,CAAE;AAGL,SAAAQ,EAAS,MACYC,EAAA,CAEpB,GAEM;AAAA,IACL,OAAAR;AAAA,IACA,QAAQK;AAAA,IACR,SAAS,CAACH,MAAe;AACvB,MAAAN,IAASA,EAAO,OAAO,CAAAI,MAASA,EAAM,OAAOE,CAAE,GAC/CJ,EAAA;AAAA,IACF;AAAA,EAAA;AAEJ,GAGac,IAAiB,MAAM;AAClC,QAAM,EAAE,QAAAhB,GAAQ,SAAAiB,EAAA,IAAYT,EAAA;AAE5B,SAAIR,EAAO,WAAW,IAAU,OAG9BkB,gBAAAA,EAAAA,IAAC,SAAI,WAAU,0DACZ,UAAAlB,EAAO,IAAI,CAAAI,MACVe,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW,4FACTf,EAAM,SAAS,UAAU,+CACzBA,EAAM,SAAS,YAAY,gDAC3BA,EAAM,SAAS,YAAY,gDAC3B,+BACF;AAAA,MAEA,UAAA;AAAA,QAAAe,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,UAAAD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,eAAe,UAAAd,EAAM,OAAM;AAAA,UAC1Cc,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,MAAMD,EAAQb,EAAM,EAAE;AAAA,cAC/B,WAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,GACF;AAAA,QACCA,EAAM,eACLc,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,2BAA2B,UAAAd,EAAM,YAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAlBzDA,EAAM;AAAA,EAAA,CAqBd,GACH;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../jsx-runtime-BYECrxsp.cjs"),d=require("react");let r=[],a=[];const u=()=>{a.forEach(t=>t([...r]))},c=t=>{const i=`toast-${Date.now()}`,e={id:i,...t,duration:t.duration||5e3,type:t.type||"default"};return r.push(e),u(),setTimeout(()=>{r=r.filter(s=>s.id!==i),u()},e.duration),{dismiss:()=>{r=r.filter(s=>s.id!==i),u()}}},l=()=>{const[t,i]=d.useState(r),e=d.useCallback(()=>{const s=o=>{i(o)};return a.push(s),()=>{a=a.filter(o=>o!==s)}},[]);return d.useState(()=>e()),{toast:c,toasts:t,dismiss:s=>{r=r.filter(o=>o.id!==s),u()}}},x=()=>{const{toasts:t,dismiss:i}=l();return t.length===0?null:n.jsxRuntimeExports.jsx("div",{className:"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]",children:t.map(e=>n.jsxRuntimeExports.jsxs("div",{className:`p-4 rounded-lg shadow-lg border border-border transition-all duration-300 ease-in-out ${e.type==="error"?"bg-destructive text-destructive-foreground":e.type==="success"?"bg-green-50 text-green-800 border-green-200":e.type==="warning"?"bg-amber-50 text-amber-800 border-amber-200":"bg-background text-foreground"}`,children:[n.jsxRuntimeExports.jsxs("div",{className:"flex justify-between items-start",children:[n.jsxRuntimeExports.jsx("div",{className:"font-medium",children:e.title}),n.jsxRuntimeExports.jsx("button",{onClick:()=>i(e.id),className:"text-sm opacity-70 hover:opacity-100",children:"×"})]}),e.description&&n.jsxRuntimeExports.jsx("div",{className:"mt-1 text-sm opacity-80",children:e.description})]},e.id))})};exports.ToastContainer=x;exports.toast=c;exports.useToast=l;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../jsx-runtime-BYECrxsp.cjs"),d=require("react");let r=[],a=[];const u=()=>{a.forEach(t=>t([...r]))},c=t=>{const i=`toast-${Date.now()}`,e={id:i,...t,duration:t.duration||5e3,type:t.type||"default"};return r.push(e),u(),setTimeout(()=>{r=r.filter(s=>s.id!==i),u()},e.duration),{dismiss:()=>{r=r.filter(s=>s.id!==i),u()}}},l=()=>{const[t,i]=d.useState(r),e=d.useCallback(()=>{const s=o=>{i(o)};return a.push(s),()=>{a=a.filter(o=>o!==s)}},[]);return d.useState(()=>e()),{toast:c,toasts:t,dismiss:s=>{r=r.filter(o=>o.id!==s),u()}}},x=()=>{const{toasts:t,dismiss:i}=l();return t.length===0?null:n.jsxRuntimeExports.jsx("div",{className:"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]",children:t.map(e=>n.jsxRuntimeExports.jsxs("div",{className:`p-4 rounded-lg shadow-lg border border-border/50 transition-all duration-300 ease-in-out ${e.type==="error"?"bg-destructive text-destructive-foreground":e.type==="success"?"bg-green-50 text-green-800 border-green-200":e.type==="warning"?"bg-amber-50 text-amber-800 border-amber-200":"bg-background text-foreground"}`,children:[n.jsxRuntimeExports.jsxs("div",{className:"flex justify-between items-start",children:[n.jsxRuntimeExports.jsx("div",{className:"font-medium",children:e.title}),n.jsxRuntimeExports.jsx("button",{onClick:()=>i(e.id),className:"text-sm opacity-70 hover:opacity-100",children:"×"})]}),e.description&&n.jsxRuntimeExports.jsx("div",{className:"mt-1 text-sm opacity-80",children:e.description})]},e.id))})};exports.ToastContainer=x;exports.toast=c;exports.useToast=l;
|
|
2
2
|
//# sourceMappingURL=use-toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-toast.js","sources":["../../src/components/use-toast.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { createRoot } from 'react-dom/client';\n\ntype ToastProps = {\n title: string;\n description?: string;\n type?: 'default' | 'success' | 'error' | 'warning';\n duration?: number;\n};\n\ntype Toast = ToastProps & {\n id: string;\n};\n\nlet toasts: Toast[] = [];\nlet listeners: ((toasts: Toast[]) => void)[] = [];\n\nconst notifyListeners = () => {\n listeners.forEach(listener => listener([...toasts]));\n};\n\nexport const toast = (props: ToastProps) => {\n const id = `toast-${Date.now()}`;\n const newToast = { \n id, \n ...props,\n duration: props.duration || 5000,\n type: props.type || 'default' \n };\n \n toasts.push(newToast);\n notifyListeners();\n\n // Auto-dismiss after duration\n setTimeout(() => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }, newToast.duration);\n\n return {\n dismiss: () => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\nexport const useToast = () => {\n const [currentToasts, setCurrentToasts] = useState<Toast[]>(toasts);\n\n const registerListener = useCallback(() => {\n const listener = (updatedToasts: Toast[]) => {\n setCurrentToasts(updatedToasts);\n };\n \n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n }, []);\n\n // Register listener on mount\n useState(() => {\n const unregister = registerListener();\n return unregister;\n });\n\n return { \n toast,\n toasts: currentToasts,\n dismiss: (id: string) => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\n// Toast Container Component\nexport const ToastContainer = () => {\n const { toasts, dismiss } = useToast();\n\n if (toasts.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]\">\n {toasts.map(toast => (\n <div \n key={toast.id}\n className={`p-4 rounded-lg shadow-lg border border-border transition-all duration-300 ease-in-out ${\n toast.type === 'error' ? 'bg-destructive text-destructive-foreground' : \n toast.type === 'success' ? 'bg-green-50 text-green-800 border-green-200' : \n toast.type === 'warning' ? 'bg-amber-50 text-amber-800 border-amber-200' : \n 'bg-background text-foreground'\n }`}\n >\n <div className=\"flex justify-between items-start\">\n <div className=\"font-medium\">{toast.title}</div>\n <button \n onClick={() => dismiss(toast.id)}\n className=\"text-sm opacity-70 hover:opacity-100\"\n >\n ×\n </button>\n </div>\n {toast.description && (\n <div className=\"mt-1 text-sm opacity-80\">{toast.description}</div>\n )}\n </div>\n ))}\n </div>\n );\n}; "],"names":["toasts","listeners","notifyListeners","listener","toast","props","id","newToast","useToast","currentToasts","setCurrentToasts","useState","registerListener","useCallback","updatedToasts","l","ToastContainer","dismiss","jsx","jsxs"],"mappings":"kJAcA,IAAIA,EAAkB,CAAA,EAClBC,EAA2C,CAAA,EAE/C,MAAMC,EAAkB,IAAM,CAC5BD,EAAU,QAAQE,GAAYA,EAAS,CAAC,GAAGH,CAAM,CAAC,CAAC,CACrD,EAEaI,EAASC,GAAsB,CAC1C,MAAMC,EAAK,SAAS,KAAK,IAAA,CAAK,GACxBC,EAAW,CACf,GAAAD,EACA,GAAGD,EACH,SAAUA,EAAM,UAAY,IAC5B,KAAMA,EAAM,MAAQ,SAAA,EAGtB,OAAAL,EAAO,KAAKO,CAAQ,EACpBL,EAAA,EAGA,WAAW,IAAM,CACfF,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,EAAGK,EAAS,QAAQ,EAEb,CACL,QAAS,IAAM,CACbP,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,CAAA,CAEJ,EAEaM,EAAW,IAAM,CAC5B,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAAkBX,CAAM,EAE5DY,EAAmBC,EAAAA,YAAY,IAAM,CACzC,MAAMV,EAAYW,GAA2B,CAC3CJ,EAAiBI,CAAa,CAChC,EAEA,OAAAb,EAAU,KAAKE,CAAQ,EAChB,IAAM,CACXF,EAAYA,EAAU,OAAOc,GAAKA,IAAMZ,CAAQ,CAClD,CACF,EAAG,CAAA,CAAE,EAGLQ,OAAAA,EAAAA,SAAS,IACYC,EAAA,CAEpB,EAEM,CACL,MAAAR,EACA,OAAQK,EACR,QAAUH,GAAe,CACvBN,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,CAAA,CAEJ,EAGac,EAAiB,IAAM,CAClC,KAAM,CAAE,OAAAhB,EAAQ,QAAAiB,CAAA,EAAYT,EAAA,EAE5B,OAAIR,EAAO,SAAW,EAAU,KAG9BkB,EAAAA,kBAAAA,IAAC,OAAI,UAAU,yDACZ,SAAAlB,EAAO,IAAII,GACVe,EAAAA,kBAAAA,KAAC,MAAA,CAEC,UAAW,
|
|
1
|
+
{"version":3,"file":"use-toast.js","sources":["../../src/components/use-toast.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { createRoot } from 'react-dom/client';\n\ntype ToastProps = {\n title: string;\n description?: string;\n type?: 'default' | 'success' | 'error' | 'warning';\n duration?: number;\n};\n\ntype Toast = ToastProps & {\n id: string;\n};\n\nlet toasts: Toast[] = [];\nlet listeners: ((toasts: Toast[]) => void)[] = [];\n\nconst notifyListeners = () => {\n listeners.forEach(listener => listener([...toasts]));\n};\n\nexport const toast = (props: ToastProps) => {\n const id = `toast-${Date.now()}`;\n const newToast = { \n id, \n ...props,\n duration: props.duration || 5000,\n type: props.type || 'default' \n };\n \n toasts.push(newToast);\n notifyListeners();\n\n // Auto-dismiss after duration\n setTimeout(() => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }, newToast.duration);\n\n return {\n dismiss: () => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\nexport const useToast = () => {\n const [currentToasts, setCurrentToasts] = useState<Toast[]>(toasts);\n\n const registerListener = useCallback(() => {\n const listener = (updatedToasts: Toast[]) => {\n setCurrentToasts(updatedToasts);\n };\n \n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n }, []);\n\n // Register listener on mount\n useState(() => {\n const unregister = registerListener();\n return unregister;\n });\n\n return { \n toast,\n toasts: currentToasts,\n dismiss: (id: string) => {\n toasts = toasts.filter(toast => toast.id !== id);\n notifyListeners();\n }\n };\n};\n\n// Toast Container Component\nexport const ToastContainer = () => {\n const { toasts, dismiss } = useToast();\n\n if (toasts.length === 0) return null;\n\n return (\n <div className=\"fixed top-4 right-4 z-50 flex flex-col gap-2 w-[350px]\">\n {toasts.map(toast => (\n <div \n key={toast.id}\n className={`p-4 rounded-lg shadow-lg border border-border/50 transition-all duration-300 ease-in-out ${\n toast.type === 'error' ? 'bg-destructive text-destructive-foreground' : \n toast.type === 'success' ? 'bg-green-50 text-green-800 border-green-200' : \n toast.type === 'warning' ? 'bg-amber-50 text-amber-800 border-amber-200' : \n 'bg-background text-foreground'\n }`}\n >\n <div className=\"flex justify-between items-start\">\n <div className=\"font-medium\">{toast.title}</div>\n <button \n onClick={() => dismiss(toast.id)}\n className=\"text-sm opacity-70 hover:opacity-100\"\n >\n ×\n </button>\n </div>\n {toast.description && (\n <div className=\"mt-1 text-sm opacity-80\">{toast.description}</div>\n )}\n </div>\n ))}\n </div>\n );\n}; "],"names":["toasts","listeners","notifyListeners","listener","toast","props","id","newToast","useToast","currentToasts","setCurrentToasts","useState","registerListener","useCallback","updatedToasts","l","ToastContainer","dismiss","jsx","jsxs"],"mappings":"kJAcA,IAAIA,EAAkB,CAAA,EAClBC,EAA2C,CAAA,EAE/C,MAAMC,EAAkB,IAAM,CAC5BD,EAAU,QAAQE,GAAYA,EAAS,CAAC,GAAGH,CAAM,CAAC,CAAC,CACrD,EAEaI,EAASC,GAAsB,CAC1C,MAAMC,EAAK,SAAS,KAAK,IAAA,CAAK,GACxBC,EAAW,CACf,GAAAD,EACA,GAAGD,EACH,SAAUA,EAAM,UAAY,IAC5B,KAAMA,EAAM,MAAQ,SAAA,EAGtB,OAAAL,EAAO,KAAKO,CAAQ,EACpBL,EAAA,EAGA,WAAW,IAAM,CACfF,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,EAAGK,EAAS,QAAQ,EAEb,CACL,QAAS,IAAM,CACbP,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,CAAA,CAEJ,EAEaM,EAAW,IAAM,CAC5B,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAAkBX,CAAM,EAE5DY,EAAmBC,EAAAA,YAAY,IAAM,CACzC,MAAMV,EAAYW,GAA2B,CAC3CJ,EAAiBI,CAAa,CAChC,EAEA,OAAAb,EAAU,KAAKE,CAAQ,EAChB,IAAM,CACXF,EAAYA,EAAU,OAAOc,GAAKA,IAAMZ,CAAQ,CAClD,CACF,EAAG,CAAA,CAAE,EAGLQ,OAAAA,EAAAA,SAAS,IACYC,EAAA,CAEpB,EAEM,CACL,MAAAR,EACA,OAAQK,EACR,QAAUH,GAAe,CACvBN,EAASA,EAAO,OAAOI,GAASA,EAAM,KAAOE,CAAE,EAC/CJ,EAAA,CACF,CAAA,CAEJ,EAGac,EAAiB,IAAM,CAClC,KAAM,CAAE,OAAAhB,EAAQ,QAAAiB,CAAA,EAAYT,EAAA,EAE5B,OAAIR,EAAO,SAAW,EAAU,KAG9BkB,EAAAA,kBAAAA,IAAC,OAAI,UAAU,yDACZ,SAAAlB,EAAO,IAAII,GACVe,EAAAA,kBAAAA,KAAC,MAAA,CAEC,UAAW,4FACTf,EAAM,OAAS,QAAU,6CACzBA,EAAM,OAAS,UAAY,8CAC3BA,EAAM,OAAS,UAAY,8CAC3B,+BACF,GAEA,SAAA,CAAAe,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAD,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,cAAe,SAAAd,EAAM,MAAM,EAC1Cc,EAAAA,kBAAAA,IAAC,SAAA,CACC,QAAS,IAAMD,EAAQb,EAAM,EAAE,EAC/B,UAAU,uCACX,SAAA,GAAA,CAAA,CAED,EACF,EACCA,EAAM,aACLc,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAd,EAAM,WAAA,CAAY,CAAA,CAAA,EAlBzDA,EAAM,EAAA,CAqBd,EACH,CAEJ"}
|
package/dist/index.d.ts
CHANGED
|
@@ -118,7 +118,7 @@ export declare interface BadgeProps extends React_2.HTMLAttributes<HTMLDivElemen
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
export declare const badgeVariants: (props?: ({
|
|
121
|
-
variant?: "default" | "
|
|
121
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
122
122
|
} & ClassProp) | undefined) => string;
|
|
123
123
|
|
|
124
124
|
export declare function BarChart({ data }: BarChartProps): JSX_2.Element;
|
|
@@ -332,7 +332,7 @@ export declare const Command: React_2.ForwardRefExoticComponent<Omit<{
|
|
|
332
332
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
333
333
|
} & {
|
|
334
334
|
asChild?: boolean;
|
|
335
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
335
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
|
|
336
336
|
label?: string;
|
|
337
337
|
shouldFilter?: boolean;
|
|
338
338
|
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
@@ -356,7 +356,7 @@ export declare const CommandEmpty: React_2.ForwardRefExoticComponent<Omit<{
|
|
|
356
356
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
357
357
|
} & {
|
|
358
358
|
asChild?: boolean;
|
|
359
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
359
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
|
|
360
360
|
|
|
361
361
|
export declare const CommandGroup: React_2.ForwardRefExoticComponent<Omit<{
|
|
362
362
|
children?: React_2.ReactNode;
|
|
@@ -364,7 +364,7 @@ export declare const CommandGroup: React_2.ForwardRefExoticComponent<Omit<{
|
|
|
364
364
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
365
365
|
} & {
|
|
366
366
|
asChild?: boolean;
|
|
367
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
367
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
|
|
368
368
|
heading?: React_2.ReactNode;
|
|
369
369
|
value?: string;
|
|
370
370
|
forceMount?: boolean;
|
|
@@ -374,7 +374,7 @@ export declare const CommandInput: React_2.ForwardRefExoticComponent<Omit<Omit<P
|
|
|
374
374
|
ref?: React_2.Ref<HTMLInputElement>;
|
|
375
375
|
} & {
|
|
376
376
|
asChild?: boolean;
|
|
377
|
-
}, "
|
|
377
|
+
}, "asChild" | "key" | keyof React_2.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
|
|
378
378
|
value?: string;
|
|
379
379
|
onValueChange?: (search: string) => void;
|
|
380
380
|
} & React_2.RefAttributes<HTMLInputElement>, "ref"> & React_2.RefAttributes<HTMLInputElement>>;
|
|
@@ -385,7 +385,7 @@ export declare const CommandItem: React_2.ForwardRefExoticComponent<Omit<{
|
|
|
385
385
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
386
386
|
} & {
|
|
387
387
|
asChild?: boolean;
|
|
388
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
388
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
|
|
389
389
|
disabled?: boolean;
|
|
390
390
|
onSelect?: (value: string) => void;
|
|
391
391
|
value?: string;
|
|
@@ -399,7 +399,7 @@ export declare const CommandList: React_2.ForwardRefExoticComponent<Omit<{
|
|
|
399
399
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
400
400
|
} & {
|
|
401
401
|
asChild?: boolean;
|
|
402
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
402
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
|
|
403
403
|
label?: string;
|
|
404
404
|
} & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
|
|
405
405
|
|
|
@@ -416,7 +416,7 @@ export declare const CommandSeparator: React_2.ForwardRefExoticComponent<Omit<Pi
|
|
|
416
416
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
417
417
|
} & {
|
|
418
418
|
asChild?: boolean;
|
|
419
|
-
}, "key" | keyof React_2.HTMLAttributes<HTMLDivElement
|
|
419
|
+
}, "asChild" | "key" | keyof React_2.HTMLAttributes<HTMLDivElement>> & {
|
|
420
420
|
alwaysRender?: boolean;
|
|
421
421
|
} & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
|
|
422
422
|
|
|
@@ -645,7 +645,7 @@ export declare interface MentionUserData extends SuggestionDataItem {
|
|
|
645
645
|
subtitle?: string;
|
|
646
646
|
}
|
|
647
647
|
|
|
648
|
-
export declare function Modal({ isOpen, onClose, title, description, icon, children, footer, size, showClose, className, isContentScrollable, mainClassName, contentClassName, header, zIndexClassName }: ModalProps):
|
|
648
|
+
export declare function Modal({ isOpen, onClose, title, description, icon, children, footer, size, showClose, className, isContentScrollable, mainClassName, contentClassName, header, headerClassName, zIndexClassName, mobileSheet, }: ModalProps): JSX_2.Element;
|
|
649
649
|
|
|
650
650
|
export declare interface ModalProps {
|
|
651
651
|
isOpen: boolean;
|
|
@@ -664,6 +664,10 @@ export declare interface ModalProps {
|
|
|
664
664
|
headerClassName?: string;
|
|
665
665
|
contentClassName?: string;
|
|
666
666
|
zIndexClassName?: string;
|
|
667
|
+
mobileSheet?: {
|
|
668
|
+
enable: boolean;
|
|
669
|
+
position?: 'left' | 'right' | 'bottom';
|
|
670
|
+
};
|
|
667
671
|
}
|
|
668
672
|
|
|
669
673
|
export declare function MonacoEditor({ value, onChange, language, height, className, options, onMount, title, variables, variablePrefix, variableSuffix, predefinedVariables, allowFullscreen, isDark, }: MonacoEditorProps): JSX_2.Element;
|
|
@@ -845,7 +849,7 @@ export declare const Switch: React_2.ForwardRefExoticComponent<Omit<SwitchPrimit
|
|
|
845
849
|
|
|
846
850
|
export declare function Table<T extends {
|
|
847
851
|
id: string;
|
|
848
|
-
}>({ data, columns, showCheckbox, onRowClick, className, selectedItems, onSelect, emptyState, isLoading, loadingRows,
|
|
852
|
+
}>({ data, columns, showCheckbox, onRowClick, className, selectedItems, onSelect, emptyState, isLoading, loadingRows, tableHeightOffset }: TableProps<T>): JSX_2.Element;
|
|
849
853
|
|
|
850
854
|
export declare function TableEmpty({ title, description, actionLabel, onAction, icon }: TableEmptyProps): JSX_2.Element;
|
|
851
855
|
|
|
@@ -878,7 +882,7 @@ export declare interface TableProps<T> {
|
|
|
878
882
|
};
|
|
879
883
|
isLoading?: boolean;
|
|
880
884
|
loadingRows?: number;
|
|
881
|
-
|
|
885
|
+
tableHeightOffset?: string;
|
|
882
886
|
}
|
|
883
887
|
|
|
884
888
|
export declare const Tabs: React_2.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React_2.RefAttributes<HTMLDivElement>>;
|
package/dist/modal.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
export declare function Modal({ isOpen, onClose, title, description, icon, children, footer, size, showClose, className, isContentScrollable, mainClassName, contentClassName, header, zIndexClassName }: ModalProps):
|
|
3
|
+
export declare function Modal({ isOpen, onClose, title, description, icon, children, footer, size, showClose, className, isContentScrollable, mainClassName, contentClassName, header, headerClassName, zIndexClassName, mobileSheet, }: ModalProps): JSX_2.Element;
|
|
4
4
|
|
|
5
5
|
export declare interface ModalProps {
|
|
6
6
|
isOpen: boolean;
|
|
@@ -19,6 +19,10 @@ export declare interface ModalProps {
|
|
|
19
19
|
headerClassName?: string;
|
|
20
20
|
contentClassName?: string;
|
|
21
21
|
zIndexClassName?: string;
|
|
22
|
+
mobileSheet?: {
|
|
23
|
+
enable: boolean;
|
|
24
|
+
position?: 'left' | 'right' | 'bottom';
|
|
25
|
+
};
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
export { }
|
package/dist/stepper.d.ts
CHANGED