@motor-hero/ui-kit 0.10.1 → 0.11.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.
Files changed (55) hide show
  1. package/dist/components/app-shell.d.ts +1 -1
  2. package/dist/components/app-shell.d.ts.map +1 -1
  3. package/dist/components/auth-card.d.ts +1 -1
  4. package/dist/components/auth-card.d.ts.map +1 -1
  5. package/dist/components/confirm-dialog.d.ts +1 -1
  6. package/dist/components/confirm-dialog.d.ts.map +1 -1
  7. package/dist/components/data-table-wrapper.d.ts +1 -1
  8. package/dist/components/data-table-wrapper.d.ts.map +1 -1
  9. package/dist/components/empty-state.d.ts +1 -1
  10. package/dist/components/empty-state.d.ts.map +1 -1
  11. package/dist/components/form-dialog.d.ts +1 -1
  12. package/dist/components/form-dialog.d.ts.map +1 -1
  13. package/dist/components/form-field.d.ts +1 -1
  14. package/dist/components/form-field.d.ts.map +1 -1
  15. package/dist/components/mobile-card-list.d.ts +1 -1
  16. package/dist/components/mobile-card-list.d.ts.map +1 -1
  17. package/dist/components/mode-toggle.d.ts +1 -1
  18. package/dist/components/mode-toggle.d.ts.map +1 -1
  19. package/dist/components/page-header.d.ts +1 -1
  20. package/dist/components/page-header.d.ts.map +1 -1
  21. package/dist/components/pagination.d.ts +1 -1
  22. package/dist/components/pagination.d.ts.map +1 -1
  23. package/dist/components/progress-bar.d.ts +12 -0
  24. package/dist/components/progress-bar.d.ts.map +1 -0
  25. package/dist/components/responsive-data-view.d.ts +1 -1
  26. package/dist/components/responsive-data-view.d.ts.map +1 -1
  27. package/dist/components/row-actions-menu.d.ts +1 -1
  28. package/dist/components/row-actions-menu.d.ts.map +1 -1
  29. package/dist/components/sidebar-nav.d.ts +1 -1
  30. package/dist/components/sidebar-nav.d.ts.map +1 -1
  31. package/dist/components/stat-card.d.ts +1 -1
  32. package/dist/components/stat-card.d.ts.map +1 -1
  33. package/dist/components/status-badge.d.ts +11 -0
  34. package/dist/components/status-badge.d.ts.map +1 -0
  35. package/dist/components/status-dot.d.ts +1 -1
  36. package/dist/components/status-dot.d.ts.map +1 -1
  37. package/dist/components/table-skeleton.d.ts +1 -1
  38. package/dist/components/table-skeleton.d.ts.map +1 -1
  39. package/dist/components/theme-provider.d.ts +1 -1
  40. package/dist/components/theme-provider.d.ts.map +1 -1
  41. package/dist/components/toaster.d.ts +1 -1
  42. package/dist/components/toaster.d.ts.map +1 -1
  43. package/dist/components/user-menu.d.ts +1 -1
  44. package/dist/components/user-menu.d.ts.map +1 -1
  45. package/dist/index.cjs +229 -135
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +227 -135
  50. package/dist/index.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/components/page-header.tsx +8 -4
  53. package/src/components/progress-bar.tsx +49 -0
  54. package/src/components/status-badge.tsx +63 -0
  55. package/src/index.ts +3 -0
package/dist/index.js CHANGED
@@ -157,13 +157,19 @@ function ConfirmDialog({
157
157
  // src/components/page-header.tsx
158
158
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
159
159
  function PageHeader({ title, description, action, className }) {
160
- return /* @__PURE__ */ jsxs4("div", { className: `flex items-center justify-between ${className ?? ""}`, children: [
161
- /* @__PURE__ */ jsxs4("div", { children: [
162
- /* @__PURE__ */ jsx5("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
163
- description && /* @__PURE__ */ jsx5("p", { className: "text-sm text-muted-foreground", children: description })
164
- ] }),
165
- action && /* @__PURE__ */ jsx5("div", { children: action })
166
- ] });
160
+ return /* @__PURE__ */ jsxs4(
161
+ "div",
162
+ {
163
+ className: `flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between ${className ?? ""}`,
164
+ children: [
165
+ /* @__PURE__ */ jsxs4("div", { className: "min-w-0", children: [
166
+ /* @__PURE__ */ jsx5("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
167
+ description && /* @__PURE__ */ jsx5("p", { className: "text-sm text-muted-foreground", children: description })
168
+ ] }),
169
+ action && /* @__PURE__ */ jsx5("div", { className: "shrink-0", children: action })
170
+ ]
171
+ }
172
+ );
167
173
  }
168
174
 
169
175
  // src/components/status-dot.tsx
@@ -180,28 +186,112 @@ function StatusDot({ active, label, className }) {
180
186
  ] });
181
187
  }
182
188
 
183
- // src/components/form-field.tsx
189
+ // src/components/status-badge.tsx
184
190
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
191
+ var variantClasses = {
192
+ neutral: {
193
+ badge: "bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-300",
194
+ dot: "bg-gray-400"
195
+ },
196
+ info: {
197
+ badge: "bg-blue-100 text-blue-700 dark:bg-blue-950 dark:text-blue-400",
198
+ dot: "bg-blue-500"
199
+ },
200
+ success: {
201
+ badge: "bg-green-100 text-green-700 dark:bg-green-950 dark:text-green-400",
202
+ dot: "bg-green-500"
203
+ },
204
+ danger: {
205
+ badge: "bg-red-100 text-red-700 dark:bg-red-950 dark:text-red-400",
206
+ dot: "bg-red-500"
207
+ },
208
+ warning: {
209
+ badge: "bg-amber-100 text-amber-700 dark:bg-amber-950 dark:text-amber-400",
210
+ dot: "bg-amber-500"
211
+ }
212
+ };
213
+ function StatusBadge({
214
+ variant = "neutral",
215
+ dot = true,
216
+ className,
217
+ children
218
+ }) {
219
+ const classes = variantClasses[variant];
220
+ return /* @__PURE__ */ jsxs6(
221
+ "span",
222
+ {
223
+ className: `inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-xs font-medium ${classes.badge} ${className ?? ""}`,
224
+ children: [
225
+ dot && /* @__PURE__ */ jsx7(
226
+ "span",
227
+ {
228
+ className: `inline-block h-1.5 w-1.5 shrink-0 rounded-full ${classes.dot}`
229
+ }
230
+ ),
231
+ children
232
+ ]
233
+ }
234
+ );
235
+ }
236
+
237
+ // src/components/progress-bar.tsx
238
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
239
+ var sizeClasses = {
240
+ sm: "h-1.5",
241
+ md: "h-2"
242
+ };
243
+ function ProgressBar({
244
+ value,
245
+ size = "md",
246
+ label,
247
+ valueLabel,
248
+ className,
249
+ indicatorClassName
250
+ }) {
251
+ const clamped = Math.min(100, Math.max(0, value));
252
+ return /* @__PURE__ */ jsxs7("div", { className: `space-y-1.5 ${className ?? ""}`, children: [
253
+ (label || valueLabel) && /* @__PURE__ */ jsxs7("div", { className: "flex items-baseline justify-between gap-2", children: [
254
+ label && /* @__PURE__ */ jsx8("span", { className: "text-sm text-muted-foreground", children: label }),
255
+ valueLabel && /* @__PURE__ */ jsx8("span", { className: "text-sm font-semibold", children: valueLabel })
256
+ ] }),
257
+ /* @__PURE__ */ jsx8(
258
+ "div",
259
+ {
260
+ className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses[size]}`,
261
+ children: /* @__PURE__ */ jsx8(
262
+ "div",
263
+ {
264
+ className: `h-full rounded-full transition-all duration-300 ${indicatorClassName ?? "bg-primary"}`,
265
+ style: { width: `${clamped}%` }
266
+ }
267
+ )
268
+ }
269
+ )
270
+ ] });
271
+ }
272
+
273
+ // src/components/form-field.tsx
274
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
185
275
  function FormField({ label, htmlFor, error, required, children, className }) {
186
- return /* @__PURE__ */ jsxs6("div", { className: `space-y-2 ${className ?? ""}`, children: [
187
- /* @__PURE__ */ jsxs6(
276
+ return /* @__PURE__ */ jsxs8("div", { className: `space-y-2 ${className ?? ""}`, children: [
277
+ /* @__PURE__ */ jsxs8(
188
278
  "label",
189
279
  {
190
280
  htmlFor,
191
281
  className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
192
282
  children: [
193
283
  label,
194
- required && /* @__PURE__ */ jsx7("span", { className: "ml-1 text-destructive", children: "*" })
284
+ required && /* @__PURE__ */ jsx9("span", { className: "ml-1 text-destructive", children: "*" })
195
285
  ]
196
286
  }
197
287
  ),
198
288
  children,
199
- error && /* @__PURE__ */ jsx7("p", { className: "text-sm text-destructive", children: error })
289
+ error && /* @__PURE__ */ jsx9("p", { className: "text-sm text-destructive", children: error })
200
290
  ] });
201
291
  }
202
292
 
203
293
  // src/components/form-dialog.tsx
204
- import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
294
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
205
295
  function FormDialogLayout({
206
296
  title,
207
297
  children,
@@ -212,11 +302,11 @@ function FormDialogLayout({
212
302
  isSubmitting = false,
213
303
  isDisabled = false
214
304
  }) {
215
- return /* @__PURE__ */ jsxs7("form", { onSubmit, children: [
216
- /* @__PURE__ */ jsx8("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ jsx8("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
217
- /* @__PURE__ */ jsx8("div", { className: "space-y-4 py-4", children }),
218
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
219
- /* @__PURE__ */ jsx8(
305
+ return /* @__PURE__ */ jsxs9("form", { onSubmit, children: [
306
+ /* @__PURE__ */ jsx10("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left", children: /* @__PURE__ */ jsx10("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }) }),
307
+ /* @__PURE__ */ jsx10("div", { className: "space-y-4 py-4", children }),
308
+ /* @__PURE__ */ jsxs9("div", { className: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", children: [
309
+ /* @__PURE__ */ jsx10(
220
310
  "button",
221
311
  {
222
312
  type: "button",
@@ -225,7 +315,7 @@ function FormDialogLayout({
225
315
  children: cancelLabel
226
316
  }
227
317
  ),
228
- /* @__PURE__ */ jsx8(
318
+ /* @__PURE__ */ jsx10(
229
319
  "button",
230
320
  {
231
321
  type: "submit",
@@ -239,23 +329,23 @@ function FormDialogLayout({
239
329
  }
240
330
 
241
331
  // src/components/auth-card.tsx
242
- import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
332
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
243
333
  function AuthCard({ title, description, children, footer }) {
244
- return /* @__PURE__ */ jsx9("div", { className: "flex min-h-screen items-center justify-center px-4", children: /* @__PURE__ */ jsxs8("div", { className: "w-full max-w-sm rounded-lg border bg-card p-6 shadow-sm", children: [
245
- /* @__PURE__ */ jsxs8("div", { className: "mb-6 text-center", children: [
246
- /* @__PURE__ */ jsx9("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
247
- description && /* @__PURE__ */ jsx9("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
334
+ return /* @__PURE__ */ jsx11("div", { className: "flex min-h-screen items-center justify-center px-4", children: /* @__PURE__ */ jsxs10("div", { className: "w-full max-w-sm rounded-lg border bg-card p-6 shadow-sm", children: [
335
+ /* @__PURE__ */ jsxs10("div", { className: "mb-6 text-center", children: [
336
+ /* @__PURE__ */ jsx11("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
337
+ description && /* @__PURE__ */ jsx11("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
248
338
  ] }),
249
- /* @__PURE__ */ jsx9("div", { className: "space-y-4", children }),
250
- footer && /* @__PURE__ */ jsx9("div", { className: "mt-4", children: footer })
339
+ /* @__PURE__ */ jsx11("div", { className: "space-y-4", children }),
340
+ footer && /* @__PURE__ */ jsx11("div", { className: "mt-4", children: footer })
251
341
  ] }) });
252
342
  }
253
343
 
254
344
  // src/components/pagination.tsx
255
- import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
345
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
256
346
  function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, className }) {
257
- return /* @__PURE__ */ jsxs9("div", { className: `flex items-center justify-end gap-4 ${className ?? ""}`, children: [
258
- /* @__PURE__ */ jsx10(
347
+ return /* @__PURE__ */ jsxs11("div", { className: `flex items-center justify-end gap-4 ${className ?? ""}`, children: [
348
+ /* @__PURE__ */ jsx12(
259
349
  "button",
260
350
  {
261
351
  type: "button",
@@ -265,11 +355,11 @@ function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, classNam
265
355
  children: "Anterior"
266
356
  }
267
357
  ),
268
- /* @__PURE__ */ jsxs9("span", { className: "text-sm text-muted-foreground", children: [
358
+ /* @__PURE__ */ jsxs11("span", { className: "text-sm text-muted-foreground", children: [
269
359
  "P\xE1gina ",
270
360
  page
271
361
  ] }),
272
- /* @__PURE__ */ jsx10(
362
+ /* @__PURE__ */ jsx12(
273
363
  "button",
274
364
  {
275
365
  type: "button",
@@ -283,18 +373,18 @@ function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, classNam
283
373
  }
284
374
 
285
375
  // src/components/table-skeleton.tsx
286
- import { Fragment, jsx as jsx11 } from "react/jsx-runtime";
376
+ import { Fragment, jsx as jsx13 } from "react/jsx-runtime";
287
377
  function TableSkeleton({ rows = 5, columns = 4 }) {
288
- return /* @__PURE__ */ jsx11(Fragment, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx11("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx11("td", { className: "p-4 align-middle", children: /* @__PURE__ */ jsx11("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
378
+ return /* @__PURE__ */ jsx13(Fragment, { children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx13("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx13("td", { className: "p-4 align-middle", children: /* @__PURE__ */ jsx13("div", { className: "h-5 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)) });
289
379
  }
290
380
 
291
381
  // src/components/search-input.tsx
292
382
  import * as React from "react";
293
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
383
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
294
384
  var SearchInput = React.forwardRef(
295
385
  ({ containerClassName, className, ...props }, ref) => {
296
- return /* @__PURE__ */ jsxs10("div", { className: `relative flex-1 ${containerClassName ?? ""}`, children: [
297
- /* @__PURE__ */ jsxs10(
386
+ return /* @__PURE__ */ jsxs12("div", { className: `relative flex-1 ${containerClassName ?? ""}`, children: [
387
+ /* @__PURE__ */ jsxs12(
298
388
  "svg",
299
389
  {
300
390
  xmlns: "http://www.w3.org/2000/svg",
@@ -308,12 +398,12 @@ var SearchInput = React.forwardRef(
308
398
  strokeLinejoin: "round",
309
399
  className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",
310
400
  children: [
311
- /* @__PURE__ */ jsx12("circle", { cx: "11", cy: "11", r: "8" }),
312
- /* @__PURE__ */ jsx12("path", { d: "m21 21-4.3-4.3" })
401
+ /* @__PURE__ */ jsx14("circle", { cx: "11", cy: "11", r: "8" }),
402
+ /* @__PURE__ */ jsx14("path", { d: "m21 21-4.3-4.3" })
313
403
  ]
314
404
  }
315
405
  ),
316
- /* @__PURE__ */ jsx12(
406
+ /* @__PURE__ */ jsx14(
317
407
  "input",
318
408
  {
319
409
  ref,
@@ -328,30 +418,30 @@ var SearchInput = React.forwardRef(
328
418
  SearchInput.displayName = "SearchInput";
329
419
 
330
420
  // src/components/stat-card.tsx
331
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
421
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
332
422
  function StatCard({ label, value, detail, icon, isLoading }) {
333
423
  if (isLoading) {
334
- return /* @__PURE__ */ jsxs11("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
335
- /* @__PURE__ */ jsxs11("div", { className: "flex items-center justify-between pb-2", children: [
336
- /* @__PURE__ */ jsx13("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
337
- /* @__PURE__ */ jsx13("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
424
+ return /* @__PURE__ */ jsxs13("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
425
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between pb-2", children: [
426
+ /* @__PURE__ */ jsx15("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
427
+ /* @__PURE__ */ jsx15("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
338
428
  ] }),
339
- /* @__PURE__ */ jsx13("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
340
- /* @__PURE__ */ jsx13("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
429
+ /* @__PURE__ */ jsx15("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
430
+ /* @__PURE__ */ jsx15("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
341
431
  ] });
342
432
  }
343
- return /* @__PURE__ */ jsxs11("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
344
- /* @__PURE__ */ jsxs11("div", { className: "flex items-center justify-between pb-2", children: [
345
- /* @__PURE__ */ jsx13("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
346
- icon && /* @__PURE__ */ jsx13("span", { className: "text-muted-foreground", children: icon })
433
+ return /* @__PURE__ */ jsxs13("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
434
+ /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between pb-2", children: [
435
+ /* @__PURE__ */ jsx15("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
436
+ icon && /* @__PURE__ */ jsx15("span", { className: "text-muted-foreground", children: icon })
347
437
  ] }),
348
- /* @__PURE__ */ jsx13("div", { className: "text-2xl font-bold", children: value }),
349
- detail && /* @__PURE__ */ jsx13("p", { className: "text-xs text-muted-foreground", children: detail })
438
+ /* @__PURE__ */ jsx15("div", { className: "text-2xl font-bold", children: value }),
439
+ detail && /* @__PURE__ */ jsx15("p", { className: "text-xs text-muted-foreground", children: detail })
350
440
  ] });
351
441
  }
352
442
 
353
443
  // src/components/data-table-wrapper.tsx
354
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
444
+ import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
355
445
  function DataTableWrapper({
356
446
  children,
357
447
  isEmpty,
@@ -364,15 +454,15 @@ function DataTableWrapper({
364
454
  hasNextPage = false,
365
455
  hasPreviousPage = false
366
456
  }) {
367
- return /* @__PURE__ */ jsxs12("div", { className: "space-y-4", children: [
368
- /* @__PURE__ */ jsx14("div", { className: "overflow-x-auto rounded-md border", children }),
369
- !isLoading && isEmpty && /* @__PURE__ */ jsxs12("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
370
- emptyIcon && /* @__PURE__ */ jsx14("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
371
- /* @__PURE__ */ jsx14("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
372
- emptyDescription && /* @__PURE__ */ jsx14("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
457
+ return /* @__PURE__ */ jsxs14("div", { className: "space-y-4", children: [
458
+ /* @__PURE__ */ jsx16("div", { className: "overflow-x-auto rounded-md border", children }),
459
+ !isLoading && isEmpty && /* @__PURE__ */ jsxs14("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
460
+ emptyIcon && /* @__PURE__ */ jsx16("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
461
+ /* @__PURE__ */ jsx16("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
462
+ emptyDescription && /* @__PURE__ */ jsx16("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
373
463
  ] }),
374
- page !== void 0 && onPageChange && /* @__PURE__ */ jsxs12("div", { className: "flex items-center justify-end gap-4", children: [
375
- /* @__PURE__ */ jsx14(
464
+ page !== void 0 && onPageChange && /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-end gap-4", children: [
465
+ /* @__PURE__ */ jsx16(
376
466
  "button",
377
467
  {
378
468
  type: "button",
@@ -382,11 +472,11 @@ function DataTableWrapper({
382
472
  children: "Anterior"
383
473
  }
384
474
  ),
385
- /* @__PURE__ */ jsxs12("span", { className: "text-sm text-muted-foreground", children: [
475
+ /* @__PURE__ */ jsxs14("span", { className: "text-sm text-muted-foreground", children: [
386
476
  "P\xE1gina ",
387
477
  page
388
478
  ] }),
389
- /* @__PURE__ */ jsx14(
479
+ /* @__PURE__ */ jsx16(
390
480
  "button",
391
481
  {
392
482
  type: "button",
@@ -401,7 +491,7 @@ function DataTableWrapper({
401
491
  }
402
492
 
403
493
  // src/components/mobile-card-list.tsx
404
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
494
+ import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
405
495
  function MobileCardList({
406
496
  data,
407
497
  renderCard,
@@ -411,19 +501,19 @@ function MobileCardList({
411
501
  className
412
502
  }) {
413
503
  if (isLoading) {
414
- return /* @__PURE__ */ jsx15("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx15("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs13("div", { className: "space-y-3", children: [
415
- /* @__PURE__ */ jsxs13("div", { className: "flex justify-between", children: [
416
- /* @__PURE__ */ jsx15("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
417
- /* @__PURE__ */ jsx15("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
504
+ return /* @__PURE__ */ jsx17("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx17("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
505
+ /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
506
+ /* @__PURE__ */ jsx17("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
507
+ /* @__PURE__ */ jsx17("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
418
508
  ] }),
419
- /* @__PURE__ */ jsx15("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
420
- /* @__PURE__ */ jsxs13("div", { className: "flex justify-between", children: [
421
- /* @__PURE__ */ jsx15("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
422
- /* @__PURE__ */ jsx15("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
509
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
510
+ /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
511
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
512
+ /* @__PURE__ */ jsx17("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
423
513
  ] })
424
514
  ] }) }, i)) });
425
515
  }
426
- return /* @__PURE__ */ jsx15("div", { className: `space-y-3 ${className ?? ""}`, children: data.map((item, index) => /* @__PURE__ */ jsx15(
516
+ return /* @__PURE__ */ jsx17("div", { className: `space-y-3 ${className ?? ""}`, children: data.map((item, index) => /* @__PURE__ */ jsx17(
427
517
  "div",
428
518
  {
429
519
  className: "rounded-xl border p-4 transition-all duration-150 hover:border-foreground/20 active:scale-[0.99]",
@@ -434,7 +524,7 @@ function MobileCardList({
434
524
  }
435
525
 
436
526
  // src/components/responsive-data-view.tsx
437
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
527
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
438
528
  function ResponsiveDataView({
439
529
  table,
440
530
  cards,
@@ -445,13 +535,13 @@ function ResponsiveDataView({
445
535
  emptyDescription,
446
536
  pagination
447
537
  }) {
448
- return /* @__PURE__ */ jsxs14("div", { className: "space-y-4", children: [
449
- /* @__PURE__ */ jsx16("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
450
- /* @__PURE__ */ jsx16("div", { className: "md:hidden", children: cards }),
451
- !isLoading && isEmpty && /* @__PURE__ */ jsxs14("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
452
- emptyIcon && /* @__PURE__ */ jsx16("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
453
- /* @__PURE__ */ jsx16("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
454
- emptyDescription && /* @__PURE__ */ jsx16("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
538
+ return /* @__PURE__ */ jsxs16("div", { className: "space-y-4", children: [
539
+ /* @__PURE__ */ jsx18("div", { className: "hidden overflow-x-auto rounded-md border md:block", children: table }),
540
+ /* @__PURE__ */ jsx18("div", { className: "md:hidden", children: cards }),
541
+ !isLoading && isEmpty && /* @__PURE__ */ jsxs16("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
542
+ emptyIcon && /* @__PURE__ */ jsx18("div", { className: "mb-4 text-muted-foreground", children: emptyIcon }),
543
+ /* @__PURE__ */ jsx18("h3", { className: "text-lg font-semibold tracking-tight", children: emptyTitle }),
544
+ emptyDescription && /* @__PURE__ */ jsx18("p", { className: "mt-1 max-w-sm text-sm text-muted-foreground", children: emptyDescription })
455
545
  ] }),
456
546
  pagination
457
547
  ] });
@@ -459,10 +549,10 @@ function ResponsiveDataView({
459
549
 
460
550
  // src/components/toaster.tsx
461
551
  import { Toaster as Sonner } from "sonner";
462
- import { jsx as jsx17 } from "react/jsx-runtime";
552
+ import { jsx as jsx19 } from "react/jsx-runtime";
463
553
  function Toaster(props) {
464
554
  const { theme = "system" } = useTheme();
465
- return /* @__PURE__ */ jsx17(
555
+ return /* @__PURE__ */ jsx19(
466
556
  Sonner,
467
557
  {
468
558
  theme,
@@ -497,11 +587,11 @@ function cn(...inputs) {
497
587
  import { Fragment as Fragment2 } from "react";
498
588
 
499
589
  // src/components/types.tsx
500
- import { jsx as jsx18 } from "react/jsx-runtime";
501
- var defaultRenderLink = ({ children, ...props }) => /* @__PURE__ */ jsx18("a", { ...props, children });
590
+ import { jsx as jsx20 } from "react/jsx-runtime";
591
+ var defaultRenderLink = ({ children, ...props }) => /* @__PURE__ */ jsx20("a", { ...props, children });
502
592
 
503
593
  // src/components/sidebar-nav.tsx
504
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
594
+ import { Fragment as Fragment3, jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
505
595
  function defaultIsActive(item, activePath) {
506
596
  if (item.href === "/") return activePath === "/";
507
597
  return activePath === item.href || activePath.startsWith(item.href + "/");
@@ -516,7 +606,7 @@ function SidebarNav({
516
606
  onNavigate
517
607
  }) {
518
608
  const visible = items.filter((item) => !item.adminOnly || isAdmin);
519
- return /* @__PURE__ */ jsx19("nav", { className: "flex flex-col gap-1", children: visible.map((item) => {
609
+ return /* @__PURE__ */ jsx21("nav", { className: "flex flex-col gap-1", children: visible.map((item) => {
520
610
  const active = isActive(item, activePath);
521
611
  const link = renderLink({
522
612
  href: item.href,
@@ -528,19 +618,19 @@ function SidebarNav({
528
618
  active ? "bg-accent text-accent-foreground font-semibold" : "text-muted-foreground hover:bg-accent hover:text-accent-foreground",
529
619
  isCollapsed && "justify-center px-2"
530
620
  ),
531
- children: /* @__PURE__ */ jsxs15(Fragment3, { children: [
532
- item.icon && /* @__PURE__ */ jsx19("span", { className: "shrink-0", children: item.icon }),
533
- !isCollapsed && /* @__PURE__ */ jsx19("span", { className: "truncate", children: item.label })
621
+ children: /* @__PURE__ */ jsxs17(Fragment3, { children: [
622
+ item.icon && /* @__PURE__ */ jsx21("span", { className: "shrink-0", children: item.icon }),
623
+ !isCollapsed && /* @__PURE__ */ jsx21("span", { className: "truncate", children: item.label })
534
624
  ] })
535
625
  });
536
- return /* @__PURE__ */ jsx19(Fragment2, { children: link }, item.href);
626
+ return /* @__PURE__ */ jsx21(Fragment2, { children: link }, item.href);
537
627
  }) });
538
628
  }
539
629
 
540
630
  // src/components/user-menu.tsx
541
631
  import * as DropdownMenu2 from "@radix-ui/react-dropdown-menu";
542
632
  import { LogOut, User } from "lucide-react";
543
- import { Fragment as Fragment4, jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
633
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
544
634
  function initials(user) {
545
635
  const source = user?.name?.trim() || user?.email?.trim();
546
636
  if (!source) return "";
@@ -558,44 +648,44 @@ function UserMenu({
558
648
  align = "end"
559
649
  }) {
560
650
  const label = initials(user);
561
- return /* @__PURE__ */ jsxs16(DropdownMenu2.Root, { children: [
562
- /* @__PURE__ */ jsx20(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsx20(
651
+ return /* @__PURE__ */ jsxs18(DropdownMenu2.Root, { children: [
652
+ /* @__PURE__ */ jsx22(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsx22(
563
653
  "button",
564
654
  {
565
655
  type: "button",
566
656
  className: "inline-flex h-9 w-9 items-center justify-center overflow-hidden rounded-full border border-input bg-background text-xs font-semibold shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
567
657
  "aria-label": "Menu do usu\xE1rio",
568
658
  "data-testid": "user-menu",
569
- children: user?.avatarUrl ? /* @__PURE__ */ jsx20("img", { src: user.avatarUrl, alt: user.name ?? user.email ?? "Avatar", className: "h-full w-full object-cover" }) : label ? /* @__PURE__ */ jsx20("span", { children: label }) : /* @__PURE__ */ jsx20(User, { className: "h-4 w-4" })
659
+ children: user?.avatarUrl ? /* @__PURE__ */ jsx22("img", { src: user.avatarUrl, alt: user.name ?? user.email ?? "Avatar", className: "h-full w-full object-cover" }) : label ? /* @__PURE__ */ jsx22("span", { children: label }) : /* @__PURE__ */ jsx22(User, { className: "h-4 w-4" })
570
660
  }
571
661
  ) }),
572
- /* @__PURE__ */ jsx20(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs16(
662
+ /* @__PURE__ */ jsx22(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs18(
573
663
  DropdownMenu2.Content,
574
664
  {
575
665
  align,
576
666
  sideOffset: 6,
577
667
  className: "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
578
668
  children: [
579
- (user?.name || user?.email) && /* @__PURE__ */ jsxs16(Fragment4, { children: [
580
- /* @__PURE__ */ jsxs16("div", { className: "px-2 py-1.5", children: [
581
- user.name && /* @__PURE__ */ jsx20("p", { className: "truncate text-sm font-medium", children: user.name }),
582
- user.email && /* @__PURE__ */ jsx20("p", { className: "truncate text-xs text-muted-foreground", children: user.email })
669
+ (user?.name || user?.email) && /* @__PURE__ */ jsxs18(Fragment4, { children: [
670
+ /* @__PURE__ */ jsxs18("div", { className: "px-2 py-1.5", children: [
671
+ user.name && /* @__PURE__ */ jsx22("p", { className: "truncate text-sm font-medium", children: user.name }),
672
+ user.email && /* @__PURE__ */ jsx22("p", { className: "truncate text-xs text-muted-foreground", children: user.email })
583
673
  ] }),
584
- /* @__PURE__ */ jsx20(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" })
674
+ /* @__PURE__ */ jsx22(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" })
585
675
  ] }),
586
676
  items.map(
587
- (item) => item.href ? /* @__PURE__ */ jsx20(DropdownMenu2.Item, { asChild: true, children: renderLink({ href: item.href, className: itemClass, children: /* @__PURE__ */ jsxs16(Fragment4, { children: [
677
+ (item) => item.href ? /* @__PURE__ */ jsx22(DropdownMenu2.Item, { asChild: true, children: renderLink({ href: item.href, className: itemClass, children: /* @__PURE__ */ jsxs18(Fragment4, { children: [
588
678
  item.icon,
589
679
  item.label
590
- ] }) }) }, item.label) : /* @__PURE__ */ jsxs16(DropdownMenu2.Item, { className: itemClass, onClick: item.onClick, children: [
680
+ ] }) }) }, item.label) : /* @__PURE__ */ jsxs18(DropdownMenu2.Item, { className: itemClass, onClick: item.onClick, children: [
591
681
  item.icon,
592
682
  item.label
593
683
  ] }, item.label)
594
684
  ),
595
- onLogout && /* @__PURE__ */ jsxs16(Fragment4, { children: [
596
- items.length > 0 && /* @__PURE__ */ jsx20(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" }),
597
- /* @__PURE__ */ jsxs16(DropdownMenu2.Item, { className: cn(itemClass, "text-destructive focus:bg-destructive/10"), onClick: onLogout, children: [
598
- /* @__PURE__ */ jsx20(LogOut, { className: "h-4 w-4" }),
685
+ onLogout && /* @__PURE__ */ jsxs18(Fragment4, { children: [
686
+ items.length > 0 && /* @__PURE__ */ jsx22(DropdownMenu2.Separator, { className: "-mx-1 my-1 h-px bg-border" }),
687
+ /* @__PURE__ */ jsxs18(DropdownMenu2.Item, { className: cn(itemClass, "text-destructive focus:bg-destructive/10"), onClick: onLogout, children: [
688
+ /* @__PURE__ */ jsx22(LogOut, { className: "h-4 w-4" }),
599
689
  logoutLabel
600
690
  ] })
601
691
  ] })
@@ -606,7 +696,7 @@ function UserMenu({
606
696
  }
607
697
 
608
698
  // src/components/app-shell.tsx
609
- import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
699
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
610
700
  function AppShell({
611
701
  brand,
612
702
  brandCollapsed,
@@ -625,7 +715,7 @@ function AppShell({
625
715
  }) {
626
716
  const [collapsed, setCollapsed] = useState2(defaultCollapsed);
627
717
  const [mobileOpen, setMobileOpen] = useState2(false);
628
- const nav = (isCollapsed, onNavigate) => /* @__PURE__ */ jsx21(
718
+ const nav = (isCollapsed, onNavigate) => /* @__PURE__ */ jsx23(
629
719
  SidebarNav,
630
720
  {
631
721
  items: navItems,
@@ -637,8 +727,8 @@ function AppShell({
637
727
  onNavigate
638
728
  }
639
729
  );
640
- return /* @__PURE__ */ jsxs17("div", { className: "flex h-screen overflow-hidden bg-background", children: [
641
- /* @__PURE__ */ jsxs17(
730
+ return /* @__PURE__ */ jsxs19("div", { className: "flex h-screen overflow-hidden bg-background", children: [
731
+ /* @__PURE__ */ jsxs19(
642
732
  "aside",
643
733
  {
644
734
  className: cn(
@@ -646,22 +736,22 @@ function AppShell({
646
736
  collapsed ? "w-16" : "w-60"
647
737
  ),
648
738
  children: [
649
- /* @__PURE__ */ jsx21("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: collapsed ? brandCollapsed ?? brand : brand }),
650
- /* @__PURE__ */ jsx21("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(collapsed) }),
651
- collapsible && /* @__PURE__ */ jsx21("div", { className: "border-t p-2", children: /* @__PURE__ */ jsx21(
739
+ /* @__PURE__ */ jsx23("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: collapsed ? brandCollapsed ?? brand : brand }),
740
+ /* @__PURE__ */ jsx23("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(collapsed) }),
741
+ collapsible && /* @__PURE__ */ jsx23("div", { className: "border-t p-2", children: /* @__PURE__ */ jsx23(
652
742
  "button",
653
743
  {
654
744
  type: "button",
655
745
  onClick: () => setCollapsed((v) => !v),
656
746
  className: "flex w-full items-center justify-center rounded-md px-2 py-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
657
747
  "aria-label": collapsed ? "Expandir menu" : "Recolher menu",
658
- children: collapsed ? /* @__PURE__ */ jsx21(ChevronRight, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx21(ChevronLeft, { className: "h-4 w-4" })
748
+ children: collapsed ? /* @__PURE__ */ jsx23(ChevronRight, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx23(ChevronLeft, { className: "h-4 w-4" })
659
749
  }
660
750
  ) })
661
751
  ]
662
752
  }
663
753
  ),
664
- /* @__PURE__ */ jsxs17(
754
+ /* @__PURE__ */ jsxs19(
665
755
  "div",
666
756
  {
667
757
  className: cn(
@@ -670,8 +760,8 @@ function AppShell({
670
760
  ),
671
761
  onClick: () => setMobileOpen(false),
672
762
  children: [
673
- /* @__PURE__ */ jsx21("div", { className: "absolute inset-0 bg-black/50" }),
674
- /* @__PURE__ */ jsxs17(
763
+ /* @__PURE__ */ jsx23("div", { className: "absolute inset-0 bg-black/50" }),
764
+ /* @__PURE__ */ jsxs19(
675
765
  "div",
676
766
  {
677
767
  className: cn(
@@ -680,32 +770,32 @@ function AppShell({
680
770
  ),
681
771
  onClick: (e) => e.stopPropagation(),
682
772
  children: [
683
- /* @__PURE__ */ jsx21("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: brand }),
684
- /* @__PURE__ */ jsx21("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(false, () => setMobileOpen(false)) })
773
+ /* @__PURE__ */ jsx23("div", { className: "flex h-14 shrink-0 items-center border-b px-4", children: brand }),
774
+ /* @__PURE__ */ jsx23("div", { className: "flex-1 overflow-y-auto px-2 py-4", children: nav(false, () => setMobileOpen(false)) })
685
775
  ]
686
776
  }
687
777
  )
688
778
  ]
689
779
  }
690
780
  ),
691
- /* @__PURE__ */ jsxs17("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
692
- /* @__PURE__ */ jsxs17("header", { className: "flex h-14 shrink-0 items-center gap-2 border-b bg-background px-4", children: [
693
- /* @__PURE__ */ jsx21(
781
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
782
+ /* @__PURE__ */ jsxs19("header", { className: "flex h-14 shrink-0 items-center gap-2 border-b bg-background px-4", children: [
783
+ /* @__PURE__ */ jsx23(
694
784
  "button",
695
785
  {
696
786
  type: "button",
697
787
  onClick: () => setMobileOpen(true),
698
788
  className: "inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground md:hidden",
699
789
  "aria-label": "Abrir menu",
700
- children: /* @__PURE__ */ jsx21(Menu, { className: "h-4 w-4" })
790
+ children: /* @__PURE__ */ jsx23(Menu, { className: "h-4 w-4" })
701
791
  }
702
792
  ),
703
- /* @__PURE__ */ jsxs17("div", { className: "ml-auto flex items-center gap-2", children: [
793
+ /* @__PURE__ */ jsxs19("div", { className: "ml-auto flex items-center gap-2", children: [
704
794
  headerActions,
705
- (user || onLogout) && /* @__PURE__ */ jsx21(UserMenu, { user, items: userMenuItems, onLogout, renderLink })
795
+ (user || onLogout) && /* @__PURE__ */ jsx23(UserMenu, { user, items: userMenuItems, onLogout, renderLink })
706
796
  ] })
707
797
  ] }),
708
- /* @__PURE__ */ jsx21("main", { className: "flex-1 overflow-y-auto", children })
798
+ /* @__PURE__ */ jsx23("main", { className: "flex-1 overflow-y-auto", children })
709
799
  ] })
710
800
  ] });
711
801
  }
@@ -713,7 +803,7 @@ function AppShell({
713
803
  // src/components/row-actions-menu.tsx
714
804
  import * as DropdownMenu3 from "@radix-ui/react-dropdown-menu";
715
805
  import { MoreVertical } from "lucide-react";
716
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
806
+ import { Fragment as Fragment5, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
717
807
  var itemClass2 = "flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
718
808
  function RowActionsMenu({
719
809
  actions,
@@ -723,18 +813,18 @@ function RowActionsMenu({
723
813
  renderLink = defaultRenderLink
724
814
  }) {
725
815
  if (actions.length === 0) return null;
726
- return /* @__PURE__ */ jsxs18(DropdownMenu3.Root, { children: [
727
- /* @__PURE__ */ jsx22(DropdownMenu3.Trigger, { asChild: true, children: /* @__PURE__ */ jsx22(
816
+ return /* @__PURE__ */ jsxs20(DropdownMenu3.Root, { children: [
817
+ /* @__PURE__ */ jsx24(DropdownMenu3.Trigger, { asChild: true, children: /* @__PURE__ */ jsx24(
728
818
  "button",
729
819
  {
730
820
  type: "button",
731
821
  disabled,
732
822
  "aria-label": label,
733
823
  className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
734
- children: /* @__PURE__ */ jsx22(MoreVertical, { className: "h-4 w-4" })
824
+ children: /* @__PURE__ */ jsx24(MoreVertical, { className: "h-4 w-4" })
735
825
  }
736
826
  ) }),
737
- /* @__PURE__ */ jsx22(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx22(
827
+ /* @__PURE__ */ jsx24(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx24(
738
828
  DropdownMenu3.Content,
739
829
  {
740
830
  align,
@@ -742,14 +832,14 @@ function RowActionsMenu({
742
832
  className: "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
743
833
  children: actions.map((action) => {
744
834
  const cls = cn(itemClass2, action.destructive && "text-destructive focus:bg-destructive/10");
745
- return action.href ? /* @__PURE__ */ jsx22(DropdownMenu3.Item, { asChild: true, disabled: action.disabled, children: renderLink({
835
+ return action.href ? /* @__PURE__ */ jsx24(DropdownMenu3.Item, { asChild: true, disabled: action.disabled, children: renderLink({
746
836
  href: action.href,
747
837
  className: cls,
748
- children: /* @__PURE__ */ jsxs18(Fragment5, { children: [
838
+ children: /* @__PURE__ */ jsxs20(Fragment5, { children: [
749
839
  action.icon,
750
840
  action.label
751
841
  ] })
752
- }) }, action.label) : /* @__PURE__ */ jsxs18(
842
+ }) }, action.label) : /* @__PURE__ */ jsxs20(
753
843
  DropdownMenu3.Item,
754
844
  {
755
845
  className: cls,
@@ -824,11 +914,13 @@ export {
824
914
  ModeToggle,
825
915
  PageHeader,
826
916
  Pagination,
917
+ ProgressBar,
827
918
  ResponsiveDataView,
828
919
  RowActionsMenu,
829
920
  SearchInput,
830
921
  SidebarNav,
831
922
  StatCard,
923
+ StatusBadge,
832
924
  StatusDot,
833
925
  TableSkeleton,
834
926
  ThemeProvider,