@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.
@@ -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|json
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
- headers?: {
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, headers, cellTemplates, expandedContent, pageSize, globalFilterPlaceholder, className, }: RepeaterTableProps): import("react/jsx-runtime").JSX.Element;
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 { flexRender as s, getCoreRowModel as c, getExpandedRowModel as l, getFilteredRowModel as u, getPaginationRowModel as d, useReactTable as f } from "@tanstack/react-table";
4
- import { ChevronDown as p, ChevronLeft as m, ChevronRight as h, ChevronsLeft as g, ChevronsRight as _, LayoutTemplate as v, Search as y } from "lucide-react";
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 = [], headers: x = [], cellTemplates: S = [], expandedContent: C, pageSize: w = 5, globalFilterPlaceholder: T = "Search anywhere...", className: E = "" }) {
7
- let [D, O] = i([]), [k, A] = i(""), [j, M] = i({}), N = r(x), P = r(S);
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
- N.current = x;
10
- }, [x]), t(() => {
11
- P.current = S;
12
- }, [S]);
13
- let F = n(() => {
14
- let e = Math.max(N.current.length, P.current.length);
15
- return Array.from({ length: e }).map((e, t) => {
16
- let n = N.current[t] || {
17
- label: `Column ${t + 1}`,
18
- accessor: `col_${t}`
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
- id: `col_${t}`,
22
- accessorFn: (e) => e[n.accessor] ?? e,
23
- header: () => /* @__PURE__ */ a("div", {
24
- className: "font-semibold text-slate-700 dark:text-slate-200 uppercase text-xs",
25
- children: n.label
26
- }),
27
- cell: ({ row: e }) => {
28
- let r = P.current[t], i = t === 0, s = {
29
- item: e.original,
30
- index: e.index,
31
- isExpanded: e.getIsExpanded(),
32
- toggleExpanded: e.getToggleExpandedHandler()
33
- };
34
- return /* @__PURE__ */ o("div", {
35
- className: "flex items-center gap-3",
36
- children: [i && C && /* @__PURE__ */ a("button", {
37
- onClick: e.getToggleExpandedHandler(),
38
- className: "p-1 hover:bg-slate-200 dark:hover:bg-white/10 rounded text-slate-500 transition-colors shrink-0",
39
- children: e.getIsExpanded() ? /* @__PURE__ */ a(p, { size: 16 }) : /* @__PURE__ */ a(h, { size: 16 })
40
- }), /* @__PURE__ */ a("div", {
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: F,
47
+ columns: N,
63
48
  state: {
64
- sorting: D,
65
- globalFilter: k,
66
- expanded: j
49
+ sorting: E,
50
+ globalFilter: O,
51
+ expanded: A
67
52
  },
68
- initialState: { pagination: { pageSize: w } },
69
- onSortingChange: O,
70
- onExpandedChange: M,
71
- onGlobalFilterChange: A,
72
- getCoreRowModel: c(),
73
- getFilteredRowModel: u(),
74
- getPaginationRowModel: d(),
75
- getExpandedRowModel: l(),
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
- I.setPageSize(w);
83
- }, [w, I]), b.length === 0 && x.length === 0 && S.length === 0 ? /* @__PURE__ */ o("div", {
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
- /* @__PURE__ */ a(v, {
87
- size: 32,
88
- className: "mb-4 opacity-50"
89
- }),
90
- /* @__PURE__ */ a("p", {
91
- className: "text-sm font-medium text-slate-600 dark:text-slate-400",
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 ${E}`,
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(y, { 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", {
105
- value: k ?? "",
106
- onChange: (e) => A(e.target.value),
107
- placeholder: T,
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 focus:outline-none focus:border-blue-500 transition-colors shadow-sm dark:shadow-none"
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 shadow-sm dark:shadow-none",
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: I.getHeaderGroups().map((e) => /* @__PURE__ */ a("tr", { children: e.headers.map((e) => /* @__PURE__ */ a("th", {
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: s(e.column.columnDef.header, e.getContext())
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: I.getRowModel().rows.map((t) => /* @__PURE__ */ o(e.Fragment, { children: [/* @__PURE__ */ a("tr", {
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: s(e.column.columnDef.cell, e.getContext())
107
+ children: m(e.column.columnDef.cell, e.getContext())
130
108
  }, e.id))
131
- }), t.getIsExpanded() && C && /* @__PURE__ */ a("tr", {
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: F.length,
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 C == "function" ? C({
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
- }) : C
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: I.getState().pagination.pageIndex + 1
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: I.getPageCount() || 1
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: () => I.setPageIndex(0),
173
- disabled: !I.getCanPreviousPage(),
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(g, { size: 16 })
153
+ children: /* @__PURE__ */ a(u, { size: 16 })
176
154
  }),
177
155
  /* @__PURE__ */ a("button", {
178
- onClick: () => I.previousPage(),
179
- disabled: !I.getCanPreviousPage(),
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(m, { size: 16 })
159
+ children: /* @__PURE__ */ a(c, { size: 16 })
182
160
  }),
183
161
  /* @__PURE__ */ a("button", {
184
- onClick: () => I.nextPage(),
185
- disabled: !I.getCanNextPage(),
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(h, { size: 16 })
165
+ children: /* @__PURE__ */ a(l, { size: 16 })
188
166
  }),
189
167
  /* @__PURE__ */ a("button", {
190
- onClick: () => I.setPageIndex(I.getPageCount() - 1),
191
- disabled: !I.getCanNextPage(),
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(_, { size: 16 })
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 { flexRender as o, getCoreRowModel as s, getFilteredRowModel as c, getPaginationRowModel as l, getSortedRowModel as u, useReactTable as d } from "@tanstack/react-table";
4
- import { ChevronDown as f, ChevronLeft as p, ChevronRight as m, ChevronUp as h, ChevronsLeft as g, ChevronsRight as _, ChevronsUpDown as v, Loader2 as y, Search as b, SlidersHorizontal as x } from "lucide-react";
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 = d({
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: s(),
29
- getFilteredRowModel: c(),
30
- getSortedRowModel: u(),
31
- getPaginationRowModel: T === "pagination" ? l() : void 0
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(b, { 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", {
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(x, { size: 14 }), /* @__PURE__ */ i("span", { children: "Filters" })]
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: [o(e.column.columnDef.header, e.getContext()), {
70
- asc: /* @__PURE__ */ i(h, {
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(f, {
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(v, {
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: o(e.column.columnDef.cell, e.getContext())
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(y, {
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(g, { size: 16 })
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(p, { size: 16 })
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(m, { size: 16 })
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(_, { size: 16 })
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/Grid/index.js";
3
- import t from "./components/Repeater/index.js";
4
- import n from "./components/RepeaterTable/index.js";
5
- import r from "./components/Stack/index.js";
6
- import i from "./components/Table/index.js";
7
- export { i as DataTable, e as Grid, t as Repeater, n as RepeaterTable, r as Stack };
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
@@ -42,5 +42,5 @@
42
42
  },
43
43
  "types": "./index.d.ts",
44
44
  "unpkg": "./index.umd.js",
45
- "version": "1.0.12"
45
+ "version": "1.0.14"
46
46
  }