@motor-hero/ui-kit 0.46.1 → 0.48.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/base-dialog.d.ts +16 -5
- package/dist/components/base-dialog.d.ts.map +1 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/responsive-data-view.d.ts +8 -1
- package/dist/components/responsive-data-view.d.ts.map +1 -1
- package/dist/components/row-actions-menu.d.ts.map +1 -1
- package/dist/index.cjs +28 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -16
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/components/app-shell.tsx +1 -1
- package/src/components/base-dialog.tsx +24 -9
- package/src/components/date-picker.tsx +1 -1
- package/src/components/mode-toggle.tsx +1 -1
- package/src/components/pagination.tsx +7 -3
- package/src/components/password-input.tsx +1 -1
- package/src/components/responsive-data-view.tsx +23 -2
- package/src/components/row-actions-menu.tsx +2 -1
- package/src/components/user-menu.tsx +1 -1
- package/src/index.ts +1 -1
|
@@ -49,15 +49,26 @@ export interface BaseDialogProps {
|
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Standardized, responsive dialog shell:
|
|
52
|
-
* - mobile: bottom sheet
|
|
52
|
+
* - mobile: bottom sheet that can grow to nearly the whole screen
|
|
53
53
|
* - desktop: centered dialog (up to 92dvh tall)
|
|
54
54
|
* Header and footer stay fixed; only the body scrolls.
|
|
55
55
|
*
|
|
56
|
+
* The mobile ceiling is the screen minus a slim top gap (safe area or
|
|
57
|
+
* 0.75rem, whichever is larger): a long form gets virtually the whole
|
|
58
|
+
* screen — the old 92dvh cap wasted ~70px on the one device where height is
|
|
59
|
+
* scarce — while the rounded top and the sliver of scrim above it keep the
|
|
60
|
+
* sheet language every other mobile surface in this kit speaks (combobox,
|
|
61
|
+
* pickers, menus are all `rounded-t-2xl` bottom sheets). An edge-to-edge
|
|
62
|
+
* square dialog here read as a foreign screen, not a layer of this app.
|
|
63
|
+
* Short dialogs still hug their content instead of stretching.
|
|
64
|
+
*
|
|
56
65
|
* Heights use `dvh`, not `vh`: on iOS `vh` is locked to the large viewport
|
|
57
|
-
* (toolbars collapsed), so `
|
|
58
|
-
* the sheet anchored to `bottom-0` the overflow leaves
|
|
59
|
-
* since the body is the only scrollable child, what
|
|
60
|
-
* header - title and close button. Does not
|
|
66
|
+
* (toolbars collapsed), so a `vh` cap can exceed the visible area by
|
|
67
|
+
* 10-15%. With the sheet anchored to `bottom-0` the overflow leaves
|
|
68
|
+
* through the top, and since the body is the only scrollable child, what
|
|
69
|
+
* goes off-screen is the header - title and close button. Does not
|
|
70
|
+
* reproduce outside real iOS. The footer pads for the home indicator
|
|
71
|
+
* (`env(safe-area-inset-bottom)`); the top gap already clears the notch.
|
|
61
72
|
*
|
|
62
73
|
* Also fixes the known Radix bug where `body { pointer-events: none }`
|
|
63
74
|
* can persist after closing a dialog that contained a Select/Popover,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-dialog.d.ts","sourceRoot":"","sources":["../../src/components/base-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,QAAA,MAAM,WAAW;;;;;;;;;;;CAWP,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAA;CACnD;AAED
|
|
1
|
+
{"version":3,"file":"base-dialog.d.ts","sourceRoot":"","sources":["../../src/components/base-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,QAAA,MAAM,WAAW;;;;;;;;;;;CAWP,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAA;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,IAAW,EACX,SAAS,EACT,KAAK,EACL,YAAmB,EACnB,iBAAiB,EACjB,cAAqC,GACtC,EAAE,eAAe,qBA2FjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uGAAuG;IACvG,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uGAAuG;IACvG,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,UAAU,EACV,oBAA4B,EAC5B,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,SAAS,GACV,EAAE,eAAe,+BAmDjB"}
|
|
@@ -16,7 +16,14 @@ interface ResponsiveDataViewProps {
|
|
|
16
16
|
/** CTA do estado vazio — normalmente o mesmo botão "Adicionar X" da página. */
|
|
17
17
|
emptyAction?: ReactNode;
|
|
18
18
|
pagination?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* A partir de qual largura a tabela substitui os cards. Padrão `md`. Use
|
|
21
|
+
* `lg`/`xl` quando a tabela tem colunas demais para caber ao lado da barra
|
|
22
|
+
* lateral num tablet — os cards leem melhor do que uma tabela rolando de lado.
|
|
23
|
+
*/
|
|
24
|
+
breakpoint?: ResponsiveDataViewBreakpoint;
|
|
19
25
|
}
|
|
20
|
-
export
|
|
26
|
+
export type ResponsiveDataViewBreakpoint = "md" | "lg" | "xl";
|
|
27
|
+
export declare function ResponsiveDataView({ table, cards, isEmpty, isLoading, isBusy, emptyIcon, emptyTitle, emptyDescription, emptyAction, pagination, breakpoint, }: ResponsiveDataViewProps): import("react").JSX.Element;
|
|
21
28
|
export {};
|
|
22
29
|
//# sourceMappingURL=responsive-data-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responsive-data-view.d.ts","sourceRoot":"","sources":["../../src/components/responsive-data-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,UAAU,CAAC,EAAE,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"responsive-data-view.d.ts","sourceRoot":"","sources":["../../src/components/responsive-data-view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,4BAA4B,CAAA;CAC1C;AAED,MAAM,MAAM,4BAA4B,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAY7D,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAc,EACd,SAAS,EACT,UAAyC,EACzC,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,UAAiB,GAClB,EAAE,uBAAuB,+BAqCzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-actions-menu.d.ts","sourceRoot":"","sources":["../../src/components/row-actions-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAGlB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;
|
|
1
|
+
{"version":3,"file":"row-actions-menu.d.ts","sourceRoot":"","sources":["../../src/components/row-actions-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAGlB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAYD,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAgB,EAChB,KAAa,EACb,KAAe,EACf,UAA8B,GAC/B,EAAE,mBAAmB,sCA2LrB"}
|
package/dist/index.cjs
CHANGED
|
@@ -186,7 +186,7 @@ function UserMenu({
|
|
|
186
186
|
"button",
|
|
187
187
|
{
|
|
188
188
|
type: "button",
|
|
189
|
-
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-2 focus-visible:ring-ring",
|
|
189
|
+
className: "inline-flex h-9 w-9 max-sm:h-10 max-sm:w-10 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-2 focus-visible:ring-ring",
|
|
190
190
|
"aria-label": "Menu do usu\xE1rio",
|
|
191
191
|
"data-testid": "user-menu",
|
|
192
192
|
children: user?.avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
@@ -421,7 +421,7 @@ function AppShell({
|
|
|
421
421
|
{
|
|
422
422
|
type: "button",
|
|
423
423
|
onClick: () => setMobileOpen(true),
|
|
424
|
-
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",
|
|
424
|
+
className: "inline-flex h-9 w-9 max-sm:h-10 max-sm:w-10 items-center justify-center rounded-md border border-input bg-background shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground md:hidden",
|
|
425
425
|
"aria-label": "Abrir menu",
|
|
426
426
|
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.Menu, { className: "h-4 w-4" })
|
|
427
427
|
}
|
|
@@ -506,7 +506,7 @@ function BaseDialog({
|
|
|
506
506
|
)
|
|
507
507
|
] }),
|
|
508
508
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-4", children }),
|
|
509
|
-
footer && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex shrink-0 flex-col-reverse gap-2 border-t px-6 py-3 sm:flex-row sm:justify-end", children: footer })
|
|
509
|
+
footer && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex shrink-0 flex-col-reverse gap-2 border-t px-6 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] sm:flex-row sm:justify-end", children: footer })
|
|
510
510
|
] });
|
|
511
511
|
const isModal = modal ?? !isDesktop;
|
|
512
512
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Dialog.Root, { open, onOpenChange, modal: isModal, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Dialog.Portal, { children: [
|
|
@@ -542,9 +542,13 @@ function BaseDialog({
|
|
|
542
542
|
document.body.style.pointerEvents = "";
|
|
543
543
|
},
|
|
544
544
|
className: cn(
|
|
545
|
-
"fixed z-50 flex
|
|
546
|
-
"inset-x-0 bottom-0 rounded-t-2xl",
|
|
547
|
-
|
|
545
|
+
"fixed z-50 flex w-full flex-col bg-background shadow-lg outline-none",
|
|
546
|
+
"inset-x-0 bottom-0 rounded-t-2xl max-h-[calc(100dvh_-_max(0.75rem,env(safe-area-inset-top)))]",
|
|
547
|
+
// Entra deslizando de baixo, como os drawers (vaul) do restante do
|
|
548
|
+
// kit; no desktop os slides sairiam brigando com o translate de
|
|
549
|
+
// centralização, então ficam restritos ao mobile.
|
|
550
|
+
"max-sm:slide-in-from-bottom-8 max-sm:slide-out-to-bottom-8",
|
|
551
|
+
"sm:inset-x-auto sm:bottom-auto sm:left-1/2 sm:top-1/2 sm:max-h-[92dvh] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-lg",
|
|
548
552
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
549
553
|
sizeClasses[size],
|
|
550
554
|
className
|
|
@@ -1253,7 +1257,7 @@ function DatePickerImpl({
|
|
|
1253
1257
|
"aria-haspopup": "dialog",
|
|
1254
1258
|
"aria-expanded": open,
|
|
1255
1259
|
onClick: () => setOpen(!open),
|
|
1256
|
-
className: "absolute right-
|
|
1260
|
+
className: "absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground disabled:pointer-events-none disabled:opacity-50",
|
|
1257
1261
|
children: withTime ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react7.Clock, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react7.CalendarIcon, { className: "h-4 w-4" })
|
|
1258
1262
|
}
|
|
1259
1263
|
)
|
|
@@ -1784,7 +1788,7 @@ function ModeToggle() {
|
|
|
1784
1788
|
"button",
|
|
1785
1789
|
{
|
|
1786
1790
|
type: "button",
|
|
1787
|
-
className: "relative inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
1791
|
+
className: "relative inline-flex h-9 w-9 max-sm:h-10 max-sm:w-10 items-center justify-center rounded-md border border-input bg-background text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
1788
1792
|
"aria-label": "Alternar tema",
|
|
1789
1793
|
children: [
|
|
1790
1794
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
|
|
@@ -2040,7 +2044,7 @@ function PageHeader({ title, description, action, className }) {
|
|
|
2040
2044
|
|
|
2041
2045
|
// src/components/pagination.tsx
|
|
2042
2046
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2043
|
-
var navButtonClass2 = "inline-flex h-8 items-center justify-center rounded-md border border-input bg-background px-3 text-xs font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50";
|
|
2047
|
+
var navButtonClass2 = "inline-flex h-8 max-sm:h-10 items-center justify-center rounded-md border border-input bg-background px-3 text-xs font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50";
|
|
2044
2048
|
function Pagination({
|
|
2045
2049
|
page,
|
|
2046
2050
|
onPageChange,
|
|
@@ -2056,7 +2060,7 @@ function Pagination({
|
|
|
2056
2060
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2057
2061
|
"div",
|
|
2058
2062
|
{
|
|
2059
|
-
className: `flex items-center ${showPageSizeSelector ? "justify-between" : "justify-end"} gap-4 ${className ?? ""}`,
|
|
2063
|
+
className: `flex flex-wrap items-center ${showPageSizeSelector ? "justify-between" : "justify-end"} gap-x-4 gap-y-2 ${className ?? ""}`,
|
|
2060
2064
|
children: [
|
|
2061
2065
|
showPageSizeSelector && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
2062
2066
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
|
|
@@ -2066,7 +2070,7 @@ function Pagination({
|
|
|
2066
2070
|
id: "pagination-page-size",
|
|
2067
2071
|
value: pageSize,
|
|
2068
2072
|
onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
|
|
2069
|
-
className: "h-8 rounded-md border border-input bg-background px-2 text-xs font-medium shadow-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring cursor-pointer",
|
|
2073
|
+
className: "h-8 max-sm:h-10 rounded-md border border-input bg-background px-2 text-xs font-medium shadow-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring cursor-pointer",
|
|
2070
2074
|
children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("option", { value: size, children: size }, size))
|
|
2071
2075
|
}
|
|
2072
2076
|
)
|
|
@@ -2126,7 +2130,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
|
|
|
2126
2130
|
onClick: () => setVisible((prev) => !prev),
|
|
2127
2131
|
"aria-label": visible ? "Ocultar senha" : "Mostrar senha",
|
|
2128
2132
|
tabIndex: -1,
|
|
2129
|
-
className: "absolute right-
|
|
2133
|
+
className: "absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground",
|
|
2130
2134
|
children: visible ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Eye, { className: "h-4 w-4" })
|
|
2131
2135
|
}
|
|
2132
2136
|
)
|
|
@@ -2172,6 +2176,11 @@ function ProgressBar({
|
|
|
2172
2176
|
|
|
2173
2177
|
// src/components/responsive-data-view.tsx
|
|
2174
2178
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2179
|
+
var BREAKPOINT_CLASSES = {
|
|
2180
|
+
md: { table: "md:block", cards: "md:hidden" },
|
|
2181
|
+
lg: { table: "lg:block", cards: "lg:hidden" },
|
|
2182
|
+
xl: { table: "xl:block", cards: "xl:hidden" }
|
|
2183
|
+
};
|
|
2175
2184
|
function ResponsiveDataView({
|
|
2176
2185
|
table,
|
|
2177
2186
|
cards,
|
|
@@ -2182,7 +2191,8 @@ function ResponsiveDataView({
|
|
|
2182
2191
|
emptyTitle = "Nenhum registro encontrado",
|
|
2183
2192
|
emptyDescription,
|
|
2184
2193
|
emptyAction,
|
|
2185
|
-
pagination
|
|
2194
|
+
pagination,
|
|
2195
|
+
breakpoint = "md"
|
|
2186
2196
|
}) {
|
|
2187
2197
|
if (!isLoading && !isBusy && isEmpty) {
|
|
2188
2198
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "rounded-md border", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
@@ -2196,19 +2206,21 @@ function ResponsiveDataView({
|
|
|
2196
2206
|
) });
|
|
2197
2207
|
}
|
|
2198
2208
|
const busyClass = isBusy && "pointer-events-none opacity-50";
|
|
2209
|
+
const visibility = BREAKPOINT_CLASSES[breakpoint];
|
|
2199
2210
|
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "space-y-4", children: [
|
|
2200
2211
|
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2201
2212
|
"div",
|
|
2202
2213
|
{
|
|
2203
2214
|
"aria-busy": isBusy,
|
|
2204
2215
|
className: cn(
|
|
2205
|
-
"hidden overflow-x-auto rounded-md border transition-opacity
|
|
2216
|
+
"hidden overflow-x-auto rounded-md border transition-opacity",
|
|
2217
|
+
visibility.table,
|
|
2206
2218
|
busyClass
|
|
2207
2219
|
),
|
|
2208
2220
|
children: table
|
|
2209
2221
|
}
|
|
2210
2222
|
),
|
|
2211
|
-
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-busy": isBusy, className: cn("transition-opacity
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-busy": isBusy, className: cn("transition-opacity", visibility.cards, busyClass), children: cards }),
|
|
2212
2224
|
pagination
|
|
2213
2225
|
] });
|
|
2214
2226
|
}
|
|
@@ -2219,7 +2231,7 @@ var import_lucide_react12 = require("lucide-react");
|
|
|
2219
2231
|
var import_react7 = require("react");
|
|
2220
2232
|
var import_vaul6 = require("vaul");
|
|
2221
2233
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2222
|
-
var triggerClass = "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-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";
|
|
2234
|
+
var triggerClass = "inline-flex h-8 w-8 max-sm:h-10 max-sm:w-10 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-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";
|
|
2223
2235
|
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";
|
|
2224
2236
|
var sheetItemClass2 = "flex w-full cursor-pointer select-none items-center gap-3 rounded-md px-3 py-3 text-base outline-none transition-colors hover:bg-accent active:bg-accent disabled:pointer-events-none disabled:opacity-50";
|
|
2225
2237
|
function RowActionsMenu({
|