@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 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-all dark:-rotate-90 dark:scale-0" }),
1243
- /* @__PURE__ */ jsx14(Moon, { className: "absolute h-5 w-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
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 { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
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 Fragment3, jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
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(Fragment3, { children: [
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 Fragment4, jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
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(Fragment4, { children: [
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
- children: /* @__PURE__ */ jsx22(Camera, { className: "h-5 w-5 text-white" })
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..." : "Confirmar"
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
  ] }),