@la-batcave/ui 3.5.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Sidebar.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { jsxs as f, jsx as r, Fragment as S } from "react/jsx-runtime";
2
+ import { jsxs as u, jsx as e, Fragment as k } from "react/jsx-runtime";
3
3
  import * as m from "react";
4
- import { S as k, a as N } from "./_shared/index-BrLJJgkl.js";
5
- import { X as y, Menu as C } from "lucide-react";
4
+ import { S as y, a as N } from "./_shared/index-BrLJJgkl.js";
5
+ import { X as S, Menu as C } from "lucide-react";
6
6
  import { c as i } from "./_shared/utils-eGXXUFl7.js";
7
7
  const v = m.createContext({
8
8
  open: !1,
@@ -13,13 +13,13 @@ function x() {
13
13
  return m.useContext(v);
14
14
  }
15
15
  function P({
16
- navbarHeight: e = 56,
16
+ navbarHeight: r = 56,
17
17
  className: n,
18
18
  children: a,
19
19
  ...o
20
20
  }) {
21
21
  const [s, c] = m.useState(!1);
22
- return /* @__PURE__ */ r(v.Provider, { value: { open: s, setOpen: c }, children: /* @__PURE__ */ r(
22
+ return /* @__PURE__ */ e(v.Provider, { value: { open: s, setOpen: c }, children: /* @__PURE__ */ e(
23
23
  "div",
24
24
  {
25
25
  className: i("relative flex min-h-screen", n),
@@ -28,35 +28,35 @@ function P({
28
28
  }
29
29
  ) });
30
30
  }
31
- function R({ className: e, ...n }) {
31
+ function R({ className: r, ...n }) {
32
32
  const { open: a, setOpen: o } = x();
33
- return /* @__PURE__ */ r(
33
+ return /* @__PURE__ */ e(
34
34
  "button",
35
35
  {
36
36
  type: "button",
37
37
  className: i(
38
- "inline-flex items-center justify-center w-8 h-8 rounded-md",
38
+ "inline-flex items-center justify-center w-8 h-8 rounded-2xl",
39
39
  "text-muted-foreground hover:text-foreground hover:bg-muted",
40
40
  "transition-colors cursor-pointer md:hidden",
41
- e
41
+ r
42
42
  ),
43
43
  onClick: () => o((s) => !s),
44
44
  ...n,
45
- children: a ? /* @__PURE__ */ r(y, { size: 18 }) : /* @__PURE__ */ r(C, { size: 18 })
45
+ children: a ? /* @__PURE__ */ e(S, { size: 18 }) : /* @__PURE__ */ e(C, { size: 18 })
46
46
  }
47
47
  );
48
48
  }
49
- function w({ navbarHeight: e = 56, className: n, children: a, ...o }) {
49
+ function w({ navbarHeight: r = 56, className: n, children: a, ...o }) {
50
50
  const { open: s, setOpen: c } = x();
51
- return /* @__PURE__ */ f(S, { children: [
52
- s && /* @__PURE__ */ r(
51
+ return /* @__PURE__ */ u(k, { children: [
52
+ s && /* @__PURE__ */ e(
53
53
  "div",
54
54
  {
55
- className: "fixed inset-0 z-30 bg-black/50 md:hidden",
55
+ className: "fixed inset-0 z-30 bg-black/30 md:hidden",
56
56
  onClick: () => c(!1)
57
57
  }
58
58
  ),
59
- /* @__PURE__ */ r(
59
+ /* @__PURE__ */ e(
60
60
  "div",
61
61
  {
62
62
  className: i(
@@ -65,10 +65,10 @@ function w({ navbarHeight: e = 56, className: n, children: a, ...o }) {
65
65
  s ? "translate-x-0" : "-translate-x-full"
66
66
  ),
67
67
  style: {
68
- top: e,
69
- height: `calc(100vh - ${e}px)`
68
+ top: r,
69
+ height: `calc(100vh - ${r}px)`
70
70
  },
71
- children: /* @__PURE__ */ r(
71
+ children: /* @__PURE__ */ e(
72
72
  "aside",
73
73
  {
74
74
  className: i(
@@ -83,108 +83,108 @@ function w({ navbarHeight: e = 56, className: n, children: a, ...o }) {
83
83
  )
84
84
  ] });
85
85
  }
86
- function X({ navbarHeight: e = 56, className: n, children: a, ...o }) {
87
- return /* @__PURE__ */ r(
86
+ function X({ navbarHeight: r = 56, className: n, children: a, ...o }) {
87
+ return /* @__PURE__ */ e(
88
88
  "main",
89
89
  {
90
90
  className: i("flex-1 min-w-0", n),
91
- style: { paddingTop: e },
91
+ style: { paddingTop: r },
92
92
  ...o,
93
93
  children: a
94
94
  }
95
95
  );
96
96
  }
97
- function z({ className: e, ...n }) {
98
- return /* @__PURE__ */ r(
97
+ function z({ className: r, ...n }) {
98
+ return /* @__PURE__ */ e(
99
99
  "div",
100
100
  {
101
- className: i("px-3 py-3 shrink-0", e),
101
+ className: i("px-3 py-3 shrink-0", r),
102
102
  ...n
103
103
  }
104
104
  );
105
105
  }
106
- function O({ className: e, ...n }) {
107
- return /* @__PURE__ */ r(
106
+ function j({ className: r, ...n }) {
107
+ return /* @__PURE__ */ e(
108
108
  "div",
109
109
  {
110
- className: i("flex-1 overflow-y-auto py-1 px-2 flex flex-col gap-2", e),
110
+ className: i("flex-1 overflow-y-auto py-1 px-2 flex flex-col gap-2", r),
111
111
  ...n
112
112
  }
113
113
  );
114
114
  }
115
- function j({ className: e, ...n }) {
116
- return /* @__PURE__ */ r(
115
+ function O({ className: r, ...n }) {
116
+ return /* @__PURE__ */ e(
117
117
  "div",
118
118
  {
119
- className: i("px-2 py-2 shrink-0 border-t border-border", e),
119
+ className: i("px-2 py-2 shrink-0 border-t border-border", r),
120
120
  ...n
121
121
  }
122
122
  );
123
123
  }
124
- function E({ label: e, className: n, children: a, ...o }) {
125
- return /* @__PURE__ */ f("div", { className: i("flex flex-col gap-0.5", n), ...o, children: [
126
- e && /* @__PURE__ */ r("span", { className: "px-3 py-1.5 text-[0.6875rem] font-semibold uppercase tracking-wider text-muted-foreground", children: e }),
124
+ function E({ label: r, className: n, children: a, ...o }) {
125
+ return /* @__PURE__ */ u("div", { className: i("flex flex-col gap-0.5", n), ...o, children: [
126
+ r && /* @__PURE__ */ e("span", { className: "px-3 py-1.5 text-[0.6875rem] font-semibold uppercase tracking-wider text-muted-foreground", children: r }),
127
127
  a
128
128
  ] });
129
129
  }
130
- function $({ className: e, ...n }) {
131
- return /* @__PURE__ */ r(
130
+ function I({ className: r, ...n }) {
131
+ return /* @__PURE__ */ e(
132
132
  "div",
133
133
  {
134
- className: i("mx-2 my-2 h-px bg-border", e),
134
+ className: i("mx-2 my-2 h-px bg-border", r),
135
135
  ...n
136
136
  }
137
137
  );
138
138
  }
139
139
  function b({
140
- icon: e,
140
+ icon: r,
141
141
  active: n,
142
142
  badge: a,
143
143
  asChild: o,
144
144
  className: s,
145
145
  children: c,
146
- ...d
146
+ ...l
147
147
  }) {
148
- const p = o ? k : "button", { setOpen: u } = x(), h = (t) => {
149
- u(!1), d.onClick && d.onClick(t);
148
+ const p = o ? y : "button", { setOpen: f } = x(), h = (t) => {
149
+ f(!1), l.onClick && l.onClick(t);
150
150
  };
151
- return /* @__PURE__ */ f(
151
+ return /* @__PURE__ */ u(
152
152
  p,
153
153
  {
154
154
  "data-active": n || void 0,
155
155
  className: i(
156
- "flex items-center gap-2.5 w-full px-3 py-2 text-[0.8125rem] font-medium rounded-md transition-all duration-150 cursor-pointer",
156
+ "flex items-center gap-2.5 w-full px-3 py-2 text-[0.8125rem] font-medium rounded-2xl transition-all duration-150 cursor-pointer",
157
157
  "border-none bg-transparent text-left",
158
158
  n ? "bg-primary/15 text-primary" : "text-muted-foreground hover:bg-muted hover:text-foreground",
159
159
  s
160
160
  ),
161
- ...d,
161
+ ...l,
162
162
  onClick: h,
163
163
  children: [
164
- e && /* @__PURE__ */ r(e, { size: 16, className: "shrink-0" }),
165
- o ? /* @__PURE__ */ r(N, { children: c }) : /* @__PURE__ */ r("span", { className: "flex-1 truncate", children: c }),
166
- a && /* @__PURE__ */ r("span", { className: "shrink-0", children: a })
164
+ r && /* @__PURE__ */ e(r, { size: 16, className: "shrink-0" }),
165
+ o ? /* @__PURE__ */ e(N, { children: c }) : /* @__PURE__ */ e("span", { className: "flex-1 truncate", children: c }),
166
+ a && /* @__PURE__ */ e("span", { className: "shrink-0", children: a })
167
167
  ]
168
168
  }
169
169
  );
170
170
  }
171
- function F(e) {
172
- return typeof e == "object" && "items" in e;
171
+ function $(r) {
172
+ return typeof r == "object" && "items" in r;
173
173
  }
174
- function G(e) {
175
- return e === "separator";
174
+ function F(r) {
175
+ return r === "separator";
176
176
  }
177
177
  function q({
178
- items: e,
178
+ items: r,
179
179
  header: n,
180
180
  footer: a,
181
181
  renderLink: o,
182
182
  onNavigate: s,
183
183
  navbarHeight: c = 56,
184
- className: d,
184
+ className: l,
185
185
  ...p
186
186
  }) {
187
- const u = (t) => o ? /* @__PURE__ */ r(
187
+ const f = (t) => o ? /* @__PURE__ */ e(
188
188
  b,
189
189
  {
190
190
  icon: t.icon,
@@ -194,17 +194,17 @@ function q({
194
194
  children: o(t)
195
195
  },
196
196
  t.key
197
- ) : t.href ? /* @__PURE__ */ r(
197
+ ) : t.href ? /* @__PURE__ */ e(
198
198
  b,
199
199
  {
200
200
  icon: t.icon,
201
201
  active: t.active,
202
202
  badge: t.badge,
203
203
  asChild: !0,
204
- children: /* @__PURE__ */ r("a", { href: t.href, children: t.label })
204
+ children: /* @__PURE__ */ e("a", { href: t.href, children: t.label })
205
205
  },
206
206
  t.key
207
- ) : /* @__PURE__ */ r(
207
+ ) : /* @__PURE__ */ e(
208
208
  b,
209
209
  {
210
210
  icon: t.icon,
@@ -215,23 +215,61 @@ function q({
215
215
  },
216
216
  t.key
217
217
  );
218
- return /* @__PURE__ */ f(w, { navbarHeight: c, className: d, ...p, children: [
219
- n && /* @__PURE__ */ r(z, { children: n }),
220
- /* @__PURE__ */ r(O, { children: ((t) => t.map((l, g) => G(l) ? /* @__PURE__ */ r($, {}, `sep-${g}`) : F(l) ? /* @__PURE__ */ r(E, { label: l.label, children: l.items.map(u) }, l.label || `group-${g}`) : u(l)))(e) }),
221
- a && /* @__PURE__ */ r(j, { children: a })
218
+ return /* @__PURE__ */ u(w, { navbarHeight: c, className: l, ...p, children: [
219
+ n && /* @__PURE__ */ e(z, { children: n }),
220
+ /* @__PURE__ */ e(j, { children: ((t) => t.map((d, g) => F(d) ? /* @__PURE__ */ e(I, {}, `sep-${g}`) : $(d) ? /* @__PURE__ */ e(E, { label: d.label, children: d.items.map(f) }, d.label || `group-${g}`) : f(d)))(r) }),
221
+ a && /* @__PURE__ */ e(O, { children: a })
222
222
  ] });
223
223
  }
224
+ function A({
225
+ items: r,
226
+ onNavigate: n,
227
+ header: a,
228
+ footer: o,
229
+ className: s,
230
+ ...c
231
+ }) {
232
+ return /* @__PURE__ */ u(
233
+ "aside",
234
+ {
235
+ className: i(
236
+ "w-12 shrink-0 bg-card border-r border-border flex flex-col items-center py-3 gap-1",
237
+ s
238
+ ),
239
+ ...c,
240
+ children: [
241
+ a && /* @__PURE__ */ e("div", { className: "mb-2", children: a }),
242
+ /* @__PURE__ */ e("nav", { className: "flex flex-col items-center gap-1 flex-1", children: r.map((l) => /* @__PURE__ */ e(
243
+ "button",
244
+ {
245
+ type: "button",
246
+ title: l.label,
247
+ onClick: () => n?.(l.key),
248
+ className: i(
249
+ "h-8 w-8 flex items-center justify-center rounded-xl border-none cursor-pointer transition-colors",
250
+ l.active ? "bg-primary/15 text-primary" : "bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground"
251
+ ),
252
+ children: /* @__PURE__ */ e(l.icon, { size: 16 })
253
+ },
254
+ l.key
255
+ )) }),
256
+ o && /* @__PURE__ */ e("div", { className: "mt-2", children: o })
257
+ ]
258
+ }
259
+ );
260
+ }
224
261
  export {
225
262
  q as EasySidebar,
263
+ A as IconSidebar,
226
264
  w as Sidebar,
227
- O as SidebarContent,
228
- j as SidebarFooter,
265
+ j as SidebarContent,
266
+ O as SidebarFooter,
229
267
  E as SidebarGroup,
230
268
  z as SidebarHeader,
231
269
  X as SidebarInset,
232
270
  b as SidebarItem,
233
271
  P as SidebarLayout,
234
- $ as SidebarSeparator,
272
+ I as SidebarSeparator,
235
273
  R as SidebarTrigger,
236
274
  x as useSidebar
237
275
  };
package/dist/Skeleton.js CHANGED
@@ -4,29 +4,29 @@ function m({ className: e, ...r }) {
4
4
  return /* @__PURE__ */ t(
5
5
  "div",
6
6
  {
7
- className: n("animate-pulse rounded-md bg-muted", e),
7
+ className: n("animate-pulse rounded-xl bg-muted", e),
8
8
  ...r
9
9
  }
10
10
  );
11
11
  }
12
- function s({
12
+ function d({
13
13
  lines: e = 3,
14
14
  gap: r,
15
- className: a,
15
+ className: l,
16
16
  ...o
17
17
  }) {
18
- return /* @__PURE__ */ t("div", { className: n("flex flex-col", r || "gap-2", a), ...o, children: Array.from({ length: e }, (u, l) => /* @__PURE__ */ t(
18
+ return /* @__PURE__ */ t("div", { className: n("flex flex-col", r || "gap-2", l), ...o, children: Array.from({ length: e }, (u, a) => /* @__PURE__ */ t(
19
19
  m,
20
20
  {
21
- className: n("h-3.5", l === e - 1 && e > 1 && "w-3/4")
21
+ className: n("h-3.5", a === e - 1 && e > 1 && "w-3/4")
22
22
  },
23
- l
23
+ a
24
24
  )) });
25
25
  }
26
26
  function i({
27
27
  size: e,
28
28
  className: r,
29
- ...a
29
+ ...l
30
30
  }) {
31
31
  return /* @__PURE__ */ t(
32
32
  "div",
@@ -36,12 +36,12 @@ function i({
36
36
  e || "size-10",
37
37
  r
38
38
  ),
39
- ...a
39
+ ...l
40
40
  }
41
41
  );
42
42
  }
43
43
  export {
44
44
  m as Skeleton,
45
45
  i as SkeletonCircle,
46
- s as SkeletonText
46
+ d as SkeletonText
47
47
  };
package/dist/Table.js CHANGED
@@ -1,37 +1,37 @@
1
- import { jsxs as i, jsx as r } from "react/jsx-runtime";
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
2
  import { c as d } from "./_shared/utils-eGXXUFl7.js";
3
- function c({ className: e, ...t }) {
4
- return /* @__PURE__ */ r("div", { className: "overflow-x-auto rounded-lg border border-border blurred-bg", children: /* @__PURE__ */ r(
3
+ function u({ className: e, ...r }) {
4
+ return /* @__PURE__ */ t("div", { className: "overflow-x-auto rounded-2xl border border-border ring-1 ring-foreground/5 dark:ring-foreground/10 blurred-bg", children: /* @__PURE__ */ t(
5
5
  "table",
6
6
  {
7
7
  "data-slot": "table",
8
8
  className: d("w-full border-collapse text-sm", e),
9
- ...t
9
+ ...r
10
10
  }
11
11
  ) });
12
12
  }
13
- function u({ className: e, ...t }) {
14
- return /* @__PURE__ */ r(
13
+ function c({ className: e, ...r }) {
14
+ return /* @__PURE__ */ t(
15
15
  "thead",
16
16
  {
17
17
  "data-slot": "table-header",
18
18
  className: d("border-b border-border", e),
19
- ...t
19
+ ...r
20
20
  }
21
21
  );
22
22
  }
23
- function m({ className: e, ...t }) {
24
- return /* @__PURE__ */ r(
23
+ function m({ className: e, ...r }) {
24
+ return /* @__PURE__ */ t(
25
25
  "tbody",
26
26
  {
27
27
  "data-slot": "table-body",
28
28
  className: d("[&_tr:last-child]:border-0", e),
29
- ...t
29
+ ...r
30
30
  }
31
31
  );
32
32
  }
33
- function o({ className: e, ...t }) {
34
- return /* @__PURE__ */ r(
33
+ function l({ className: e, ...r }) {
34
+ return /* @__PURE__ */ t(
35
35
  "tr",
36
36
  {
37
37
  "data-slot": "table-row",
@@ -39,12 +39,12 @@ function o({ className: e, ...t }) {
39
39
  "border-b border-border transition-colors hover:bg-primary/8",
40
40
  e
41
41
  ),
42
- ...t
42
+ ...r
43
43
  }
44
44
  );
45
45
  }
46
- function f({ className: e, ...t }) {
47
- return /* @__PURE__ */ r(
46
+ function f({ className: e, ...r }) {
47
+ return /* @__PURE__ */ t(
48
48
  "th",
49
49
  {
50
50
  "data-slot": "table-head",
@@ -52,43 +52,43 @@ function f({ className: e, ...t }) {
52
52
  "text-left text-xs font-semibold uppercase tracking-wider text-muted-foreground px-4 py-3 bg-muted",
53
53
  e
54
54
  ),
55
- ...t
55
+ ...r
56
56
  }
57
57
  );
58
58
  }
59
- function h({ className: e, ...t }) {
60
- return /* @__PURE__ */ r(
59
+ function h({ className: e, ...r }) {
60
+ return /* @__PURE__ */ t(
61
61
  "td",
62
62
  {
63
63
  "data-slot": "table-cell",
64
64
  className: d("px-4 py-3 text-foreground", e),
65
- ...t
65
+ ...r
66
66
  }
67
67
  );
68
68
  }
69
- function y({ className: e, ...t }) {
70
- return /* @__PURE__ */ r(
69
+ function g({ className: e, ...r }) {
70
+ return /* @__PURE__ */ t(
71
71
  "caption",
72
72
  {
73
73
  "data-slot": "table-caption",
74
74
  className: d("mt-4 text-sm text-muted-foreground", e),
75
- ...t
75
+ ...r
76
76
  }
77
77
  );
78
78
  }
79
- function g({ columns: e, data: t, className: n, ...b }) {
80
- return /* @__PURE__ */ i(c, { className: n, ...b, children: [
81
- /* @__PURE__ */ r(u, { children: /* @__PURE__ */ r(o, { children: e.map((a) => /* @__PURE__ */ r(f, { style: a.width ? { width: a.width } : void 0, children: a.label }, a.key)) }) }),
82
- /* @__PURE__ */ r(m, { children: t.map((a, s) => /* @__PURE__ */ r(o, { children: e.map((l) => /* @__PURE__ */ r(h, { children: l.render ? l.render(a[l.key], a) : a[l.key] }, l.key)) }, s)) })
79
+ function y({ columns: e, data: r, className: n, ...b }) {
80
+ return /* @__PURE__ */ i(u, { className: n, ...b, children: [
81
+ /* @__PURE__ */ t(c, { children: /* @__PURE__ */ t(l, { children: e.map((a) => /* @__PURE__ */ t(f, { style: a.width ? { width: a.width } : void 0, children: a.label }, a.key)) }) }),
82
+ /* @__PURE__ */ t(m, { children: r.map((a, s) => /* @__PURE__ */ t(l, { children: e.map((o) => /* @__PURE__ */ t(h, { children: o.render ? o.render(a[o.key], a) : a[o.key] }, o.key)) }, s)) })
83
83
  ] });
84
84
  }
85
85
  export {
86
- g as EasyTable,
87
- c as Table,
86
+ y as EasyTable,
87
+ u as Table,
88
88
  m as TableBody,
89
- y as TableCaption,
89
+ g as TableCaption,
90
90
  h as TableCell,
91
91
  f as TableHead,
92
- u as TableHeader,
93
- o as TableRow
92
+ c as TableHeader,
93
+ l as TableRow
94
94
  };
package/dist/Tabs.d.ts CHANGED
@@ -18,24 +18,28 @@ export interface TabsProps {
18
18
  active: string;
19
19
  /** Callback fired when a tab is selected, receives the tab key. */
20
20
  onChange: (key: string) => void;
21
+ /**
22
+ * Visual style variant.
23
+ * - `"line"` — underline indicator (default)
24
+ * - `"pill"` — pill-shaped triggers inside a muted container
25
+ * @default "line"
26
+ */
27
+ variant?: "line" | "pill";
21
28
  /** Additional CSS classes for the tab list container. */
22
29
  className?: string;
23
30
  }
24
31
  /**
25
- * Underline-style tab navigation built on Radix UI Tabs.
26
- * The active tab is highlighted with a primary-colored bottom border.
32
+ * Tab navigation built on Radix UI Tabs with two visual variants.
27
33
  *
28
34
  * @example
29
- * <Tabs
30
- * tabs={[
31
- * { key: "overview", label: "Overview", icon: LayoutDashboard },
32
- * { key: "settings", label: "Settings", icon: Settings },
33
- * ]}
34
- * active={tab}
35
- * onChange={setTab}
36
- * />
35
+ * // Underline tabs (default)
36
+ * <Tabs tabs={tabs} active={tab} onChange={setTab} />
37
+ *
38
+ * @example
39
+ * // Pill tabs
40
+ * <Tabs tabs={tabs} active={tab} onChange={setTab} variant="pill" />
37
41
  */
38
- declare function Tabs({ tabs, active, onChange, className }: TabsProps): import("react/jsx-runtime").JSX.Element;
42
+ declare function Tabs({ tabs, active, onChange, variant, className }: TabsProps): import("react/jsx-runtime").JSX.Element;
39
43
  /** Definition for a single navigation pill item. */
40
44
  export interface NavPillItem {
41
45
  /** Unique identifier for the pill. */