@rudra-studio/rudra-layout 1.0.12 → 1.0.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/components/Box/index.d.ts +16 -0
- package/components/Box/index.js +42 -0
- package/components/Carousel/index.d.ts +10 -0
- package/components/Carousel/index.js +100 -0
- package/components/DataCarousel/index.d.ts +13 -0
- package/components/DataCarousel/index.js +104 -0
- package/components/RepeaterTable/index.d.ts +5 -5
- package/components/RepeaterTable/index.js +90 -112
- package/components/StructuredGrid/index.d.ts +16 -0
- package/components/StructuredGrid/index.js +47 -0
- package/components/Table/index.js +19 -19
- package/index.d.ts +8 -0
- package/index.js +11 -7
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
direction?: 'row' | 'col';
|
|
5
|
+
horizontalAlign?: 'start' | 'center' | 'end' | 'between' | 'stretch';
|
|
6
|
+
verticalAlign?: 'start' | 'center' | 'end' | 'between' | 'stretch';
|
|
7
|
+
gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
8
|
+
wrap?: boolean;
|
|
9
|
+
customAttributes?: {
|
|
10
|
+
name: string;
|
|
11
|
+
value: string;
|
|
12
|
+
}[];
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const Box: React.FC<BoxProps>;
|
|
16
|
+
export default Box;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Box/index.tsx
|
|
4
|
+
var t = ({ children: t, direction: n = "row", horizontalAlign: r = "start", verticalAlign: i = "stretch", gap: a = "none", wrap: o = !1, customAttributes: s = [], className: c = "", ...l }) => {
|
|
5
|
+
let u = {
|
|
6
|
+
none: "gap-0",
|
|
7
|
+
sm: "gap-2",
|
|
8
|
+
md: "gap-4",
|
|
9
|
+
lg: "gap-6",
|
|
10
|
+
xl: "gap-8"
|
|
11
|
+
}, d = "", f = "", p = {
|
|
12
|
+
start: "justify-start",
|
|
13
|
+
center: "justify-center",
|
|
14
|
+
end: "justify-end",
|
|
15
|
+
between: "justify-between",
|
|
16
|
+
stretch: "justify-stretch"
|
|
17
|
+
}, m = {
|
|
18
|
+
start: "items-start",
|
|
19
|
+
center: "items-center",
|
|
20
|
+
end: "items-end",
|
|
21
|
+
between: "items-stretch",
|
|
22
|
+
stretch: "items-stretch"
|
|
23
|
+
};
|
|
24
|
+
n === "row" ? (d = p[r] || "justify-start", f = m[i] || "items-stretch") : (d = p[i] || "justify-start", f = m[r] || "items-stretch");
|
|
25
|
+
let h = s?.reduce((e, t) => (t && t.name && t.name.trim() !== "" && (e[t.name.trim()] = t.value), e), {});
|
|
26
|
+
return /* @__PURE__ */ e("div", {
|
|
27
|
+
className: `
|
|
28
|
+
flex
|
|
29
|
+
${n === "row" ? "flex-row" : "flex-col"}
|
|
30
|
+
${o ? "flex-wrap" : "flex-nowrap"}
|
|
31
|
+
${d}
|
|
32
|
+
${f}
|
|
33
|
+
${u[a]}
|
|
34
|
+
${c}
|
|
35
|
+
`,
|
|
36
|
+
...h,
|
|
37
|
+
...l,
|
|
38
|
+
children: t
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { t as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface RudraCarouselProps {
|
|
3
|
+
children: React.ReactNode[];
|
|
4
|
+
variant?: 'inline-arrows' | 'bottom-controls';
|
|
5
|
+
itemsPerView?: 'one' | 'multiple' | 'fractional';
|
|
6
|
+
gap?: 'none' | 'sm' | 'md' | 'lg';
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const RudraCarousel: React.FC<RudraCarouselProps>;
|
|
10
|
+
export default RudraCarousel;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import e, { useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronLeft as s, ChevronRight as c } from "lucide-react";
|
|
4
|
+
//#region src/components/Carousel/index.tsx
|
|
5
|
+
var l = ({ children: l, variant: u = "inline-arrows", itemsPerView: d = "one", gap: f = "md", className: p }) => {
|
|
6
|
+
let m = n(null), [h, g] = r(!0), [_, v] = r(!1), [y, b] = r(0), x = e.Children.count(l), S = () => {
|
|
7
|
+
switch (d) {
|
|
8
|
+
case "one": return "w-full";
|
|
9
|
+
case "multiple": return "w-full sm:w-[calc(50%-1rem)] md:w-[calc(33.333%-1rem)] lg:w-[calc(25%-1rem)]";
|
|
10
|
+
case "fractional": return "w-[85%] sm:w-[38%] md:w-[28%] lg:w-[21%]";
|
|
11
|
+
default: return "w-full";
|
|
12
|
+
}
|
|
13
|
+
}, C = () => {
|
|
14
|
+
switch (f) {
|
|
15
|
+
case "none": return "gap-0";
|
|
16
|
+
case "sm": return "gap-2";
|
|
17
|
+
case "lg": return "gap-8";
|
|
18
|
+
default: return "gap-4";
|
|
19
|
+
}
|
|
20
|
+
}, w = () => {
|
|
21
|
+
if (!m.current) return;
|
|
22
|
+
let { scrollLeft: e, scrollWidth: t, clientWidth: n } = m.current;
|
|
23
|
+
g(e <= 10), v(Math.ceil(e + n) >= t - 10);
|
|
24
|
+
let r = t - n;
|
|
25
|
+
if (r > 0) {
|
|
26
|
+
let t = e / r;
|
|
27
|
+
b(Math.round(t * (x - 1)));
|
|
28
|
+
} else b(0);
|
|
29
|
+
};
|
|
30
|
+
t(() => {
|
|
31
|
+
w();
|
|
32
|
+
}, [l, d]);
|
|
33
|
+
let T = (e) => {
|
|
34
|
+
if (!m.current) return;
|
|
35
|
+
let t = m.current.clientWidth * .8;
|
|
36
|
+
m.current.scrollBy({
|
|
37
|
+
left: e === "left" ? -t : t,
|
|
38
|
+
behavior: "smooth"
|
|
39
|
+
});
|
|
40
|
+
}, E = (e) => {
|
|
41
|
+
if (!m.current) return;
|
|
42
|
+
let { scrollWidth: t, clientWidth: n } = m.current, r = (t - n) * (e / (x - 1 || 1));
|
|
43
|
+
m.current.scrollTo({
|
|
44
|
+
left: r,
|
|
45
|
+
behavior: "smooth"
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
return !l || x === 0 ? null : /* @__PURE__ */ o("div", {
|
|
49
|
+
className: `relative w-full flex flex-col group ${p}`,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ a("div", {
|
|
52
|
+
ref: m,
|
|
53
|
+
onScroll: w,
|
|
54
|
+
className: `flex ${C()} overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] relative z-10 py-4`,
|
|
55
|
+
children: e.Children.map(l, (e, t) => /* @__PURE__ */ a("div", {
|
|
56
|
+
className: `shrink-0 snap-center sm:snap-start transition-transform ${S()}`,
|
|
57
|
+
children: e
|
|
58
|
+
}, t))
|
|
59
|
+
}),
|
|
60
|
+
u === "inline-arrows" && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("button", {
|
|
61
|
+
onClick: () => T("left"),
|
|
62
|
+
disabled: h,
|
|
63
|
+
className: "absolute left-0 sm:-left-4 top-1/2 -translate-y-1/2 z-20 w-10 h-10 bg-white border border-slate-200 shadow-lg rounded-full flex items-center justify-center text-slate-600 transition-all duration-300 hover:bg-slate-50 hover:scale-110 disabled:opacity-0 disabled:pointer-events-none",
|
|
64
|
+
children: /* @__PURE__ */ a(s, { size: 20 })
|
|
65
|
+
}), /* @__PURE__ */ a("button", {
|
|
66
|
+
onClick: () => T("right"),
|
|
67
|
+
disabled: _,
|
|
68
|
+
className: "absolute right-0 sm:-right-4 top-1/2 -translate-y-1/2 z-20 w-10 h-10 bg-white border border-slate-200 shadow-lg rounded-full flex items-center justify-center text-slate-600 transition-all duration-300 hover:bg-slate-50 hover:scale-110 disabled:opacity-0 disabled:pointer-events-none",
|
|
69
|
+
children: /* @__PURE__ */ a(c, { size: 20 })
|
|
70
|
+
})] }),
|
|
71
|
+
u === "bottom-controls" && /* @__PURE__ */ o("div", {
|
|
72
|
+
className: "flex items-center justify-between w-full mt-4 px-2",
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ a("button", {
|
|
75
|
+
onClick: () => T("left"),
|
|
76
|
+
disabled: h,
|
|
77
|
+
className: "w-8 h-8 flex items-center justify-center text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-full transition-colors disabled:opacity-30 disabled:pointer-events-none",
|
|
78
|
+
children: /* @__PURE__ */ a(s, { size: 20 })
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ a("div", {
|
|
81
|
+
className: "flex items-center gap-2",
|
|
82
|
+
children: Array.from({ length: x }).map((e, t) => /* @__PURE__ */ a("button", {
|
|
83
|
+
onClick: () => E(t),
|
|
84
|
+
className: `transition-all duration-300 rounded-full ${y === t ? "w-6 h-1.5 bg-blue-600" : "w-1.5 h-1.5 bg-slate-300 hover:bg-slate-400"}`,
|
|
85
|
+
"aria-label": `Go to slide ${t + 1}`
|
|
86
|
+
}, t))
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ a("button", {
|
|
89
|
+
onClick: () => T("right"),
|
|
90
|
+
disabled: _,
|
|
91
|
+
className: "w-8 h-8 flex items-center justify-center text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-full transition-colors disabled:opacity-30 disabled:pointer-events-none",
|
|
92
|
+
children: /* @__PURE__ */ a(c, { size: 20 })
|
|
93
|
+
})
|
|
94
|
+
]
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
//#endregion
|
|
100
|
+
export { l as default };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface RepeaterCarouselProps {
|
|
3
|
+
/** The data array to iterate over */
|
|
4
|
+
items?: any[];
|
|
5
|
+
/** The template to render for each item in the array */
|
|
6
|
+
template?: React.ReactNode | ((payload: any) => React.ReactNode);
|
|
7
|
+
variant?: 'inline-arrows' | 'bottom-controls';
|
|
8
|
+
itemsPerView?: 'one' | 'multiple' | 'fractional';
|
|
9
|
+
gap?: 'none' | 'sm' | 'md' | 'lg';
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const RepeaterCarousel: React.FC<RepeaterCarouselProps>;
|
|
13
|
+
export default RepeaterCarousel;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { useEffect as e, useRef as t, useState as n } from "react";
|
|
2
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronLeft as o, ChevronRight as s } from "lucide-react";
|
|
4
|
+
//#region src/components/DataCarousel/index.tsx
|
|
5
|
+
var c = ({ items: c = [], template: l, variant: u = "inline-arrows", itemsPerView: d = "one", gap: f = "md", className: p = "" }) => {
|
|
6
|
+
let m = t(null), [h, g] = n(!0), [_, v] = n(!1), [y, b] = n(0), x = c?.length || 0, S = () => {
|
|
7
|
+
switch (d) {
|
|
8
|
+
case "one": return "w-full";
|
|
9
|
+
case "multiple": return "w-full sm:w-[calc(50%-1rem)] md:w-[calc(33.333%-1rem)] lg:w-[calc(25%-1rem)]";
|
|
10
|
+
case "fractional": return "w-[85%] sm:w-[38%] md:w-[28%] lg:w-[21%]";
|
|
11
|
+
default: return "w-full";
|
|
12
|
+
}
|
|
13
|
+
}, C = () => {
|
|
14
|
+
switch (f) {
|
|
15
|
+
case "none": return "gap-0";
|
|
16
|
+
case "sm": return "gap-2";
|
|
17
|
+
case "lg": return "gap-8";
|
|
18
|
+
default: return "gap-4";
|
|
19
|
+
}
|
|
20
|
+
}, w = () => {
|
|
21
|
+
if (!m.current) return;
|
|
22
|
+
let { scrollLeft: e, scrollWidth: t, clientWidth: n } = m.current;
|
|
23
|
+
g(e <= 10), v(Math.ceil(e + n) >= t - 10);
|
|
24
|
+
let r = t - n;
|
|
25
|
+
if (r > 0) {
|
|
26
|
+
let t = e / r;
|
|
27
|
+
b(Math.round(t * (x - 1)));
|
|
28
|
+
} else b(0);
|
|
29
|
+
};
|
|
30
|
+
e(() => {
|
|
31
|
+
w();
|
|
32
|
+
}, [c, d]);
|
|
33
|
+
let T = (e) => {
|
|
34
|
+
if (!m.current) return;
|
|
35
|
+
let t = m.current.clientWidth * .8;
|
|
36
|
+
m.current.scrollBy({
|
|
37
|
+
left: e === "left" ? -t : t,
|
|
38
|
+
behavior: "smooth"
|
|
39
|
+
});
|
|
40
|
+
}, E = (e) => {
|
|
41
|
+
if (!m.current) return;
|
|
42
|
+
let { scrollWidth: t, clientWidth: n } = m.current, r = (t - n) * (e / (x - 1 || 1));
|
|
43
|
+
m.current.scrollTo({
|
|
44
|
+
left: r,
|
|
45
|
+
behavior: "smooth"
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
return x === 0 ? null : /* @__PURE__ */ a("div", {
|
|
49
|
+
className: `relative w-full flex flex-col group ${p}`,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ i("div", {
|
|
52
|
+
ref: m,
|
|
53
|
+
onScroll: w,
|
|
54
|
+
className: `flex ${C()} overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] relative z-10 py-4`,
|
|
55
|
+
children: c.map((e, t) => /* @__PURE__ */ i("div", {
|
|
56
|
+
className: `shrink-0 snap-center sm:snap-start transition-transform ${S()}`,
|
|
57
|
+
children: typeof l == "function" ? l({
|
|
58
|
+
item: e,
|
|
59
|
+
index: t,
|
|
60
|
+
_builderIndex: t
|
|
61
|
+
}) : l
|
|
62
|
+
}, t))
|
|
63
|
+
}),
|
|
64
|
+
u === "inline-arrows" && /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i("button", {
|
|
65
|
+
onClick: () => T("left"),
|
|
66
|
+
disabled: h,
|
|
67
|
+
className: "absolute left-0 sm:-left-4 top-1/2 -translate-y-1/2 z-20 w-10 h-10 bg-white border border-slate-200 shadow-lg rounded-full flex items-center justify-center text-slate-600 transition-all duration-300 hover:bg-slate-50 hover:scale-110 disabled:opacity-0 disabled:pointer-events-none",
|
|
68
|
+
children: /* @__PURE__ */ i(o, { size: 20 })
|
|
69
|
+
}), /* @__PURE__ */ i("button", {
|
|
70
|
+
onClick: () => T("right"),
|
|
71
|
+
disabled: _,
|
|
72
|
+
className: "absolute right-0 sm:-right-4 top-1/2 -translate-y-1/2 z-20 w-10 h-10 bg-white border border-slate-200 shadow-lg rounded-full flex items-center justify-center text-slate-600 transition-all duration-300 hover:bg-slate-50 hover:scale-110 disabled:opacity-0 disabled:pointer-events-none",
|
|
73
|
+
children: /* @__PURE__ */ i(s, { size: 20 })
|
|
74
|
+
})] }),
|
|
75
|
+
u === "bottom-controls" && /* @__PURE__ */ a("div", {
|
|
76
|
+
className: "flex items-center justify-between w-full mt-4 px-2",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ i("button", {
|
|
79
|
+
onClick: () => T("left"),
|
|
80
|
+
disabled: h,
|
|
81
|
+
className: "w-8 h-8 flex items-center justify-center text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-full transition-colors disabled:opacity-30 disabled:pointer-events-none",
|
|
82
|
+
children: /* @__PURE__ */ i(o, { size: 20 })
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ i("div", {
|
|
85
|
+
className: "flex items-center gap-2",
|
|
86
|
+
children: Array.from({ length: x }).map((e, t) => /* @__PURE__ */ i("button", {
|
|
87
|
+
onClick: () => E(t),
|
|
88
|
+
className: `transition-all duration-300 rounded-full ${y === t ? "w-6 h-1.5 bg-blue-600" : "w-1.5 h-1.5 bg-slate-300 hover:bg-slate-400"}`,
|
|
89
|
+
"aria-label": `Go to slide ${t + 1}`
|
|
90
|
+
}, t))
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ i("button", {
|
|
93
|
+
onClick: () => T("right"),
|
|
94
|
+
disabled: _,
|
|
95
|
+
className: "w-8 h-8 flex items-center justify-center text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded-full transition-colors disabled:opacity-30 disabled:pointer-events-none",
|
|
96
|
+
children: /* @__PURE__ */ i(s, { size: 20 })
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
//#endregion
|
|
104
|
+
export { c as default };
|
|
@@ -9,18 +9,18 @@ export interface RepeaterTableProps {
|
|
|
9
9
|
data?: any[];
|
|
10
10
|
/**
|
|
11
11
|
* @optional
|
|
12
|
-
* @type|
|
|
13
|
-
* @schema { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string", "default": "Header" }, "accessor": { "type": "string", "default": "id" } } } }
|
|
12
|
+
* @type|complex
|
|
13
|
+
* @schema { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string", "default": "Header" }, "accessor": { "type": "string", "default": "id" }, "template": { "type": "nodeFunction" } } } }
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
columns?: {
|
|
16
16
|
label: string;
|
|
17
17
|
accessor: string;
|
|
18
|
+
template?: (context: TableRowPayload) => React.ReactNode;
|
|
18
19
|
}[];
|
|
19
|
-
cellTemplates?: (React.ReactNode | ((context: TableRowPayload) => React.ReactNode))[];
|
|
20
20
|
expandedContent?: React.ReactNode | ((context: TableRowPayload) => React.ReactNode);
|
|
21
21
|
pageSize?: number;
|
|
22
22
|
globalFilterPlaceholder?: string;
|
|
23
23
|
className?: string;
|
|
24
24
|
}
|
|
25
|
-
export default function RepeaterTable({ data,
|
|
25
|
+
export default function RepeaterTable({ data, columns, expandedContent, pageSize, globalFilterPlaceholder, className, }: RepeaterTableProps): import("react/jsx-runtime").JSX.Element;
|
|
26
26
|
export {};
|
|
@@ -1,146 +1,124 @@
|
|
|
1
1
|
import e, { useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
|
|
2
2
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ChevronDown as s, ChevronLeft as c, ChevronRight as l, ChevronsLeft as u, ChevronsRight as d, LayoutTemplate as f, Search as p } from "lucide-react";
|
|
4
|
+
import { flexRender as m, getCoreRowModel as h, getExpandedRowModel as g, getFilteredRowModel as _, getPaginationRowModel as v, useReactTable as y } from "@tanstack/react-table";
|
|
5
5
|
//#region src/components/RepeaterTable/index.tsx
|
|
6
|
-
function b({ data: b = [],
|
|
7
|
-
let [
|
|
6
|
+
function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5, globalFilterPlaceholder: w = "Search anywhere...", className: T = "" }) {
|
|
7
|
+
let [E, D] = i([]), [O, k] = i(""), [A, j] = i({}), M = r(x);
|
|
8
8
|
t(() => {
|
|
9
|
-
|
|
10
|
-
}, [x])
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
M.current = x;
|
|
10
|
+
}, [x]);
|
|
11
|
+
let N = n(() => (Array.isArray(M.current) ? M.current : []).map((e, t) => ({
|
|
12
|
+
id: `col_${t}`,
|
|
13
|
+
accessorFn: (t) => t[e.accessor] ?? t,
|
|
14
|
+
header: () => /* @__PURE__ */ a("div", {
|
|
15
|
+
className: "font-semibold text-slate-700 dark:text-slate-200 uppercase text-xs",
|
|
16
|
+
children: e.label
|
|
17
|
+
}),
|
|
18
|
+
cell: ({ row: n }) => {
|
|
19
|
+
let r = M.current?.[t]?.template, i = t === 0, c = {
|
|
20
|
+
item: n.original,
|
|
21
|
+
index: n.index,
|
|
22
|
+
isExpanded: n.getIsExpanded(),
|
|
23
|
+
toggleExpanded: n.getToggleExpandedHandler()
|
|
19
24
|
};
|
|
20
|
-
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
className: "
|
|
25
|
-
children: n.
|
|
26
|
-
}),
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
className: "flex-1 w-full min-w-0",
|
|
42
|
-
children: typeof r == "function" ? r(s) : r || /* @__PURE__ */ o("div", {
|
|
43
|
-
className: "py-2 px-3 border border-dashed border-slate-300 dark:border-slate-700 rounded text-slate-400 dark:text-slate-500 text-xs italic flex items-center gap-2",
|
|
44
|
-
children: [
|
|
45
|
-
/* @__PURE__ */ a(v, { size: 12 }),
|
|
46
|
-
" Drop ",
|
|
47
|
-
n.label,
|
|
48
|
-
" Cell"
|
|
49
|
-
]
|
|
50
|
-
})
|
|
51
|
-
})]
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
}, [
|
|
57
|
-
x.length,
|
|
58
|
-
S.length,
|
|
59
|
-
C
|
|
60
|
-
]), I = f({
|
|
25
|
+
return /* @__PURE__ */ o("div", {
|
|
26
|
+
className: "flex items-center gap-3",
|
|
27
|
+
children: [i && S && /* @__PURE__ */ a("button", {
|
|
28
|
+
onClick: n.getToggleExpandedHandler(),
|
|
29
|
+
className: "p-1 hover:bg-slate-200 dark:hover:bg-white/10 rounded text-slate-500 transition-colors shrink-0",
|
|
30
|
+
children: n.getIsExpanded() ? /* @__PURE__ */ a(s, { size: 16 }) : /* @__PURE__ */ a(l, { size: 16 })
|
|
31
|
+
}), /* @__PURE__ */ a("div", {
|
|
32
|
+
className: "flex-1 w-full min-w-0",
|
|
33
|
+
children: typeof r == "function" ? r(c) : r || /* @__PURE__ */ o("div", {
|
|
34
|
+
className: "py-2 px-3 border border-dashed border-slate-300 dark:border-slate-700 rounded text-slate-400 dark:text-slate-500 text-xs italic flex items-center gap-2",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ a(f, { size: 12 }),
|
|
37
|
+
" Drop ",
|
|
38
|
+
e.label,
|
|
39
|
+
" Cell"
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
})]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
})), [x?.length, S]), P = y({
|
|
61
46
|
data: Array.isArray(b) ? b : [],
|
|
62
|
-
columns:
|
|
47
|
+
columns: N,
|
|
63
48
|
state: {
|
|
64
|
-
sorting:
|
|
65
|
-
globalFilter:
|
|
66
|
-
expanded:
|
|
49
|
+
sorting: E,
|
|
50
|
+
globalFilter: O,
|
|
51
|
+
expanded: A
|
|
67
52
|
},
|
|
68
|
-
initialState: { pagination: { pageSize:
|
|
69
|
-
onSortingChange:
|
|
70
|
-
onExpandedChange:
|
|
71
|
-
onGlobalFilterChange:
|
|
72
|
-
getCoreRowModel:
|
|
73
|
-
getFilteredRowModel:
|
|
74
|
-
getPaginationRowModel:
|
|
75
|
-
getExpandedRowModel:
|
|
53
|
+
initialState: { pagination: { pageSize: C } },
|
|
54
|
+
onSortingChange: D,
|
|
55
|
+
onExpandedChange: j,
|
|
56
|
+
onGlobalFilterChange: k,
|
|
57
|
+
getCoreRowModel: h(),
|
|
58
|
+
getFilteredRowModel: _(),
|
|
59
|
+
getPaginationRowModel: v(),
|
|
60
|
+
getExpandedRowModel: g(),
|
|
76
61
|
globalFilterFn: (e, t, n) => {
|
|
77
62
|
let r = String(n).toLowerCase();
|
|
78
63
|
return Object.values(e.original).some((e) => String(e).toLowerCase().includes(r));
|
|
79
64
|
}
|
|
80
65
|
});
|
|
81
66
|
return t(() => {
|
|
82
|
-
|
|
83
|
-
}, [
|
|
67
|
+
P.setPageSize(C);
|
|
68
|
+
}, [C, P]), b.length === 0 && (!x || x.length === 0) ? /* @__PURE__ */ o("div", {
|
|
84
69
|
className: "w-full p-12 border-2 border-dashed border-slate-200 dark:border-slate-800 bg-white dark:bg-[#0A0A0A] rounded-2xl flex flex-col items-center justify-center text-slate-400",
|
|
85
|
-
children: [
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
children: "Repeater Table Empty"
|
|
93
|
-
}),
|
|
94
|
-
/* @__PURE__ */ a("p", {
|
|
95
|
-
className: "text-xs mt-1 text-slate-500",
|
|
96
|
-
children: "Provide Data and configure Headers to begin."
|
|
97
|
-
})
|
|
98
|
-
]
|
|
70
|
+
children: [/* @__PURE__ */ a(f, {
|
|
71
|
+
size: 32,
|
|
72
|
+
className: "mb-4 opacity-50"
|
|
73
|
+
}), /* @__PURE__ */ a("p", {
|
|
74
|
+
className: "text-sm font-medium text-slate-600 dark:text-slate-400",
|
|
75
|
+
children: "Repeater Table Empty"
|
|
76
|
+
})]
|
|
99
77
|
}) : /* @__PURE__ */ o("div", {
|
|
100
|
-
className: `space-y-4 w-full ${
|
|
78
|
+
className: `space-y-4 w-full ${T}`,
|
|
101
79
|
children: [
|
|
102
80
|
/* @__PURE__ */ o("div", {
|
|
103
81
|
className: "relative w-full sm:w-96",
|
|
104
|
-
children: [/* @__PURE__ */ a(
|
|
105
|
-
value:
|
|
106
|
-
onChange: (e) =>
|
|
107
|
-
placeholder:
|
|
108
|
-
className: "w-full bg-white dark:bg-[#0A0A0A] border border-slate-200 dark:border-white/10 rounded-xl pl-10 pr-4 py-2 text-sm text-slate-900 dark:text-slate-200 placeholder:text-slate-400
|
|
82
|
+
children: [/* @__PURE__ */ a(p, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400 dark:text-slate-500" }), /* @__PURE__ */ a("input", {
|
|
83
|
+
value: O ?? "",
|
|
84
|
+
onChange: (e) => k(e.target.value),
|
|
85
|
+
placeholder: w,
|
|
86
|
+
className: "w-full bg-white dark:bg-[#0A0A0A] border border-slate-200 dark:border-white/10 rounded-xl pl-10 pr-4 py-2 text-sm text-slate-900 dark:text-slate-200 placeholder:text-slate-400 outline-none"
|
|
109
87
|
})]
|
|
110
88
|
}),
|
|
111
89
|
/* @__PURE__ */ a("div", {
|
|
112
|
-
className: "rounded-2xl border border-slate-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A] overflow-hidden
|
|
90
|
+
className: "rounded-2xl border border-slate-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A] overflow-hidden",
|
|
113
91
|
children: /* @__PURE__ */ a("div", {
|
|
114
92
|
className: "overflow-x-auto custom-scrollbar",
|
|
115
93
|
children: /* @__PURE__ */ o("table", {
|
|
116
94
|
className: "w-full text-sm text-left",
|
|
117
95
|
children: [/* @__PURE__ */ a("thead", {
|
|
118
96
|
className: "bg-slate-50 dark:bg-white/5 border-b border-slate-200 dark:border-white/10 text-slate-500 dark:text-slate-400 tracking-wider",
|
|
119
|
-
children:
|
|
97
|
+
children: P.getHeaderGroups().map((e) => /* @__PURE__ */ a("tr", { children: e.headers.map((e) => /* @__PURE__ */ a("th", {
|
|
120
98
|
className: "px-6 py-4 whitespace-nowrap",
|
|
121
|
-
children:
|
|
99
|
+
children: m(e.column.columnDef.header, e.getContext())
|
|
122
100
|
}, e.id)) }, e.id))
|
|
123
101
|
}), /* @__PURE__ */ a("tbody", {
|
|
124
102
|
className: "divide-y divide-slate-200 dark:divide-white/5",
|
|
125
|
-
children:
|
|
103
|
+
children: P.getRowModel().rows.map((t) => /* @__PURE__ */ o(e.Fragment, { children: [/* @__PURE__ */ a("tr", {
|
|
126
104
|
className: "hover:bg-slate-50 dark:hover:bg-white/5 transition-colors group",
|
|
127
105
|
children: t.getVisibleCells().map((e) => /* @__PURE__ */ a("td", {
|
|
128
106
|
className: "px-6 py-4 text-slate-700 dark:text-slate-300",
|
|
129
|
-
children:
|
|
107
|
+
children: m(e.column.columnDef.cell, e.getContext())
|
|
130
108
|
}, e.id))
|
|
131
|
-
}), t.getIsExpanded() &&
|
|
109
|
+
}), t.getIsExpanded() && S && /* @__PURE__ */ a("tr", {
|
|
132
110
|
className: "bg-slate-50/50 dark:bg-white/[0.02]",
|
|
133
111
|
children: /* @__PURE__ */ a("td", {
|
|
134
|
-
colSpan:
|
|
112
|
+
colSpan: N.length,
|
|
135
113
|
className: "p-0 border-b border-slate-200 dark:border-white/5",
|
|
136
114
|
children: /* @__PURE__ */ a("div", {
|
|
137
115
|
className: "p-6",
|
|
138
|
-
children: typeof
|
|
116
|
+
children: typeof S == "function" ? S({
|
|
139
117
|
item: t.original,
|
|
140
118
|
index: t.index,
|
|
141
119
|
isExpanded: !0,
|
|
142
120
|
toggleExpanded: t.getToggleExpandedHandler()
|
|
143
|
-
}) :
|
|
121
|
+
}) : S
|
|
144
122
|
})
|
|
145
123
|
})
|
|
146
124
|
})] }, t.id))
|
|
@@ -156,41 +134,41 @@ function b({ data: b = [], headers: x = [], cellTemplates: S = [], expandedConte
|
|
|
156
134
|
"Page ",
|
|
157
135
|
/* @__PURE__ */ a("span", {
|
|
158
136
|
className: "font-semibold text-slate-700 dark:text-slate-200",
|
|
159
|
-
children:
|
|
137
|
+
children: P.getState().pagination.pageIndex + 1
|
|
160
138
|
}),
|
|
161
139
|
" of",
|
|
162
140
|
" ",
|
|
163
141
|
/* @__PURE__ */ a("span", {
|
|
164
142
|
className: "font-semibold text-slate-700 dark:text-slate-200",
|
|
165
|
-
children:
|
|
143
|
+
children: P.getPageCount() || 1
|
|
166
144
|
})
|
|
167
145
|
]
|
|
168
146
|
}), /* @__PURE__ */ o("div", {
|
|
169
147
|
className: "flex items-center gap-1.5",
|
|
170
148
|
children: [
|
|
171
149
|
/* @__PURE__ */ a("button", {
|
|
172
|
-
onClick: () =>
|
|
173
|
-
disabled: !
|
|
150
|
+
onClick: () => P.setPageIndex(0),
|
|
151
|
+
disabled: !P.getCanPreviousPage(),
|
|
174
152
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
175
|
-
children: /* @__PURE__ */ a(
|
|
153
|
+
children: /* @__PURE__ */ a(u, { size: 16 })
|
|
176
154
|
}),
|
|
177
155
|
/* @__PURE__ */ a("button", {
|
|
178
|
-
onClick: () =>
|
|
179
|
-
disabled: !
|
|
156
|
+
onClick: () => P.previousPage(),
|
|
157
|
+
disabled: !P.getCanPreviousPage(),
|
|
180
158
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
181
|
-
children: /* @__PURE__ */ a(
|
|
159
|
+
children: /* @__PURE__ */ a(c, { size: 16 })
|
|
182
160
|
}),
|
|
183
161
|
/* @__PURE__ */ a("button", {
|
|
184
|
-
onClick: () =>
|
|
185
|
-
disabled: !
|
|
162
|
+
onClick: () => P.nextPage(),
|
|
163
|
+
disabled: !P.getCanNextPage(),
|
|
186
164
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
187
|
-
children: /* @__PURE__ */ a(
|
|
165
|
+
children: /* @__PURE__ */ a(l, { size: 16 })
|
|
188
166
|
}),
|
|
189
167
|
/* @__PURE__ */ a("button", {
|
|
190
|
-
onClick: () =>
|
|
191
|
-
disabled: !
|
|
168
|
+
onClick: () => P.setPageIndex(P.getPageCount() - 1),
|
|
169
|
+
disabled: !P.getCanNextPage(),
|
|
192
170
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
193
|
-
children: /* @__PURE__ */ a(
|
|
171
|
+
children: /* @__PURE__ */ a(d, { size: 16 })
|
|
194
172
|
})
|
|
195
173
|
]
|
|
196
174
|
})]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ComplexGridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** The data defining the names of the slots and their dropped content */
|
|
4
|
+
gridData?: {
|
|
5
|
+
name: string;
|
|
6
|
+
node: React.ReactNode;
|
|
7
|
+
}[];
|
|
8
|
+
templateColumns?: string;
|
|
9
|
+
templateRows?: string;
|
|
10
|
+
templateAreas?: string;
|
|
11
|
+
gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
12
|
+
minHeight?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const ComplexGrid: React.FC<ComplexGridProps>;
|
|
16
|
+
export default ComplexGrid;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useMemo as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/StructuredGrid/index.tsx
|
|
4
|
+
var r = ({ gridData: r = [], templateColumns: i = "1fr 1fr", templateRows: a = "auto auto", templateAreas: o = "\"area1 area2\" \"area3 area4\"", gap: s = "md", minHeight: c = "300px", className: l = "", ...u }) => {
|
|
5
|
+
let d = {
|
|
6
|
+
none: "gap-0",
|
|
7
|
+
sm: "gap-4",
|
|
8
|
+
md: "gap-6",
|
|
9
|
+
lg: "gap-8",
|
|
10
|
+
xl: "gap-12"
|
|
11
|
+
}, f = e(() => {
|
|
12
|
+
if (!o) return [];
|
|
13
|
+
let e = o.replace(/"|'/g, "").split(/\s+/).filter((e) => e.trim() !== "" && e.trim() !== ".");
|
|
14
|
+
return Array.from(new Set(e));
|
|
15
|
+
}, [o]), p = (e) => r?.find((t) => t && t.name === e)?.node || null, m = {
|
|
16
|
+
display: "grid",
|
|
17
|
+
gridTemplateColumns: i,
|
|
18
|
+
gridTemplateRows: a,
|
|
19
|
+
gridTemplateAreas: o,
|
|
20
|
+
minHeight: c,
|
|
21
|
+
...u.style
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ t("div", {
|
|
24
|
+
className: `w-full ${d[s]} ${l}`,
|
|
25
|
+
style: m,
|
|
26
|
+
...u,
|
|
27
|
+
children: f.map((e) => {
|
|
28
|
+
let r = p(e), i = !r;
|
|
29
|
+
return /* @__PURE__ */ n("div", {
|
|
30
|
+
style: { gridArea: e },
|
|
31
|
+
className: `
|
|
32
|
+
relative min-h-[50px] transition-colors
|
|
33
|
+
${i ? "border border-dashed border-slate-300 bg-slate-50/50 hover:bg-slate-100 hover:border-blue-400" : ""}
|
|
34
|
+
`,
|
|
35
|
+
children: [i && /* @__PURE__ */ t("div", {
|
|
36
|
+
className: "absolute inset-0 flex items-center justify-center pointer-events-none opacity-40",
|
|
37
|
+
children: /* @__PURE__ */ t("span", {
|
|
38
|
+
className: "font-mono text-xs font-bold uppercase tracking-wider text-slate-500",
|
|
39
|
+
children: e
|
|
40
|
+
})
|
|
41
|
+
}), r]
|
|
42
|
+
}, e);
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
//#endregion
|
|
47
|
+
export { r as default };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
2
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ChevronDown as o, ChevronLeft as s, ChevronRight as c, ChevronUp as l, ChevronsLeft as u, ChevronsRight as d, ChevronsUpDown as f, Loader2 as p, Search as m, SlidersHorizontal as h } from "lucide-react";
|
|
4
|
+
import { flexRender as g, getCoreRowModel as _, getFilteredRowModel as v, getPaginationRowModel as y, getSortedRowModel as b, useReactTable as x } from "@tanstack/react-table";
|
|
5
5
|
//#region src/components/Table/index.tsx
|
|
6
6
|
function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "pagination", onLoadMore: E, isFetching: D = !1, hasMore: O = !1, globalFilterPlaceholder: k = "Search all records..." }) {
|
|
7
7
|
let [A, j] = r([]), [M, N] = r([]), [P, F] = r(""), [I, L] = r(!1), R = n(null), z = e((e) => {
|
|
@@ -12,7 +12,7 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
12
12
|
D,
|
|
13
13
|
O,
|
|
14
14
|
E
|
|
15
|
-
]), B =
|
|
15
|
+
]), B = x({
|
|
16
16
|
data: C,
|
|
17
17
|
columns: S,
|
|
18
18
|
state: {
|
|
@@ -25,10 +25,10 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
25
25
|
onColumnFiltersChange: N,
|
|
26
26
|
onGlobalFilterChange: F,
|
|
27
27
|
globalFilterFn: "includesString",
|
|
28
|
-
getCoreRowModel:
|
|
29
|
-
getFilteredRowModel:
|
|
30
|
-
getSortedRowModel:
|
|
31
|
-
getPaginationRowModel: T === "pagination" ?
|
|
28
|
+
getCoreRowModel: _(),
|
|
29
|
+
getFilteredRowModel: v(),
|
|
30
|
+
getSortedRowModel: b(),
|
|
31
|
+
getPaginationRowModel: T === "pagination" ? y() : void 0
|
|
32
32
|
});
|
|
33
33
|
return t(() => {
|
|
34
34
|
B.setPageSize(w);
|
|
@@ -39,7 +39,7 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
39
39
|
className: "flex flex-col sm:flex-row items-center justify-between gap-4",
|
|
40
40
|
children: [/* @__PURE__ */ a("div", {
|
|
41
41
|
className: "relative w-full sm:w-96",
|
|
42
|
-
children: [/* @__PURE__ */ i(
|
|
42
|
+
children: [/* @__PURE__ */ i(m, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400 dark:text-slate-500" }), /* @__PURE__ */ i("input", {
|
|
43
43
|
value: P ?? "",
|
|
44
44
|
onChange: (e) => F(e.target.value),
|
|
45
45
|
placeholder: k,
|
|
@@ -48,7 +48,7 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
48
48
|
}), /* @__PURE__ */ a("button", {
|
|
49
49
|
onClick: () => L(!I),
|
|
50
50
|
className: `flex items-center gap-2 px-4 py-2 border rounded-xl text-sm font-medium transition-colors w-full sm:w-auto shadow-sm dark:shadow-none ${I ? "bg-blue-50 dark:bg-white/10 border-blue-200 dark:border-white/20 text-blue-700 dark:text-white" : "border-slate-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A] hover:bg-slate-50 dark:hover:bg-white/5 text-slate-700 dark:text-slate-300"}`,
|
|
51
|
-
children: [/* @__PURE__ */ i(
|
|
51
|
+
children: [/* @__PURE__ */ i(h, { size: 14 }), /* @__PURE__ */ i("span", { children: "Filters" })]
|
|
52
52
|
})]
|
|
53
53
|
}),
|
|
54
54
|
/* @__PURE__ */ a("div", {
|
|
@@ -66,16 +66,16 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
66
66
|
children: [/* @__PURE__ */ a("div", {
|
|
67
67
|
className: e.column.getCanSort() ? "cursor-pointer select-none flex items-center gap-2 hover:text-slate-900 dark:hover:text-white transition-colors" : "flex items-center gap-2",
|
|
68
68
|
onClick: e.column.getToggleSortingHandler(),
|
|
69
|
-
children: [
|
|
70
|
-
asc: /* @__PURE__ */ i(
|
|
69
|
+
children: [g(e.column.columnDef.header, e.getContext()), {
|
|
70
|
+
asc: /* @__PURE__ */ i(l, {
|
|
71
71
|
size: 14,
|
|
72
72
|
className: "text-blue-500 dark:text-cyan-400"
|
|
73
73
|
}),
|
|
74
|
-
desc: /* @__PURE__ */ i(
|
|
74
|
+
desc: /* @__PURE__ */ i(o, {
|
|
75
75
|
size: 14,
|
|
76
76
|
className: "text-blue-500 dark:text-cyan-400"
|
|
77
77
|
})
|
|
78
|
-
}[e.column.getIsSorted()] ?? (e.column.getCanSort() ? /* @__PURE__ */ i(
|
|
78
|
+
}[e.column.getIsSorted()] ?? (e.column.getCanSort() ? /* @__PURE__ */ i(f, {
|
|
79
79
|
size: 14,
|
|
80
80
|
className: "opacity-0 group-hover:opacity-50"
|
|
81
81
|
}) : null)]
|
|
@@ -95,7 +95,7 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
95
95
|
className: "hover:bg-slate-50 dark:hover:bg-white/5 transition-colors group",
|
|
96
96
|
children: e.getVisibleCells().map((e) => /* @__PURE__ */ i("td", {
|
|
97
97
|
className: "px-6 py-4 text-slate-700 dark:text-slate-300 whitespace-nowrap",
|
|
98
|
-
children:
|
|
98
|
+
children: g(e.column.columnDef.cell, e.getContext())
|
|
99
99
|
}, e.id))
|
|
100
100
|
}, e.id)) : /* @__PURE__ */ i("tr", { children: /* @__PURE__ */ i("td", {
|
|
101
101
|
colSpan: S.length,
|
|
@@ -109,7 +109,7 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
109
109
|
className: "flex items-center justify-center p-4 text-slate-500 border-t border-slate-200 dark:border-white/10",
|
|
110
110
|
children: D ? /* @__PURE__ */ a("span", {
|
|
111
111
|
className: "flex items-center gap-2 text-sm",
|
|
112
|
-
children: [/* @__PURE__ */ i(
|
|
112
|
+
children: [/* @__PURE__ */ i(p, {
|
|
113
113
|
className: "animate-spin",
|
|
114
114
|
size: 14
|
|
115
115
|
}), " Loading more..."]
|
|
@@ -146,25 +146,25 @@ function S({ columns: S = [], data: C = [], pageSize: w = 10, mode: T = "paginat
|
|
|
146
146
|
onClick: () => B.setPageIndex(0),
|
|
147
147
|
disabled: !B.getCanPreviousPage(),
|
|
148
148
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
149
|
-
children: /* @__PURE__ */ i(
|
|
149
|
+
children: /* @__PURE__ */ i(u, { size: 16 })
|
|
150
150
|
}),
|
|
151
151
|
/* @__PURE__ */ i("button", {
|
|
152
152
|
onClick: () => B.previousPage(),
|
|
153
153
|
disabled: !B.getCanPreviousPage(),
|
|
154
154
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
155
|
-
children: /* @__PURE__ */ i(
|
|
155
|
+
children: /* @__PURE__ */ i(s, { size: 16 })
|
|
156
156
|
}),
|
|
157
157
|
/* @__PURE__ */ i("button", {
|
|
158
158
|
onClick: () => B.nextPage(),
|
|
159
159
|
disabled: !B.getCanNextPage(),
|
|
160
160
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
161
|
-
children: /* @__PURE__ */ i(
|
|
161
|
+
children: /* @__PURE__ */ i(c, { size: 16 })
|
|
162
162
|
}),
|
|
163
163
|
/* @__PURE__ */ i("button", {
|
|
164
164
|
onClick: () => B.setPageIndex(B.getPageCount() - 1),
|
|
165
165
|
disabled: !B.getCanNextPage(),
|
|
166
166
|
className: "p-1.5 rounded-lg text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-white/5 disabled:opacity-30 transition-colors",
|
|
167
|
-
children: /* @__PURE__ */ i(
|
|
167
|
+
children: /* @__PURE__ */ i(d, { size: 16 })
|
|
168
168
|
})
|
|
169
169
|
]
|
|
170
170
|
})]
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export type { BoxProps } from './components/Box';
|
|
2
|
+
export { default as Box } from './components/Box';
|
|
3
|
+
export type { RudraCarouselProps } from './components/Carousel';
|
|
4
|
+
export { default as RudraCarousel } from './components/Carousel';
|
|
5
|
+
export type { RepeaterCarouselProps } from './components/DataCarousel';
|
|
6
|
+
export { default as RepeaterCarousel } from './components/DataCarousel';
|
|
1
7
|
export type { GridProps } from './components/Grid';
|
|
2
8
|
export { default as Grid } from './components/Grid';
|
|
3
9
|
export type { RepeaterProps } from './components/Repeater';
|
|
@@ -6,5 +12,7 @@ export type { RepeaterTableProps } from './components/RepeaterTable';
|
|
|
6
12
|
export { default as RepeaterTable } from './components/RepeaterTable';
|
|
7
13
|
export type { StackProps } from './components/Stack';
|
|
8
14
|
export { default as Stack } from './components/Stack';
|
|
15
|
+
export type { ComplexGridProps } from './components/StructuredGrid';
|
|
16
|
+
export { default as ComplexGrid } from './components/StructuredGrid';
|
|
9
17
|
export type { DataTableProps } from './components/Table';
|
|
10
18
|
export { default as DataTable } from './components/Table';
|
package/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/* empty css */
|
|
2
|
-
import e from "./components/
|
|
3
|
-
import t from "./components/
|
|
4
|
-
import n from "./components/
|
|
5
|
-
import r from "./components/
|
|
6
|
-
import i from "./components/
|
|
7
|
-
|
|
2
|
+
import e from "./components/Box/index.js";
|
|
3
|
+
import t from "./components/Carousel/index.js";
|
|
4
|
+
import n from "./components/DataCarousel/index.js";
|
|
5
|
+
import r from "./components/Grid/index.js";
|
|
6
|
+
import i from "./components/Repeater/index.js";
|
|
7
|
+
import a from "./components/RepeaterTable/index.js";
|
|
8
|
+
import o from "./components/Stack/index.js";
|
|
9
|
+
import s from "./components/StructuredGrid/index.js";
|
|
10
|
+
import c from "./components/Table/index.js";
|
|
11
|
+
export { e as Box, s as ComplexGrid, c as DataTable, r as Grid, i as Repeater, n as RepeaterCarousel, a as RepeaterTable, t as RudraCarousel, o as Stack };
|
|
8
12
|
|
|
9
|
-
try{if(typeof document!=="undefined"){const e=document.createElement("style");e.textContent="*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:\"\"}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.absolute{position:absolute}.relative{position:relative}.left-3{left:.75rem}.top-1\\/2{top:50%}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.flex{display:flex}.\\!table{display:table!important}.table{display:table}.grid{display:grid}.h-4{height:1rem}.w-4{width:1rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\\[120px\\]{min-width:120px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(250px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-50\\/50{background-color:#f8fafc80}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-12{padding:3rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pr-4{padding-right:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.text-\\[10px\\]{font-size:10px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.tracking-wider{letter-spacing:.05em}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.disabled\\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\\:opacity-50{opacity:.5}@media (width>=640px){.sm\\:w-96{width:24rem}.sm\\:w-auto{width:auto}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}}@media (width>=768px){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1024px){.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1280px){.xl\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\\:divide-white\\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.dark\\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.dark\\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.dark\\:border-white\\/10{border-color:#ffffff1a}.dark\\:border-white\\/20{border-color:#fff3}.dark\\:border-white\\/5{border-color:#ffffff0d}.dark\\:bg-\\[\\#0A0A0A\\]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.dark\\:bg-black\\/40{background-color:#0006}.dark\\:bg-white\\/10{background-color:#ffffff1a}.dark\\:bg-white\\/5{background-color:#ffffff0d}.dark\\:bg-white\\/\\[0\\.02\\]{background-color:#ffffff05}.dark\\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.dark\\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark\\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.dark\\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark\\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dark\\:placeholder\\:text-slate-600::placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.dark\\:hover\\:bg-white\\/10:hover{background-color:#ffffff1a}.dark\\:hover\\:bg-white\\/5:hover{background-color:#ffffff0d}.dark\\:hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-cyan-500\\/50:focus{border-color:#06b6d480}}";const target = window.__RUDRA_SHADOW_ROOT__ || document.head; target.appendChild(e);}}catch(err){}
|
|
13
|
+
try{if(typeof document!=="undefined"){const e=document.createElement("style");e.textContent="*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:\"\"}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.top-1\\/2{top:50%}.z-10{z-index:10}.z-20{z-index:20}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.inline{display:inline}.flex{display:flex}.\\!table{display:table!important}.table{display:table}.grid{display:grid}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-4{height:1rem}.h-8{height:2rem}.min-h-\\[50px\\]{min-height:50px}.w-1{width:.25rem}.w-1\\.5{width:.375rem}.w-10{width:2.5rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\\[85\\%\\]{width:85%}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\\[120px\\]{min-width:120px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(250px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-stretch{justify-content:stretch}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-50\\/50{background-color:#f8fafc80}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-12{padding:3rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pr-4{padding-right:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\\[10px\\]{font-size:10px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.tracking-wider{letter-spacing:.05em}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.\\[-ms-overflow-style\\:none\\]{-ms-overflow-style:none}.\\[scrollbar-width\\:none\\]{scrollbar-width:none}.placeholder\\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity))}.hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.hover\\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\\:bg-slate-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.hover\\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:opacity-0:disabled{opacity:0}.disabled\\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\\:opacity-50{opacity:.5}@media (width>=640px){.sm\\:-left-4{left:-1rem}.sm\\:-right-4{right:-1rem}.sm\\:w-96{width:24rem}.sm\\:w-\\[38\\%\\]{width:38%}.sm\\:w-\\[calc\\(50\\%-1rem\\)\\]{width:calc(50% - 1rem)}.sm\\:w-auto{width:auto}.sm\\:snap-start{scroll-snap-align:start}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}}@media (width>=768px){.md\\:w-\\[28\\%\\]{width:28%}.md\\:w-\\[calc\\(33\\.333\\%-1rem\\)\\]{width:calc(33.333% - 1rem)}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1024px){.lg\\:w-\\[21\\%\\]{width:21%}.lg\\:w-\\[calc\\(25\\%-1rem\\)\\]{width:calc(25% - 1rem)}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1280px){.xl\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\\:divide-white\\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.dark\\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.dark\\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.dark\\:border-white\\/10{border-color:#ffffff1a}.dark\\:border-white\\/20{border-color:#fff3}.dark\\:border-white\\/5{border-color:#ffffff0d}.dark\\:bg-\\[\\#0A0A0A\\]{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity))}.dark\\:bg-black\\/40{background-color:#0006}.dark\\:bg-white\\/10{background-color:#ffffff1a}.dark\\:bg-white\\/5{background-color:#ffffff0d}.dark\\:bg-white\\/\\[0\\.02\\]{background-color:#ffffff05}.dark\\:text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.dark\\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark\\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.dark\\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark\\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dark\\:placeholder\\:text-slate-600::placeholder{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.dark\\:hover\\:bg-white\\/10:hover{background-color:#ffffff1a}.dark\\:hover\\:bg-white\\/5:hover{background-color:#ffffff0d}.dark\\:hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\\:focus\\:border-cyan-500\\/50:focus{border-color:#06b6d480}}.\\[\\&\\:\\:-webkit-scrollbar\\]\\:hidden::-webkit-scrollbar{display:none}";const target = window.__RUDRA_SHADOW_ROOT__ || document.head; target.appendChild(e);}}catch(err){}
|
package/package.json
CHANGED