@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.
- package/dist/components/app-shell.d.ts +1 -1
- package/dist/components/app-shell.d.ts.map +1 -1
- package/dist/components/auth-card.d.ts +1 -1
- package/dist/components/auth-card.d.ts.map +1 -1
- package/dist/components/confirm-dialog.d.ts +1 -1
- package/dist/components/confirm-dialog.d.ts.map +1 -1
- package/dist/components/data-table-wrapper.d.ts +1 -1
- package/dist/components/data-table-wrapper.d.ts.map +1 -1
- package/dist/components/empty-state.d.ts +1 -1
- package/dist/components/empty-state.d.ts.map +1 -1
- package/dist/components/form-dialog.d.ts +1 -1
- package/dist/components/form-dialog.d.ts.map +1 -1
- package/dist/components/form-field.d.ts +1 -1
- package/dist/components/form-field.d.ts.map +1 -1
- package/dist/components/mobile-card-list.d.ts +1 -1
- package/dist/components/mobile-card-list.d.ts.map +1 -1
- package/dist/components/mode-toggle.d.ts +1 -1
- package/dist/components/mode-toggle.d.ts.map +1 -1
- package/dist/components/page-header.d.ts +1 -1
- package/dist/components/page-header.d.ts.map +1 -1
- package/dist/components/pagination.d.ts +1 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/progress-bar.d.ts +12 -0
- package/dist/components/progress-bar.d.ts.map +1 -0
- package/dist/components/responsive-data-view.d.ts +1 -1
- package/dist/components/responsive-data-view.d.ts.map +1 -1
- package/dist/components/row-actions-menu.d.ts +1 -1
- package/dist/components/row-actions-menu.d.ts.map +1 -1
- package/dist/components/sidebar-nav.d.ts +1 -1
- package/dist/components/sidebar-nav.d.ts.map +1 -1
- package/dist/components/stat-card.d.ts +1 -1
- package/dist/components/stat-card.d.ts.map +1 -1
- package/dist/components/status-badge.d.ts +11 -0
- package/dist/components/status-badge.d.ts.map +1 -0
- package/dist/components/status-dot.d.ts +1 -1
- package/dist/components/status-dot.d.ts.map +1 -1
- package/dist/components/table-skeleton.d.ts +1 -1
- package/dist/components/table-skeleton.d.ts.map +1 -1
- package/dist/components/theme-provider.d.ts +1 -1
- package/dist/components/theme-provider.d.ts.map +1 -1
- package/dist/components/toaster.d.ts +1 -1
- package/dist/components/toaster.d.ts.map +1 -1
- package/dist/components/user-menu.d.ts +1 -1
- package/dist/components/user-menu.d.ts.map +1 -1
- package/dist/index.cjs +229 -135
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +227 -135
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/page-header.tsx +8 -4
- package/src/components/progress-bar.tsx +49 -0
- package/src/components/status-badge.tsx +63 -0
- 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(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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/
|
|
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__ */
|
|
187
|
-
/* @__PURE__ */
|
|
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__ */
|
|
284
|
+
required && /* @__PURE__ */ jsx9("span", { className: "ml-1 text-destructive", children: "*" })
|
|
195
285
|
]
|
|
196
286
|
}
|
|
197
287
|
),
|
|
198
288
|
children,
|
|
199
|
-
error && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
216
|
-
/* @__PURE__ */
|
|
217
|
-
/* @__PURE__ */
|
|
218
|
-
/* @__PURE__ */
|
|
219
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
332
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
243
333
|
function AuthCard({ title, description, children, footer }) {
|
|
244
|
-
return /* @__PURE__ */
|
|
245
|
-
/* @__PURE__ */
|
|
246
|
-
/* @__PURE__ */
|
|
247
|
-
description && /* @__PURE__ */
|
|
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__ */
|
|
250
|
-
footer && /* @__PURE__ */
|
|
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
|
|
345
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
256
346
|
function Pagination({ page, onPageChange, hasNextPage, hasPreviousPage, className }) {
|
|
257
|
-
return /* @__PURE__ */
|
|
258
|
-
/* @__PURE__ */
|
|
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__ */
|
|
358
|
+
/* @__PURE__ */ jsxs11("span", { className: "text-sm text-muted-foreground", children: [
|
|
269
359
|
"P\xE1gina ",
|
|
270
360
|
page
|
|
271
361
|
] }),
|
|
272
|
-
/* @__PURE__ */
|
|
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
|
|
376
|
+
import { Fragment, jsx as jsx13 } from "react/jsx-runtime";
|
|
287
377
|
function TableSkeleton({ rows = 5, columns = 4 }) {
|
|
288
|
-
return /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
297
|
-
/* @__PURE__ */
|
|
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__ */
|
|
312
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
335
|
-
/* @__PURE__ */
|
|
336
|
-
/* @__PURE__ */
|
|
337
|
-
/* @__PURE__ */
|
|
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__ */
|
|
340
|
-
/* @__PURE__ */
|
|
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__ */
|
|
344
|
-
/* @__PURE__ */
|
|
345
|
-
/* @__PURE__ */
|
|
346
|
-
icon && /* @__PURE__ */
|
|
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__ */
|
|
349
|
-
detail && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
368
|
-
/* @__PURE__ */
|
|
369
|
-
!isLoading && isEmpty && /* @__PURE__ */
|
|
370
|
-
emptyIcon && /* @__PURE__ */
|
|
371
|
-
/* @__PURE__ */
|
|
372
|
-
emptyDescription && /* @__PURE__ */
|
|
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__ */
|
|
375
|
-
/* @__PURE__ */
|
|
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__ */
|
|
475
|
+
/* @__PURE__ */ jsxs14("span", { className: "text-sm text-muted-foreground", children: [
|
|
386
476
|
"P\xE1gina ",
|
|
387
477
|
page
|
|
388
478
|
] }),
|
|
389
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
415
|
-
/* @__PURE__ */
|
|
416
|
-
/* @__PURE__ */
|
|
417
|
-
/* @__PURE__ */
|
|
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__ */
|
|
420
|
-
/* @__PURE__ */
|
|
421
|
-
/* @__PURE__ */
|
|
422
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
449
|
-
/* @__PURE__ */
|
|
450
|
-
/* @__PURE__ */
|
|
451
|
-
!isLoading && isEmpty && /* @__PURE__ */
|
|
452
|
-
emptyIcon && /* @__PURE__ */
|
|
453
|
-
/* @__PURE__ */
|
|
454
|
-
emptyDescription && /* @__PURE__ */
|
|
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
|
|
552
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
463
553
|
function Toaster(props) {
|
|
464
554
|
const { theme = "system" } = useTheme();
|
|
465
|
-
return /* @__PURE__ */
|
|
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
|
|
501
|
-
var defaultRenderLink = ({ children, ...props }) => /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
532
|
-
item.icon && /* @__PURE__ */
|
|
533
|
-
!isCollapsed && /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
562
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
580
|
-
/* @__PURE__ */
|
|
581
|
-
user.name && /* @__PURE__ */
|
|
582
|
-
user.email && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
596
|
-
items.length > 0 && /* @__PURE__ */
|
|
597
|
-
/* @__PURE__ */
|
|
598
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
641
|
-
/* @__PURE__ */
|
|
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__ */
|
|
650
|
-
/* @__PURE__ */
|
|
651
|
-
collapsible && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
674
|
-
/* @__PURE__ */
|
|
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__ */
|
|
684
|
-
/* @__PURE__ */
|
|
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__ */
|
|
692
|
-
/* @__PURE__ */
|
|
693
|
-
/* @__PURE__ */
|
|
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__ */
|
|
790
|
+
children: /* @__PURE__ */ jsx23(Menu, { className: "h-4 w-4" })
|
|
701
791
|
}
|
|
702
792
|
),
|
|
703
|
-
/* @__PURE__ */
|
|
793
|
+
/* @__PURE__ */ jsxs19("div", { className: "ml-auto flex items-center gap-2", children: [
|
|
704
794
|
headerActions,
|
|
705
|
-
(user || onLogout) && /* @__PURE__ */
|
|
795
|
+
(user || onLogout) && /* @__PURE__ */ jsx23(UserMenu, { user, items: userMenuItems, onLogout, renderLink })
|
|
706
796
|
] })
|
|
707
797
|
] }),
|
|
708
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
727
|
-
/* @__PURE__ */
|
|
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__ */
|
|
824
|
+
children: /* @__PURE__ */ jsx24(MoreVertical, { className: "h-4 w-4" })
|
|
735
825
|
}
|
|
736
826
|
) }),
|
|
737
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
838
|
+
children: /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
749
839
|
action.icon,
|
|
750
840
|
action.label
|
|
751
841
|
] })
|
|
752
|
-
}) }, action.label) : /* @__PURE__ */
|
|
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,
|