@rudra-studio/rudra-layout 1.0.13 → 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.js +19 -19
- 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 };
|
|
@@ -1,7 +1,7 @@
|
|
|
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
6
|
function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5, globalFilterPlaceholder: w = "Search anywhere...", className: T = "" }) {
|
|
7
7
|
let [E, D] = i([]), [O, k] = i(""), [A, j] = i({}), M = r(x);
|
|
@@ -16,7 +16,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
16
16
|
children: e.label
|
|
17
17
|
}),
|
|
18
18
|
cell: ({ row: n }) => {
|
|
19
|
-
let r = M.current?.[t]?.template, i = t === 0,
|
|
19
|
+
let r = M.current?.[t]?.template, i = t === 0, c = {
|
|
20
20
|
item: n.original,
|
|
21
21
|
index: n.index,
|
|
22
22
|
isExpanded: n.getIsExpanded(),
|
|
@@ -27,13 +27,13 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
27
27
|
children: [i && S && /* @__PURE__ */ a("button", {
|
|
28
28
|
onClick: n.getToggleExpandedHandler(),
|
|
29
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(
|
|
30
|
+
children: n.getIsExpanded() ? /* @__PURE__ */ a(s, { size: 16 }) : /* @__PURE__ */ a(l, { size: 16 })
|
|
31
31
|
}), /* @__PURE__ */ a("div", {
|
|
32
32
|
className: "flex-1 w-full min-w-0",
|
|
33
|
-
children: typeof r == "function" ? r(
|
|
33
|
+
children: typeof r == "function" ? r(c) : r || /* @__PURE__ */ o("div", {
|
|
34
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
35
|
children: [
|
|
36
|
-
/* @__PURE__ */ a(
|
|
36
|
+
/* @__PURE__ */ a(f, { size: 12 }),
|
|
37
37
|
" Drop ",
|
|
38
38
|
e.label,
|
|
39
39
|
" Cell"
|
|
@@ -42,7 +42,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
42
42
|
})]
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
})), [x?.length, S]), P =
|
|
45
|
+
})), [x?.length, S]), P = y({
|
|
46
46
|
data: Array.isArray(b) ? b : [],
|
|
47
47
|
columns: N,
|
|
48
48
|
state: {
|
|
@@ -54,10 +54,10 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
54
54
|
onSortingChange: D,
|
|
55
55
|
onExpandedChange: j,
|
|
56
56
|
onGlobalFilterChange: k,
|
|
57
|
-
getCoreRowModel:
|
|
58
|
-
getFilteredRowModel:
|
|
59
|
-
getPaginationRowModel:
|
|
60
|
-
getExpandedRowModel:
|
|
57
|
+
getCoreRowModel: h(),
|
|
58
|
+
getFilteredRowModel: _(),
|
|
59
|
+
getPaginationRowModel: v(),
|
|
60
|
+
getExpandedRowModel: g(),
|
|
61
61
|
globalFilterFn: (e, t, n) => {
|
|
62
62
|
let r = String(n).toLowerCase();
|
|
63
63
|
return Object.values(e.original).some((e) => String(e).toLowerCase().includes(r));
|
|
@@ -67,7 +67,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
67
67
|
P.setPageSize(C);
|
|
68
68
|
}, [C, P]), b.length === 0 && (!x || x.length === 0) ? /* @__PURE__ */ o("div", {
|
|
69
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",
|
|
70
|
-
children: [/* @__PURE__ */ a(
|
|
70
|
+
children: [/* @__PURE__ */ a(f, {
|
|
71
71
|
size: 32,
|
|
72
72
|
className: "mb-4 opacity-50"
|
|
73
73
|
}), /* @__PURE__ */ a("p", {
|
|
@@ -79,7 +79,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
79
79
|
children: [
|
|
80
80
|
/* @__PURE__ */ o("div", {
|
|
81
81
|
className: "relative w-full sm:w-96",
|
|
82
|
-
children: [/* @__PURE__ */ a(
|
|
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
83
|
value: O ?? "",
|
|
84
84
|
onChange: (e) => k(e.target.value),
|
|
85
85
|
placeholder: w,
|
|
@@ -96,7 +96,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
96
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",
|
|
97
97
|
children: P.getHeaderGroups().map((e) => /* @__PURE__ */ a("tr", { children: e.headers.map((e) => /* @__PURE__ */ a("th", {
|
|
98
98
|
className: "px-6 py-4 whitespace-nowrap",
|
|
99
|
-
children:
|
|
99
|
+
children: m(e.column.columnDef.header, e.getContext())
|
|
100
100
|
}, e.id)) }, e.id))
|
|
101
101
|
}), /* @__PURE__ */ a("tbody", {
|
|
102
102
|
className: "divide-y divide-slate-200 dark:divide-white/5",
|
|
@@ -104,7 +104,7 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
104
104
|
className: "hover:bg-slate-50 dark:hover:bg-white/5 transition-colors group",
|
|
105
105
|
children: t.getVisibleCells().map((e) => /* @__PURE__ */ a("td", {
|
|
106
106
|
className: "px-6 py-4 text-slate-700 dark:text-slate-300",
|
|
107
|
-
children:
|
|
107
|
+
children: m(e.column.columnDef.cell, e.getContext())
|
|
108
108
|
}, e.id))
|
|
109
109
|
}), t.getIsExpanded() && S && /* @__PURE__ */ a("tr", {
|
|
110
110
|
className: "bg-slate-50/50 dark:bg-white/[0.02]",
|
|
@@ -150,25 +150,25 @@ function b({ data: b = [], columns: x = [], expandedContent: S, pageSize: C = 5,
|
|
|
150
150
|
onClick: () => P.setPageIndex(0),
|
|
151
151
|
disabled: !P.getCanPreviousPage(),
|
|
152
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",
|
|
153
|
-
children: /* @__PURE__ */ a(
|
|
153
|
+
children: /* @__PURE__ */ a(u, { size: 16 })
|
|
154
154
|
}),
|
|
155
155
|
/* @__PURE__ */ a("button", {
|
|
156
156
|
onClick: () => P.previousPage(),
|
|
157
157
|
disabled: !P.getCanPreviousPage(),
|
|
158
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",
|
|
159
|
-
children: /* @__PURE__ */ a(
|
|
159
|
+
children: /* @__PURE__ */ a(c, { size: 16 })
|
|
160
160
|
}),
|
|
161
161
|
/* @__PURE__ */ a("button", {
|
|
162
162
|
onClick: () => P.nextPage(),
|
|
163
163
|
disabled: !P.getCanNextPage(),
|
|
164
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",
|
|
165
|
-
children: /* @__PURE__ */ a(
|
|
165
|
+
children: /* @__PURE__ */ a(l, { size: 16 })
|
|
166
166
|
}),
|
|
167
167
|
/* @__PURE__ */ a("button", {
|
|
168
168
|
onClick: () => P.setPageIndex(P.getPageCount() - 1),
|
|
169
169
|
disabled: !P.getCanNextPage(),
|
|
170
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",
|
|
171
|
-
children: /* @__PURE__ */ a(
|
|
171
|
+
children: /* @__PURE__ */ a(d, { size: 16 })
|
|
172
172
|
})
|
|
173
173
|
]
|
|
174
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-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)}.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-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