@akira-io/ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/blocks.d.ts +27 -27
  2. package/dist/blocks.js +79 -66
  3. package/dist/blocks.js.map +1 -1
  4. package/dist/{chunk-SA5LM2GD.js → chunk-2HLBBU3O.js} +44 -20
  5. package/dist/chunk-2HLBBU3O.js.map +1 -0
  6. package/dist/{chunk-MNGNBEYN.js → chunk-3HKIYFWI.js} +263 -166
  7. package/dist/chunk-3HKIYFWI.js.map +1 -0
  8. package/dist/{chunk-UUTXPPRN.js → chunk-DW42Z75X.js} +147 -90
  9. package/dist/chunk-DW42Z75X.js.map +1 -0
  10. package/dist/{chunk-DSD7MVLL.js → chunk-I5UZAJB4.js} +13 -9
  11. package/dist/chunk-I5UZAJB4.js.map +1 -0
  12. package/dist/{chunk-JAHTUAQL.js → chunk-MCMBS2SB.js} +6 -5
  13. package/dist/chunk-MCMBS2SB.js.map +1 -0
  14. package/dist/{chunk-YOVY3KT6.js → chunk-NGMG2UWX.js} +3 -3
  15. package/dist/{chunk-YOVY3KT6.js.map → chunk-NGMG2UWX.js.map} +1 -1
  16. package/dist/{chunk-6QM5BA7B.js → chunk-O5DZTX7D.js} +40 -23
  17. package/dist/chunk-O5DZTX7D.js.map +1 -0
  18. package/dist/{chunk-5AJFQ6C4.js → chunk-QNF4LJVT.js} +2 -2
  19. package/dist/chunk-QNF4LJVT.js.map +1 -0
  20. package/dist/{chunk-LKSM3WLK.js → chunk-SBLZ6T3D.js} +6 -5
  21. package/dist/chunk-SBLZ6T3D.js.map +1 -0
  22. package/dist/{chunk-KYWA5UYN.js → chunk-SH5QZCOW.js} +46 -28
  23. package/dist/chunk-SH5QZCOW.js.map +1 -0
  24. package/dist/chunk-UTSTTTH5.js +48 -0
  25. package/dist/chunk-UTSTTTH5.js.map +1 -0
  26. package/dist/code.d.ts +5 -2
  27. package/dist/code.js +52 -53
  28. package/dist/code.js.map +1 -1
  29. package/dist/{context-VgHq4U98.d.ts → context-OwSoVEri.d.ts} +55 -27
  30. package/dist/editor.d.ts +8 -6
  31. package/dist/editor.js +31 -18
  32. package/dist/editor.js.map +1 -1
  33. package/dist/field-DWm5NXeV.d.ts +39 -0
  34. package/dist/index.d.ts +230 -238
  35. package/dist/index.js +451 -337
  36. package/dist/index.js.map +1 -1
  37. package/dist/inertia.d.ts +1 -1
  38. package/dist/inertia.js +6 -7
  39. package/dist/inertia.js.map +1 -1
  40. package/dist/{button-B6wQRe7p.d.ts → input-Dxnsxi-f.d.ts} +6 -2
  41. package/dist/{json-viewer-BTHBACj9.d.ts → json-viewer-BARA2RCW.d.ts} +3 -2
  42. package/dist/{language-Dgjr9bm3.d.ts → language-Cv_N_53L.d.ts} +5 -2
  43. package/dist/locales/pt.d.ts +9 -9
  44. package/dist/locales/pt.js +7 -1
  45. package/dist/locales/pt.js.map +1 -1
  46. package/dist/shells.d.ts +6 -7
  47. package/dist/shells.js +9 -9
  48. package/dist/shells.js.map +1 -1
  49. package/dist/sidebar-Bp6Q46j-.d.ts +80 -0
  50. package/dist/{types-CT0rBsFc.d.ts → types-B-eGPoFD.d.ts} +3 -2
  51. package/dist/{types-B4QS3h5p.d.ts → types-cmBL8zOc.d.ts} +4 -1
  52. package/package.json +3 -3
  53. package/dist/chunk-5AJFQ6C4.js.map +0 -1
  54. package/dist/chunk-6QM5BA7B.js.map +0 -1
  55. package/dist/chunk-6X4TKSF6.js +0 -21
  56. package/dist/chunk-6X4TKSF6.js.map +0 -1
  57. package/dist/chunk-DSD7MVLL.js.map +0 -1
  58. package/dist/chunk-JAHTUAQL.js.map +0 -1
  59. package/dist/chunk-KYWA5UYN.js.map +0 -1
  60. package/dist/chunk-LKSM3WLK.js.map +0 -1
  61. package/dist/chunk-MNGNBEYN.js.map +0 -1
  62. package/dist/chunk-SA5LM2GD.js.map +0 -1
  63. package/dist/chunk-UUEWFCKT.js +0 -28
  64. package/dist/chunk-UUEWFCKT.js.map +0 -1
  65. package/dist/chunk-UUTXPPRN.js.map +0 -1
  66. package/dist/input-4uxAHW6y.d.ts +0 -5
  67. package/dist/password-input-r39y2pCT.d.ts +0 -50
  68. package/dist/sidebar-BhOIlSjt.d.ts +0 -80
package/dist/blocks.js CHANGED
@@ -1,13 +1,13 @@
1
- import { CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, ConfirmDialog, Popover, PopoverTrigger, PopoverContent, FloatingSheet, FloatingSheetBody, FloatingSheetFooter, Tabs, TabsList, TabsTrigger, TabsContent, Textarea, Switch, FieldError, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, InputOTP, InputOTPGroup, InputOTPSlot, Alert, AlertDescription, Calendar } from './chunk-UUTXPPRN.js';
2
- import { CopyButton } from './chunk-JAHTUAQL.js';
3
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Label } from './chunk-6QM5BA7B.js';
4
- import { Card } from './chunk-SA5LM2GD.js';
5
- export { DEFAULT_TOUR_LABELS, TourProvider, resolveSteps, shouldStartTour, stepsForBreakpoint, useTour, useTourController } from './chunk-YOVY3KT6.js';
6
- import { useUiLabels, useUiLocale } from './chunk-5AJFQ6C4.js';
7
- export { UiLocaleProvider, useUiLabels, useUiLocale } from './chunk-5AJFQ6C4.js';
1
+ import { CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, ConfirmDialog, Popover, PopoverTrigger, PopoverContent, FloatingSheet, FloatingSheetBody, FloatingSheetFooter, Tabs, TabsList, TabsTrigger, TabsContent, Textarea, Switch, FieldError, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, InputOTP, InputOTPGroup, InputOTPSlot, Alert, AlertDescription, Calendar } from './chunk-DW42Z75X.js';
2
+ import { CopyButton } from './chunk-MCMBS2SB.js';
3
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Label } from './chunk-O5DZTX7D.js';
4
+ import { Card } from './chunk-2HLBBU3O.js';
5
+ export { DEFAULT_TOUR_LABELS, TourProvider, resolveSteps, shouldStartTour, stepsForBreakpoint, useTour, useTourController } from './chunk-NGMG2UWX.js';
6
+ import { useUiLabels, useUiLocale } from './chunk-QNF4LJVT.js';
7
+ export { UiLocaleProvider, useUiLabels, useUiLocale } from './chunk-QNF4LJVT.js';
8
8
  import { resolveLink } from './chunk-L2H5GIF7.js';
9
- import { Input } from './chunk-6X4TKSF6.js';
10
- import { Button, cn, elevatedSurface, nestedSurfaceReset, recessedSurface, compactRadius, controlRadius, Spinner } from './chunk-DSD7MVLL.js';
9
+ import { Separator, Input } from './chunk-UTSTTTH5.js';
10
+ import { Button, cn, elevatedSurface, nestedSurfaceReset, recessedSurface, compactRadius, focusRing, controlRadius, Spinner } from './chunk-I5UZAJB4.js';
11
11
  import { createContext, useState, useCallback, useEffect, useContext, useId, useRef } from 'react';
12
12
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
13
  import { TriangleAlert, CalendarDays, ArrowLeft, ChevronRight, AlertCircle, ShieldOff, EyeOff, Eye, RefreshCw, ChevronLeft, ArrowLeftToLine, X, ArrowRight, ArrowUpRight, ArrowDownRight } from 'lucide-react';
@@ -102,7 +102,8 @@ function DangerZone({
102
102
  processing = false,
103
103
  labels,
104
104
  footer,
105
- className
105
+ className,
106
+ slotName = "danger-zone"
106
107
  }) {
107
108
  const copy = { ...dangerZoneLabels, ...labels };
108
109
  const [activeId, setActiveId] = useState(null);
@@ -110,13 +111,13 @@ function DangerZone({
110
111
  return /* @__PURE__ */ jsxs(
111
112
  "section",
112
113
  {
113
- "data-slot": "danger-zone",
114
114
  className: cn(
115
115
  elevatedSurface,
116
116
  nestedSurfaceReset,
117
117
  "gap-6 p-6 flex flex-col bg-destructive/5 ring-destructive/30",
118
118
  className
119
119
  ),
120
+ "data-slot": slotName,
120
121
  children: [
121
122
  /* @__PURE__ */ jsxs("div", { "data-slot": "danger-zone-header", className: "gap-3 flex", children: [
122
123
  /* @__PURE__ */ jsx("span", { className: "size-11 rounded-2xl flex shrink-0 items-center justify-center bg-destructive/10 text-destructive", children: /* @__PURE__ */ jsx(TriangleAlert, { className: "size-5" }) }),
@@ -813,13 +814,14 @@ function FormOverlayActions({
813
814
  submit = false,
814
815
  className,
815
816
  onCancel,
816
- onSave
817
+ onSave,
818
+ slotName = "form-overlay-actions"
817
819
  }) {
818
820
  return /* @__PURE__ */ jsxs(
819
821
  "div",
820
822
  {
821
- "data-slot": "form-overlay-actions",
822
823
  className: cn("gap-2 flex items-center justify-end", className),
824
+ "data-slot": slotName,
823
825
  children: [
824
826
  /* @__PURE__ */ jsx(
825
827
  Button,
@@ -858,7 +860,8 @@ function DetailEditSheet({
858
860
  className,
859
861
  children,
860
862
  onSave,
861
- onCancel
863
+ onCancel,
864
+ slotName = "detail-edit-sheet"
862
865
  }) {
863
866
  const handleSubmit = (event) => {
864
867
  event.preventDefault();
@@ -886,11 +889,12 @@ function DetailEditSheet({
886
889
  children: /* @__PURE__ */ jsxs(
887
890
  "form",
888
891
  {
889
- "data-slot": "detail-edit-sheet",
890
892
  onSubmit: handleSubmit,
891
893
  className: "min-h-0 flex flex-1 flex-col",
894
+ "data-slot": slotName,
892
895
  children: [
893
896
  /* @__PURE__ */ jsx(FloatingSheetBody, { children }),
897
+ /* @__PURE__ */ jsx(Separator, {}),
894
898
  /* @__PURE__ */ jsx(FloatingSheetFooter, { children: /* @__PURE__ */ jsx(
895
899
  FormOverlayActions,
896
900
  {
@@ -918,7 +922,8 @@ function FormDialog({
918
922
  className,
919
923
  children,
920
924
  onSave,
921
- onCancel
925
+ onCancel,
926
+ slotName = "form-dialog"
922
927
  }) {
923
928
  const handleSubmit = (event) => {
924
929
  event.preventDefault();
@@ -952,11 +957,11 @@ function FormDialog({
952
957
  children: /* @__PURE__ */ jsx(
953
958
  DialogContent,
954
959
  {
955
- "data-slot": "form-dialog",
956
960
  ...description ? {} : { "aria-describedby": void 0 },
957
961
  className: cn("gap-0 p-0", className),
958
962
  onEscapeKeyDown: blockWhileProcessing,
959
963
  onInteractOutside: blockWhileProcessing,
964
+ slotName,
960
965
  children: /* @__PURE__ */ jsxs(
961
966
  "form",
962
967
  {
@@ -1013,14 +1018,15 @@ function InfoField({
1013
1018
  copyLabel,
1014
1019
  copiedLabel,
1015
1020
  iconClassName,
1016
- className
1021
+ className,
1022
+ slotName = "info-field"
1017
1023
  }) {
1018
1024
  const text = copyableText(value, copyValue);
1019
1025
  return /* @__PURE__ */ jsxs(
1020
1026
  "div",
1021
1027
  {
1022
- "data-slot": "info-field",
1023
1028
  className: cn("gap-3 flex items-center", className),
1029
+ "data-slot": slotName,
1024
1030
  children: [
1025
1031
  /* @__PURE__ */ jsx("div", { className: cn("p-2 rounded-xl bg-muted", iconClassName), children: /* @__PURE__ */ jsx(Icon, { className: "size-5 text-muted-foreground" }) }),
1026
1032
  /* @__PURE__ */ jsxs("div", { children: [
@@ -1155,12 +1161,12 @@ function SettingsCard({
1155
1161
  control,
1156
1162
  children,
1157
1163
  inset = false,
1158
- className
1164
+ className,
1165
+ slotName = "settings-card"
1159
1166
  }) {
1160
1167
  return /* @__PURE__ */ jsxs(
1161
1168
  "section",
1162
1169
  {
1163
- "data-slot": "settings-card",
1164
1170
  "data-inset": inset || void 0,
1165
1171
  className: cn(
1166
1172
  elevatedSurface,
@@ -1168,6 +1174,7 @@ function SettingsCard({
1168
1174
  inset && recessedSurface,
1169
1175
  className
1170
1176
  ),
1177
+ "data-slot": slotName,
1171
1178
  children: [
1172
1179
  /* @__PURE__ */ jsxs("div", { className: "gap-4 sm:flex-row sm:items-center sm:justify-between flex flex-col", children: [
1173
1180
  /* @__PURE__ */ jsxs("div", { className: "gap-3 flex items-center", children: [
@@ -1198,12 +1205,12 @@ function SettingsPanel({
1198
1205
  description,
1199
1206
  children,
1200
1207
  inset = true,
1201
- className
1208
+ className,
1209
+ slotName = "settings-panel"
1202
1210
  }) {
1203
1211
  return /* @__PURE__ */ jsxs(
1204
1212
  "div",
1205
1213
  {
1206
- "data-slot": "settings-panel",
1207
1214
  "data-inset": inset || void 0,
1208
1215
  className: cn(
1209
1216
  elevatedSurface,
@@ -1211,6 +1218,7 @@ function SettingsPanel({
1211
1218
  inset && recessedSurface,
1212
1219
  className
1213
1220
  ),
1221
+ "data-slot": slotName,
1214
1222
  children: [
1215
1223
  (title || description) && /* @__PURE__ */ jsxs("div", { children: [
1216
1224
  title && /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: title }),
@@ -1259,16 +1267,17 @@ function SettingsField({
1259
1267
  error,
1260
1268
  required,
1261
1269
  className,
1262
- children
1270
+ children,
1271
+ slotName = "settings-field"
1263
1272
  }) {
1264
1273
  const generated = useId();
1265
1274
  const fieldId = id ?? generated;
1266
1275
  return /* @__PURE__ */ jsxs(
1267
1276
  "div",
1268
1277
  {
1269
- "data-slot": "settings-field",
1270
1278
  "data-invalid": error ? true : void 0,
1271
1279
  className: cn("space-y-2 py-1", className),
1280
+ "data-slot": slotName,
1272
1281
  children: [
1273
1282
  /* @__PURE__ */ jsxs(Label, { htmlFor: fieldId, children: [
1274
1283
  label,
@@ -1302,6 +1311,7 @@ function TextField({
1302
1311
  onChange,
1303
1312
  disabled,
1304
1313
  placeholder,
1314
+ slotName = "text-field",
1305
1315
  ...field
1306
1316
  }) {
1307
1317
  return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
@@ -1313,7 +1323,7 @@ function TextField({
1313
1323
  disabled,
1314
1324
  placeholder,
1315
1325
  "aria-invalid": field.error ? true : void 0,
1316
- "data-slot": "text-field",
1326
+ slotName,
1317
1327
  onChange: (event) => onChange(event.target.value)
1318
1328
  }
1319
1329
  ) });
@@ -1326,6 +1336,7 @@ function NumberField({
1326
1336
  min,
1327
1337
  max,
1328
1338
  step,
1339
+ slotName = "number-field",
1329
1340
  ...field
1330
1341
  }) {
1331
1342
  return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
@@ -1341,7 +1352,7 @@ function NumberField({
1341
1352
  disabled,
1342
1353
  placeholder,
1343
1354
  "aria-invalid": field.error ? true : void 0,
1344
- "data-slot": "number-field",
1355
+ slotName,
1345
1356
  onChange: (event) => onChange(
1346
1357
  event.target.value === "" ? "" : event.target.valueAsNumber
1347
1358
  )
@@ -1354,6 +1365,7 @@ function DateField({
1354
1365
  disabled,
1355
1366
  min,
1356
1367
  max,
1368
+ slotName = "date-field",
1357
1369
  ...field
1358
1370
  }) {
1359
1371
  return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
@@ -1366,7 +1378,7 @@ function DateField({
1366
1378
  max,
1367
1379
  disabled,
1368
1380
  "aria-invalid": field.error ? true : void 0,
1369
- "data-slot": "date-field",
1381
+ slotName,
1370
1382
  onChange: (event) => onChange(event.target.value)
1371
1383
  }
1372
1384
  ) });
@@ -1377,6 +1389,7 @@ function SelectField({
1377
1389
  options,
1378
1390
  disabled,
1379
1391
  placeholder,
1392
+ slotName = "select-field",
1380
1393
  ...field
1381
1394
  }) {
1382
1395
  return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsxs(
@@ -1390,7 +1403,7 @@ function SelectField({
1390
1403
  SelectTrigger,
1391
1404
  {
1392
1405
  id: fieldId,
1393
- "data-slot": "select-field",
1406
+ slotName,
1394
1407
  "aria-invalid": field.error ? true : void 0,
1395
1408
  children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
1396
1409
  }
@@ -1415,16 +1428,17 @@ function SettingsPage({
1415
1428
  control,
1416
1429
  linkComponent,
1417
1430
  children,
1418
- className
1431
+ className,
1432
+ slotName = "settings-page"
1419
1433
  }) {
1420
1434
  return /* @__PURE__ */ jsx(SettingsLinkContext.Provider, { value: linkComponent, children: /* @__PURE__ */ jsxs(
1421
1435
  "div",
1422
1436
  {
1423
- "data-slot": "settings-page",
1424
1437
  className: cn(
1425
1438
  "gap-8 max-w-4xl mx-auto flex w-full flex-col",
1426
1439
  className
1427
1440
  ),
1441
+ "data-slot": slotName,
1428
1442
  children: [
1429
1443
  title && /* @__PURE__ */ jsx(
1430
1444
  SectionHeader,
@@ -1451,7 +1465,8 @@ function SettingsSection({
1451
1465
  wide = false,
1452
1466
  linkComponent,
1453
1467
  children,
1454
- className
1468
+ className,
1469
+ slotName = "settings-section"
1455
1470
  }) {
1456
1471
  const labels = useUiLabels("settings", settingsLabels, {
1457
1472
  back: backLabel
@@ -1461,12 +1476,12 @@ function SettingsSection({
1461
1476
  return /* @__PURE__ */ jsxs(
1462
1477
  "section",
1463
1478
  {
1464
- "data-slot": "settings-section",
1465
1479
  className: cn(
1466
1480
  "gap-6 mx-auto flex w-full flex-col",
1467
1481
  wide ? "max-w-4xl" : "max-w-2xl",
1468
1482
  className
1469
1483
  ),
1484
+ "data-slot": slotName,
1470
1485
  children: [
1471
1486
  backHref && /* @__PURE__ */ jsxs(
1472
1487
  Link,
@@ -1497,13 +1512,14 @@ function SettingsGroup({
1497
1512
  label,
1498
1513
  columns = 2,
1499
1514
  children,
1500
- className
1515
+ className,
1516
+ slotName = "settings-group"
1501
1517
  }) {
1502
1518
  return /* @__PURE__ */ jsxs(
1503
1519
  "div",
1504
1520
  {
1505
- "data-slot": "settings-group",
1506
1521
  className: cn("gap-3 flex flex-col", className),
1522
+ "data-slot": slotName,
1507
1523
  children: [
1508
1524
  label && /* @__PURE__ */ jsx("p", { className: "font-bold tracking-widest text-[11px] text-muted-foreground uppercase", children: label }),
1509
1525
  /* @__PURE__ */ jsx(
@@ -1530,7 +1546,8 @@ function SettingsEntry({
1530
1546
  badge,
1531
1547
  disabled = false,
1532
1548
  linkComponent,
1533
- className
1549
+ className,
1550
+ slotName = "settings-entry"
1534
1551
  }) {
1535
1552
  const contextLink = useContext(SettingsLinkContext);
1536
1553
  const Link = resolveLink(linkComponent ?? contextLink);
@@ -1568,25 +1585,14 @@ function SettingsEntry({
1568
1585
  }
1569
1586
  );
1570
1587
  if (disabled) {
1571
- return /* @__PURE__ */ jsx(
1572
- "div",
1573
- {
1574
- "data-slot": "settings-entry",
1575
- "data-disabled": "true",
1576
- "aria-disabled": "true",
1577
- children: card
1578
- }
1579
- );
1588
+ return /* @__PURE__ */ jsx("div", { "data-disabled": "true", "aria-disabled": "true", "data-slot": slotName, children: card });
1580
1589
  }
1581
1590
  return /* @__PURE__ */ jsx(
1582
1591
  Link,
1583
1592
  {
1584
- "data-slot": "settings-entry",
1585
1593
  href,
1586
- className: cn(
1587
- compactRadius,
1588
- "outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50"
1589
- ),
1594
+ className: cn(compactRadius, focusRing),
1595
+ "data-slot": slotName,
1590
1596
  children: card
1591
1597
  }
1592
1598
  );
@@ -1625,13 +1631,13 @@ function StatCard({
1625
1631
  trend,
1626
1632
  comparisonLabel,
1627
1633
  inset = false,
1628
- className
1634
+ className,
1635
+ slotName = "stat-card"
1629
1636
  }) {
1630
1637
  const resolvedTrend = resolveTrend(trend);
1631
1638
  return /* @__PURE__ */ jsxs(
1632
1639
  "div",
1633
1640
  {
1634
- "data-slot": "stat-card",
1635
1641
  "data-inset": inset || void 0,
1636
1642
  className: cn(
1637
1643
  elevatedSurface,
@@ -1639,6 +1645,7 @@ function StatCard({
1639
1645
  inset && recessedSurface,
1640
1646
  className
1641
1647
  ),
1648
+ "data-slot": slotName,
1642
1649
  children: [
1643
1650
  /* @__PURE__ */ jsxs("div", { className: "mb-4 gap-4 flex items-start justify-between", children: [
1644
1651
  /* @__PURE__ */ jsx("div", { className: cn("rounded-2xl p-3 shrink-0", iconClassName), children: /* @__PURE__ */ jsx(Icon, { className: "size-6" }) }),
@@ -1745,7 +1752,8 @@ function TwoFactorVerifyForm({
1745
1752
  submitLabel,
1746
1753
  footer,
1747
1754
  labels,
1748
- className
1755
+ className,
1756
+ slotName = "two-factor-verify-form"
1749
1757
  }) {
1750
1758
  const text = resolveLabels(labels);
1751
1759
  const fieldId = useId();
@@ -1778,11 +1786,11 @@ function TwoFactorVerifyForm({
1778
1786
  return /* @__PURE__ */ jsxs(
1779
1787
  "form",
1780
1788
  {
1781
- "data-slot": "two-factor-verify-form",
1782
1789
  "data-mode": mode,
1783
1790
  "data-pending": pending || void 0,
1784
1791
  onSubmit: handleSubmit,
1785
1792
  className: cn("gap-5 flex w-full flex-col", className),
1793
+ "data-slot": slotName,
1786
1794
  children: [
1787
1795
  /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-col", children: [
1788
1796
  /* @__PURE__ */ jsx(Label, { htmlFor: fieldId, children: mode === "code" ? text.codeLabel : text.recoveryCodeLabel }),
@@ -1803,7 +1811,7 @@ function TwoFactorVerifyForm({
1803
1811
  Input,
1804
1812
  {
1805
1813
  id: fieldId,
1806
- "data-slot": "two-factor-recovery-input",
1814
+ slotName: "two-factor-recovery-input",
1807
1815
  value,
1808
1816
  autoComplete: "one-time-code",
1809
1817
  spellCheck: false,
@@ -1814,7 +1822,7 @@ function TwoFactorVerifyForm({
1814
1822
  }
1815
1823
  )
1816
1824
  ] }),
1817
- messages.length > 0 && /* @__PURE__ */ jsxs(Alert, { variant: "destructive", "data-slot": "two-factor-error", children: [
1825
+ messages.length > 0 && /* @__PURE__ */ jsxs(Alert, { variant: "destructive", slotName: "two-factor-error", children: [
1818
1826
  /* @__PURE__ */ jsx(AlertCircle, {}),
1819
1827
  /* @__PURE__ */ jsx(AlertDescription, { children: messages.map((message) => /* @__PURE__ */ jsx("p", { children: message }, message)) })
1820
1828
  ] }),
@@ -1854,14 +1862,15 @@ function TwoFactorChallenge({
1854
1862
  description,
1855
1863
  footer,
1856
1864
  labels,
1857
- className
1865
+ className,
1866
+ slotName = "two-factor-challenge"
1858
1867
  }) {
1859
1868
  const text = resolveLabels(labels);
1860
1869
  return /* @__PURE__ */ jsxs(
1861
1870
  "section",
1862
1871
  {
1863
- "data-slot": "two-factor-challenge",
1864
1872
  className: cn("gap-6 flex w-full flex-col", className),
1873
+ "data-slot": slotName,
1865
1874
  children: [
1866
1875
  /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-col", children: [
1867
1876
  /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold tracking-tight text-foreground", children: title ?? text.challengeTitle }),
@@ -1888,7 +1897,8 @@ function TwoFactorDisableButton({
1888
1897
  variant = "destructive",
1889
1898
  size = "default",
1890
1899
  labels,
1891
- className
1900
+ className,
1901
+ slotName = "two-factor-disable"
1892
1902
  }) {
1893
1903
  const text = resolveLabels(labels);
1894
1904
  const [open, setOpen] = useState(false);
@@ -1904,9 +1914,9 @@ function TwoFactorDisableButton({
1904
1914
  return /* @__PURE__ */ jsxs(
1905
1915
  "span",
1906
1916
  {
1907
- "data-slot": "two-factor-disable",
1908
1917
  "data-open": open || void 0,
1909
1918
  className: cn("inline-flex", className),
1919
+ "data-slot": slotName,
1910
1920
  children: [
1911
1921
  /* @__PURE__ */ jsxs(
1912
1922
  Button,
@@ -1945,7 +1955,8 @@ function TwoFactorRecoveryCodes({
1945
1955
  onRegenerate,
1946
1956
  showHeading = true,
1947
1957
  labels,
1948
- className
1958
+ className,
1959
+ slotName = "two-factor-recovery-codes"
1949
1960
  }) {
1950
1961
  const text = resolveLabels(labels);
1951
1962
  const [revealed, setRevealed] = useState(defaultRevealed);
@@ -1965,9 +1976,9 @@ function TwoFactorRecoveryCodes({
1965
1976
  return /* @__PURE__ */ jsxs(
1966
1977
  "div",
1967
1978
  {
1968
- "data-slot": "two-factor-recovery-codes",
1969
1979
  "data-revealed": revealed || void 0,
1970
1980
  className: cn("gap-4 flex w-full flex-col", className),
1981
+ "data-slot": slotName,
1971
1982
  children: [
1972
1983
  showHeading && /* @__PURE__ */ jsxs("div", { className: "gap-1 flex flex-col", children: [
1973
1984
  /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: text.recoveryTitle }),
@@ -2057,15 +2068,16 @@ function TwoFactorScanStep({
2057
2068
  qrCodeSvg,
2058
2069
  manualSetupKey,
2059
2070
  labels,
2060
- className
2071
+ className,
2072
+ slotName = "two-factor-scan-step"
2061
2073
  }) {
2062
2074
  const text = resolveLabels(labels);
2063
2075
  const [revealed, setRevealed] = useState(false);
2064
2076
  return /* @__PURE__ */ jsxs(
2065
2077
  "div",
2066
2078
  {
2067
- "data-slot": "two-factor-scan-step",
2068
2079
  className: cn("gap-5 flex w-full flex-col", className),
2080
+ "data-slot": slotName,
2069
2081
  children: [
2070
2082
  /* @__PURE__ */ jsx(
2071
2083
  "div",
@@ -2149,7 +2161,8 @@ function TwoFactorSetupDialog({
2149
2161
  onRegenerateRecoveryCodes,
2150
2162
  onCompleted,
2151
2163
  labels,
2152
- className
2164
+ className,
2165
+ slotName = "two-factor-setup-dialog"
2153
2166
  }) {
2154
2167
  const text = resolveLabels(labels);
2155
2168
  const [step, setStep] = useState(
@@ -2199,9 +2212,9 @@ function TwoFactorSetupDialog({
2199
2212
  return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(
2200
2213
  DialogContent,
2201
2214
  {
2202
- "data-slot": "two-factor-setup-dialog",
2203
2215
  "data-step": step,
2204
2216
  className: cn("max-w-md p-0", className),
2217
+ slotName,
2205
2218
  children: [
2206
2219
  /* @__PURE__ */ jsxs(DialogHeader, { className: "p-6 md:p-8", children: [
2207
2220
  /* @__PURE__ */ jsx(DialogTitle, { children: heading }),