@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.
@@ -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 { 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
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, s = {
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(p, { size: 16 }) : /* @__PURE__ */ a(h, { size: 16 })
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(s) : r || /* @__PURE__ */ o("div", {
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(v, { size: 12 }),
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 = f({
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: c(),
58
- getFilteredRowModel: u(),
59
- getPaginationRowModel: d(),
60
- getExpandedRowModel: l(),
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(v, {
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(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", {
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: s(e.column.columnDef.header, e.getContext())
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: s(e.column.columnDef.cell, e.getContext())
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(g, { size: 16 })
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(m, { size: 16 })
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(h, { size: 16 })
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(_, { size: 16 })
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 { 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-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
@@ -42,5 +42,5 @@
42
42
  },
43
43
  "types": "./index.d.ts",
44
44
  "unpkg": "./index.umd.js",
45
- "version": "1.0.13"
45
+ "version": "1.0.14"
46
46
  }