@rudra-studio/rudra-layout 1.0.14 → 1.0.16

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.
@@ -1,15 +1,63 @@
1
1
  import { default as React } from 'react';
2
2
  export interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
3
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
- }[];
4
+ /**
5
+ * The Custom Attributes Dictionary
6
+ * We use additionalProperties to tell the schema it's a dynamic key-value object
7
+ * @type|complex
8
+ * @schema {"type":"object"}
9
+ */
10
+ customAttributes?: Record<string, string>;
11
+ /** * @type|class
12
+ * @schema [{
13
+ * "key": "Direction",
14
+ * "prefix": "flex",
15
+ * "type": "select",
16
+ * "options": [
17
+ * {"key": "row", "label": "Row"},
18
+ * {"key": "col", "label": "Column"}
19
+ * ]
20
+ * },{
21
+ * "key": "Wrap Content",
22
+ * "prefix": "flex",
23
+ * "type": "select",
24
+ * "options": [
25
+ * {"key": "wrap", "label": "Wrap"},
26
+ * {"key": "nowrap", "label": "No Wrap"}
27
+ * ]
28
+ * },{
29
+ * "key": "Justify (Main Axis)",
30
+ * "prefix": "justify",
31
+ * "type": "select",
32
+ * "options": [
33
+ * {"key": "start", "label": "Start"},
34
+ * {"key": "center", "label": "Center"},
35
+ * {"key": "end", "label": "End"},
36
+ * {"key": "between", "label": "Space Between"}
37
+ * ]
38
+ * },{
39
+ * "key": "Align (Cross Axis)",
40
+ * "prefix": "items",
41
+ * "type": "select",
42
+ * "options": [
43
+ * {"key": "start", "label": "Start"},
44
+ * {"key": "center", "label": "Center"},
45
+ * {"key": "end", "label": "End"},
46
+ * {"key": "stretch", "label": "Stretch"}
47
+ * ]
48
+ * },{
49
+ * "key": "Gap",
50
+ * "prefix": "gap",
51
+ * "type": "select",
52
+ * "options": [
53
+ * {"key": "0", "label": "None (0px)"},
54
+ * {"key": "2", "label": "Small (8px)"},
55
+ * {"key": "4", "label": "Medium (16px)"},
56
+ * {"key": "6", "label": "Large (24px)"},
57
+ * {"key": "8", "label": "Extra Large (32px)"}
58
+ * ]
59
+ * }]
60
+ */
13
61
  className?: string;
14
62
  }
15
63
  export declare const Box: React.FC<BoxProps>;
@@ -1,42 +1,11 @@
1
1
  import "react";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
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
- };
4
+ var t = ({ children: t, customAttributes: n = {}, className: r = "", ...i }) => /* @__PURE__ */ e("div", {
5
+ className: `flex ${r}`.trim(),
6
+ ...n,
7
+ ...i,
8
+ children: t
9
+ });
41
10
  //#endregion
42
11
  export { t as default };
@@ -1,9 +1,23 @@
1
1
  import { default as React } from 'react';
2
- export interface RudraCarouselProps {
3
- children: React.ReactNode[];
2
+ export interface RudraCarouselProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ /** * @select|inline-arrows|bottom-controls */
4
5
  variant?: 'inline-arrows' | 'bottom-controls';
6
+ /** * @select|one|multiple|fractional */
5
7
  itemsPerView?: 'one' | 'multiple' | 'fractional';
8
+ /** * @select|none|sm|md|lg */
6
9
  gap?: 'none' | 'sm' | 'md' | 'lg';
10
+ /** * @class|[{
11
+ * "key": "Outer Margin",
12
+ * "prefix": "m",
13
+ * "type": "select",
14
+ * "options": [
15
+ * {"key": "0", "label": "None"},
16
+ * {"key": "4", "label": "Medium"},
17
+ * {"key": "8", "label": "Large"}
18
+ * ]
19
+ * }]
20
+ */
7
21
  className?: string;
8
22
  }
9
23
  declare const RudraCarousel: React.FC<RudraCarouselProps>;
@@ -2,69 +2,62 @@ import e, { useEffect as t, useRef as n, useState as r } from "react";
2
2
  import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
3
3
  import { ChevronLeft as s, ChevronRight as c } from "lucide-react";
4
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);
5
+ var l = ({ children: l, variant: u = "inline-arrows", itemsPerView: d = "one", gap: f = "md", className: p = "", ...m }) => {
6
+ let h = n(null), [g, _] = r(!0), [v, y] = r(!1), [b, x] = r(0), S = e.Children.toArray(l), C = S.length, w = {
7
+ one: "w-full",
8
+ multiple: "w-full sm:w-[calc(50%-1rem)] md:w-[calc(33.333%-1rem)] lg:w-[calc(25%-1rem)]",
9
+ fractional: "w-[85%] sm:w-[38%] md:w-[28%] lg:w-[21%]"
10
+ }, T = {
11
+ none: "gap-0",
12
+ sm: "gap-2",
13
+ md: "gap-4",
14
+ lg: "gap-8"
15
+ }, E = () => {
16
+ if (!h.current) return;
17
+ let { scrollLeft: e, scrollWidth: t, clientWidth: n } = h.current;
18
+ _(e <= 10), y(Math.ceil(e + n) >= t - 10);
24
19
  let r = t - n;
25
- if (r > 0) {
26
- let t = e / r;
27
- b(Math.round(t * (x - 1)));
28
- } else b(0);
20
+ x(r > 0 ? Math.round(e / r * (C - 1)) : 0);
29
21
  };
30
22
  t(() => {
31
- w();
23
+ E();
32
24
  }, [l, d]);
33
- let T = (e) => {
34
- if (!m.current) return;
35
- let t = m.current.clientWidth * .8;
36
- m.current.scrollBy({
25
+ let D = (e) => {
26
+ if (!h.current) return;
27
+ let t = h.current.clientWidth * .8;
28
+ h.current.scrollBy({
37
29
  left: e === "left" ? -t : t,
38
30
  behavior: "smooth"
39
31
  });
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,
32
+ }, O = (e) => {
33
+ if (!h.current) return;
34
+ let { scrollWidth: t, clientWidth: n } = h.current, r = t - n;
35
+ h.current.scrollTo({
36
+ left: r * (e / (C - 1 || 1)),
45
37
  behavior: "smooth"
46
38
  });
47
39
  };
48
- return !l || x === 0 ? null : /* @__PURE__ */ o("div", {
49
- className: `relative w-full flex flex-col group ${p}`,
40
+ return C === 0 ? null : /* @__PURE__ */ o("div", {
41
+ className: `relative w-full flex flex-col group ${p}`.trim(),
42
+ ...m,
50
43
  children: [
51
44
  /* @__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()}`,
45
+ ref: h,
46
+ onScroll: E,
47
+ className: `flex ${T[f]} overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] relative z-10 py-4`,
48
+ children: S.map((e, t) => /* @__PURE__ */ a("div", {
49
+ className: `shrink-0 snap-center sm:snap-start transition-transform ${w[d] || w.one}`,
57
50
  children: e
58
51
  }, t))
59
52
  }),
60
53
  u === "inline-arrows" && /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("button", {
61
- onClick: () => T("left"),
62
- disabled: h,
54
+ onClick: () => D("left"),
55
+ disabled: g,
63
56
  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
57
  children: /* @__PURE__ */ a(s, { size: 20 })
65
58
  }), /* @__PURE__ */ a("button", {
66
- onClick: () => T("right"),
67
- disabled: _,
59
+ onClick: () => D("right"),
60
+ disabled: v,
68
61
  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
62
  children: /* @__PURE__ */ a(c, { size: 20 })
70
63
  })] }),
@@ -72,22 +65,22 @@ var l = ({ children: l, variant: u = "inline-arrows", itemsPerView: d = "one", g
72
65
  className: "flex items-center justify-between w-full mt-4 px-2",
73
66
  children: [
74
67
  /* @__PURE__ */ a("button", {
75
- onClick: () => T("left"),
76
- disabled: h,
68
+ onClick: () => D("left"),
69
+ disabled: g,
77
70
  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
71
  children: /* @__PURE__ */ a(s, { size: 20 })
79
72
  }),
80
73
  /* @__PURE__ */ a("div", {
81
74
  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"}`,
75
+ children: Array.from({ length: C }).map((e, t) => /* @__PURE__ */ a("button", {
76
+ onClick: () => O(t),
77
+ className: `transition-all duration-300 rounded-full ${b === t ? "w-6 h-1.5 bg-blue-600" : "w-1.5 h-1.5 bg-slate-300 hover:bg-slate-400"}`,
85
78
  "aria-label": `Go to slide ${t + 1}`
86
79
  }, t))
87
80
  }),
88
81
  /* @__PURE__ */ a("button", {
89
- onClick: () => T("right"),
90
- disabled: _,
82
+ onClick: () => D("right"),
83
+ disabled: v,
91
84
  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
85
  children: /* @__PURE__ */ a(c, { size: 20 })
93
86
  })
@@ -1,12 +1,37 @@
1
1
  import { default as React } from 'react';
2
- export interface RepeaterCarouselProps {
3
- /** The data array to iterate over */
2
+ export interface RepeaterCarouselProps extends React.HTMLAttributes<HTMLDivElement> {
4
3
  items?: any[];
5
- /** The template to render for each item in the array */
6
- template?: React.ReactNode | ((payload: any) => React.ReactNode);
4
+ children?: React.ReactNode | ((context: {
5
+ item: any;
6
+ index: number;
7
+ }) => React.ReactNode);
8
+ /** * @select|inline-arrows|bottom-controls
9
+ */
7
10
  variant?: 'inline-arrows' | 'bottom-controls';
11
+ /** * @select|one|multiple|fractional
12
+ */
8
13
  itemsPerView?: 'one' | 'multiple' | 'fractional';
9
- gap?: 'none' | 'sm' | 'md' | 'lg';
14
+ /** * @type|class
15
+ * @schema [{
16
+ * "key": "Outer Margin",
17
+ * "prefix": "m",
18
+ * "type": "select",
19
+ * "options": [
20
+ * {"key": "0", "label": "None"},
21
+ * {"key": "4", "label": "Medium"}
22
+ * ]
23
+ * },{
24
+ * "key": "Gap",
25
+ * "prefix": "gap",
26
+ * "type": "select",
27
+ * "options": [
28
+ * {"key": "0", "label": "None (0px)"},
29
+ * {"key": "2", "label": "Small (8px)"},
30
+ * {"key": "4", "label": "Medium (16px)"},
31
+ * {"key": "8", "label": "Large (32px)"}
32
+ * ]
33
+ * }]
34
+ */
10
35
  className?: string;
11
36
  }
12
37
  declare const RepeaterCarousel: React.FC<RepeaterCarouselProps>;
@@ -2,30 +2,22 @@ import { useEffect as e, useRef as t, useState as n } from "react";
2
2
  import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
3
3
  import { ChevronLeft as o, ChevronRight as s } from "lucide-react";
4
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
- }
5
+ var c = ({ items: c = [], children: 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
+ one: "w-full",
8
+ multiple: "w-full sm:w-[calc(50%-1rem)] md:w-[calc(33.333%-1rem)] lg:w-[calc(25%-1rem)]",
9
+ fractional: "w-[85%] sm:w-[38%] md:w-[28%] lg:w-[21%]"
10
+ }, C = {
11
+ none: "gap-0",
12
+ sm: "gap-2",
13
+ md: "gap-4",
14
+ lg: "gap-8"
20
15
  }, w = () => {
21
16
  if (!m.current) return;
22
17
  let { scrollLeft: e, scrollWidth: t, clientWidth: n } = m.current;
23
18
  g(e <= 10), v(Math.ceil(e + n) >= t - 10);
24
19
  let r = t - n;
25
- if (r > 0) {
26
- let t = e / r;
27
- b(Math.round(t * (x - 1)));
28
- } else b(0);
20
+ b(r > 0 ? Math.round(e / r * (x - 1)) : 0);
29
21
  };
30
22
  e(() => {
31
23
  w();
@@ -39,25 +31,24 @@ var c = ({ items: c = [], template: l, variant: u = "inline-arrows", itemsPerVie
39
31
  });
40
32
  }, E = (e) => {
41
33
  if (!m.current) return;
42
- let { scrollWidth: t, clientWidth: n } = m.current, r = (t - n) * (e / (x - 1 || 1));
34
+ let { scrollWidth: t, clientWidth: n } = m.current, r = t - n;
43
35
  m.current.scrollTo({
44
- left: r,
36
+ left: r * (e / (x - 1 || 1)),
45
37
  behavior: "smooth"
46
38
  });
47
39
  };
48
40
  return x === 0 ? null : /* @__PURE__ */ a("div", {
49
- className: `relative w-full flex flex-col group ${p}`,
41
+ className: `relative w-full flex flex-col group ${p}`.trim(),
50
42
  children: [
51
43
  /* @__PURE__ */ i("div", {
52
44
  ref: m,
53
45
  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`,
46
+ className: `flex ${C[f]} overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none] relative z-10 py-4`,
55
47
  children: c.map((e, t) => /* @__PURE__ */ i("div", {
56
- className: `shrink-0 snap-center sm:snap-start transition-transform ${S()}`,
48
+ className: `shrink-0 snap-center sm:snap-start transition-transform ${S[d]}`,
57
49
  children: typeof l == "function" ? l({
58
50
  item: e,
59
- index: t,
60
- _builderIndex: t
51
+ index: t
61
52
  }) : l
62
53
  }, t))
63
54
  }),
@@ -1,7 +1,31 @@
1
1
  import { default as React } from 'react';
2
2
  export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
3
- columns?: '1' | '2' | '3' | '4' | 'auto-fit';
4
- gap?: 'sm' | 'md' | 'lg' | 'xl';
5
3
  children?: React.ReactNode;
4
+ /** @type|class
5
+ * @schema [{
6
+ * "key": "Columns",
7
+ * "prefix": "grid-cols",
8
+ * "type": "select",
9
+ * "options": [
10
+ * {"key": "1", "label": "1 Column"},
11
+ * {"key": "2", "label": "2 Columns"},
12
+ * {"key": "3", "label": "3 Columns"},
13
+ * {"key": "4", "label": "4 Columns"},
14
+ * {"key": "[repeat(auto-fit,minmax(250px,1fr))]", "label": "Auto-Fit (Cards)"}
15
+ * ]
16
+ * },{
17
+ * "key": "Gap",
18
+ * "prefix": "gap",
19
+ * "type": "select",
20
+ * "options": [
21
+ * {"key": "0", "label": "None (0px)"},
22
+ * {"key": "4", "label": "Small (16px)"},
23
+ * {"key": "6", "label": "Medium (24px)"},
24
+ * {"key": "8", "label": "Large (32px)"},
25
+ * {"key": "12", "label": "Extra Large (48px)"}
26
+ * ]
27
+ * }]
28
+ */
29
+ className?: string;
6
30
  }
7
- export default function Grid({ columns, gap, className, children, ...props }: GridProps): import("react/jsx-runtime").JSX.Element;
31
+ export default function Grid({ className, children, ...props }: GridProps): import("react/jsx-runtime").JSX.Element;
@@ -1,22 +1,11 @@
1
1
  import "react";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
3
  //#region src/components/Grid/index.tsx
4
- function t({ columns: t = "3", gap: n = "md", className: r = "", children: i, ...a }) {
4
+ function t({ className: t = "", children: n, ...r }) {
5
5
  return /* @__PURE__ */ e("div", {
6
- className: `grid w-full ${{
7
- 1: "grid-cols-1",
8
- 2: "grid-cols-1 md:grid-cols-2",
9
- 3: "grid-cols-1 md:grid-cols-3",
10
- 4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
11
- "auto-fit": "grid-cols-[repeat(auto-fit,minmax(250px,1fr))]"
12
- }[t]} ${{
13
- sm: "gap-4",
14
- md: "gap-6",
15
- lg: "gap-8",
16
- xl: "gap-12"
17
- }[n]} ${r}`,
18
- ...a,
19
- children: i
6
+ className: `grid w-full ${t}`.trim(),
7
+ ...r,
8
+ children: n
20
9
  });
21
10
  }
22
11
  //#endregion
@@ -1,12 +1,45 @@
1
1
  import { default as React } from 'react';
2
2
  export interface RepeaterProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  items?: any[];
4
- layout?: 'grid' | 'stack';
5
- columns?: number;
6
- gap?: 'sm' | 'md' | 'lg';
7
4
  children?: React.ReactNode | ((context: {
8
5
  item: any;
9
6
  index: number;
10
7
  }) => React.ReactNode);
8
+ /** * @type|class
9
+ * @schema [{
10
+ * "key": "Layout",
11
+ * "prefix": "",
12
+ * "type": "select",
13
+ * "options": [
14
+ * {"key": "grid", "label": "Grid"},
15
+ * {"key": "flex flex-col", "label": "Stack (Vertical)"}
16
+ * ]
17
+ * },{
18
+ * "key": "Columns (Grid Only)",
19
+ * "prefix": "grid-cols",
20
+ * "type": "select",
21
+ * "options": [
22
+ * {"key": "1", "label": "1 Column"},
23
+ * {"key": "2", "label": "2 Columns"},
24
+ * {"key": "3", "label": "3 Columns"},
25
+ * {"key": "4", "label": "4 Columns"},
26
+ * {"key": "5", "label": "5 Columns"},
27
+ * {"key": "6", "label": "6 Columns"},
28
+ * {"key": "[repeat(auto-fit,minmax(250px,1fr))]", "label": "Auto-Fit Cards"}
29
+ * ]
30
+ * },{
31
+ * "key": "Gap",
32
+ * "prefix": "gap",
33
+ * "type": "select",
34
+ * "options": [
35
+ * {"key": "0", "label": "None (0px)"},
36
+ * {"key": "4", "label": "Small (16px)"},
37
+ * {"key": "6", "label": "Medium (24px)"},
38
+ * {"key": "8", "label": "Large (32px)"},
39
+ * {"key": "12", "label": "Extra Large (48px)"}
40
+ * ]
41
+ * }]
42
+ */
43
+ className?: string;
11
44
  }
12
- export default function Repeater({ items, layout, columns, gap, className, children, ...props }: RepeaterProps): import("react/jsx-runtime").JSX.Element;
45
+ export default function Repeater({ items, className, children, ...props }: RepeaterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,36 +1,27 @@
1
1
  import e from "react";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  //#region src/components/Repeater/index.tsx
4
- function r({ items: r = [], layout: i = "grid", columns: a = "4", gap: o = "md", className: s = "", children: c, ...l }) {
5
- let u = Array.isArray(r) ? r : [], d = {
6
- sm: "gap-4",
7
- md: "gap-6",
8
- lg: "gap-8"
9
- }, f = i === "grid" ? `grid ${{
10
- 1: "grid-cols-1",
11
- 2: "grid-cols-1 sm:grid-cols-2",
12
- 3: "grid-cols-1 md:grid-cols-3",
13
- 4: "grid-cols-1 md:grid-cols-2 xl:grid-cols-4"
14
- }[a]} ${d[o]}` : `flex flex-col w-full ${d[o]}`;
15
- return u.length === 0 ? /* @__PURE__ */ n("div", {
16
- className: `w-full p-8 border-2 border-dashed border-purple-200 bg-purple-50 rounded-lg flex flex-col items-center justify-center text-purple-600 ${s}`,
4
+ function r({ items: r = [], className: i = "", children: a, ...o }) {
5
+ let s = Array.isArray(r) ? r : [];
6
+ return s.length === 0 ? /* @__PURE__ */ n("div", {
7
+ className: "w-full p-8 border-2 border-dashed border-purple-200 bg-purple-50 rounded-lg flex flex-col items-center justify-center text-purple-600",
17
8
  children: [/* @__PURE__ */ t("span", {
18
9
  className: "text-sm font-medium mb-2 opacity-70",
19
10
  children: "Repeater (No Data Bound)"
20
11
  }), /* @__PURE__ */ t("div", {
21
- className: "mt-4 w-full p-4 border border-dashed border-purple-300 rounded bg-white",
22
- children: typeof c == "function" ? c({
12
+ className: `mt-4 w-full p-4 border border-dashed border-purple-300 rounded bg-white ${i}`,
13
+ children: typeof a == "function" ? a({
23
14
  item: null,
24
15
  index: 0
25
- }) : c
16
+ }) : a
26
17
  })]
27
18
  }) : /* @__PURE__ */ t("div", {
28
- className: `${f} ${s}`,
29
- ...l,
30
- children: u.map((n, r) => /* @__PURE__ */ t(e.Fragment, { children: typeof c == "function" ? c({
19
+ className: `w-full ${i}`.trim(),
20
+ ...o,
21
+ children: s.map((n, r) => /* @__PURE__ */ t(e.Fragment, { children: typeof a == "function" ? a({
31
22
  item: n,
32
23
  index: r
33
- }) : c }, n?.id || r))
24
+ }) : a }, n?.id || r))
34
25
  });
35
26
  }
36
27
  //#endregion
@@ -1,10 +1,57 @@
1
1
  import { default as React } from 'react';
2
2
  export interface StackProps extends React.HTMLAttributes<HTMLDivElement> {
3
- direction?: 'row' | 'col';
4
- align?: 'start' | 'center' | 'end' | 'stretch';
5
- justify?: 'start' | 'center' | 'end' | 'between' | 'around';
6
- gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
7
- wrap?: boolean;
8
3
  children?: React.ReactNode;
4
+ /** *@type|class
5
+ * @schema [{
6
+ * "key": "Direction",
7
+ * "prefix": "flex",
8
+ * "type": "select",
9
+ * "options": [
10
+ * {"key": "row", "label": "Row"},
11
+ * {"key": "col", "label": "Column"}
12
+ * ]
13
+ * },{
14
+ * "key": "Align Items (Cross Axis)",
15
+ * "prefix": "items",
16
+ * "type": "select",
17
+ * "options": [
18
+ * {"key": "start", "label": "Start"},
19
+ * {"key": "center", "label": "Center"},
20
+ * {"key": "end", "label": "End"},
21
+ * {"key": "stretch", "label": "Stretch"}
22
+ * ]
23
+ * },{
24
+ * "key": "Justify Content (Main Axis)",
25
+ * "prefix": "justify",
26
+ * "type": "select",
27
+ * "options": [
28
+ * {"key": "start", "label": "Start"},
29
+ * {"key": "center", "label": "Center"},
30
+ * {"key": "end", "label": "End"},
31
+ * {"key": "between", "label": "Space Between"},
32
+ * {"key": "around", "label": "Space Around"}
33
+ * ]
34
+ * },{
35
+ * "key": "Gap",
36
+ * "prefix": "gap",
37
+ * "type": "select",
38
+ * "options": [
39
+ * {"key": "0", "label": "None (0px)"},
40
+ * {"key": "2", "label": "Small (8px)"},
41
+ * {"key": "4", "label": "Medium (16px)"},
42
+ * {"key": "8", "label": "Large (32px)"},
43
+ * {"key": "12", "label": "Extra Large (48px)"}
44
+ * ]
45
+ * },{
46
+ * "key": "Wrap Content",
47
+ * "prefix": "flex",
48
+ * "type": "select",
49
+ * "options": [
50
+ * {"key": "wrap", "label": "Wrap"},
51
+ * {"key": "nowrap", "label": "No Wrap"}
52
+ * ]
53
+ * }]
54
+ */
55
+ className?: string;
9
56
  }
10
- export default function Stack({ direction, align, justify, gap, wrap, className, children, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
57
+ export default function Stack({ className, children, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
@@ -1,28 +1,11 @@
1
1
  import "react";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
3
  //#region src/components/Stack/index.tsx
4
- function t({ direction: t = "col", align: n = "stretch", justify: r = "start", gap: i = "md", wrap: a = !1, className: o = "", children: s, ...c }) {
4
+ function t({ className: t = "", children: n, ...r }) {
5
5
  return /* @__PURE__ */ e("div", {
6
- className: `flex w-full ${t === "row" ? "flex-row" : "flex-col"} ${a ? "flex-wrap" : "flex-nowrap"} ${{
7
- start: "items-start",
8
- center: "items-center",
9
- end: "items-end",
10
- stretch: "items-stretch"
11
- }[n]} ${{
12
- start: "justify-start",
13
- center: "justify-center",
14
- end: "justify-end",
15
- between: "justify-between",
16
- around: "justify-around"
17
- }[r]} ${{
18
- none: "gap-0",
19
- sm: "gap-2",
20
- md: "gap-4",
21
- lg: "gap-8",
22
- xl: "gap-12"
23
- }[i]} ${o}`,
24
- ...c,
25
- children: s
6
+ className: `flex w-full ${t}`.trim(),
7
+ ...r,
8
+ children: n
26
9
  });
27
10
  }
28
11
  //#endregion
@@ -8,8 +8,21 @@ export interface ComplexGridProps extends React.HTMLAttributes<HTMLDivElement> {
8
8
  templateColumns?: string;
9
9
  templateRows?: string;
10
10
  templateAreas?: string;
11
- gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
12
11
  minHeight?: string;
12
+ /** * @type|class
13
+ * @schema [{
14
+ * "key": "Gap",
15
+ * "prefix": "gap",
16
+ * "type": "select",
17
+ * "options": [
18
+ * {"key": "0", "label": "None (0px)"},
19
+ * {"key": "4", "label": "Small (16px)"},
20
+ * {"key": "6", "label": "Medium (24px)"},
21
+ * {"key": "8", "label": "Large (32px)"},
22
+ * {"key": "12", "label": "Extra Large (48px)"}
23
+ * ]
24
+ * }]
25
+ */
13
26
  className?: string;
14
27
  }
15
28
  export declare const ComplexGrid: React.FC<ComplexGridProps>;
@@ -1,31 +1,25 @@
1
1
  import { useMemo as e } from "react";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
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(() => {
4
+ var r = ({ gridData: r = [], templateColumns: i = "1fr 1fr", templateRows: a = "auto auto", templateAreas: o = "\"area1 area2\" \"area3 area4\"", minHeight: s = "300px", className: c = "", ...l }) => {
5
+ let u = e(() => {
12
6
  if (!o) return [];
13
7
  let e = o.replace(/"|'/g, "").split(/\s+/).filter((e) => e.trim() !== "" && e.trim() !== ".");
14
8
  return Array.from(new Set(e));
15
- }, [o]), p = (e) => r?.find((t) => t && t.name === e)?.node || null, m = {
9
+ }, [o]), d = (e) => r?.find((t) => t && t.name === e)?.node || null, f = {
16
10
  display: "grid",
17
11
  gridTemplateColumns: i,
18
12
  gridTemplateRows: a,
19
13
  gridTemplateAreas: o,
20
- minHeight: c,
21
- ...u.style
14
+ minHeight: s,
15
+ ...l.style
22
16
  };
23
17
  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;
18
+ className: `w-full grid ${c}`.trim(),
19
+ style: f,
20
+ ...l,
21
+ children: u.map((e) => {
22
+ let r = d(e), i = !r;
29
23
  return /* @__PURE__ */ n("div", {
30
24
  style: { gridArea: e },
31
25
  className: `
package/index.js CHANGED
@@ -10,4 +10,4 @@ import s from "./components/StructuredGrid/index.js";
10
10
  import c from "./components/Table/index.js";
11
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 };
12
12
 
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){}
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: }.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-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.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\\: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-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=1024px){.lg\\:w-\\[21\\%\\]{width:21%}.lg\\:w-\\[calc\\(25\\%-1rem\\)\\]{width:calc(25% - 1rem)}}@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
@@ -2,7 +2,7 @@
2
2
  "dependencies": {
3
3
  "@react-three/fiber": "9.6.1",
4
4
  "@tanstack/react-table": "8",
5
- "gsap": "3.12.2",
5
+ "gsap": "3.12.5",
6
6
  "lucide-react": "^1.8.0",
7
7
  "motion": "12.0.0",
8
8
  "tailwindcss": "3.4.4",
@@ -42,5 +42,5 @@
42
42
  },
43
43
  "types": "./index.d.ts",
44
44
  "unpkg": "./index.umd.js",
45
- "version": "1.0.14"
45
+ "version": "1.0.16"
46
46
  }