@greatapps/greatauth-ui 0.3.14 → 0.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +49 -46
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/app-header.tsx +1 -8
- package/src/components/app-sidebar.tsx +2 -2
- package/src/components/image-crop-upload.tsx +5 -3
- package/src/components/login-form.tsx +7 -5
- package/src/components/theme-toggle.tsx +2 -2
- package/src/components/users/data-table.tsx +8 -7
- package/src/components/users/user-form-dialog.tsx +7 -7
- package/src/components/users/users-page.tsx +11 -8
package/dist/index.js
CHANGED
|
@@ -1075,7 +1075,7 @@ function AppSidebar({ config }) {
|
|
|
1075
1075
|
/* @__PURE__ */ jsx12("span", { className: "truncate font-semibold", children: userName }),
|
|
1076
1076
|
/* @__PURE__ */ jsx12("span", { className: "truncate text-xs text-muted-foreground", children: userEmail })
|
|
1077
1077
|
] }),
|
|
1078
|
-
/* @__PURE__ */ jsx12(ChevronsUpDown, { className: "ml-auto size-4 group-data-[collapsible=icon]:hidden" })
|
|
1078
|
+
/* @__PURE__ */ jsx12(ChevronsUpDown, { "aria-hidden": "true", className: "ml-auto size-4 group-data-[collapsible=icon]:hidden" })
|
|
1079
1079
|
] }) }),
|
|
1080
1080
|
/* @__PURE__ */ jsxs5(
|
|
1081
1081
|
DropdownMenuContent,
|
|
@@ -1092,7 +1092,7 @@ function AppSidebar({ config }) {
|
|
|
1092
1092
|
/* @__PURE__ */ jsx12(DropdownMenuSeparator, {}),
|
|
1093
1093
|
config.footerExtra,
|
|
1094
1094
|
/* @__PURE__ */ jsxs5(DropdownMenuItem, { onClick: handleLogout, children: [
|
|
1095
|
-
/* @__PURE__ */ jsx12(LogOut, { className: "size-4" }),
|
|
1095
|
+
/* @__PURE__ */ jsx12(LogOut, { "aria-hidden": "true", className: "size-4" }),
|
|
1096
1096
|
"Sair"
|
|
1097
1097
|
] })
|
|
1098
1098
|
]
|
|
@@ -1239,17 +1239,16 @@ function ThemeToggle() {
|
|
|
1239
1239
|
[theme, setTheme]
|
|
1240
1240
|
);
|
|
1241
1241
|
return /* @__PURE__ */ jsxs7(Button, { variant: "ghost", size: "icon", onClick: toggleTheme, children: [
|
|
1242
|
-
/* @__PURE__ */ jsx14(Sun, { className: "h-5 w-5 rotate-0 scale-100 transition-
|
|
1243
|
-
/* @__PURE__ */ jsx14(Moon, { className: "absolute h-5 w-5 rotate-90 scale-0 transition-
|
|
1242
|
+
/* @__PURE__ */ jsx14(Sun, { "aria-hidden": "true", className: "h-5 w-5 rotate-0 scale-100 transition-transform transition-opacity dark:-rotate-90 dark:scale-0" }),
|
|
1243
|
+
/* @__PURE__ */ jsx14(Moon, { "aria-hidden": "true", className: "absolute h-5 w-5 rotate-90 scale-0 transition-transform transition-opacity dark:rotate-0 dark:scale-100" }),
|
|
1244
1244
|
/* @__PURE__ */ jsx14("span", { className: "sr-only", children: "Alternar tema" })
|
|
1245
1245
|
] });
|
|
1246
1246
|
}
|
|
1247
1247
|
|
|
1248
1248
|
// src/components/app-header.tsx
|
|
1249
|
-
import {
|
|
1249
|
+
import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1250
1250
|
function AppHeader({ config }) {
|
|
1251
1251
|
const pathname = usePathname2();
|
|
1252
|
-
const { state } = useSidebar();
|
|
1253
1252
|
const segments = pathname.split("/").filter(Boolean);
|
|
1254
1253
|
const breadcrumbs = useMemo2(() => {
|
|
1255
1254
|
const items = [];
|
|
@@ -1266,10 +1265,6 @@ function AppHeader({ config }) {
|
|
|
1266
1265
|
const showEllipsis = breadcrumbs.length > 2;
|
|
1267
1266
|
return /* @__PURE__ */ jsxs8("header", { className: "flex h-14 shrink-0 items-center gap-2 border-b px-4", children: [
|
|
1268
1267
|
/* @__PURE__ */ jsx15(SidebarTrigger, { className: "-ml-1" }),
|
|
1269
|
-
state === "collapsed" && config.appIcon && /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
1270
|
-
/* @__PURE__ */ jsx15(Separator, { orientation: "vertical", className: "!h-4" }),
|
|
1271
|
-
/* @__PURE__ */ jsx15("div", { className: "shrink-0 text-sidebar-foreground", children: config.appIcon })
|
|
1272
|
-
] }),
|
|
1273
1268
|
/* @__PURE__ */ jsx15(Separator, { orientation: "vertical", className: "mr-2 !h-4" }),
|
|
1274
1269
|
/* @__PURE__ */ jsx15(Breadcrumb, { className: "flex-1", children: /* @__PURE__ */ jsx15(BreadcrumbList, { children: breadcrumbs.length > 0 ? breadcrumbs.map((crumb, i) => {
|
|
1275
1270
|
const hiddenOnMobile = showEllipsis && i < breadcrumbs.length - 2;
|
|
@@ -1284,9 +1279,9 @@ function AppHeader({ config }) {
|
|
|
1284
1279
|
}
|
|
1285
1280
|
|
|
1286
1281
|
// src/components/app-shell.tsx
|
|
1287
|
-
import { Fragment as
|
|
1282
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1288
1283
|
function AppShell({ config, children, renderAbove }) {
|
|
1289
|
-
return /* @__PURE__ */ jsxs9(
|
|
1284
|
+
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
1290
1285
|
renderAbove,
|
|
1291
1286
|
/* @__PURE__ */ jsx16(TooltipProvider, { children: /* @__PURE__ */ jsxs9(SidebarProvider, { className: "!h-svh !overflow-hidden", children: [
|
|
1292
1287
|
/* @__PURE__ */ jsx16(AppSidebar, { config }),
|
|
@@ -1324,7 +1319,7 @@ function Label({
|
|
|
1324
1319
|
}
|
|
1325
1320
|
|
|
1326
1321
|
// src/components/login-form.tsx
|
|
1327
|
-
import { Fragment as
|
|
1322
|
+
import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1328
1323
|
function LoginForm({ config }) {
|
|
1329
1324
|
const router = useRouter2();
|
|
1330
1325
|
const searchParams = useSearchParams();
|
|
@@ -1395,17 +1390,18 @@ function LoginForm({ config }) {
|
|
|
1395
1390
|
] }),
|
|
1396
1391
|
/* @__PURE__ */ jsx18("div", { className: "rounded-xl border bg-card p-6 shadow-sm", children: /* @__PURE__ */ jsxs10("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
1397
1392
|
error && /* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2.5 text-sm text-destructive", children: [
|
|
1398
|
-
/* @__PURE__ */ jsx18(AlertCircle, { className: "h-4 w-4 shrink-0" }),
|
|
1393
|
+
/* @__PURE__ */ jsx18(AlertCircle, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" }),
|
|
1399
1394
|
error
|
|
1400
1395
|
] }),
|
|
1401
1396
|
/* @__PURE__ */ jsxs10("div", { className: "space-y-1.5", children: [
|
|
1402
1397
|
/* @__PURE__ */ jsx18(Label, { htmlFor: "login-email", className: "text-sm font-medium", children: "Email" }),
|
|
1403
1398
|
/* @__PURE__ */ jsxs10("div", { className: "relative", children: [
|
|
1404
|
-
/* @__PURE__ */ jsx18(Mail, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
1399
|
+
/* @__PURE__ */ jsx18(Mail, { "aria-hidden": "true", className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
1405
1400
|
/* @__PURE__ */ jsx18(
|
|
1406
1401
|
Input,
|
|
1407
1402
|
{
|
|
1408
1403
|
id: "login-email",
|
|
1404
|
+
name: "email",
|
|
1409
1405
|
type: "email",
|
|
1410
1406
|
placeholder: "email@exemplo.com",
|
|
1411
1407
|
value: email,
|
|
@@ -1420,11 +1416,12 @@ function LoginForm({ config }) {
|
|
|
1420
1416
|
/* @__PURE__ */ jsxs10("div", { className: "space-y-1.5", children: [
|
|
1421
1417
|
/* @__PURE__ */ jsx18(Label, { htmlFor: "login-password", className: "text-sm font-medium", children: "Senha" }),
|
|
1422
1418
|
/* @__PURE__ */ jsxs10("div", { className: "relative", children: [
|
|
1423
|
-
/* @__PURE__ */ jsx18(Lock, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
1419
|
+
/* @__PURE__ */ jsx18(Lock, { "aria-hidden": "true", className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
1424
1420
|
/* @__PURE__ */ jsx18(
|
|
1425
1421
|
Input,
|
|
1426
1422
|
{
|
|
1427
1423
|
id: "login-password",
|
|
1424
|
+
name: "password",
|
|
1428
1425
|
type: showPassword ? "text" : "password",
|
|
1429
1426
|
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
1430
1427
|
value: password,
|
|
@@ -1452,9 +1449,9 @@ function LoginForm({ config }) {
|
|
|
1452
1449
|
type: "submit",
|
|
1453
1450
|
className: cn("w-full", loading && "cursor-wait"),
|
|
1454
1451
|
disabled: loading,
|
|
1455
|
-
children: loading ? /* @__PURE__ */ jsxs10(
|
|
1456
|
-
/* @__PURE__ */ jsx18(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
1457
|
-
"A entrar
|
|
1452
|
+
children: loading ? /* @__PURE__ */ jsxs10(Fragment3, { children: [
|
|
1453
|
+
/* @__PURE__ */ jsx18(Loader2, { "aria-hidden": "true", className: "h-4 w-4 animate-spin" }),
|
|
1454
|
+
"A entrar\u2026"
|
|
1458
1455
|
] }) : "Entrar"
|
|
1459
1456
|
}
|
|
1460
1457
|
)
|
|
@@ -1870,7 +1867,8 @@ function ImageCropUpload({
|
|
|
1870
1867
|
type: "button",
|
|
1871
1868
|
onClick: () => inputRef.current?.click(),
|
|
1872
1869
|
className: "absolute inset-0 flex items-center justify-center rounded-full bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer",
|
|
1873
|
-
|
|
1870
|
+
"aria-label": "Alterar foto",
|
|
1871
|
+
children: /* @__PURE__ */ jsx22(Camera, { "aria-hidden": "true", className: "h-5 w-5 text-white" })
|
|
1874
1872
|
}
|
|
1875
1873
|
)
|
|
1876
1874
|
] }),
|
|
@@ -1882,7 +1880,8 @@ function ImageCropUpload({
|
|
|
1882
1880
|
accept: "image/png,image/jpeg,image/webp",
|
|
1883
1881
|
onChange: handleFileSelect,
|
|
1884
1882
|
className: "hidden",
|
|
1885
|
-
disabled
|
|
1883
|
+
disabled,
|
|
1884
|
+
"aria-label": "Selecionar imagem"
|
|
1886
1885
|
}
|
|
1887
1886
|
),
|
|
1888
1887
|
!disabled && value && /* @__PURE__ */ jsxs14(
|
|
@@ -1894,7 +1893,7 @@ function ImageCropUpload({
|
|
|
1894
1893
|
onClick: handleRemove,
|
|
1895
1894
|
className: "text-destructive hover:text-destructive",
|
|
1896
1895
|
children: [
|
|
1897
|
-
/* @__PURE__ */ jsx22(Trash2, { className: "h-4 w-4 mr-1" }),
|
|
1896
|
+
/* @__PURE__ */ jsx22(Trash2, { "aria-hidden": "true", className: "h-4 w-4 mr-1" }),
|
|
1898
1897
|
"Remover"
|
|
1899
1898
|
]
|
|
1900
1899
|
}
|
|
@@ -1947,7 +1946,7 @@ function ImageCropUpload({
|
|
|
1947
1946
|
{
|
|
1948
1947
|
onClick: handleConfirmCrop,
|
|
1949
1948
|
disabled: isUploading || !croppedArea,
|
|
1950
|
-
children: isUploading ? "Enviando
|
|
1949
|
+
children: isUploading ? "Enviando\u2026" : "Confirmar"
|
|
1951
1950
|
}
|
|
1952
1951
|
)
|
|
1953
1952
|
] })
|
|
@@ -2251,25 +2250,25 @@ function UserFormDialog({
|
|
|
2251
2250
|
/* @__PURE__ */ jsxs16("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
2252
2251
|
/* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
|
|
2253
2252
|
/* @__PURE__ */ jsx24(Label, { htmlFor: "user-name", children: "Nome *" }),
|
|
2254
|
-
/* @__PURE__ */ jsx24(Input, { id: "user-name", value: name, onChange: (e) => setName(e.target.value), placeholder: "Nome", required: true, disabled: isPending })
|
|
2253
|
+
/* @__PURE__ */ jsx24(Input, { id: "user-name", name: "firstName", value: name, onChange: (e) => setName(e.target.value), placeholder: "Nome", required: true, disabled: isPending })
|
|
2255
2254
|
] }),
|
|
2256
2255
|
/* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
|
|
2257
2256
|
/* @__PURE__ */ jsx24(Label, { htmlFor: "user-lastname", children: "Sobrenome" }),
|
|
2258
|
-
/* @__PURE__ */ jsx24(Input, { id: "user-lastname", value: lastName, onChange: (e) => setLastName(e.target.value), placeholder: "Sobrenome", disabled: isPending })
|
|
2257
|
+
/* @__PURE__ */ jsx24(Input, { id: "user-lastname", name: "lastName", value: lastName, onChange: (e) => setLastName(e.target.value), placeholder: "Sobrenome", disabled: isPending })
|
|
2259
2258
|
] })
|
|
2260
2259
|
] }),
|
|
2261
2260
|
/* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
|
|
2262
2261
|
/* @__PURE__ */ jsx24(Label, { htmlFor: "user-email", children: "E-mail *" }),
|
|
2263
|
-
/* @__PURE__ */ jsx24(Input, { id: "user-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "email@exemplo.com", required: true, disabled: isPending })
|
|
2262
|
+
/* @__PURE__ */ jsx24(Input, { id: "user-email", name: "email", type: "email", autoComplete: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "email@exemplo.com", required: true, disabled: isPending })
|
|
2264
2263
|
] }),
|
|
2265
2264
|
!isEditing && /* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
|
|
2266
2265
|
/* @__PURE__ */ jsx24(Label, { htmlFor: "user-password", children: "Senha" }),
|
|
2267
|
-
/* @__PURE__ */ jsx24(Input, { id: "user-password", type: "password", value: password, onChange: (e) => setPassword(e.target.value), placeholder: "Senha inicial (opcional)", disabled: isPending })
|
|
2266
|
+
/* @__PURE__ */ jsx24(Input, { id: "user-password", name: "password", type: "password", autoComplete: "new-password", value: password, onChange: (e) => setPassword(e.target.value), placeholder: "Senha inicial (opcional)", disabled: isPending })
|
|
2268
2267
|
] }),
|
|
2269
2268
|
/* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
|
|
2270
|
-
/* @__PURE__ */ jsx24(Label, { children: "Perfil de acesso" }),
|
|
2269
|
+
/* @__PURE__ */ jsx24(Label, { htmlFor: "user-profile", children: "Perfil de acesso" }),
|
|
2271
2270
|
/* @__PURE__ */ jsxs16(Select, { value: profile, onValueChange: setProfile, disabled: isPending, children: [
|
|
2272
|
-
/* @__PURE__ */ jsx24(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx24(SelectValue, {}) }),
|
|
2271
|
+
/* @__PURE__ */ jsx24(SelectTrigger, { id: "user-profile", className: "w-full", children: /* @__PURE__ */ jsx24(SelectValue, {}) }),
|
|
2273
2272
|
/* @__PURE__ */ jsx24(SelectContent, { children: PROFILE_OPTIONS.map((opt) => /* @__PURE__ */ jsx24(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
2274
2273
|
] })
|
|
2275
2274
|
] }),
|
|
@@ -2277,7 +2276,7 @@ function UserFormDialog({
|
|
|
2277
2276
|
/* @__PURE__ */ jsxs16(DialogFooter, { children: [
|
|
2278
2277
|
/* @__PURE__ */ jsx24(Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), disabled: isPending, children: "Cancelar" }),
|
|
2279
2278
|
/* @__PURE__ */ jsxs16(Button, { type: "submit", disabled: isPending || !name.trim() || !email.trim(), children: [
|
|
2280
|
-
isPending && /* @__PURE__ */ jsx24(Loader22, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
2279
|
+
isPending && /* @__PURE__ */ jsx24(Loader22, { "aria-hidden": "true", className: "mr-2 h-4 w-4 animate-spin" }),
|
|
2281
2280
|
isEditing ? "Salvar" : "Criar"
|
|
2282
2281
|
] })
|
|
2283
2282
|
] })
|
|
@@ -2418,12 +2417,13 @@ function DataTable({
|
|
|
2418
2417
|
type: "button",
|
|
2419
2418
|
className: "flex items-center gap-1 hover:text-foreground -ml-1 px-1 py-0.5 rounded cursor-pointer select-none",
|
|
2420
2419
|
onClick: header.column.getToggleSortingHandler(),
|
|
2420
|
+
"aria-label": "Ordenar",
|
|
2421
2421
|
children: [
|
|
2422
2422
|
flexRender(header.column.columnDef.header, header.getContext()),
|
|
2423
2423
|
{
|
|
2424
|
-
asc: /* @__PURE__ */ jsx27(ArrowUp, { className: "h-3.5 w-3.5" }),
|
|
2425
|
-
desc: /* @__PURE__ */ jsx27(ArrowDown, { className: "h-3.5 w-3.5" })
|
|
2426
|
-
}[header.column.getIsSorted()] ?? /* @__PURE__ */ jsx27(ArrowUpDown, { className: "h-3.5 w-3.5 text-muted-foreground/50" })
|
|
2424
|
+
asc: /* @__PURE__ */ jsx27(ArrowUp, { "aria-hidden": "true", className: "h-3.5 w-3.5" }),
|
|
2425
|
+
desc: /* @__PURE__ */ jsx27(ArrowDown, { "aria-hidden": "true", className: "h-3.5 w-3.5" })
|
|
2426
|
+
}[header.column.getIsSorted()] ?? /* @__PURE__ */ jsx27(ArrowUpDown, { "aria-hidden": "true", className: "h-3.5 w-3.5 text-muted-foreground/50" })
|
|
2427
2427
|
]
|
|
2428
2428
|
}
|
|
2429
2429
|
) : flexRender(header.column.columnDef.header, header.getContext())
|
|
@@ -2458,7 +2458,7 @@ function DataTable({
|
|
|
2458
2458
|
}) })
|
|
2459
2459
|
] }) }),
|
|
2460
2460
|
showPagination && /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between px-2", children: [
|
|
2461
|
-
/* @__PURE__ */ jsxs17("p", { className: "text-sm text-muted-foreground", children: [
|
|
2461
|
+
/* @__PURE__ */ jsxs17("p", { className: "text-sm text-muted-foreground tabular-nums", children: [
|
|
2462
2462
|
total,
|
|
2463
2463
|
" registro",
|
|
2464
2464
|
total !== 1 ? "s" : ""
|
|
@@ -2472,12 +2472,12 @@ function DataTable({
|
|
|
2472
2472
|
onClick: () => onPageChange(page - 1),
|
|
2473
2473
|
disabled: page <= 1,
|
|
2474
2474
|
children: [
|
|
2475
|
-
/* @__PURE__ */ jsx27(ChevronLeft, { className: "h-4 w-4" }),
|
|
2475
|
+
/* @__PURE__ */ jsx27(ChevronLeft, { "aria-hidden": "true", className: "h-4 w-4" }),
|
|
2476
2476
|
"Anterior"
|
|
2477
2477
|
]
|
|
2478
2478
|
}
|
|
2479
2479
|
),
|
|
2480
|
-
/* @__PURE__ */ jsxs17("span", { className: "text-sm text-muted-foreground", children: [
|
|
2480
|
+
/* @__PURE__ */ jsxs17("span", { className: "text-sm text-muted-foreground tabular-nums", children: [
|
|
2481
2481
|
page,
|
|
2482
2482
|
" de ",
|
|
2483
2483
|
totalPages
|
|
@@ -2491,7 +2491,7 @@ function DataTable({
|
|
|
2491
2491
|
disabled: page >= totalPages,
|
|
2492
2492
|
children: [
|
|
2493
2493
|
"Pr\xF3ximo",
|
|
2494
|
-
/* @__PURE__ */ jsx27(ChevronRight4, { className: "h-4 w-4" })
|
|
2494
|
+
/* @__PURE__ */ jsx27(ChevronRight4, { "aria-hidden": "true", className: "h-4 w-4" })
|
|
2495
2495
|
]
|
|
2496
2496
|
}
|
|
2497
2497
|
)
|
|
@@ -2687,12 +2687,12 @@ function useColumns(onEdit, onDelete, onResetPassword) {
|
|
|
2687
2687
|
{
|
|
2688
2688
|
accessorKey: "last_login",
|
|
2689
2689
|
header: "\xDAltimo acesso",
|
|
2690
|
-
cell: ({ row }) => /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground text-sm", children: row.original.last_login ? format(new Date(row.original.last_login), "dd/MM/yyyy HH:mm", { locale: ptBR }) : "\u2014" })
|
|
2690
|
+
cell: ({ row }) => /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground text-sm tabular-nums", children: row.original.last_login ? format(new Date(row.original.last_login), "dd/MM/yyyy HH:mm", { locale: ptBR }) : "\u2014" })
|
|
2691
2691
|
},
|
|
2692
2692
|
{
|
|
2693
2693
|
accessorKey: "datetime_add",
|
|
2694
2694
|
header: "Criado em",
|
|
2695
|
-
cell: ({ row }) => /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground text-sm", children: format(new Date(row.original.datetime_add), "dd/MM/yyyy", { locale: ptBR }) })
|
|
2695
|
+
cell: ({ row }) => /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground text-sm tabular-nums", children: format(new Date(row.original.datetime_add), "dd/MM/yyyy", { locale: ptBR }) })
|
|
2696
2696
|
},
|
|
2697
2697
|
{
|
|
2698
2698
|
id: "actions",
|
|
@@ -2700,15 +2700,15 @@ function useColumns(onEdit, onDelete, onResetPassword) {
|
|
|
2700
2700
|
enableSorting: false,
|
|
2701
2701
|
cell: ({ row }) => /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
|
|
2702
2702
|
/* @__PURE__ */ jsxs19(Tooltip, { children: [
|
|
2703
|
-
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => onResetPassword(row.original), children: /* @__PURE__ */ jsx29(Forward, { className: "h-4 w-4" }) }) }),
|
|
2703
|
+
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => onResetPassword(row.original), "aria-label": "Reenviar senha", children: /* @__PURE__ */ jsx29(Forward, { className: "h-4 w-4" }) }) }),
|
|
2704
2704
|
/* @__PURE__ */ jsx29(TooltipContent, { children: "Resetar senha" })
|
|
2705
2705
|
] }),
|
|
2706
2706
|
/* @__PURE__ */ jsxs19(Tooltip, { children: [
|
|
2707
|
-
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => onEdit(row.original), children: /* @__PURE__ */ jsx29(Pencil, { className: "h-4 w-4" }) }) }),
|
|
2707
|
+
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => onEdit(row.original), "aria-label": "Editar", children: /* @__PURE__ */ jsx29(Pencil, { className: "h-4 w-4" }) }) }),
|
|
2708
2708
|
/* @__PURE__ */ jsx29(TooltipContent, { children: "Editar" })
|
|
2709
2709
|
] }),
|
|
2710
2710
|
/* @__PURE__ */ jsxs19(Tooltip, { children: [
|
|
2711
|
-
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8 text-destructive hover:text-destructive", onClick: () => onDelete(row.original.id), children: /* @__PURE__ */ jsx29(Trash22, { className: "h-4 w-4" }) }) }),
|
|
2711
|
+
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx29(Button, { variant: "ghost", size: "icon", className: "h-8 w-8 text-destructive hover:text-destructive", onClick: () => onDelete(row.original.id), "aria-label": "Excluir", children: /* @__PURE__ */ jsx29(Trash22, { className: "h-4 w-4" }) }) }),
|
|
2712
2712
|
/* @__PURE__ */ jsx29(TooltipContent, { children: "Excluir" })
|
|
2713
2713
|
] })
|
|
2714
2714
|
] })
|
|
@@ -2784,23 +2784,26 @@ function UsersPage({ config, renderPhones }) {
|
|
|
2784
2784
|
setEditUser(null);
|
|
2785
2785
|
setFormOpen(true);
|
|
2786
2786
|
}, size: "sm", children: [
|
|
2787
|
-
/* @__PURE__ */ jsx29(Plus, { className: "mr-2 h-4 w-4" }),
|
|
2787
|
+
/* @__PURE__ */ jsx29(Plus, { "aria-hidden": "true", className: "mr-2 h-4 w-4" }),
|
|
2788
2788
|
"Novo Usu\xE1rio"
|
|
2789
2789
|
] })
|
|
2790
2790
|
] }),
|
|
2791
2791
|
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
|
|
2792
2792
|
/* @__PURE__ */ jsxs19("div", { className: "relative flex-1 max-w-md", children: [
|
|
2793
|
-
/* @__PURE__ */ jsx29(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
2793
|
+
/* @__PURE__ */ jsx29(Search, { "aria-hidden": "true", className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
2794
2794
|
/* @__PURE__ */ jsx29(
|
|
2795
2795
|
Input,
|
|
2796
2796
|
{
|
|
2797
|
-
placeholder: "Buscar por nome ou e-mail
|
|
2797
|
+
placeholder: "Buscar por nome ou e-mail\\u2026",
|
|
2798
2798
|
value: search,
|
|
2799
2799
|
onChange: (e) => {
|
|
2800
2800
|
setSearch(e.target.value);
|
|
2801
2801
|
setPage(1);
|
|
2802
2802
|
},
|
|
2803
|
-
className: "pl-9"
|
|
2803
|
+
className: "pl-9",
|
|
2804
|
+
name: "search",
|
|
2805
|
+
autoComplete: "off",
|
|
2806
|
+
"aria-label": "Buscar por nome ou e-mail"
|
|
2804
2807
|
}
|
|
2805
2808
|
)
|
|
2806
2809
|
] }),
|