@prediktif/ui 0.1.7 → 0.1.9

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/index.js CHANGED
@@ -60,59 +60,234 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
60
60
  // src/index.ts
61
61
  var index_exports = {};
62
62
  __export(index_exports, {
63
- HeaderTitle: () => HeaderTitle,
64
- NavUser: () => NavUser,
65
- Sidebar: () => Sidebar,
66
- SidebarContent: () => SidebarContent,
67
- SidebarFooter: () => SidebarFooter,
68
- SidebarGroup: () => SidebarGroup,
69
- SidebarGroupAction: () => SidebarGroupAction,
70
- SidebarGroupContent: () => SidebarGroupContent,
71
- SidebarGroupLabel: () => SidebarGroupLabel,
72
- SidebarHeader: () => SidebarHeader,
73
- SidebarInput: () => SidebarInput,
74
- SidebarInset: () => SidebarInset,
75
- SidebarMenu: () => SidebarMenu,
76
- SidebarMenuAction: () => SidebarMenuAction,
77
- SidebarMenuBadge: () => SidebarMenuBadge,
78
- SidebarMenuButton: () => SidebarMenuButton,
79
- SidebarMenuItem: () => SidebarMenuItem,
80
- SidebarMenuSkeleton: () => SidebarMenuSkeleton,
81
- SidebarMenuSub: () => SidebarMenuSub,
82
- SidebarMenuSubButton: () => SidebarMenuSubButton,
83
- SidebarMenuSubItem: () => SidebarMenuSubItem,
84
- SidebarProvider: () => SidebarProvider,
85
- SidebarRail: () => SidebarRail,
86
- SidebarSeparator: () => SidebarSeparator,
87
- SidebarTrigger: () => SidebarTrigger,
88
- useSidebar: () => useSidebar
63
+ AppSidebar: () => AppSidebar,
64
+ HeaderTitle: () => HeaderTitle
89
65
  });
90
66
  module.exports = __toCommonJS(index_exports);
91
67
 
92
- // src/components/composed/header-title.tsx
68
+ // src/components/composed/app-sidebar.tsx
69
+ var import_lucide_react5 = require("lucide-react");
70
+ var import_link = __toESM(require("next/link"));
71
+ var import_navigation = require("next/navigation");
93
72
  var import_react = require("react");
73
+
74
+ // src/components/ui/alert-dialog.tsx
75
+ var import_alert_dialog = require("@base-ui/react/alert-dialog");
76
+ var import_cn2 = require("cn");
77
+
78
+ // src/components/ui/button.tsx
79
+ var import_button = require("@base-ui/react/button");
80
+ var import_class_variance_authority = require("class-variance-authority");
81
+ var import_cn = require("cn");
94
82
  var import_jsx_runtime = require("react/jsx-runtime");
95
- var HeaderTitle = (0, import_react.memo)(function HeaderTitle2({
96
- title,
97
- subtitle,
98
- children
99
- }) {
100
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "w-full space-y-4", children: [
101
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
102
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "font-semibold", children: title }),
103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs text-muted-foreground", children: subtitle })
104
- ] }),
105
- children
106
- ] });
107
- });
83
+ var buttonVariants = (0, import_class_variance_authority.cva)(
84
+ "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
85
+ {
86
+ variants: {
87
+ variant: {
88
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
89
+ outline: "border-border hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30",
90
+ secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
91
+ ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
92
+ destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
93
+ link: "text-primary underline-offset-4 hover:underline"
94
+ },
95
+ size: {
96
+ default: "h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
97
+ xs: "h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5",
98
+ sm: "h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
99
+ lg: "h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4",
100
+ icon: "size-7 [&_svg:not([class*='size-'])]:size-3.5",
101
+ "icon-xs": "size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5",
102
+ "icon-sm": "size-6 [&_svg:not([class*='size-'])]:size-3",
103
+ "icon-lg": "size-8 [&_svg:not([class*='size-'])]:size-4"
104
+ }
105
+ },
106
+ defaultVariants: {
107
+ variant: "default",
108
+ size: "default"
109
+ }
110
+ }
111
+ );
112
+ function Button(_a) {
113
+ var _b = _a, {
114
+ className,
115
+ variant = "default",
116
+ size = "default"
117
+ } = _b, props = __objRest(_b, [
118
+ "className",
119
+ "variant",
120
+ "size"
121
+ ]);
122
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
123
+ import_button.Button,
124
+ __spreadValues({
125
+ "data-slot": "button",
126
+ className: (0, import_cn.cn)(buttonVariants({ variant, size, className }))
127
+ }, props)
128
+ );
129
+ }
108
130
 
109
- // src/components/composed/nav-user.tsx
110
- var import_react2 = require("react");
131
+ // src/components/ui/alert-dialog.tsx
132
+ var import_jsx_runtime2 = require("react/jsx-runtime");
133
+ function AlertDialog(_a) {
134
+ var props = __objRest(_a, []);
135
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_alert_dialog.AlertDialog.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
136
+ }
137
+ function AlertDialogTrigger(_a) {
138
+ var props = __objRest(_a, []);
139
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_alert_dialog.AlertDialog.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
140
+ }
141
+ function AlertDialogPortal(_a) {
142
+ var props = __objRest(_a, []);
143
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_alert_dialog.AlertDialog.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
144
+ }
145
+ function AlertDialogOverlay(_a) {
146
+ var _b = _a, {
147
+ className
148
+ } = _b, props = __objRest(_b, [
149
+ "className"
150
+ ]);
151
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
152
+ import_alert_dialog.AlertDialog.Backdrop,
153
+ __spreadValues({
154
+ "data-slot": "alert-dialog-overlay",
155
+ className: (0, import_cn2.cn)(
156
+ "fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
157
+ className
158
+ )
159
+ }, props)
160
+ );
161
+ }
162
+ function AlertDialogContent(_a) {
163
+ var _b = _a, {
164
+ className,
165
+ size = "default"
166
+ } = _b, props = __objRest(_b, [
167
+ "className",
168
+ "size"
169
+ ]);
170
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(AlertDialogPortal, { children: [
171
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AlertDialogOverlay, {}),
172
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
173
+ import_alert_dialog.AlertDialog.Popup,
174
+ __spreadValues({
175
+ "data-slot": "alert-dialog-content",
176
+ "data-size": size,
177
+ className: (0, import_cn2.cn)(
178
+ "group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
179
+ className
180
+ )
181
+ }, props)
182
+ )
183
+ ] });
184
+ }
185
+ function AlertDialogHeader(_a) {
186
+ var _b = _a, {
187
+ className
188
+ } = _b, props = __objRest(_b, [
189
+ "className"
190
+ ]);
191
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
192
+ "div",
193
+ __spreadValues({
194
+ "data-slot": "alert-dialog-header",
195
+ className: (0, import_cn2.cn)(
196
+ "grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
197
+ className
198
+ )
199
+ }, props)
200
+ );
201
+ }
202
+ function AlertDialogFooter(_a) {
203
+ var _b = _a, {
204
+ className
205
+ } = _b, props = __objRest(_b, [
206
+ "className"
207
+ ]);
208
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
209
+ "div",
210
+ __spreadValues({
211
+ "data-slot": "alert-dialog-footer",
212
+ className: (0, import_cn2.cn)(
213
+ "flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
214
+ className
215
+ )
216
+ }, props)
217
+ );
218
+ }
219
+ function AlertDialogTitle(_a) {
220
+ var _b = _a, {
221
+ className
222
+ } = _b, props = __objRest(_b, [
223
+ "className"
224
+ ]);
225
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
226
+ import_alert_dialog.AlertDialog.Title,
227
+ __spreadValues({
228
+ "data-slot": "alert-dialog-title",
229
+ className: (0, import_cn2.cn)(
230
+ "font-heading text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
231
+ className
232
+ )
233
+ }, props)
234
+ );
235
+ }
236
+ function AlertDialogDescription(_a) {
237
+ var _b = _a, {
238
+ className
239
+ } = _b, props = __objRest(_b, [
240
+ "className"
241
+ ]);
242
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
243
+ import_alert_dialog.AlertDialog.Description,
244
+ __spreadValues({
245
+ "data-slot": "alert-dialog-description",
246
+ className: (0, import_cn2.cn)(
247
+ "text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
248
+ className
249
+ )
250
+ }, props)
251
+ );
252
+ }
253
+ function AlertDialogAction(_a) {
254
+ var _b = _a, {
255
+ className
256
+ } = _b, props = __objRest(_b, [
257
+ "className"
258
+ ]);
259
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
260
+ Button,
261
+ __spreadValues({
262
+ "data-slot": "alert-dialog-action",
263
+ className: (0, import_cn2.cn)(className)
264
+ }, props)
265
+ );
266
+ }
267
+ function AlertDialogCancel(_a) {
268
+ var _b = _a, {
269
+ className,
270
+ variant = "outline",
271
+ size = "default"
272
+ } = _b, props = __objRest(_b, [
273
+ "className",
274
+ "variant",
275
+ "size"
276
+ ]);
277
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
278
+ import_alert_dialog.AlertDialog.Close,
279
+ __spreadValues({
280
+ "data-slot": "alert-dialog-cancel",
281
+ className: (0, import_cn2.cn)(className),
282
+ render: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Button, { variant, size })
283
+ }, props)
284
+ );
285
+ }
111
286
 
112
287
  // src/components/ui/avatar.tsx
113
288
  var import_avatar = require("@base-ui/react/avatar");
114
- var import_cn = require("cn");
115
- var import_jsx_runtime2 = require("react/jsx-runtime");
289
+ var import_cn3 = require("cn");
290
+ var import_jsx_runtime3 = require("react/jsx-runtime");
116
291
  function Avatar(_a) {
117
292
  var _b = _a, {
118
293
  className,
@@ -121,12 +296,12 @@ function Avatar(_a) {
121
296
  "className",
122
297
  "size"
123
298
  ]);
124
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
299
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
125
300
  import_avatar.Avatar.Root,
126
301
  __spreadValues({
127
302
  "data-slot": "avatar",
128
303
  "data-size": size,
129
- className: (0, import_cn.cn)(
304
+ className: (0, import_cn3.cn)(
130
305
  "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
131
306
  className
132
307
  )
@@ -135,11 +310,11 @@ function Avatar(_a) {
135
310
  }
136
311
  function AvatarImage(_a) {
137
312
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
138
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
313
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
139
314
  import_avatar.Avatar.Image,
140
315
  __spreadValues({
141
316
  "data-slot": "avatar-image",
142
- className: (0, import_cn.cn)(
317
+ className: (0, import_cn3.cn)(
143
318
  "aspect-square size-full rounded-full object-cover",
144
319
  className
145
320
  )
@@ -152,11 +327,11 @@ function AvatarFallback(_a) {
152
327
  } = _b, props = __objRest(_b, [
153
328
  "className"
154
329
  ]);
155
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
330
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
156
331
  import_avatar.Avatar.Fallback,
157
332
  __spreadValues({
158
333
  "data-slot": "avatar-fallback",
159
- className: (0, import_cn.cn)(
334
+ className: (0, import_cn3.cn)(
160
335
  "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
161
336
  className
162
337
  )
@@ -164,80 +339,192 @@ function AvatarFallback(_a) {
164
339
  );
165
340
  }
166
341
 
167
- // src/components/ui/sidebar.tsx
342
+ // src/components/ui/breadcrumb.tsx
168
343
  var import_merge_props = require("@base-ui/react/merge-props");
169
344
  var import_use_render = require("@base-ui/react/use-render");
170
- var import_class_variance_authority2 = require("class-variance-authority");
171
- var import_cn8 = require("cn");
172
- var import_lucide_react2 = require("lucide-react");
173
- var React2 = __toESM(require("react"));
174
-
175
- // src/components/ui/button.tsx
176
- var import_button = require("@base-ui/react/button");
177
- var import_class_variance_authority = require("class-variance-authority");
178
- var import_cn2 = require("cn");
179
- var import_jsx_runtime3 = require("react/jsx-runtime");
180
- var buttonVariants = (0, import_class_variance_authority.cva)(
181
- "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-xs/relaxed font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
182
- {
183
- variants: {
184
- variant: {
185
- default: "bg-primary text-primary-foreground hover:bg-primary/80",
186
- outline: "border-border hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-input/30",
187
- secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
188
- ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
189
- destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
190
- link: "text-primary underline-offset-4 hover:underline"
345
+ var import_cn4 = require("cn");
346
+ var import_lucide_react = require("lucide-react");
347
+ var import_jsx_runtime4 = require("react/jsx-runtime");
348
+ function Breadcrumb(_a) {
349
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
350
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
351
+ "nav",
352
+ __spreadValues({
353
+ "aria-label": "breadcrumb",
354
+ "data-slot": "breadcrumb",
355
+ className: (0, import_cn4.cn)(className)
356
+ }, props)
357
+ );
358
+ }
359
+ function BreadcrumbList(_a) {
360
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
361
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
362
+ "ol",
363
+ __spreadValues({
364
+ "data-slot": "breadcrumb-list",
365
+ className: (0, import_cn4.cn)(
366
+ "flex flex-wrap items-center gap-1.5 text-xs/relaxed wrap-break-word text-muted-foreground",
367
+ className
368
+ )
369
+ }, props)
370
+ );
371
+ }
372
+ function BreadcrumbItem(_a) {
373
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
374
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
375
+ "li",
376
+ __spreadValues({
377
+ "data-slot": "breadcrumb-item",
378
+ className: (0, import_cn4.cn)("inline-flex items-center gap-1", className)
379
+ }, props)
380
+ );
381
+ }
382
+ function BreadcrumbLink(_a) {
383
+ var _b = _a, {
384
+ className,
385
+ render
386
+ } = _b, props = __objRest(_b, [
387
+ "className",
388
+ "render"
389
+ ]);
390
+ return (0, import_use_render.useRender)({
391
+ defaultTagName: "a",
392
+ props: (0, import_merge_props.mergeProps)(
393
+ {
394
+ className: (0, import_cn4.cn)("transition-colors hover:text-foreground", className)
191
395
  },
192
- size: {
193
- default: "h-7 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
194
- xs: "h-5 gap-1 rounded-sm px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-2.5",
195
- sm: "h-6 gap-1 px-2 text-xs/relaxed has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
196
- lg: "h-8 gap-1 px-2.5 text-xs/relaxed has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-4",
197
- icon: "size-7 [&_svg:not([class*='size-'])]:size-3.5",
198
- "icon-xs": "size-5 rounded-sm [&_svg:not([class*='size-'])]:size-2.5",
199
- "icon-sm": "size-6 [&_svg:not([class*='size-'])]:size-3",
200
- "icon-lg": "size-8 [&_svg:not([class*='size-'])]:size-4"
201
- }
202
- },
203
- defaultVariants: {
204
- variant: "default",
205
- size: "default"
396
+ props
397
+ ),
398
+ render,
399
+ state: {
400
+ slot: "breadcrumb-link"
206
401
  }
207
- }
208
- );
209
- function Button(_a) {
402
+ });
403
+ }
404
+ function BreadcrumbPage(_a) {
405
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
406
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
407
+ "span",
408
+ __spreadValues({
409
+ "data-slot": "breadcrumb-page",
410
+ role: "link",
411
+ "aria-disabled": "true",
412
+ "aria-current": "page",
413
+ className: (0, import_cn4.cn)("font-normal text-foreground", className)
414
+ }, props)
415
+ );
416
+ }
417
+ function BreadcrumbSeparator(_a) {
418
+ var _b = _a, {
419
+ children,
420
+ className
421
+ } = _b, props = __objRest(_b, [
422
+ "children",
423
+ "className"
424
+ ]);
425
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
426
+ "li",
427
+ __spreadProps(__spreadValues({
428
+ "data-slot": "breadcrumb-separator",
429
+ role: "presentation",
430
+ "aria-hidden": "true",
431
+ className: (0, import_cn4.cn)("[&>svg]:size-3.5", className)
432
+ }, props), {
433
+ children: children != null ? children : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react.ChevronRightIcon, {})
434
+ })
435
+ );
436
+ }
437
+
438
+ // src/components/ui/dropdown-menu.tsx
439
+ var import_menu = require("@base-ui/react/menu");
440
+ var import_cn5 = require("cn");
441
+ var import_lucide_react2 = require("lucide-react");
442
+ var import_jsx_runtime5 = require("react/jsx-runtime");
443
+ function DropdownMenu(_a) {
444
+ var props = __objRest(_a, []);
445
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_menu.Menu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
446
+ }
447
+ function DropdownMenuTrigger(_a) {
448
+ var props = __objRest(_a, []);
449
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_menu.Menu.Trigger, __spreadValues({ "data-slot": "dropdown-menu-trigger" }, props));
450
+ }
451
+ function DropdownMenuContent(_a) {
452
+ var _b = _a, {
453
+ align = "start",
454
+ alignOffset = 0,
455
+ side = "bottom",
456
+ sideOffset = 4,
457
+ className
458
+ } = _b, props = __objRest(_b, [
459
+ "align",
460
+ "alignOffset",
461
+ "side",
462
+ "sideOffset",
463
+ "className"
464
+ ]);
465
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
466
+ import_menu.Menu.Positioner,
467
+ {
468
+ className: "isolate z-50 outline-none",
469
+ align,
470
+ alignOffset,
471
+ side,
472
+ sideOffset,
473
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
474
+ import_menu.Menu.Popup,
475
+ __spreadValues({
476
+ "data-slot": "dropdown-menu-content",
477
+ className: (0, import_cn5.cn)(
478
+ "z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",
479
+ className
480
+ )
481
+ }, props)
482
+ )
483
+ }
484
+ ) });
485
+ }
486
+ function DropdownMenuGroup(_a) {
487
+ var props = __objRest(_a, []);
488
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_menu.Menu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
489
+ }
490
+ function DropdownMenuLabel(_a) {
210
491
  var _b = _a, {
211
492
  className,
212
- variant = "default",
213
- size = "default"
493
+ inset
214
494
  } = _b, props = __objRest(_b, [
215
495
  "className",
216
- "variant",
217
- "size"
496
+ "inset"
218
497
  ]);
219
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
220
- import_button.Button,
498
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
499
+ import_menu.Menu.GroupLabel,
221
500
  __spreadValues({
222
- "data-slot": "button",
223
- className: (0, import_cn2.cn)(buttonVariants({ variant, size, className }))
501
+ "data-slot": "dropdown-menu-label",
502
+ "data-inset": inset,
503
+ className: (0, import_cn5.cn)(
504
+ "px-2 py-1.5 text-xs text-muted-foreground data-inset:pl-7.5",
505
+ className
506
+ )
224
507
  }, props)
225
508
  );
226
509
  }
227
-
228
- // src/components/ui/input.tsx
229
- var import_input = require("@base-ui/react/input");
230
- var import_cn3 = require("cn");
231
- var import_jsx_runtime4 = require("react/jsx-runtime");
232
- function Input(_a) {
233
- var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
234
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
235
- import_input.Input,
510
+ function DropdownMenuItem(_a) {
511
+ var _b = _a, {
512
+ className,
513
+ inset,
514
+ variant = "default"
515
+ } = _b, props = __objRest(_b, [
516
+ "className",
517
+ "inset",
518
+ "variant"
519
+ ]);
520
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
521
+ import_menu.Menu.Item,
236
522
  __spreadValues({
237
- type,
238
- "data-slot": "input",
239
- className: (0, import_cn3.cn)(
240
- "h-7 w-full min-w-0 rounded-md border border-input bg-input/20 px-2 py-0.5 text-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-xs/relaxed file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
523
+ "data-slot": "dropdown-menu-item",
524
+ "data-inset": inset,
525
+ "data-variant": variant,
526
+ className: (0, import_cn5.cn)(
527
+ "group/dropdown-menu-item relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 data-[variant=destructive]:*:[svg]:text-destructive",
241
528
  className
242
529
  )
243
530
  }, props)
@@ -246,8 +533,8 @@ function Input(_a) {
246
533
 
247
534
  // src/components/ui/separator.tsx
248
535
  var import_separator = require("@base-ui/react/separator");
249
- var import_cn4 = require("cn");
250
- var import_jsx_runtime5 = require("react/jsx-runtime");
536
+ var import_cn6 = require("cn");
537
+ var import_jsx_runtime6 = require("react/jsx-runtime");
251
538
  function Separator(_a) {
252
539
  var _b = _a, {
253
540
  className,
@@ -256,12 +543,12 @@ function Separator(_a) {
256
543
  "className",
257
544
  "orientation"
258
545
  ]);
259
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
546
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
260
547
  import_separator.Separator,
261
548
  __spreadValues({
262
549
  "data-slot": "separator",
263
550
  orientation,
264
- className: (0, import_cn4.cn)(
551
+ className: (0, import_cn6.cn)(
265
552
  "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
266
553
  className
267
554
  )
@@ -269,26 +556,39 @@ function Separator(_a) {
269
556
  );
270
557
  }
271
558
 
559
+ // src/components/ui/sidebar.tsx
560
+ var import_merge_props2 = require("@base-ui/react/merge-props");
561
+ var import_use_render2 = require("@base-ui/react/use-render");
562
+ var import_class_variance_authority2 = require("class-variance-authority");
563
+ var import_cn11 = require("cn");
564
+ var import_lucide_react4 = require("lucide-react");
565
+ var React2 = __toESM(require("react"));
566
+
567
+ // src/components/ui/input.tsx
568
+ var import_input = require("@base-ui/react/input");
569
+ var import_cn7 = require("cn");
570
+ var import_jsx_runtime7 = require("react/jsx-runtime");
571
+
272
572
  // src/components/ui/sheet.tsx
273
573
  var import_dialog = require("@base-ui/react/dialog");
274
- var import_cn5 = require("cn");
275
- var import_lucide_react = require("lucide-react");
276
- var import_jsx_runtime6 = require("react/jsx-runtime");
574
+ var import_cn8 = require("cn");
575
+ var import_lucide_react3 = require("lucide-react");
576
+ var import_jsx_runtime8 = require("react/jsx-runtime");
277
577
  function Sheet(_a) {
278
578
  var props = __objRest(_a, []);
279
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "sheet" }, props));
579
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "sheet" }, props));
280
580
  }
281
581
  function SheetPortal(_a) {
282
582
  var props = __objRest(_a, []);
283
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
583
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
284
584
  }
285
585
  function SheetOverlay(_a) {
286
586
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
287
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
587
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
288
588
  import_dialog.Dialog.Backdrop,
289
589
  __spreadValues({
290
590
  "data-slot": "sheet-overlay",
291
- className: (0, import_cn5.cn)(
591
+ className: (0, import_cn8.cn)(
292
592
  "fixed inset-0 z-50 bg-black/80 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",
293
593
  className
294
594
  )
@@ -307,25 +607,25 @@ function SheetContent(_a) {
307
607
  "side",
308
608
  "showCloseButton"
309
609
  ]);
310
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(SheetPortal, { children: [
311
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SheetOverlay, {}),
312
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
610
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(SheetPortal, { children: [
611
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SheetOverlay, {}),
612
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
313
613
  import_dialog.Dialog.Popup,
314
614
  __spreadProps(__spreadValues({
315
615
  "data-slot": "sheet-content",
316
616
  "data-side": side,
317
- className: (0, import_cn5.cn)(
617
+ className: (0, import_cn8.cn)(
318
618
  "fixed z-50 flex flex-col bg-popover bg-clip-padding text-xs/relaxed text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",
319
619
  className
320
620
  )
321
621
  }, props), {
322
622
  children: [
323
623
  children,
324
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
624
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
325
625
  import_dialog.Dialog.Close,
326
626
  {
327
627
  "data-slot": "sheet-close",
328
- render: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
628
+ render: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
329
629
  Button,
330
630
  {
331
631
  variant: "ghost",
@@ -334,8 +634,8 @@ function SheetContent(_a) {
334
634
  }
335
635
  ),
336
636
  children: [
337
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.XIcon, {}),
338
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "sr-only", children: "Close" })
637
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react3.XIcon, {}),
638
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Close" })
339
639
  ]
340
640
  }
341
641
  )
@@ -346,21 +646,21 @@ function SheetContent(_a) {
346
646
  }
347
647
  function SheetHeader(_a) {
348
648
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
349
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
649
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
350
650
  "div",
351
651
  __spreadValues({
352
652
  "data-slot": "sheet-header",
353
- className: (0, import_cn5.cn)("flex flex-col gap-1.5 p-6", className)
653
+ className: (0, import_cn8.cn)("flex flex-col gap-1.5 p-6", className)
354
654
  }, props)
355
655
  );
356
656
  }
357
657
  function SheetTitle(_a) {
358
658
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
359
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
659
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
360
660
  import_dialog.Dialog.Title,
361
661
  __spreadValues({
362
662
  "data-slot": "sheet-title",
363
- className: (0, import_cn5.cn)(
663
+ className: (0, import_cn8.cn)(
364
664
  "font-heading text-sm font-medium text-foreground",
365
665
  className
366
666
  )
@@ -373,40 +673,30 @@ function SheetDescription(_a) {
373
673
  } = _b, props = __objRest(_b, [
374
674
  "className"
375
675
  ]);
376
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
676
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
377
677
  import_dialog.Dialog.Description,
378
678
  __spreadValues({
379
679
  "data-slot": "sheet-description",
380
- className: (0, import_cn5.cn)("text-xs/relaxed text-muted-foreground", className)
680
+ className: (0, import_cn8.cn)("text-xs/relaxed text-muted-foreground", className)
381
681
  }, props)
382
682
  );
383
683
  }
384
684
 
385
685
  // src/components/ui/skeleton.tsx
386
- var import_cn6 = require("cn");
387
- var import_jsx_runtime7 = require("react/jsx-runtime");
388
- function Skeleton(_a) {
389
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
390
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
391
- "div",
392
- __spreadValues({
393
- "data-slot": "skeleton",
394
- className: (0, import_cn6.cn)("animate-pulse rounded-md bg-muted", className)
395
- }, props)
396
- );
397
- }
686
+ var import_cn9 = require("cn");
687
+ var import_jsx_runtime9 = require("react/jsx-runtime");
398
688
 
399
689
  // src/components/ui/tooltip.tsx
400
690
  var import_tooltip = require("@base-ui/react/tooltip");
401
- var import_cn7 = require("cn");
402
- var import_jsx_runtime8 = require("react/jsx-runtime");
691
+ var import_cn10 = require("cn");
692
+ var import_jsx_runtime10 = require("react/jsx-runtime");
403
693
  function Tooltip(_a) {
404
694
  var props = __objRest(_a, []);
405
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
695
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
406
696
  }
407
697
  function TooltipTrigger(_a) {
408
698
  var props = __objRest(_a, []);
409
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
699
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
410
700
  }
411
701
  function TooltipContent(_a) {
412
702
  var _b = _a, {
@@ -424,7 +714,7 @@ function TooltipContent(_a) {
424
714
  "alignOffset",
425
715
  "children"
426
716
  ]);
427
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
717
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
428
718
  import_tooltip.Tooltip.Positioner,
429
719
  {
430
720
  align,
@@ -432,18 +722,18 @@ function TooltipContent(_a) {
432
722
  side,
433
723
  sideOffset,
434
724
  className: "isolate z-50",
435
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
725
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
436
726
  import_tooltip.Tooltip.Popup,
437
727
  __spreadProps(__spreadValues({
438
728
  "data-slot": "tooltip-content",
439
- className: (0, import_cn7.cn)(
729
+ className: (0, import_cn10.cn)(
440
730
  "z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
441
731
  className
442
732
  )
443
733
  }, props), {
444
734
  children: [
445
735
  children,
446
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
736
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
447
737
  ]
448
738
  })
449
739
  )
@@ -471,7 +761,7 @@ function useIsMobile() {
471
761
  }
472
762
 
473
763
  // src/components/ui/sidebar.tsx
474
- var import_jsx_runtime9 = require("react/jsx-runtime");
764
+ var import_jsx_runtime11 = require("react/jsx-runtime");
475
765
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
476
766
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
477
767
  var SIDEBAR_WIDTH = "16rem";
@@ -544,7 +834,7 @@ function SidebarProvider(_a) {
544
834
  }),
545
835
  [state, open, setOpen, isMobile, openMobile, toggleSidebar]
546
836
  );
547
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
837
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
548
838
  "div",
549
839
  __spreadProps(__spreadValues({
550
840
  "data-slot": "sidebar-wrapper",
@@ -552,7 +842,7 @@ function SidebarProvider(_a) {
552
842
  "--sidebar-width": SIDEBAR_WIDTH,
553
843
  "--sidebar-width-icon": SIDEBAR_WIDTH_ICON
554
844
  }, style),
555
- className: (0, import_cn8.cn)(
845
+ className: (0, import_cn11.cn)(
556
846
  "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
557
847
  className
558
848
  )
@@ -579,11 +869,11 @@ function Sidebar(_a) {
579
869
  ]);
580
870
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
581
871
  if (collapsible === "none") {
582
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
872
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
583
873
  "div",
584
874
  __spreadProps(__spreadValues({
585
875
  "data-slot": "sidebar",
586
- className: (0, import_cn8.cn)(
876
+ className: (0, import_cn11.cn)(
587
877
  "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
588
878
  className
589
879
  )
@@ -593,7 +883,7 @@ function Sidebar(_a) {
593
883
  );
594
884
  }
595
885
  if (isMobile) {
596
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
886
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
597
887
  SheetContent,
598
888
  {
599
889
  dir,
@@ -606,16 +896,16 @@ function Sidebar(_a) {
606
896
  },
607
897
  side,
608
898
  children: [
609
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SheetHeader, { className: "sr-only", children: [
610
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SheetTitle, { children: "Sidebar" }),
611
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
899
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(SheetHeader, { className: "sr-only", children: [
900
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SheetTitle, { children: "Sidebar" }),
901
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
612
902
  ] }),
613
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex h-full w-full flex-col", children })
903
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex h-full w-full flex-col", children })
614
904
  ]
615
905
  }
616
906
  ) }));
617
907
  }
618
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
908
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
619
909
  "div",
620
910
  {
621
911
  className: "group peer hidden text-sidebar-foreground md:block",
@@ -625,11 +915,11 @@ function Sidebar(_a) {
625
915
  "data-side": side,
626
916
  "data-slot": "sidebar",
627
917
  children: [
628
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
918
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
629
919
  "div",
630
920
  {
631
921
  "data-slot": "sidebar-gap",
632
- className: (0, import_cn8.cn)(
922
+ className: (0, import_cn11.cn)(
633
923
  "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
634
924
  "group-data-[collapsible=offcanvas]:w-0",
635
925
  "group-data-[side=right]:rotate-180",
@@ -637,19 +927,19 @@ function Sidebar(_a) {
637
927
  )
638
928
  }
639
929
  ),
640
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
930
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
641
931
  "div",
642
932
  __spreadProps(__spreadValues({
643
933
  "data-slot": "sidebar-container",
644
934
  "data-side": side,
645
- className: (0, import_cn8.cn)(
935
+ className: (0, import_cn11.cn)(
646
936
  "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
647
937
  // Adjust the padding for floating and inset variants.
648
938
  variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
649
939
  className
650
940
  )
651
941
  }, props), {
652
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
942
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
653
943
  "div",
654
944
  {
655
945
  "data-sidebar": "sidebar",
@@ -673,22 +963,22 @@ function SidebarTrigger(_a) {
673
963
  "onClick"
674
964
  ]);
675
965
  const { toggleSidebar } = useSidebar();
676
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
966
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
677
967
  Button,
678
968
  __spreadProps(__spreadValues({
679
969
  "data-sidebar": "trigger",
680
970
  "data-slot": "sidebar-trigger",
681
971
  variant: "ghost",
682
972
  size: "icon-sm",
683
- className: (0, import_cn8.cn)(className),
973
+ className: (0, import_cn11.cn)(className),
684
974
  onClick: (event) => {
685
975
  onClick == null ? void 0 : onClick(event);
686
976
  toggleSidebar();
687
977
  }
688
978
  }, props), {
689
979
  children: [
690
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react2.PanelLeftIcon, {}),
691
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
980
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react4.PanelLeftIcon, {}),
981
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
692
982
  ]
693
983
  })
694
984
  );
@@ -696,7 +986,7 @@ function SidebarTrigger(_a) {
696
986
  function SidebarRail(_a) {
697
987
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
698
988
  const { toggleSidebar } = useSidebar();
699
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
989
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
700
990
  "button",
701
991
  __spreadValues({
702
992
  "data-sidebar": "rail",
@@ -705,7 +995,7 @@ function SidebarRail(_a) {
705
995
  tabIndex: -1,
706
996
  onClick: toggleSidebar,
707
997
  title: "Toggle Sidebar",
708
- className: (0, import_cn8.cn)(
998
+ className: (0, import_cn11.cn)(
709
999
  "absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
710
1000
  "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
711
1001
  "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
@@ -719,80 +1009,47 @@ function SidebarRail(_a) {
719
1009
  }
720
1010
  function SidebarInset(_a) {
721
1011
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
722
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1012
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
723
1013
  "main",
724
1014
  __spreadValues({
725
1015
  "data-slot": "sidebar-inset",
726
- className: (0, import_cn8.cn)(
1016
+ className: (0, import_cn11.cn)(
727
1017
  "relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
728
1018
  className
729
1019
  )
730
1020
  }, props)
731
1021
  );
732
1022
  }
733
- function SidebarInput(_a) {
734
- var _b = _a, {
735
- className
736
- } = _b, props = __objRest(_b, [
737
- "className"
738
- ]);
739
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
740
- Input,
741
- __spreadValues({
742
- "data-slot": "sidebar-input",
743
- "data-sidebar": "input",
744
- className: (0, import_cn8.cn)(
745
- "h-8 w-full border-input bg-muted/20 dark:bg-muted/30",
746
- className
747
- )
748
- }, props)
749
- );
750
- }
751
1023
  function SidebarHeader(_a) {
752
1024
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
753
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1025
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
754
1026
  "div",
755
1027
  __spreadValues({
756
1028
  "data-slot": "sidebar-header",
757
1029
  "data-sidebar": "header",
758
- className: (0, import_cn8.cn)("flex flex-col gap-2 p-2", className)
1030
+ className: (0, import_cn11.cn)("flex flex-col gap-2 p-2", className)
759
1031
  }, props)
760
1032
  );
761
1033
  }
762
1034
  function SidebarFooter(_a) {
763
1035
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
764
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1036
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
765
1037
  "div",
766
1038
  __spreadValues({
767
1039
  "data-slot": "sidebar-footer",
768
1040
  "data-sidebar": "footer",
769
- className: (0, import_cn8.cn)("flex flex-col gap-2 p-2", className)
770
- }, props)
771
- );
772
- }
773
- function SidebarSeparator(_a) {
774
- var _b = _a, {
775
- className
776
- } = _b, props = __objRest(_b, [
777
- "className"
778
- ]);
779
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
780
- Separator,
781
- __spreadValues({
782
- "data-slot": "sidebar-separator",
783
- "data-sidebar": "separator",
784
- className: (0, import_cn8.cn)("mx-2 w-auto bg-sidebar-border", className)
1041
+ className: (0, import_cn11.cn)("flex flex-col gap-2 p-2", className)
785
1042
  }, props)
786
1043
  );
787
1044
  }
788
1045
  function SidebarContent(_a) {
789
1046
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
790
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1047
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
791
1048
  "div",
792
1049
  __spreadValues({
793
1050
  "data-slot": "sidebar-content",
794
1051
  "data-sidebar": "content",
795
- className: (0, import_cn8.cn)(
1052
+ className: (0, import_cn11.cn)(
796
1053
  "no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
797
1054
  className
798
1055
  )
@@ -801,12 +1058,12 @@ function SidebarContent(_a) {
801
1058
  }
802
1059
  function SidebarGroup(_a) {
803
1060
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
804
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1061
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
805
1062
  "div",
806
1063
  __spreadValues({
807
1064
  "data-slot": "sidebar-group",
808
1065
  "data-sidebar": "group",
809
- className: (0, import_cn8.cn)(
1066
+ className: (0, import_cn11.cn)(
810
1067
  "relative flex w-full min-w-0 flex-col px-2 py-1",
811
1068
  className
812
1069
  )
@@ -821,11 +1078,11 @@ function SidebarGroupLabel(_a) {
821
1078
  "className",
822
1079
  "render"
823
1080
  ]);
824
- return (0, import_use_render.useRender)({
1081
+ return (0, import_use_render2.useRender)({
825
1082
  defaultTagName: "div",
826
- props: (0, import_merge_props.mergeProps)(
1083
+ props: (0, import_merge_props2.mergeProps)(
827
1084
  {
828
- className: (0, import_cn8.cn)(
1085
+ className: (0, import_cn11.cn)(
829
1086
  "flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
830
1087
  className
831
1088
  )
@@ -839,66 +1096,40 @@ function SidebarGroupLabel(_a) {
839
1096
  }
840
1097
  });
841
1098
  }
842
- function SidebarGroupAction(_a) {
843
- var _b = _a, {
844
- className,
845
- render
846
- } = _b, props = __objRest(_b, [
847
- "className",
848
- "render"
849
- ]);
850
- return (0, import_use_render.useRender)({
851
- defaultTagName: "button",
852
- props: (0, import_merge_props.mergeProps)(
853
- {
854
- className: (0, import_cn8.cn)(
855
- "absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
856
- className
857
- )
858
- },
859
- props
860
- ),
861
- render,
862
- state: {
863
- slot: "sidebar-group-action",
864
- sidebar: "group-action"
865
- }
866
- });
867
- }
868
1099
  function SidebarGroupContent(_a) {
869
1100
  var _b = _a, {
870
1101
  className
871
1102
  } = _b, props = __objRest(_b, [
872
1103
  "className"
873
1104
  ]);
874
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1105
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
875
1106
  "div",
876
1107
  __spreadValues({
877
1108
  "data-slot": "sidebar-group-content",
878
1109
  "data-sidebar": "group-content",
879
- className: (0, import_cn8.cn)("w-full text-xs", className)
1110
+ className: (0, import_cn11.cn)("w-full text-xs", className)
880
1111
  }, props)
881
1112
  );
882
1113
  }
883
1114
  function SidebarMenu(_a) {
884
1115
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
885
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1116
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
886
1117
  "ul",
887
1118
  __spreadValues({
888
1119
  "data-slot": "sidebar-menu",
889
1120
  "data-sidebar": "menu",
890
- className: (0, import_cn8.cn)("flex w-full min-w-0 flex-col gap-px", className)
1121
+ className: (0, import_cn11.cn)("flex w-full min-w-0 flex-col gap-px", className)
891
1122
  }, props)
892
1123
  );
893
1124
  }
894
1125
  function SidebarMenuItem(_a) {
895
1126
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
896
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1127
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
897
1128
  "li",
898
1129
  __spreadValues({
899
1130
  "data-slot": "sidebar-menu-item",
900
1131
  "data-sidebar": "menu-item",
901
- className: (0, import_cn8.cn)("group/menu-item relative", className)
1132
+ className: (0, import_cn11.cn)("group/menu-item relative", className)
902
1133
  }, props)
903
1134
  );
904
1135
  }
@@ -939,15 +1170,15 @@ function SidebarMenuButton(_a) {
939
1170
  "className"
940
1171
  ]);
941
1172
  const { isMobile, state } = useSidebar();
942
- const comp = (0, import_use_render.useRender)({
1173
+ const comp = (0, import_use_render2.useRender)({
943
1174
  defaultTagName: "button",
944
- props: (0, import_merge_props.mergeProps)(
1175
+ props: (0, import_merge_props2.mergeProps)(
945
1176
  {
946
- className: (0, import_cn8.cn)(sidebarMenuButtonVariants({ variant, size }), className)
1177
+ className: (0, import_cn11.cn)(sidebarMenuButtonVariants({ variant, size }), className)
947
1178
  },
948
1179
  props
949
1180
  ),
950
- render: !tooltip ? render : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipTrigger, { render }),
1181
+ render: !tooltip ? render : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipTrigger, { render }),
951
1182
  state: {
952
1183
  slot: "sidebar-menu-button",
953
1184
  sidebar: "menu-button",
@@ -963,9 +1194,9 @@ function SidebarMenuButton(_a) {
963
1194
  children: tooltip
964
1195
  };
965
1196
  }
966
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tooltip, { children: [
1197
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Tooltip, { children: [
967
1198
  comp,
968
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1199
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
969
1200
  TooltipContent,
970
1201
  __spreadValues({
971
1202
  side: "right",
@@ -975,201 +1206,250 @@ function SidebarMenuButton(_a) {
975
1206
  )
976
1207
  ] });
977
1208
  }
978
- function SidebarMenuAction(_a) {
979
- var _b = _a, {
980
- className,
981
- render,
982
- showOnHover = false
983
- } = _b, props = __objRest(_b, [
984
- "className",
985
- "render",
986
- "showOnHover"
987
- ]);
988
- return (0, import_use_render.useRender)({
989
- defaultTagName: "button",
990
- props: (0, import_merge_props.mergeProps)(
991
- {
992
- className: (0, import_cn8.cn)(
993
- "absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
994
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0",
995
- className
996
- )
997
- },
998
- props
999
- ),
1000
- render,
1001
- state: {
1002
- slot: "sidebar-menu-action",
1003
- sidebar: "menu-action"
1004
- }
1005
- });
1006
- }
1007
1209
  function SidebarMenuBadge(_a) {
1008
1210
  var _b = _a, {
1009
1211
  className
1010
1212
  } = _b, props = __objRest(_b, [
1011
1213
  "className"
1012
1214
  ]);
1013
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1215
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1014
1216
  "div",
1015
1217
  __spreadValues({
1016
1218
  "data-slot": "sidebar-menu-badge",
1017
1219
  "data-sidebar": "menu-badge",
1018
- className: (0, import_cn8.cn)(
1220
+ className: (0, import_cn11.cn)(
1019
1221
  "pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-[calc(var(--radius-sm)-2px)] px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground",
1020
1222
  className
1021
1223
  )
1022
1224
  }, props)
1023
1225
  );
1024
1226
  }
1025
- function SidebarMenuSkeleton(_a) {
1026
- var _b = _a, {
1027
- className,
1028
- showIcon = false
1029
- } = _b, props = __objRest(_b, [
1030
- "className",
1031
- "showIcon"
1032
- ]);
1033
- const [width] = React2.useState(() => {
1034
- return `${Math.floor(Math.random() * 40) + 50}%`;
1035
- });
1036
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1037
- "div",
1038
- __spreadProps(__spreadValues({
1039
- "data-slot": "sidebar-menu-skeleton",
1040
- "data-sidebar": "menu-skeleton",
1041
- className: (0, import_cn8.cn)("flex h-8 items-center gap-2 rounded-md px-2", className)
1042
- }, props), {
1043
- children: [
1044
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1045
- Skeleton,
1046
- {
1047
- className: "size-4 rounded-md",
1048
- "data-sidebar": "menu-skeleton-icon"
1049
- }
1050
- ),
1051
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1052
- Skeleton,
1053
- {
1054
- className: "h-4 max-w-(--skeleton-width) flex-1",
1055
- "data-sidebar": "menu-skeleton-text",
1056
- style: {
1057
- "--skeleton-width": width
1058
- }
1059
- }
1060
- )
1061
- ]
1062
- })
1063
- );
1064
- }
1065
- function SidebarMenuSub(_a) {
1066
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1067
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1068
- "ul",
1069
- __spreadValues({
1070
- "data-slot": "sidebar-menu-sub",
1071
- "data-sidebar": "menu-sub",
1072
- className: (0, import_cn8.cn)(
1073
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",
1074
- className
1075
- )
1076
- }, props)
1077
- );
1078
- }
1079
- function SidebarMenuSubItem(_a) {
1080
- var _b = _a, {
1081
- className
1082
- } = _b, props = __objRest(_b, [
1083
- "className"
1084
- ]);
1085
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1086
- "li",
1087
- __spreadValues({
1088
- "data-slot": "sidebar-menu-sub-item",
1089
- "data-sidebar": "menu-sub-item",
1090
- className: (0, import_cn8.cn)("group/menu-sub-item relative", className)
1091
- }, props)
1092
- );
1227
+
1228
+ // src/components/composed/app-sidebar.tsx
1229
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1230
+ function formatSegment(segment, subHref, navMainItems = [], navSecondaryItems = []) {
1231
+ if (subHref) {
1232
+ const matched = [...navMainItems, ...navSecondaryItems].find(
1233
+ (item) => item.url === subHref
1234
+ );
1235
+ if (matched) return matched.title;
1236
+ }
1237
+ return segment.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
1093
1238
  }
1094
- function SidebarMenuSubButton(_a) {
1095
- var _b = _a, {
1096
- render,
1097
- size = "md",
1098
- isActive = false,
1099
- className
1100
- } = _b, props = __objRest(_b, [
1101
- "render",
1102
- "size",
1103
- "isActive",
1104
- "className"
1105
- ]);
1106
- return (0, import_use_render.useRender)({
1107
- defaultTagName: "a",
1108
- props: (0, import_merge_props.mergeProps)(
1109
- {
1110
- className: (0, import_cn8.cn)(
1111
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-xs data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
1112
- className
1113
- )
1114
- },
1115
- props
1116
- ),
1117
- render,
1118
- state: {
1119
- slot: "sidebar-menu-sub-button",
1120
- sidebar: "menu-sub-button",
1121
- size,
1122
- active: isActive
1123
- }
1124
- });
1239
+ function isRouteActive(url, pathname) {
1240
+ if (!pathname) return false;
1241
+ if (url === "/") return pathname === "/";
1242
+ const rootPrefix = `/${url.split("/")[1]}`;
1243
+ return pathname === url || pathname.startsWith(rootPrefix);
1125
1244
  }
1126
-
1127
- // src/components/composed/nav-user.tsx
1128
- var import_jsx_runtime10 = require("react/jsx-runtime");
1129
- var NavUser = (0, import_react2.memo)(function NavUser2({
1245
+ var AppSidebar = (0, import_react.memo)(function AppSidebar2({
1130
1246
  name,
1131
1247
  email,
1248
+ orgRole,
1249
+ brand = "Prediktif",
1250
+ href,
1251
+ confirmDialog = false,
1252
+ headerDropdown = false,
1132
1253
  image,
1133
- render
1254
+ defaultOpen = true,
1255
+ navMainItems,
1256
+ navSecondaryItems = [],
1257
+ organizations,
1258
+ activeOrg,
1259
+ setActiveOrg,
1260
+ children
1134
1261
  }) {
1262
+ const _isMobile = useIsMobile();
1263
+ const pathname = (0, import_navigation.usePathname)();
1264
+ const segments = pathname ? pathname.split("/").filter(Boolean) : [];
1135
1265
  const initials = name ? name.trim().split(" ").map((n) => n[0]).join("").substring(0, 2).toUpperCase() : "U";
1136
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SidebarMenuButton, { size: "lg", render, children: [
1137
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Avatar, { children: [
1138
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AvatarImage, { src: image || "", alt: name || "" }),
1139
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AvatarFallback, { children: initials })
1266
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarProvider, { defaultOpen, children: [
1267
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Sidebar, { collapsible: "icon", children: [
1268
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarHeader, { children: headerDropdown ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DropdownMenu, { children: [
1269
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1270
+ DropdownMenuTrigger,
1271
+ {
1272
+ render: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1273
+ SidebarMenuButton,
1274
+ {
1275
+ size: "lg",
1276
+ className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
1277
+ children: [
1278
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.Command, { className: "size-4" }) }),
1279
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1280
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate font-medium", children: (activeOrg == null ? void 0 : activeOrg.name) || brand }),
1281
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate text-xs", children: (activeOrg == null ? void 0 : activeOrg.plan) || orgRole })
1282
+ ] }),
1283
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.ChevronsUpDown, { className: "ml-auto" })
1284
+ ]
1285
+ }
1286
+ )
1287
+ }
1288
+ ),
1289
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1290
+ DropdownMenuContent,
1291
+ {
1292
+ className: "w-(--radix-dropdown-menu-trigger-width) min-w-60 rounded-lg",
1293
+ align: "start",
1294
+ side: "bottom",
1295
+ sideOffset: 4,
1296
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DropdownMenuGroup, { children: [
1297
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuLabel, { className: "text-xs text-muted-foreground", children: "Organizations" }),
1298
+ (organizations || []).map((org) => {
1299
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1300
+ DropdownMenuItem,
1301
+ {
1302
+ onClick: () => setActiveOrg == null ? void 0 : setActiveOrg(org),
1303
+ className: "gap-2 p-2",
1304
+ children: [
1305
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex size-6 items-center justify-center rounded-md border", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.Command, { className: "size-3.5 shrink-0" }) }),
1306
+ org.name
1307
+ ]
1308
+ },
1309
+ org.name
1310
+ );
1311
+ })
1312
+ ] })
1313
+ }
1314
+ )
1315
+ ] }) }) }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarMenuButton, { size: "lg", render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href: "/" }), children: [
1316
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.Command, { className: "size-4" }) }),
1317
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1318
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate font-medium", children: brand }),
1319
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate text-xs", children: orgRole })
1320
+ ] })
1321
+ ] }) }) }) }),
1322
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarContent, { children: [
1323
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarGroup, { children: [
1324
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarGroupLabel, { children: "Platform" }),
1325
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenu, { children: navMainItems.map(({ title, url, icon: Icon, locked }) => {
1326
+ const isActive = isRouteActive(url, pathname);
1327
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarMenuItem, { children: [
1328
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1329
+ SidebarMenuButton,
1330
+ {
1331
+ isActive,
1332
+ tooltip: title,
1333
+ render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href: url }),
1334
+ children: [
1335
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, {}),
1336
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { children: title })
1337
+ ]
1338
+ }
1339
+ ),
1340
+ locked && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenuBadge, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.LockIcon, { size: 12 }) })
1341
+ ] }, title);
1342
+ }) })
1343
+ ] }),
1344
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarGroup, { className: "mt-auto", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarGroupContent, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenu, { children: navSecondaryItems.map(({ title, url, icon: Icon, locked }) => {
1345
+ const isActive = isRouteActive(url, pathname);
1346
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarMenuItem, { children: [
1347
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1348
+ SidebarMenuButton,
1349
+ {
1350
+ size: "sm",
1351
+ isActive,
1352
+ tooltip: title,
1353
+ render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href: url }),
1354
+ children: [
1355
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, {}),
1356
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { children: title })
1357
+ ]
1358
+ }
1359
+ ),
1360
+ locked && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenuBadge, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react5.LockIcon, { size: 12 }) })
1361
+ ] }, title);
1362
+ }) }) }) })
1363
+ ] }),
1364
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenu, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarMenuItem, { children: confirmDialog ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(AlertDialog, { children: [
1365
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1366
+ AlertDialogTrigger,
1367
+ {
1368
+ render: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarMenuButton, { size: "lg", children: [
1369
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Avatar, { children: [
1370
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AvatarImage, { src: image || "", alt: name || "" }),
1371
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AvatarFallback, { children: initials })
1372
+ ] }),
1373
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1374
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate font-medium", children: name }),
1375
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: email })
1376
+ ] })
1377
+ ] })
1378
+ }
1379
+ ),
1380
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(AlertDialogContent, { children: [
1381
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(AlertDialogHeader, { children: [
1382
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AlertDialogTitle, { children: "Manage Account in Identity" }),
1383
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AlertDialogDescription, { children: "You will be redirected to the Identity website to manage your profile, account, and settings." })
1384
+ ] }),
1385
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(AlertDialogFooter, { children: [
1386
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AlertDialogCancel, { children: "Cancel" }),
1387
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1388
+ AlertDialogAction,
1389
+ {
1390
+ nativeButton: false,
1391
+ render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href, target: "_blank" }),
1392
+ children: "Continue"
1393
+ }
1394
+ )
1395
+ ] })
1396
+ ] })
1397
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarMenuButton, { size: "lg", render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href }), children: [
1398
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Avatar, { children: [
1399
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AvatarImage, { src: image || "", alt: name || "" }),
1400
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AvatarFallback, { children: initials })
1401
+ ] }),
1402
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1403
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate font-medium", children: name }),
1404
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: email })
1405
+ ] })
1406
+ ] }) }) }) }),
1407
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarRail, {})
1140
1408
  ] }),
1141
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1142
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "truncate font-medium", children: name }),
1143
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "truncate text-xs text-muted-foreground", children: email })
1409
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SidebarInset, { children: [
1410
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("header", { className: "flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-2 px-4", children: [
1411
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidebarTrigger, { className: "-ml-1" }),
1412
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1413
+ Separator,
1414
+ {
1415
+ orientation: "vertical",
1416
+ className: "mr-2 data-vertical:h-4 data-vertical:self-auto"
1417
+ }
1418
+ ),
1419
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Breadcrumb, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(BreadcrumbList, { children: [
1420
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BreadcrumbItem, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BreadcrumbLink, { render: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_link.default, { href: "/" }), children: "Platform" }) }),
1421
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BreadcrumbSeparator, {}),
1422
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BreadcrumbItem, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BreadcrumbPage, { children: segments.length === 0 ? "Overview" : formatSegment(
1423
+ segments[segments.length - 1],
1424
+ `/${segments.join("/")}`,
1425
+ navMainItems,
1426
+ navSecondaryItems
1427
+ ) }) })
1428
+ ] }) })
1429
+ ] }) }),
1430
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "p-4 pt-0", children })
1144
1431
  ] })
1145
- ] }) }) }) });
1432
+ ] });
1433
+ });
1434
+
1435
+ // src/components/composed/header-title.tsx
1436
+ var import_react2 = require("react");
1437
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1438
+ var HeaderTitle = (0, import_react2.memo)(function HeaderTitle2({
1439
+ title,
1440
+ subtitle,
1441
+ children
1442
+ }) {
1443
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "w-full space-y-4", children: [
1444
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
1445
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h1", { className: "font-semibold", children: title }),
1446
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-xs text-muted-foreground", children: subtitle })
1447
+ ] }),
1448
+ children
1449
+ ] });
1146
1450
  });
1147
1451
  // Annotate the CommonJS export names for ESM import in node:
1148
1452
  0 && (module.exports = {
1149
- HeaderTitle,
1150
- NavUser,
1151
- Sidebar,
1152
- SidebarContent,
1153
- SidebarFooter,
1154
- SidebarGroup,
1155
- SidebarGroupAction,
1156
- SidebarGroupContent,
1157
- SidebarGroupLabel,
1158
- SidebarHeader,
1159
- SidebarInput,
1160
- SidebarInset,
1161
- SidebarMenu,
1162
- SidebarMenuAction,
1163
- SidebarMenuBadge,
1164
- SidebarMenuButton,
1165
- SidebarMenuItem,
1166
- SidebarMenuSkeleton,
1167
- SidebarMenuSub,
1168
- SidebarMenuSubButton,
1169
- SidebarMenuSubItem,
1170
- SidebarProvider,
1171
- SidebarRail,
1172
- SidebarSeparator,
1173
- SidebarTrigger,
1174
- useSidebar
1453
+ AppSidebar,
1454
+ HeaderTitle
1175
1455
  });