@akira-io/ui 1.3.1 → 2.1.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 (78) hide show
  1. package/README.md +2 -2
  2. package/dist/blocks.d.ts +100 -10
  3. package/dist/blocks.js +547 -270
  4. package/dist/blocks.js.map +1 -1
  5. package/dist/{chunk-3Z2VGVPI.js → chunk-53V4J7MC.js} +17 -7
  6. package/dist/chunk-53V4J7MC.js.map +1 -0
  7. package/dist/chunk-BH3B26DK.js +394 -0
  8. package/dist/chunk-BH3B26DK.js.map +1 -0
  9. package/dist/chunk-BP2YDMMI.js +29 -0
  10. package/dist/chunk-BP2YDMMI.js.map +1 -0
  11. package/dist/chunk-BR3JI3KN.js +458 -0
  12. package/dist/chunk-BR3JI3KN.js.map +1 -0
  13. package/dist/{chunk-YBXRJSR3.js → chunk-CAUTXZ4U.js} +15 -7
  14. package/dist/chunk-CAUTXZ4U.js.map +1 -0
  15. package/dist/{chunk-I6VVCFZ2.js → chunk-DPLCEU34.js} +342 -238
  16. package/dist/chunk-DPLCEU34.js.map +1 -0
  17. package/dist/chunk-IQMRJXEO.js +5 -4
  18. package/dist/chunk-IQMRJXEO.js.map +1 -1
  19. package/dist/chunk-L2H5GIF7.js +5 -4
  20. package/dist/chunk-L2H5GIF7.js.map +1 -1
  21. package/dist/{chunk-2V6HUWST.js → chunk-NKPFIA32.js} +19 -6
  22. package/dist/chunk-NKPFIA32.js.map +1 -0
  23. package/dist/{chunk-QNF4LJVT.js → chunk-OS7YY5R4.js} +8 -6
  24. package/dist/chunk-OS7YY5R4.js.map +1 -0
  25. package/dist/{chunk-IDNOI4OK.js → chunk-PCYYU332.js} +15 -8
  26. package/dist/chunk-PCYYU332.js.map +1 -0
  27. package/dist/{chunk-KHOA4TEI.js → chunk-PPWJK5T3.js} +60 -25
  28. package/dist/chunk-PPWJK5T3.js.map +1 -0
  29. package/dist/{chunk-N2KIFFI7.js → chunk-QZRSQVCN.js} +30 -34
  30. package/dist/chunk-QZRSQVCN.js.map +1 -0
  31. package/dist/{chunk-SZUXATOF.js → chunk-XLAOE5MV.js} +170 -76
  32. package/dist/chunk-XLAOE5MV.js.map +1 -0
  33. package/dist/{chunk-B3L6PRLX.js → chunk-ZQXZ4UGE.js} +208 -100
  34. package/dist/chunk-ZQXZ4UGE.js.map +1 -0
  35. package/dist/code.d.ts +2 -2
  36. package/dist/code.js +96 -52
  37. package/dist/code.js.map +1 -1
  38. package/dist/{context-OwSoVEri.d.ts → context-2wTOwxCk.d.ts} +13 -5
  39. package/dist/editor.d.ts +1 -1
  40. package/dist/editor.js +135 -52
  41. package/dist/editor.js.map +1 -1
  42. package/dist/{field-DWm5NXeV.d.ts → field-C1TdmC2t.d.ts} +1 -1
  43. package/dist/index.d.ts +15 -12
  44. package/dist/index.js +1105 -633
  45. package/dist/index.js.map +1 -1
  46. package/dist/inertia.d.ts +11 -3
  47. package/dist/inertia.js +66 -12
  48. package/dist/inertia.js.map +1 -1
  49. package/dist/{input-Dxnsxi-f.d.ts → input-B4uEClxB.d.ts} +1 -1
  50. package/dist/{json-viewer-BARA2RCW.d.ts → json-viewer-Bssv9mTD.d.ts} +1 -1
  51. package/dist/locales/fr.d.ts +44 -0
  52. package/dist/locales/fr.js +248 -0
  53. package/dist/locales/fr.js.map +1 -0
  54. package/dist/locales/pt.d.ts +10 -9
  55. package/dist/locales/pt.js +40 -3
  56. package/dist/locales/pt.js.map +1 -1
  57. package/dist/shells.d.ts +46 -5
  58. package/dist/shells.js +211 -71
  59. package/dist/shells.js.map +1 -1
  60. package/dist/{sidebar-Bp6Q46j-.d.ts → sidebar-BLL2tgTt.d.ts} +2 -2
  61. package/dist/types-1LUmNJf_.d.ts +41 -0
  62. package/dist/{types-cmBL8zOc.d.ts → types-CMZRvMV5.d.ts} +1 -1
  63. package/dist/{types-B-eGPoFD.d.ts → types-CfAUvz--.d.ts} +1 -1
  64. package/package.json +8 -2
  65. package/theme.css +11 -0
  66. package/dist/chunk-2V6HUWST.js.map +0 -1
  67. package/dist/chunk-3Z2VGVPI.js.map +0 -1
  68. package/dist/chunk-B3L6PRLX.js.map +0 -1
  69. package/dist/chunk-I6VVCFZ2.js.map +0 -1
  70. package/dist/chunk-IDNOI4OK.js.map +0 -1
  71. package/dist/chunk-KHOA4TEI.js.map +0 -1
  72. package/dist/chunk-N2KIFFI7.js.map +0 -1
  73. package/dist/chunk-NGMG2UWX.js +0 -172
  74. package/dist/chunk-NGMG2UWX.js.map +0 -1
  75. package/dist/chunk-QNF4LJVT.js.map +0 -1
  76. package/dist/chunk-SZUXATOF.js.map +0 -1
  77. package/dist/chunk-YBXRJSR3.js.map +0 -1
  78. package/dist/types-u1qfmJQi.d.ts +0 -28
package/dist/blocks.js CHANGED
@@ -1,19 +1,105 @@
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-I6VVCFZ2.js';
2
- import { CopyButton } from './chunk-IDNOI4OK.js';
3
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Label } from './chunk-N2KIFFI7.js';
4
- import { Card } from './chunk-2V6HUWST.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
- import { resolveLink } from './chunk-L2H5GIF7.js';
9
- import { Separator, Input } from './chunk-3Z2VGVPI.js';
10
- import { Button, cn, elevatedSurface, nestedSurfaceReset, compactRadius, recessedSurface, focusRing, controlRadius, Spinner } from './chunk-KHOA4TEI.js';
11
- import { createContext, useState, useCallback, useEffect, useContext, useId, useRef } from 'react';
12
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
- import { TriangleAlert, CalendarDays, ArrowLeft, ChevronRight, AlertCircle, ShieldOff, EyeOff, Eye, RefreshCw, ChevronLeft, ArrowLeftToLine, X, ArrowRight, ArrowUpRight, ArrowDownRight } from 'lucide-react';
14
- import { subYears, subQuarters, subMonths, subWeeks, subDays, endOfYear, endOfQuarter, endOfMonth, endOfDay, startOfYear, startOfQuarter, startOfMonth, startOfDay, isSameYear, format, endOfWeek, startOfWeek } from 'date-fns';
15
- import { pt } from 'date-fns/locale';
1
+ 'use client';
16
2
 
3
+ "use client";
4
+ import {
5
+ Calendar,
6
+ CommandDialog,
7
+ CommandEmpty,
8
+ CommandGroup,
9
+ CommandInput,
10
+ CommandItem,
11
+ CommandList,
12
+ ConfirmDialog,
13
+ FloatingSheet,
14
+ FloatingSheetBody,
15
+ FloatingSheetFooter,
16
+ InputOTP,
17
+ InputOTPGroup,
18
+ InputOTPSlot,
19
+ Popover,
20
+ PopoverContent,
21
+ PopoverTrigger,
22
+ Select,
23
+ SelectContent,
24
+ SelectItem,
25
+ SelectTrigger,
26
+ SelectValue,
27
+ Switch,
28
+ Tabs,
29
+ TabsContent,
30
+ TabsList,
31
+ TabsTrigger,
32
+ Textarea
33
+ } from "./chunk-DPLCEU34.js";
34
+ import {
35
+ CopyButton
36
+ } from "./chunk-PCYYU332.js";
37
+ import {
38
+ Dialog,
39
+ DialogContent,
40
+ DialogDescription,
41
+ DialogFooter,
42
+ DialogHeader,
43
+ DialogTitle
44
+ } from "./chunk-QZRSQVCN.js";
45
+ import {
46
+ Card
47
+ } from "./chunk-NKPFIA32.js";
48
+ import {
49
+ DEFAULT_TOUR_LABELS,
50
+ LoginForm,
51
+ LoginFormEmail,
52
+ LoginFormPassword,
53
+ LoginFormPreset,
54
+ LoginFormProvider,
55
+ LoginFormRemember,
56
+ LoginFormRoot,
57
+ LoginFormStatus,
58
+ LoginFormSubmit,
59
+ TourProvider,
60
+ loginFormLabels,
61
+ resolveSteps,
62
+ shouldStartTour,
63
+ stepsForBreakpoint,
64
+ useLoginFormContext,
65
+ useTour,
66
+ useTourController
67
+ } from "./chunk-BR3JI3KN.js";
68
+ import {
69
+ Alert,
70
+ AlertDescription,
71
+ FieldError
72
+ } from "./chunk-BH3B26DK.js";
73
+ import {
74
+ UiLocaleProvider,
75
+ useUiLabels,
76
+ useUiLocale
77
+ } from "./chunk-OS7YY5R4.js";
78
+ import {
79
+ Label
80
+ } from "./chunk-BP2YDMMI.js";
81
+ import {
82
+ resolveLink
83
+ } from "./chunk-L2H5GIF7.js";
84
+ import {
85
+ Input,
86
+ Separator
87
+ } from "./chunk-53V4J7MC.js";
88
+ import {
89
+ Button,
90
+ Spinner,
91
+ cn,
92
+ compactRadius,
93
+ controlRadius,
94
+ elevatedSurface,
95
+ focusRing,
96
+ nestedSurfaceReset,
97
+ recessedSurface
98
+ } from "./chunk-PPWJK5T3.js";
99
+
100
+ // src/blocks/command-palette.tsx
101
+ import { useCallback, useEffect, useState } from "react";
102
+ import { jsx, jsxs } from "react/jsx-runtime";
17
103
  var commandPaletteDefaultLabels = {
18
104
  placeholder: "Search...",
19
105
  noResultsLabel: "No results found"
@@ -85,6 +171,11 @@ function useCommandPalette(initialOpen = false) {
85
171
  }, [toggle]);
86
172
  return { open, setOpen, toggle };
87
173
  }
174
+
175
+ // src/blocks/danger-zone.tsx
176
+ import { TriangleAlert } from "lucide-react";
177
+ import { useState as useState2 } from "react";
178
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
88
179
  var dangerZoneLabels = {
89
180
  title: "Danger zone",
90
181
  description: "These actions are permanent and cannot be undone.",
@@ -106,9 +197,9 @@ function DangerZone({
106
197
  slotName = "danger-zone"
107
198
  }) {
108
199
  const copy = { ...dangerZoneLabels, ...labels };
109
- const [activeId, setActiveId] = useState(null);
200
+ const [activeId, setActiveId] = useState2(null);
110
201
  const active = actions.find((action) => action.id === activeId) ?? null;
111
- return /* @__PURE__ */ jsxs(
202
+ return /* @__PURE__ */ jsxs2(
112
203
  "section",
113
204
  {
114
205
  className: cn(
@@ -119,25 +210,25 @@ function DangerZone({
119
210
  ),
120
211
  "data-slot": slotName,
121
212
  children: [
122
- /* @__PURE__ */ jsxs("div", { "data-slot": "danger-zone-header", className: "gap-3 flex", children: [
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" }) }),
124
- /* @__PURE__ */ jsxs("div", { children: [
125
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold text-destructive", children: title ?? copy.title }),
126
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: description ?? copy.description })
213
+ /* @__PURE__ */ jsxs2("div", { "data-slot": "danger-zone-header", className: "gap-3 flex", children: [
214
+ /* @__PURE__ */ jsx2("span", { className: "size-11 rounded-2xl flex shrink-0 items-center justify-center bg-destructive/10 text-destructive", children: /* @__PURE__ */ jsx2(TriangleAlert, { className: "size-5" }) }),
215
+ /* @__PURE__ */ jsxs2("div", { children: [
216
+ /* @__PURE__ */ jsx2("h2", { className: "text-lg font-bold text-destructive", children: title ?? copy.title }),
217
+ /* @__PURE__ */ jsx2("p", { className: "text-sm font-medium text-muted-foreground", children: description ?? copy.description })
127
218
  ] })
128
219
  ] }),
129
- /* @__PURE__ */ jsx("ul", { "data-slot": "danger-zone-actions", className: "gap-4 flex flex-col", children: actions.map((action) => /* @__PURE__ */ jsxs(
220
+ /* @__PURE__ */ jsx2("ul", { "data-slot": "danger-zone-actions", className: "gap-4 flex flex-col", children: actions.map((action) => /* @__PURE__ */ jsxs2(
130
221
  "li",
131
222
  {
132
223
  "data-slot": "danger-zone-action",
133
224
  "data-action-id": action.id,
134
225
  className: "gap-4 sm:flex-row sm:items-center sm:justify-between flex flex-col",
135
226
  children: [
136
- /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
137
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: action.title }),
138
- action.description && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: action.description })
227
+ /* @__PURE__ */ jsxs2("div", { className: "min-w-0", children: [
228
+ /* @__PURE__ */ jsx2("p", { className: "text-sm font-semibold text-foreground", children: action.title }),
229
+ action.description && /* @__PURE__ */ jsx2("p", { className: "text-sm font-medium text-muted-foreground", children: action.description })
139
230
  ] }),
140
- /* @__PURE__ */ jsx(
231
+ /* @__PURE__ */ jsx2(
141
232
  Button,
142
233
  {
143
234
  type: "button",
@@ -153,7 +244,7 @@ function DangerZone({
153
244
  action.id
154
245
  )) }),
155
246
  footer,
156
- /* @__PURE__ */ jsx(
247
+ /* @__PURE__ */ jsx2(
157
248
  ConfirmDialog,
158
249
  {
159
250
  open: active !== null,
@@ -177,6 +268,9 @@ function DangerZone({
177
268
  }
178
269
  );
179
270
  }
271
+
272
+ // src/blocks/date-filter/context.tsx
273
+ import { createContext, useContext } from "react";
180
274
  var DateFilterContext = createContext(null);
181
275
  var DateFilterProvider = DateFilterContext.Provider;
182
276
  function useDateFilter() {
@@ -186,6 +280,16 @@ function useDateFilter() {
186
280
  }
187
281
  return context;
188
282
  }
283
+
284
+ // src/blocks/date-filter/date-filter.tsx
285
+ import { CalendarDays as CalendarDays2 } from "lucide-react";
286
+ import { useState as useState3 } from "react";
287
+
288
+ // src/blocks/date-filter/fixed-panel.tsx
289
+ import { format } from "date-fns";
290
+ import { pt } from "date-fns/locale";
291
+ import { ChevronLeft } from "lucide-react";
292
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
189
293
  var CALENDAR_START = new Date(2020, 0, 1);
190
294
  var CALENDAR_END = new Date((/* @__PURE__ */ new Date()).getFullYear() + 1, 11, 31);
191
295
  var toDate = (value) => value ? /* @__PURE__ */ new Date(`${value}T00:00:00`) : void 0;
@@ -195,19 +299,19 @@ function DateFilterFixedPanel() {
195
299
  const operator = draft.operator ?? "between";
196
300
  const isRange = operator === "between";
197
301
  const canApply = Boolean(draft.start) && (!isRange || Boolean(draft.end));
198
- return /* @__PURE__ */ jsxs("div", { className: "w-auto", children: [
199
- /* @__PURE__ */ jsxs("div", { className: "gap-1 px-2 py-2 flex items-center border-b", children: [
200
- /* @__PURE__ */ jsx(
302
+ return /* @__PURE__ */ jsxs3("div", { className: "w-auto", children: [
303
+ /* @__PURE__ */ jsxs3("div", { className: "gap-1 px-2 py-2 flex items-center border-b", children: [
304
+ /* @__PURE__ */ jsx3(
201
305
  Button,
202
306
  {
203
307
  variant: "ghost",
204
308
  size: "icon",
205
309
  onClick: backToRoot,
206
310
  "aria-label": labels.back,
207
- children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" })
311
+ children: /* @__PURE__ */ jsx3(ChevronLeft, { className: "size-4" })
208
312
  }
209
313
  ),
210
- operators.map((item) => /* @__PURE__ */ jsx(
314
+ operators.map((item) => /* @__PURE__ */ jsx3(
211
315
  "button",
212
316
  {
213
317
  type: "button",
@@ -224,7 +328,7 @@ function DateFilterFixedPanel() {
224
328
  item.value
225
329
  ))
226
330
  ] }),
227
- /* @__PURE__ */ jsx("div", { className: "p-3", children: isRange ? /* @__PURE__ */ jsx(
331
+ /* @__PURE__ */ jsx3("div", { className: "p-3", children: isRange ? /* @__PURE__ */ jsx3(
228
332
  Calendar,
229
333
  {
230
334
  mode: "range",
@@ -244,7 +348,7 @@ function DateFilterFixedPanel() {
244
348
  end: toIso(range?.to)
245
349
  })
246
350
  }
247
- ) : /* @__PURE__ */ jsx(
351
+ ) : /* @__PURE__ */ jsx3(
248
352
  Calendar,
249
353
  {
250
354
  mode: "single",
@@ -257,9 +361,34 @@ function DateFilterFixedPanel() {
257
361
  onSelect: (date) => setDraft({ ...draft, start: toIso(date) })
258
362
  }
259
363
  ) }),
260
- /* @__PURE__ */ jsx("div", { className: "px-3 py-2 flex justify-end border-t", children: /* @__PURE__ */ jsx(Button, { disabled: !canApply, onClick: () => commit(draft), children: labels.apply }) })
364
+ /* @__PURE__ */ jsx3("div", { className: "px-3 py-2 flex justify-end border-t", children: /* @__PURE__ */ jsx3(Button, { disabled: !canApply, onClick: () => commit(draft), children: labels.apply }) })
261
365
  ] });
262
366
  }
367
+
368
+ // src/blocks/date-filter/relative-panel.tsx
369
+ import { ArrowLeftToLine, CalendarDays, ChevronLeft as ChevronLeft2, X } from "lucide-react";
370
+
371
+ // src/blocks/date-filter/range.ts
372
+ import {
373
+ endOfDay,
374
+ endOfMonth,
375
+ endOfQuarter,
376
+ endOfWeek,
377
+ endOfYear,
378
+ format as format2,
379
+ isSameYear,
380
+ startOfDay,
381
+ startOfMonth,
382
+ startOfQuarter,
383
+ startOfWeek,
384
+ startOfYear,
385
+ subDays,
386
+ subMonths,
387
+ subQuarters,
388
+ subWeeks,
389
+ subYears
390
+ } from "date-fns";
391
+ import { pt as pt2 } from "date-fns/locale";
263
392
  var WEEK_OPTIONS = { weekStartsOn: 1 };
264
393
  var subtract = {
265
394
  day: subDays,
@@ -298,29 +427,32 @@ function resolveRelativeRange(unit, amount, includeCurrent, now = /* @__PURE__ *
298
427
  function formatRangePreview(range) {
299
428
  const sameYear = isSameYear(range.start, range.end);
300
429
  const startPattern = sameYear ? "d MMM" : "d MMM yyyy";
301
- return `${format(range.start, startPattern, { locale: pt })} - ${format(range.end, "d MMM yyyy", { locale: pt })}`;
430
+ return `${format2(range.start, startPattern, { locale: pt2 })} - ${format2(range.end, "d MMM yyyy", { locale: pt2 })}`;
302
431
  }
432
+
433
+ // src/blocks/date-filter/relative-panel.tsx
434
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
303
435
  function DateFilterRelativePanel() {
304
436
  const { draft, units, labels, setDraft, backToRoot, commit } = useDateFilter();
305
437
  const hasOffset = (draft.offset_amount ?? 0) > 0;
306
- return /* @__PURE__ */ jsxs("div", { className: "w-96", children: [
307
- /* @__PURE__ */ jsxs("div", { className: "gap-2 px-2 py-2 flex items-center border-b", children: [
308
- /* @__PURE__ */ jsx(
438
+ return /* @__PURE__ */ jsxs4("div", { className: "w-96", children: [
439
+ /* @__PURE__ */ jsxs4("div", { className: "gap-2 px-2 py-2 flex items-center border-b", children: [
440
+ /* @__PURE__ */ jsx4(
309
441
  Button,
310
442
  {
311
443
  variant: "ghost",
312
444
  size: "icon",
313
445
  onClick: backToRoot,
314
446
  "aria-label": labels.back,
315
- children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" })
447
+ children: /* @__PURE__ */ jsx4(ChevronLeft2, { className: "size-4" })
316
448
  }
317
449
  ),
318
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: labels.relativeTitle })
450
+ /* @__PURE__ */ jsx4("span", { className: "text-sm font-medium", children: labels.relativeTitle })
319
451
  ] }),
320
- /* @__PURE__ */ jsxs("div", { className: "gap-3 p-3 flex flex-col", children: [
321
- /* @__PURE__ */ jsxs("div", { className: "gap-2 flex items-center", children: [
322
- /* @__PURE__ */ jsx("span", { className: "text-sm", children: labels.latest }),
323
- /* @__PURE__ */ jsx(
452
+ /* @__PURE__ */ jsxs4("div", { className: "gap-3 p-3 flex flex-col", children: [
453
+ /* @__PURE__ */ jsxs4("div", { className: "gap-2 flex items-center", children: [
454
+ /* @__PURE__ */ jsx4("span", { className: "text-sm", children: labels.latest }),
455
+ /* @__PURE__ */ jsx4(
324
456
  Input,
325
457
  {
326
458
  type: "number",
@@ -334,18 +466,18 @@ function DateFilterRelativePanel() {
334
466
  className: "w-20"
335
467
  }
336
468
  ),
337
- /* @__PURE__ */ jsxs(
469
+ /* @__PURE__ */ jsxs4(
338
470
  Select,
339
471
  {
340
472
  value: draft.unit ?? "month",
341
473
  onValueChange: (unit) => setDraft({ ...draft, unit }),
342
474
  children: [
343
- /* @__PURE__ */ jsx(SelectTrigger, { className: "flex-1", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
344
- /* @__PURE__ */ jsx(SelectContent, { children: units.map((unit) => /* @__PURE__ */ jsx(SelectItem, { value: unit.value, children: unit.label }, unit.value)) })
475
+ /* @__PURE__ */ jsx4(SelectTrigger, { className: "flex-1", children: /* @__PURE__ */ jsx4(SelectValue, {}) }),
476
+ /* @__PURE__ */ jsx4(SelectContent, { children: units.map((unit) => /* @__PURE__ */ jsx4(SelectItem, { value: unit.value, children: unit.label }, unit.value)) })
345
477
  ]
346
478
  }
347
479
  ),
348
- !hasOffset && /* @__PURE__ */ jsx(
480
+ !hasOffset && /* @__PURE__ */ jsx4(
349
481
  Button,
350
482
  {
351
483
  variant: "ghost",
@@ -357,13 +489,13 @@ function DateFilterRelativePanel() {
357
489
  offset_amount: 1,
358
490
  offset_unit: draft.unit ?? "month"
359
491
  }),
360
- children: /* @__PURE__ */ jsx(ArrowLeftToLine, { className: "size-4" })
492
+ children: /* @__PURE__ */ jsx4(ArrowLeftToLine, { className: "size-4" })
361
493
  }
362
494
  )
363
495
  ] }),
364
- hasOffset && /* @__PURE__ */ jsxs("div", { className: "gap-2 flex items-center", children: [
365
- /* @__PURE__ */ jsx("span", { className: "text-sm", children: labels.startingAgo }),
366
- /* @__PURE__ */ jsx(
496
+ hasOffset && /* @__PURE__ */ jsxs4("div", { className: "gap-2 flex items-center", children: [
497
+ /* @__PURE__ */ jsx4("span", { className: "text-sm", children: labels.startingAgo }),
498
+ /* @__PURE__ */ jsx4(
367
499
  Input,
368
500
  {
369
501
  type: "number",
@@ -377,7 +509,7 @@ function DateFilterRelativePanel() {
377
509
  className: "w-20"
378
510
  }
379
511
  ),
380
- /* @__PURE__ */ jsxs(
512
+ /* @__PURE__ */ jsxs4(
381
513
  Select,
382
514
  {
383
515
  value: draft.offset_unit ?? draft.unit ?? "month",
@@ -386,8 +518,8 @@ function DateFilterRelativePanel() {
386
518
  offset_unit: unit
387
519
  }),
388
520
  children: [
389
- /* @__PURE__ */ jsx(SelectTrigger, { className: "flex-1", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
390
- /* @__PURE__ */ jsx(SelectContent, { children: units.map((unit) => /* @__PURE__ */ jsx(
521
+ /* @__PURE__ */ jsx4(SelectTrigger, { className: "flex-1", children: /* @__PURE__ */ jsx4(SelectValue, {}) }),
522
+ /* @__PURE__ */ jsx4(SelectContent, { children: units.map((unit) => /* @__PURE__ */ jsx4(
391
523
  SelectItem,
392
524
  {
393
525
  value: unit.value,
@@ -398,7 +530,7 @@ function DateFilterRelativePanel() {
398
530
  ]
399
531
  }
400
532
  ),
401
- /* @__PURE__ */ jsx(
533
+ /* @__PURE__ */ jsx4(
402
534
  Button,
403
535
  {
404
536
  variant: "ghost",
@@ -409,13 +541,13 @@ function DateFilterRelativePanel() {
409
541
  offset_amount: void 0,
410
542
  offset_unit: void 0
411
543
  }),
412
- children: /* @__PURE__ */ jsx(X, { className: "size-4" })
544
+ children: /* @__PURE__ */ jsx4(X, { className: "size-4" })
413
545
  }
414
546
  )
415
547
  ] }),
416
- /* @__PURE__ */ jsxs("label", { className: "text-sm flex items-center justify-between", children: [
548
+ /* @__PURE__ */ jsxs4("label", { className: "text-sm flex items-center justify-between", children: [
417
549
  labels.includeCurrent,
418
- /* @__PURE__ */ jsx(
550
+ /* @__PURE__ */ jsx4(
419
551
  Switch,
420
552
  {
421
553
  checked: draft.include_current ?? false,
@@ -424,9 +556,9 @@ function DateFilterRelativePanel() {
424
556
  )
425
557
  ] })
426
558
  ] }),
427
- /* @__PURE__ */ jsxs("div", { className: "gap-3 px-3 py-2 flex items-center justify-between border-t", children: [
428
- /* @__PURE__ */ jsx(RangePreview, { draft }),
429
- /* @__PURE__ */ jsx(
559
+ /* @__PURE__ */ jsxs4("div", { className: "gap-3 px-3 py-2 flex items-center justify-between border-t", children: [
560
+ /* @__PURE__ */ jsx4(RangePreview, { draft }),
561
+ /* @__PURE__ */ jsx4(
430
562
  Button,
431
563
  {
432
564
  disabled: !draft.unit || !draft.amount || draft.amount < 1,
@@ -447,15 +579,19 @@ function RangePreview({ draft }) {
447
579
  draft.offset_unit
448
580
  );
449
581
  if (!range) {
450
- return /* @__PURE__ */ jsx("span", {});
582
+ return /* @__PURE__ */ jsx4("span", {});
451
583
  }
452
- return /* @__PURE__ */ jsxs("span", { className: "gap-2 text-sm flex items-center text-muted-foreground", children: [
453
- /* @__PURE__ */ jsx(CalendarDays, { className: "size-4" }),
584
+ return /* @__PURE__ */ jsxs4("span", { className: "gap-2 text-sm flex items-center text-muted-foreground", children: [
585
+ /* @__PURE__ */ jsx4(CalendarDays, { className: "size-4" }),
454
586
  formatRangePreview(range)
455
587
  ] });
456
588
  }
457
- var readable = (value) => value ? format(/* @__PURE__ */ new Date(`${value}T00:00:00`), "d 'de' MMMM 'de' yyyy", {
458
- locale: pt
589
+
590
+ // src/blocks/date-filter/summarise.ts
591
+ import { format as format3 } from "date-fns";
592
+ import { pt as pt3 } from "date-fns/locale";
593
+ var readable = (value) => value ? format3(/* @__PURE__ */ new Date(`${value}T00:00:00`), "d 'de' MMMM 'de' yyyy", {
594
+ locale: pt3
459
595
  }) : "";
460
596
  function summariseDateFilter(value, presets, operators, units, labels) {
461
597
  if (value.mode === "preset") {
@@ -511,6 +647,9 @@ var DEFAULT_LABELS = {
511
647
  removeOffset: "Remove offset",
512
648
  fallback: "Date"
513
649
  };
650
+
651
+ // src/blocks/date-filter/date-filter.tsx
652
+ import { Fragment, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
514
653
  function DateFilter({
515
654
  value,
516
655
  onChange,
@@ -522,9 +661,9 @@ function DateFilter({
522
661
  }) {
523
662
  const locale = useUiLocale();
524
663
  const resolvedLabels = useUiLabels("dateFilter", DEFAULT_LABELS, labels);
525
- const [open, setOpen] = useState(false);
526
- const [panel, setPanel] = useState("root");
527
- const [draft, setDraft] = useState(value);
664
+ const [open, setOpen] = useState3(false);
665
+ const [panel, setPanel] = useState3("root");
666
+ const [draft, setDraft] = useState3(value);
528
667
  const context = {
529
668
  value,
530
669
  draft,
@@ -545,7 +684,7 @@ function DateFilter({
545
684
  setPanel("root");
546
685
  }
547
686
  };
548
- return /* @__PURE__ */ jsx(DateFilterProvider, { value: context, children: /* @__PURE__ */ jsx(
687
+ return /* @__PURE__ */ jsx5(DateFilterProvider, { value: context, children: /* @__PURE__ */ jsx5(
549
688
  Popover,
550
689
  {
551
690
  open,
@@ -555,15 +694,15 @@ function DateFilter({
555
694
  setPanel("root");
556
695
  }
557
696
  },
558
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
559
- /* @__PURE__ */ jsx(DateFilterTrigger, {}),
560
- /* @__PURE__ */ jsxs(DateFilterContent, { children: [
561
- /* @__PURE__ */ jsx(DateFilterAll, {}),
562
- /* @__PURE__ */ jsx(DateFilterSeparator, {}),
563
- /* @__PURE__ */ jsx(DateFilterPresets, {}),
564
- /* @__PURE__ */ jsx(DateFilterSeparator, {}),
565
- /* @__PURE__ */ jsx(DateFilterFixed, {}),
566
- /* @__PURE__ */ jsx(DateFilterRelative, {})
697
+ children: children ?? /* @__PURE__ */ jsxs5(Fragment, { children: [
698
+ /* @__PURE__ */ jsx5(DateFilterTrigger, {}),
699
+ /* @__PURE__ */ jsxs5(DateFilterContent, { children: [
700
+ /* @__PURE__ */ jsx5(DateFilterAll, {}),
701
+ /* @__PURE__ */ jsx5(DateFilterSeparator, {}),
702
+ /* @__PURE__ */ jsx5(DateFilterPresets, {}),
703
+ /* @__PURE__ */ jsx5(DateFilterSeparator, {}),
704
+ /* @__PURE__ */ jsx5(DateFilterFixed, {}),
705
+ /* @__PURE__ */ jsx5(DateFilterRelative, {})
567
706
  ] })
568
707
  ] })
569
708
  }
@@ -574,13 +713,13 @@ function DateFilterTrigger({
574
713
  children
575
714
  }) {
576
715
  const { value, presets, operators, units, labels } = useDateFilter();
577
- return /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
716
+ return /* @__PURE__ */ jsx5(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs5(
578
717
  Button,
579
718
  {
580
719
  variant: "outline",
581
720
  className: cn("gap-2 justify-start", className),
582
721
  children: [
583
- /* @__PURE__ */ jsx(CalendarDays, { className: "size-4" }),
722
+ /* @__PURE__ */ jsx5(CalendarDays2, { className: "size-4" }),
584
723
  children ?? summariseDateFilter(
585
724
  value,
586
725
  presets,
@@ -597,10 +736,10 @@ function DateFilterContent({
597
736
  className
598
737
  }) {
599
738
  const { panel } = useDateFilter();
600
- return /* @__PURE__ */ jsxs(PopoverContent, { align: "start", className: cn("p-0 w-auto", className), children: [
601
- panel === "root" && /* @__PURE__ */ jsx("div", { className: "w-64 py-2 flex flex-col", children }),
602
- panel === "fixed" && /* @__PURE__ */ jsx(DateFilterFixedPanel, {}),
603
- panel === "relative" && /* @__PURE__ */ jsx(DateFilterRelativePanel, {})
739
+ return /* @__PURE__ */ jsxs5(PopoverContent, { align: "start", className: cn("p-0 w-auto", className), children: [
740
+ panel === "root" && /* @__PURE__ */ jsx5("div", { className: "w-64 py-2 flex flex-col", children }),
741
+ panel === "fixed" && /* @__PURE__ */ jsx5(DateFilterFixedPanel, {}),
742
+ panel === "relative" && /* @__PURE__ */ jsx5(DateFilterRelativePanel, {})
604
743
  ] });
605
744
  }
606
745
  function DateFilterItem({
@@ -608,7 +747,7 @@ function DateFilterItem({
608
747
  onSelect,
609
748
  children
610
749
  }) {
611
- return /* @__PURE__ */ jsx(
750
+ return /* @__PURE__ */ jsx5(
612
751
  "button",
613
752
  {
614
753
  type: "button",
@@ -623,11 +762,11 @@ function DateFilterItem({
623
762
  );
624
763
  }
625
764
  function DateFilterSeparator() {
626
- return /* @__PURE__ */ jsx("div", { "data-slot": "date-filter-separator", className: "mx-1 my-2 border-t" });
765
+ return /* @__PURE__ */ jsx5("div", { "data-slot": "date-filter-separator", className: "mx-1 my-2 border-t" });
627
766
  }
628
767
  function DateFilterAll({ children }) {
629
768
  const { value, labels, commit } = useDateFilter();
630
- return /* @__PURE__ */ jsx(
769
+ return /* @__PURE__ */ jsx5(
631
770
  DateFilterItem,
632
771
  {
633
772
  active: value.mode === "all",
@@ -639,7 +778,7 @@ function DateFilterAll({ children }) {
639
778
  function DateFilterPresets({ only }) {
640
779
  const { value, presets, commit } = useDateFilter();
641
780
  const visible = only ? presets.filter((preset) => only.includes(preset.value)) : presets;
642
- return /* @__PURE__ */ jsx(Fragment, { children: visible.map((preset) => /* @__PURE__ */ jsx(
781
+ return /* @__PURE__ */ jsx5(Fragment, { children: visible.map((preset) => /* @__PURE__ */ jsx5(
643
782
  DateFilterItem,
644
783
  {
645
784
  active: value.mode === "preset" && value.preset === preset.value,
@@ -651,7 +790,7 @@ function DateFilterPresets({ only }) {
651
790
  }
652
791
  function DateFilterFixed({ children }) {
653
792
  const { value, labels, openPanel } = useDateFilter();
654
- return /* @__PURE__ */ jsx(
793
+ return /* @__PURE__ */ jsx5(
655
794
  DateFilterItem,
656
795
  {
657
796
  active: value.mode === "fixed",
@@ -667,7 +806,7 @@ function DateFilterFixed({ children }) {
667
806
  }
668
807
  function DateFilterRelative({ children }) {
669
808
  const { value, labels, openPanel } = useDateFilter();
670
- return /* @__PURE__ */ jsx(
809
+ return /* @__PURE__ */ jsx5(
671
810
  DateFilterItem,
672
811
  {
673
812
  active: value.mode === "relative",
@@ -803,6 +942,9 @@ function encodeRelative(filter) {
803
942
  }
804
943
  return value;
805
944
  }
945
+
946
+ // src/blocks/form-overlay.tsx
947
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
806
948
  var formOverlayDefaultLabels = {
807
949
  cancelLabel: "Cancel",
808
950
  saveLabel: "Save",
@@ -818,13 +960,13 @@ function FormOverlayActions({
818
960
  onSave,
819
961
  slotName = "form-overlay-actions"
820
962
  }) {
821
- return /* @__PURE__ */ jsxs(
963
+ return /* @__PURE__ */ jsxs6(
822
964
  "div",
823
965
  {
824
966
  className: cn("gap-2 flex items-center justify-end", className),
825
967
  "data-slot": slotName,
826
968
  children: [
827
- /* @__PURE__ */ jsx(
969
+ /* @__PURE__ */ jsx6(
828
970
  Button,
829
971
  {
830
972
  type: "button",
@@ -834,7 +976,7 @@ function FormOverlayActions({
834
976
  children: labels.cancelLabel
835
977
  }
836
978
  ),
837
- /* @__PURE__ */ jsx(
979
+ /* @__PURE__ */ jsx6(
838
980
  Button,
839
981
  {
840
982
  type: submit ? "submit" : "button",
@@ -850,6 +992,9 @@ function FormOverlayActions({
850
992
  }
851
993
  );
852
994
  }
995
+
996
+ // src/blocks/detail-edit-sheet.tsx
997
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
853
998
  function DetailEditSheet({
854
999
  open,
855
1000
  onOpenChange,
@@ -878,7 +1023,7 @@ function DetailEditSheet({
878
1023
  onCancel?.();
879
1024
  onOpenChange(false);
880
1025
  };
881
- return /* @__PURE__ */ jsx(
1026
+ return /* @__PURE__ */ jsx7(
882
1027
  FloatingSheet,
883
1028
  {
884
1029
  open,
@@ -887,16 +1032,16 @@ function DetailEditSheet({
887
1032
  description,
888
1033
  persistent: true,
889
1034
  className,
890
- children: /* @__PURE__ */ jsxs(
1035
+ children: /* @__PURE__ */ jsxs7(
891
1036
  "form",
892
1037
  {
893
1038
  onSubmit: handleSubmit,
894
1039
  className: "min-h-0 flex flex-1 flex-col",
895
1040
  "data-slot": slotName,
896
1041
  children: [
897
- /* @__PURE__ */ jsx(FloatingSheetBody, { children }),
898
- /* @__PURE__ */ jsx(Separator, {}),
899
- /* @__PURE__ */ jsx(FloatingSheetFooter, { children: /* @__PURE__ */ jsx(
1042
+ /* @__PURE__ */ jsx7(FloatingSheetBody, { children }),
1043
+ /* @__PURE__ */ jsx7(Separator, {}),
1044
+ /* @__PURE__ */ jsx7(FloatingSheetFooter, { children: /* @__PURE__ */ jsx7(
900
1045
  FormOverlayActions,
901
1046
  {
902
1047
  submit: true,
@@ -912,6 +1057,9 @@ function DetailEditSheet({
912
1057
  }
913
1058
  );
914
1059
  }
1060
+
1061
+ // src/blocks/form-dialog.tsx
1062
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
915
1063
  function FormDialog({
916
1064
  open,
917
1065
  onOpenChange,
@@ -945,7 +1093,7 @@ function FormDialog({
945
1093
  event.preventDefault();
946
1094
  }
947
1095
  };
948
- return /* @__PURE__ */ jsx(
1096
+ return /* @__PURE__ */ jsx8(
949
1097
  Dialog,
950
1098
  {
951
1099
  open,
@@ -955,7 +1103,7 @@ function FormDialog({
955
1103
  }
956
1104
  onOpenChange(next);
957
1105
  },
958
- children: /* @__PURE__ */ jsx(
1106
+ children: /* @__PURE__ */ jsx8(
959
1107
  DialogContent,
960
1108
  {
961
1109
  ...description ? {} : { "aria-describedby": void 0 },
@@ -963,18 +1111,18 @@ function FormDialog({
963
1111
  onEscapeKeyDown: blockWhileProcessing,
964
1112
  onInteractOutside: blockWhileProcessing,
965
1113
  slotName,
966
- children: /* @__PURE__ */ jsxs(
1114
+ children: /* @__PURE__ */ jsxs8(
967
1115
  "form",
968
1116
  {
969
1117
  "data-slot": "form-dialog-form",
970
1118
  onSubmit: handleSubmit,
971
1119
  className: "grid max-h-[calc(100dvh-8rem)] grid-rows-[auto_minmax(0,1fr)_auto]",
972
1120
  children: [
973
- /* @__PURE__ */ jsxs(DialogHeader, { className: "text-left", children: [
974
- /* @__PURE__ */ jsx(DialogTitle, { children: title }),
975
- description ? /* @__PURE__ */ jsx(DialogDescription, { children: description }) : null
1121
+ /* @__PURE__ */ jsxs8(DialogHeader, { className: "text-left", children: [
1122
+ /* @__PURE__ */ jsx8(DialogTitle, { children: title }),
1123
+ description ? /* @__PURE__ */ jsx8(DialogDescription, { children: description }) : null
976
1124
  ] }),
977
- /* @__PURE__ */ jsx(
1125
+ /* @__PURE__ */ jsx8(
978
1126
  "div",
979
1127
  {
980
1128
  "data-slot": "form-dialog-body",
@@ -982,7 +1130,7 @@ function FormDialog({
982
1130
  children
983
1131
  }
984
1132
  ),
985
- /* @__PURE__ */ jsx(DialogFooter, { children: /* @__PURE__ */ jsx(
1133
+ /* @__PURE__ */ jsx8(DialogFooter, { children: /* @__PURE__ */ jsx8(
986
1134
  FormOverlayActions,
987
1135
  {
988
1136
  submit: true,
@@ -1001,6 +1149,9 @@ function FormDialog({
1001
1149
  }
1002
1150
  );
1003
1151
  }
1152
+
1153
+ // src/blocks/info-field.tsx
1154
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
1004
1155
  function copyableText(value, copyValue) {
1005
1156
  if (copyValue !== void 0) {
1006
1157
  return copyValue.trim();
@@ -1023,15 +1174,15 @@ function InfoField({
1023
1174
  slotName = "info-field"
1024
1175
  }) {
1025
1176
  const text = copyableText(value, copyValue);
1026
- return /* @__PURE__ */ jsxs(
1177
+ return /* @__PURE__ */ jsxs9(
1027
1178
  "div",
1028
1179
  {
1029
1180
  className: cn("gap-3 flex items-center", className),
1030
1181
  "data-slot": slotName,
1031
1182
  children: [
1032
- /* @__PURE__ */ jsx("div", { className: cn("p-2 rounded-xl bg-muted", iconClassName), children: /* @__PURE__ */ jsx(Icon, { className: "size-5 text-muted-foreground" }) }),
1033
- /* @__PURE__ */ jsxs("div", { children: [
1034
- /* @__PURE__ */ jsx(
1183
+ /* @__PURE__ */ jsx9("div", { className: cn("p-2 rounded-xl bg-muted", iconClassName), children: /* @__PURE__ */ jsx9(Icon, { className: "size-5 text-muted-foreground" }) }),
1184
+ /* @__PURE__ */ jsxs9("div", { children: [
1185
+ /* @__PURE__ */ jsx9(
1035
1186
  "p",
1036
1187
  {
1037
1188
  "data-slot": "info-field-label",
@@ -1039,14 +1190,14 @@ function InfoField({
1039
1190
  children: label
1040
1191
  }
1041
1192
  ),
1042
- /* @__PURE__ */ jsxs(
1193
+ /* @__PURE__ */ jsxs9(
1043
1194
  "p",
1044
1195
  {
1045
1196
  "data-slot": "info-field-value",
1046
1197
  className: "gap-1 font-semibold flex items-center",
1047
1198
  children: [
1048
1199
  value,
1049
- copyable && text !== "" && /* @__PURE__ */ jsx(
1200
+ copyable && text !== "" && /* @__PURE__ */ jsx9(
1050
1201
  CopyButton,
1051
1202
  {
1052
1203
  value: text,
@@ -1063,8 +1214,11 @@ function InfoField({
1063
1214
  );
1064
1215
  }
1065
1216
  function InfoFieldGroup({ children, className }) {
1066
- return /* @__PURE__ */ jsx("div", { className: cn("space-y-4", className), children });
1217
+ return /* @__PURE__ */ jsx9("div", { className: cn("space-y-4", className), children });
1067
1218
  }
1219
+
1220
+ // src/blocks/localized-fields.tsx
1221
+ import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
1068
1222
  function LocalizedFields({
1069
1223
  locales,
1070
1224
  localeLabels,
@@ -1075,13 +1229,13 @@ function LocalizedFields({
1075
1229
  defaultLocale,
1076
1230
  className
1077
1231
  }) {
1078
- return /* @__PURE__ */ jsxs(
1232
+ return /* @__PURE__ */ jsxs10(
1079
1233
  Tabs,
1080
1234
  {
1081
1235
  defaultValue: defaultLocale ?? locales[0],
1082
1236
  className: cn("w-full", className),
1083
1237
  children: [
1084
- /* @__PURE__ */ jsx(TabsList, { className: "mb-4 rounded-2xl p-1.5 flex h-auto w-full justify-start overflow-x-auto bg-muted", children: locales.map((locale) => /* @__PURE__ */ jsx(
1238
+ /* @__PURE__ */ jsx10(TabsList, { className: "mb-4 rounded-2xl p-1.5 flex h-auto w-full justify-start overflow-x-auto bg-muted", children: locales.map((locale) => /* @__PURE__ */ jsx10(
1085
1239
  TabsTrigger,
1086
1240
  {
1087
1241
  value: locale,
@@ -1090,13 +1244,13 @@ function LocalizedFields({
1090
1244
  },
1091
1245
  locale
1092
1246
  )) }),
1093
- locales.map((locale) => /* @__PURE__ */ jsx(TabsContent, { value: locale, className: "mt-0", children: /* @__PURE__ */ jsx("div", { className: "gap-4 lg:grid-cols-2 grid", children: fields.map((field) => {
1247
+ locales.map((locale) => /* @__PURE__ */ jsx10(TabsContent, { value: locale, className: "mt-0", children: /* @__PURE__ */ jsx10("div", { className: "gap-4 lg:grid-cols-2 grid", children: fields.map((field) => {
1094
1248
  const fieldId = `${field.name}-${locale}`;
1095
1249
  const error = errors?.[`${field.name}.${locale}`];
1096
1250
  const value = values[field.name]?.[locale] ?? "";
1097
- return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1098
- /* @__PURE__ */ jsx(Label, { htmlFor: fieldId, children: field.label }),
1099
- field.type === "textarea" ? /* @__PURE__ */ jsx(
1251
+ return /* @__PURE__ */ jsxs10("div", { className: "space-y-2", children: [
1252
+ /* @__PURE__ */ jsx10(Label, { htmlFor: fieldId, children: field.label }),
1253
+ field.type === "textarea" ? /* @__PURE__ */ jsx10(
1100
1254
  Textarea,
1101
1255
  {
1102
1256
  id: fieldId,
@@ -1108,7 +1262,7 @@ function LocalizedFields({
1108
1262
  event.target.value
1109
1263
  )
1110
1264
  }
1111
- ) : /* @__PURE__ */ jsx(
1265
+ ) : /* @__PURE__ */ jsx10(
1112
1266
  Input,
1113
1267
  {
1114
1268
  id: fieldId,
@@ -1120,13 +1274,16 @@ function LocalizedFields({
1120
1274
  )
1121
1275
  }
1122
1276
  ),
1123
- error && /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-destructive", children: error })
1277
+ error && /* @__PURE__ */ jsx10("p", { className: "text-xs font-medium text-destructive", children: error })
1124
1278
  ] }, field.name);
1125
1279
  }) }) }, locale))
1126
1280
  ]
1127
1281
  }
1128
1282
  );
1129
1283
  }
1284
+
1285
+ // src/blocks/section-header.tsx
1286
+ import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
1130
1287
  function SectionHeader({
1131
1288
  icon,
1132
1289
  title,
@@ -1134,7 +1291,7 @@ function SectionHeader({
1134
1291
  control,
1135
1292
  className
1136
1293
  }) {
1137
- return /* @__PURE__ */ jsxs(
1294
+ return /* @__PURE__ */ jsxs11(
1138
1295
  "div",
1139
1296
  {
1140
1297
  className: cn(
@@ -1142,11 +1299,11 @@ function SectionHeader({
1142
1299
  className
1143
1300
  ),
1144
1301
  children: [
1145
- /* @__PURE__ */ jsxs("div", { className: "gap-3 flex items-center", children: [
1302
+ /* @__PURE__ */ jsxs11("div", { className: "gap-3 flex items-center", children: [
1146
1303
  icon,
1147
- /* @__PURE__ */ jsxs("div", { children: [
1148
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold text-foreground", children: title }),
1149
- description && /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: description })
1304
+ /* @__PURE__ */ jsxs11("div", { children: [
1305
+ /* @__PURE__ */ jsx11("h2", { className: "text-lg font-bold text-foreground", children: title }),
1306
+ description && /* @__PURE__ */ jsx11("p", { className: "text-sm font-medium text-muted-foreground", children: description })
1150
1307
  ] })
1151
1308
  ] }),
1152
1309
  control
@@ -1154,6 +1311,9 @@ function SectionHeader({
1154
1311
  }
1155
1312
  );
1156
1313
  }
1314
+
1315
+ // src/blocks/settings-card.tsx
1316
+ import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
1157
1317
  function SettingsCard({
1158
1318
  icon: Icon,
1159
1319
  iconClassName,
@@ -1165,7 +1325,7 @@ function SettingsCard({
1165
1325
  className,
1166
1326
  slotName = "settings-card"
1167
1327
  }) {
1168
- return /* @__PURE__ */ jsxs(
1328
+ return /* @__PURE__ */ jsxs12(
1169
1329
  "section",
1170
1330
  {
1171
1331
  "data-inset": inset || void 0,
@@ -1177,21 +1337,21 @@ function SettingsCard({
1177
1337
  ),
1178
1338
  "data-slot": slotName,
1179
1339
  children: [
1180
- /* @__PURE__ */ jsxs("div", { className: "gap-4 sm:flex-row sm:items-center sm:justify-between flex flex-col", children: [
1181
- /* @__PURE__ */ jsxs("div", { className: "gap-3 flex items-center", children: [
1182
- /* @__PURE__ */ jsx(
1340
+ /* @__PURE__ */ jsxs12("div", { className: "gap-4 sm:flex-row sm:items-center sm:justify-between flex flex-col", children: [
1341
+ /* @__PURE__ */ jsxs12("div", { className: "gap-3 flex items-center", children: [
1342
+ /* @__PURE__ */ jsx12(
1183
1343
  "div",
1184
1344
  {
1185
1345
  className: cn(
1186
1346
  "size-11 rounded-2xl flex items-center justify-center",
1187
1347
  iconClassName ?? "bg-muted text-muted-foreground"
1188
1348
  ),
1189
- children: /* @__PURE__ */ jsx(Icon, { className: "size-5" })
1349
+ children: /* @__PURE__ */ jsx12(Icon, { className: "size-5" })
1190
1350
  }
1191
1351
  ),
1192
- /* @__PURE__ */ jsxs("div", { children: [
1193
- /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold text-foreground", children: title }),
1194
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: description })
1352
+ /* @__PURE__ */ jsxs12("div", { children: [
1353
+ /* @__PURE__ */ jsx12("h2", { className: "text-lg font-bold text-foreground", children: title }),
1354
+ /* @__PURE__ */ jsx12("p", { className: "text-sm font-medium text-muted-foreground", children: description })
1195
1355
  ] })
1196
1356
  ] }),
1197
1357
  control
@@ -1209,7 +1369,7 @@ function SettingsPanel({
1209
1369
  className,
1210
1370
  slotName = "settings-panel"
1211
1371
  }) {
1212
- return /* @__PURE__ */ jsxs(
1372
+ return /* @__PURE__ */ jsxs12(
1213
1373
  "div",
1214
1374
  {
1215
1375
  "data-inset": inset || void 0,
@@ -1221,9 +1381,9 @@ function SettingsPanel({
1221
1381
  ),
1222
1382
  "data-slot": slotName,
1223
1383
  children: [
1224
- (title || description) && /* @__PURE__ */ jsxs("div", { children: [
1225
- title && /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-foreground", children: title }),
1226
- description && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs font-medium text-muted-foreground", children: description })
1384
+ (title || description) && /* @__PURE__ */ jsxs12("div", { children: [
1385
+ title && /* @__PURE__ */ jsx12("h3", { className: "text-sm font-semibold text-foreground", children: title }),
1386
+ description && /* @__PURE__ */ jsx12("p", { className: "mt-1 text-xs font-medium text-muted-foreground", children: description })
1227
1387
  ] }),
1228
1388
  children
1229
1389
  ]
@@ -1238,9 +1398,9 @@ function ToggleRow({
1238
1398
  onChange,
1239
1399
  disabled
1240
1400
  }) {
1241
- return /* @__PURE__ */ jsxs("div", { className: "gap-4 py-1 flex items-center justify-between", children: [
1242
- /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
1243
- /* @__PURE__ */ jsx(
1401
+ return /* @__PURE__ */ jsxs12("div", { className: "gap-4 py-1 flex items-center justify-between", children: [
1402
+ /* @__PURE__ */ jsxs12("div", { className: "space-y-0.5", children: [
1403
+ /* @__PURE__ */ jsx12(
1244
1404
  Label,
1245
1405
  {
1246
1406
  htmlFor: id,
@@ -1248,9 +1408,9 @@ function ToggleRow({
1248
1408
  children: label
1249
1409
  }
1250
1410
  ),
1251
- description && /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground", children: description })
1411
+ description && /* @__PURE__ */ jsx12("p", { className: "text-xs font-medium text-muted-foreground", children: description })
1252
1412
  ] }),
1253
- /* @__PURE__ */ jsx(
1413
+ /* @__PURE__ */ jsx12(
1254
1414
  Switch,
1255
1415
  {
1256
1416
  id,
@@ -1261,6 +1421,10 @@ function ToggleRow({
1261
1421
  )
1262
1422
  ] });
1263
1423
  }
1424
+
1425
+ // src/blocks/settings-fields.tsx
1426
+ import { useId } from "react";
1427
+ import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
1264
1428
  function SettingsField({
1265
1429
  id,
1266
1430
  label,
@@ -1273,16 +1437,16 @@ function SettingsField({
1273
1437
  }) {
1274
1438
  const generated = useId();
1275
1439
  const fieldId = id ?? generated;
1276
- return /* @__PURE__ */ jsxs(
1440
+ return /* @__PURE__ */ jsxs13(
1277
1441
  "div",
1278
1442
  {
1279
1443
  "data-invalid": error ? true : void 0,
1280
1444
  className: cn("space-y-2 py-1", className),
1281
1445
  "data-slot": slotName,
1282
1446
  children: [
1283
- /* @__PURE__ */ jsxs(Label, { htmlFor: fieldId, children: [
1447
+ /* @__PURE__ */ jsxs13(Label, { htmlFor: fieldId, children: [
1284
1448
  label,
1285
- required && /* @__PURE__ */ jsx(
1449
+ required && /* @__PURE__ */ jsx13(
1286
1450
  "span",
1287
1451
  {
1288
1452
  "data-slot": "settings-field-required",
@@ -1293,7 +1457,7 @@ function SettingsField({
1293
1457
  )
1294
1458
  ] }),
1295
1459
  children(fieldId),
1296
- description && /* @__PURE__ */ jsx(
1460
+ description && /* @__PURE__ */ jsx13(
1297
1461
  "p",
1298
1462
  {
1299
1463
  "data-slot": "settings-field-description",
@@ -1301,7 +1465,7 @@ function SettingsField({
1301
1465
  children: description
1302
1466
  }
1303
1467
  ),
1304
- /* @__PURE__ */ jsx(FieldError, { message: error })
1468
+ /* @__PURE__ */ jsx13(FieldError, { message: error })
1305
1469
  ]
1306
1470
  }
1307
1471
  );
@@ -1315,7 +1479,7 @@ function TextField({
1315
1479
  slotName = "text-field",
1316
1480
  ...field
1317
1481
  }) {
1318
- return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
1482
+ return /* @__PURE__ */ jsx13(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx13(
1319
1483
  Input,
1320
1484
  {
1321
1485
  id: fieldId,
@@ -1340,7 +1504,7 @@ function NumberField({
1340
1504
  slotName = "number-field",
1341
1505
  ...field
1342
1506
  }) {
1343
- return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
1507
+ return /* @__PURE__ */ jsx13(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx13(
1344
1508
  Input,
1345
1509
  {
1346
1510
  id: fieldId,
@@ -1369,7 +1533,7 @@ function DateField({
1369
1533
  slotName = "date-field",
1370
1534
  ...field
1371
1535
  }) {
1372
- return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx(
1536
+ return /* @__PURE__ */ jsx13(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsx13(
1373
1537
  Input,
1374
1538
  {
1375
1539
  id: fieldId,
@@ -1393,23 +1557,23 @@ function SelectField({
1393
1557
  slotName = "select-field",
1394
1558
  ...field
1395
1559
  }) {
1396
- return /* @__PURE__ */ jsx(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsxs(
1560
+ return /* @__PURE__ */ jsx13(SettingsField, { ...field, children: (fieldId) => /* @__PURE__ */ jsxs13(
1397
1561
  Select,
1398
1562
  {
1399
1563
  value,
1400
1564
  onValueChange: onChange,
1401
1565
  disabled,
1402
1566
  children: [
1403
- /* @__PURE__ */ jsx(
1567
+ /* @__PURE__ */ jsx13(
1404
1568
  SelectTrigger,
1405
1569
  {
1406
1570
  id: fieldId,
1407
1571
  slotName,
1408
1572
  "aria-invalid": field.error ? true : void 0,
1409
- children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
1573
+ children: /* @__PURE__ */ jsx13(SelectValue, { placeholder })
1410
1574
  }
1411
1575
  ),
1412
- /* @__PURE__ */ jsx(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx(
1576
+ /* @__PURE__ */ jsx13(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx13(
1413
1577
  SelectItem,
1414
1578
  {
1415
1579
  value: option.value,
@@ -1422,7 +1586,12 @@ function SelectField({
1422
1586
  }
1423
1587
  ) });
1424
1588
  }
1425
- var SettingsLinkContext = createContext(void 0);
1589
+
1590
+ // src/blocks/settings-page.tsx
1591
+ import { ArrowLeft, ChevronRight } from "lucide-react";
1592
+ import { createContext as createContext2, useContext as useContext2 } from "react";
1593
+ import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
1594
+ var SettingsLinkContext = createContext2(void 0);
1426
1595
  function SettingsPage({
1427
1596
  title,
1428
1597
  description,
@@ -1432,7 +1601,7 @@ function SettingsPage({
1432
1601
  className,
1433
1602
  slotName = "settings-page"
1434
1603
  }) {
1435
- return /* @__PURE__ */ jsx(SettingsLinkContext.Provider, { value: linkComponent, children: /* @__PURE__ */ jsxs(
1604
+ return /* @__PURE__ */ jsx14(SettingsLinkContext.Provider, { value: linkComponent, children: /* @__PURE__ */ jsxs14(
1436
1605
  "div",
1437
1606
  {
1438
1607
  className: cn(
@@ -1441,7 +1610,7 @@ function SettingsPage({
1441
1610
  ),
1442
1611
  "data-slot": slotName,
1443
1612
  children: [
1444
- title && /* @__PURE__ */ jsx(
1613
+ title && /* @__PURE__ */ jsx14(
1445
1614
  SectionHeader,
1446
1615
  {
1447
1616
  title,
@@ -1472,9 +1641,9 @@ function SettingsSection({
1472
1641
  const labels = useUiLabels("settings", settingsLabels, {
1473
1642
  back: backLabel
1474
1643
  });
1475
- const contextLink = useContext(SettingsLinkContext);
1644
+ const contextLink = useContext2(SettingsLinkContext);
1476
1645
  const Link = resolveLink(linkComponent ?? contextLink);
1477
- return /* @__PURE__ */ jsxs(
1646
+ return /* @__PURE__ */ jsxs14(
1478
1647
  "section",
1479
1648
  {
1480
1649
  className: cn(
@@ -1484,19 +1653,19 @@ function SettingsSection({
1484
1653
  ),
1485
1654
  "data-slot": slotName,
1486
1655
  children: [
1487
- backHref && /* @__PURE__ */ jsxs(
1656
+ backHref && /* @__PURE__ */ jsxs14(
1488
1657
  Link,
1489
1658
  {
1490
1659
  "data-slot": "settings-section-back",
1491
1660
  href: backHref,
1492
1661
  className: "gap-2 text-sm font-medium inline-flex w-fit items-center text-muted-foreground transition-colors hover:text-foreground",
1493
1662
  children: [
1494
- /* @__PURE__ */ jsx(ArrowLeft, { className: "size-4" }),
1663
+ /* @__PURE__ */ jsx14(ArrowLeft, { className: "size-4" }),
1495
1664
  labels.back
1496
1665
  ]
1497
1666
  }
1498
1667
  ),
1499
- title && /* @__PURE__ */ jsx(
1668
+ title && /* @__PURE__ */ jsx14(
1500
1669
  SectionHeader,
1501
1670
  {
1502
1671
  title,
@@ -1516,14 +1685,14 @@ function SettingsGroup({
1516
1685
  className,
1517
1686
  slotName = "settings-group"
1518
1687
  }) {
1519
- return /* @__PURE__ */ jsxs(
1688
+ return /* @__PURE__ */ jsxs14(
1520
1689
  "div",
1521
1690
  {
1522
1691
  className: cn("gap-3 flex flex-col", className),
1523
1692
  "data-slot": slotName,
1524
1693
  children: [
1525
- label && /* @__PURE__ */ jsx("p", { className: "font-bold tracking-widest text-[11px] text-muted-foreground uppercase", children: label }),
1526
- /* @__PURE__ */ jsx(
1694
+ label && /* @__PURE__ */ jsx14("p", { className: "font-bold tracking-widest text-[11px] text-muted-foreground uppercase", children: label }),
1695
+ /* @__PURE__ */ jsx14(
1527
1696
  "div",
1528
1697
  {
1529
1698
  "data-slot": "settings-group-grid",
@@ -1550,9 +1719,9 @@ function SettingsEntry({
1550
1719
  className,
1551
1720
  slotName = "settings-entry"
1552
1721
  }) {
1553
- const contextLink = useContext(SettingsLinkContext);
1722
+ const contextLink = useContext2(SettingsLinkContext);
1554
1723
  const Link = resolveLink(linkComponent ?? contextLink);
1555
- const card = /* @__PURE__ */ jsxs(
1724
+ const card = /* @__PURE__ */ jsxs14(
1556
1725
  Card,
1557
1726
  {
1558
1727
  interactive: !disabled,
@@ -1564,31 +1733,31 @@ function SettingsEntry({
1564
1733
  className
1565
1734
  ),
1566
1735
  children: [
1567
- /* @__PURE__ */ jsx(
1736
+ /* @__PURE__ */ jsx14(
1568
1737
  "span",
1569
1738
  {
1570
1739
  className: cn(
1571
1740
  "size-11 flex shrink-0 items-center justify-center rounded-full",
1572
1741
  iconClassName ?? "bg-primary/10 text-primary"
1573
1742
  ),
1574
- children: /* @__PURE__ */ jsx(Icon, { className: "size-5" })
1743
+ children: /* @__PURE__ */ jsx14(Icon, { className: "size-5" })
1575
1744
  }
1576
1745
  ),
1577
- /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex flex-1 flex-col", children: [
1578
- /* @__PURE__ */ jsxs("span", { className: "gap-2 flex items-center", children: [
1579
- /* @__PURE__ */ jsx("span", { className: "font-bold text-foreground", children: title }),
1746
+ /* @__PURE__ */ jsxs14("span", { className: "min-w-0 flex flex-1 flex-col", children: [
1747
+ /* @__PURE__ */ jsxs14("span", { className: "gap-2 flex items-center", children: [
1748
+ /* @__PURE__ */ jsx14("span", { className: "font-bold text-foreground", children: title }),
1580
1749
  badge
1581
1750
  ] }),
1582
- description && /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-muted-foreground", children: description })
1751
+ description && /* @__PURE__ */ jsx14("span", { className: "text-sm font-medium text-muted-foreground", children: description })
1583
1752
  ] }),
1584
- /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" })
1753
+ /* @__PURE__ */ jsx14(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground" })
1585
1754
  ]
1586
1755
  }
1587
1756
  );
1588
1757
  if (disabled) {
1589
- return /* @__PURE__ */ jsx("div", { "data-disabled": "true", "aria-disabled": "true", "data-slot": slotName, children: card });
1758
+ return /* @__PURE__ */ jsx14("div", { "data-disabled": "true", "aria-disabled": "true", "data-slot": slotName, children: card });
1590
1759
  }
1591
- return /* @__PURE__ */ jsx(
1760
+ return /* @__PURE__ */ jsx14(
1592
1761
  Link,
1593
1762
  {
1594
1763
  href,
@@ -1598,6 +1767,14 @@ function SettingsEntry({
1598
1767
  }
1599
1768
  );
1600
1769
  }
1770
+
1771
+ // src/blocks/stat-card.tsx
1772
+ import {
1773
+ ArrowDownRight,
1774
+ ArrowRight,
1775
+ ArrowUpRight
1776
+ } from "lucide-react";
1777
+ import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
1601
1778
  function resolveTrend(trend) {
1602
1779
  if (trend === null || trend === void 0 || Number.isNaN(trend)) {
1603
1780
  return null;
@@ -1636,7 +1813,7 @@ function StatCard({
1636
1813
  slotName = "stat-card"
1637
1814
  }) {
1638
1815
  const resolvedTrend = resolveTrend(trend);
1639
- return /* @__PURE__ */ jsxs(
1816
+ return /* @__PURE__ */ jsxs15(
1640
1817
  "div",
1641
1818
  {
1642
1819
  "data-inset": inset || void 0,
@@ -1648,10 +1825,10 @@ function StatCard({
1648
1825
  ),
1649
1826
  "data-slot": slotName,
1650
1827
  children: [
1651
- /* @__PURE__ */ jsxs("div", { className: "mb-4 gap-4 flex items-start justify-between", children: [
1652
- /* @__PURE__ */ jsx("div", { className: cn("rounded-2xl p-3 shrink-0", iconClassName), children: /* @__PURE__ */ jsx(Icon, { className: "size-6" }) }),
1653
- resolvedTrend && /* @__PURE__ */ jsxs("div", { className: "min-w-0 text-right", children: [
1654
- /* @__PURE__ */ jsxs(
1828
+ /* @__PURE__ */ jsxs15("div", { className: "mb-4 gap-4 flex items-start justify-between", children: [
1829
+ /* @__PURE__ */ jsx15("div", { className: cn("rounded-2xl p-3 shrink-0", iconClassName), children: /* @__PURE__ */ jsx15(Icon, { className: "size-6" }) }),
1830
+ resolvedTrend && /* @__PURE__ */ jsxs15("div", { className: "min-w-0 text-right", children: [
1831
+ /* @__PURE__ */ jsxs15(
1655
1832
  "span",
1656
1833
  {
1657
1834
  className: cn(
@@ -1660,23 +1837,23 @@ function StatCard({
1660
1837
  ),
1661
1838
  children: [
1662
1839
  resolvedTrend.label,
1663
- /* @__PURE__ */ jsx(resolvedTrend.icon, { className: "ml-1 size-4" })
1840
+ /* @__PURE__ */ jsx15(resolvedTrend.icon, { className: "ml-1 size-4" })
1664
1841
  ]
1665
1842
  }
1666
1843
  ),
1667
- comparisonLabel && /* @__PURE__ */ jsx("p", { className: "mt-1 font-medium tracking-wider text-[10px] whitespace-nowrap text-muted-foreground uppercase", children: comparisonLabel })
1844
+ comparisonLabel && /* @__PURE__ */ jsx15("p", { className: "mt-1 font-medium tracking-wider text-[10px] whitespace-nowrap text-muted-foreground uppercase", children: comparisonLabel })
1668
1845
  ] })
1669
1846
  ] }),
1670
- /* @__PURE__ */ jsxs("div", { children: [
1671
- /* @__PURE__ */ jsx("p", { className: "mb-1 text-xs font-medium tracking-wider break-words text-muted-foreground uppercase", children: title }),
1672
- /* @__PURE__ */ jsx("p", { className: "text-3xl font-bold truncate text-foreground tabular-nums", children: value })
1847
+ /* @__PURE__ */ jsxs15("div", { children: [
1848
+ /* @__PURE__ */ jsx15("p", { className: "mb-1 text-xs font-medium tracking-wider break-words text-muted-foreground uppercase", children: title }),
1849
+ /* @__PURE__ */ jsx15("p", { className: "text-3xl font-bold truncate text-foreground tabular-nums", children: value })
1673
1850
  ] })
1674
1851
  ]
1675
1852
  }
1676
1853
  );
1677
1854
  }
1678
1855
  function StatsGrid({ children, className }) {
1679
- return /* @__PURE__ */ jsx(
1856
+ return /* @__PURE__ */ jsx15(
1680
1857
  "div",
1681
1858
  {
1682
1859
  className: cn(
@@ -1741,6 +1918,11 @@ function messageList(errors) {
1741
1918
  (message) => message.length > 0
1742
1919
  );
1743
1920
  }
1921
+
1922
+ // src/blocks/two-factor/verify-form.tsx
1923
+ import { AlertCircle } from "lucide-react";
1924
+ import { useId as useId2, useState as useState4 } from "react";
1925
+ import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
1744
1926
  function errorMessage(reason, fallback) {
1745
1927
  return reason instanceof Error && reason.message ? reason.message : fallback;
1746
1928
  }
@@ -1757,11 +1939,11 @@ function TwoFactorVerifyForm({
1757
1939
  slotName = "two-factor-verify-form"
1758
1940
  }) {
1759
1941
  const text = resolveLabels(labels);
1760
- const fieldId = useId();
1761
- const [mode, setMode] = useState("code");
1762
- const [value, setValue] = useState("");
1763
- const [pending, setPending] = useState(false);
1764
- const [failure, setFailure] = useState(null);
1942
+ const fieldId = useId2();
1943
+ const [mode, setMode] = useState4("code");
1944
+ const [value, setValue] = useState4("");
1945
+ const [pending, setPending] = useState4(false);
1946
+ const [failure, setFailure] = useState4(null);
1765
1947
  const messages = [...messageList(errors), ...messageList(failure)];
1766
1948
  const complete = mode === "code" ? value.length === length : value.length > 0;
1767
1949
  const handleSubmit = async (event) => {
@@ -1784,7 +1966,7 @@ function TwoFactorVerifyForm({
1784
1966
  setValue("");
1785
1967
  setFailure(null);
1786
1968
  };
1787
- return /* @__PURE__ */ jsxs(
1969
+ return /* @__PURE__ */ jsxs16(
1788
1970
  "form",
1789
1971
  {
1790
1972
  "data-mode": mode,
@@ -1793,9 +1975,9 @@ function TwoFactorVerifyForm({
1793
1975
  className: cn("gap-5 flex w-full flex-col", className),
1794
1976
  "data-slot": slotName,
1795
1977
  children: [
1796
- /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-col", children: [
1797
- /* @__PURE__ */ jsx(Label, { htmlFor: fieldId, children: mode === "code" ? text.codeLabel : text.recoveryCodeLabel }),
1798
- mode === "code" ? /* @__PURE__ */ jsx(
1978
+ /* @__PURE__ */ jsxs16("div", { className: "gap-2 flex flex-col", children: [
1979
+ /* @__PURE__ */ jsx16(Label, { htmlFor: fieldId, children: mode === "code" ? text.codeLabel : text.recoveryCodeLabel }),
1980
+ mode === "code" ? /* @__PURE__ */ jsx16(
1799
1981
  InputOTP,
1800
1982
  {
1801
1983
  id: fieldId,
@@ -1806,9 +1988,9 @@ function TwoFactorVerifyForm({
1806
1988
  disabled: pending,
1807
1989
  onChange: setValue,
1808
1990
  "aria-label": text.codeLabel,
1809
- children: /* @__PURE__ */ jsx(InputOTPGroup, { children: Array.from({ length }, (_, index) => /* @__PURE__ */ jsx(InputOTPSlot, { index }, index)) })
1991
+ children: /* @__PURE__ */ jsx16(InputOTPGroup, { children: Array.from({ length }, (_, index) => /* @__PURE__ */ jsx16(InputOTPSlot, { index }, index)) })
1810
1992
  }
1811
- ) : /* @__PURE__ */ jsx(
1993
+ ) : /* @__PURE__ */ jsx16(
1812
1994
  Input,
1813
1995
  {
1814
1996
  id: fieldId,
@@ -1823,12 +2005,12 @@ function TwoFactorVerifyForm({
1823
2005
  }
1824
2006
  )
1825
2007
  ] }),
1826
- messages.length > 0 && /* @__PURE__ */ jsxs(Alert, { variant: "destructive", slotName: "two-factor-error", children: [
1827
- /* @__PURE__ */ jsx(AlertCircle, {}),
1828
- /* @__PURE__ */ jsx(AlertDescription, { children: messages.map((message) => /* @__PURE__ */ jsx("p", { children: message }, message)) })
2008
+ messages.length > 0 && /* @__PURE__ */ jsxs16(Alert, { variant: "destructive", slotName: "two-factor-error", children: [
2009
+ /* @__PURE__ */ jsx16(AlertCircle, {}),
2010
+ /* @__PURE__ */ jsx16(AlertDescription, { children: messages.map((message) => /* @__PURE__ */ jsx16("p", { children: message }, message)) })
1829
2011
  ] }),
1830
- /* @__PURE__ */ jsxs("div", { className: "gap-3 flex flex-col", children: [
1831
- /* @__PURE__ */ jsx(
2012
+ /* @__PURE__ */ jsxs16("div", { className: "gap-3 flex flex-col", children: [
2013
+ /* @__PURE__ */ jsx16(
1832
2014
  Button,
1833
2015
  {
1834
2016
  type: "submit",
@@ -1838,7 +2020,7 @@ function TwoFactorVerifyForm({
1838
2020
  children: submitLabel ?? text.verifyLabel
1839
2021
  }
1840
2022
  ),
1841
- allowRecoveryCode && /* @__PURE__ */ jsx(
2023
+ allowRecoveryCode && /* @__PURE__ */ jsx16(
1842
2024
  Button,
1843
2025
  {
1844
2026
  type: "button",
@@ -1855,6 +2037,9 @@ function TwoFactorVerifyForm({
1855
2037
  }
1856
2038
  );
1857
2039
  }
2040
+
2041
+ // src/blocks/two-factor/challenge.tsx
2042
+ import { jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
1858
2043
  function TwoFactorChallenge({
1859
2044
  onSubmit,
1860
2045
  errors,
@@ -1867,17 +2052,17 @@ function TwoFactorChallenge({
1867
2052
  slotName = "two-factor-challenge"
1868
2053
  }) {
1869
2054
  const text = resolveLabels(labels);
1870
- return /* @__PURE__ */ jsxs(
2055
+ return /* @__PURE__ */ jsxs17(
1871
2056
  "section",
1872
2057
  {
1873
2058
  className: cn("gap-6 flex w-full flex-col", className),
1874
2059
  "data-slot": slotName,
1875
2060
  children: [
1876
- /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-col", children: [
1877
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold tracking-tight text-foreground", children: title ?? text.challengeTitle }),
1878
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: description ?? text.challengeDescription })
2061
+ /* @__PURE__ */ jsxs17("div", { className: "gap-2 flex flex-col", children: [
2062
+ /* @__PURE__ */ jsx17("h2", { className: "text-2xl font-bold tracking-tight text-foreground", children: title ?? text.challengeTitle }),
2063
+ /* @__PURE__ */ jsx17("p", { className: "text-sm font-medium text-muted-foreground", children: description ?? text.challengeDescription })
1879
2064
  ] }),
1880
- /* @__PURE__ */ jsx(
2065
+ /* @__PURE__ */ jsx17(
1881
2066
  TwoFactorVerifyForm,
1882
2067
  {
1883
2068
  autoFocus: true,
@@ -1892,6 +2077,11 @@ function TwoFactorChallenge({
1892
2077
  }
1893
2078
  );
1894
2079
  }
2080
+
2081
+ // src/blocks/two-factor/disable-button.tsx
2082
+ import { ShieldOff } from "lucide-react";
2083
+ import { useState as useState5 } from "react";
2084
+ import { jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
1895
2085
  function TwoFactorDisableButton({
1896
2086
  onDisable,
1897
2087
  disabled = false,
@@ -1902,8 +2092,8 @@ function TwoFactorDisableButton({
1902
2092
  slotName = "two-factor-disable"
1903
2093
  }) {
1904
2094
  const text = resolveLabels(labels);
1905
- const [open, setOpen] = useState(false);
1906
- const [processing, setProcessing] = useState(false);
2095
+ const [open, setOpen] = useState5(false);
2096
+ const [processing, setProcessing] = useState5(false);
1907
2097
  const handleConfirm = async () => {
1908
2098
  setProcessing(true);
1909
2099
  try {
@@ -1912,14 +2102,14 @@ function TwoFactorDisableButton({
1912
2102
  setProcessing(false);
1913
2103
  }
1914
2104
  };
1915
- return /* @__PURE__ */ jsxs(
2105
+ return /* @__PURE__ */ jsxs18(
1916
2106
  "span",
1917
2107
  {
1918
2108
  "data-open": open || void 0,
1919
2109
  className: cn("inline-flex", className),
1920
2110
  "data-slot": slotName,
1921
2111
  children: [
1922
- /* @__PURE__ */ jsxs(
2112
+ /* @__PURE__ */ jsxs18(
1923
2113
  Button,
1924
2114
  {
1925
2115
  type: "button",
@@ -1928,12 +2118,12 @@ function TwoFactorDisableButton({
1928
2118
  disabled: disabled || processing,
1929
2119
  onClick: () => setOpen(true),
1930
2120
  children: [
1931
- /* @__PURE__ */ jsx(ShieldOff, {}),
2121
+ /* @__PURE__ */ jsx18(ShieldOff, {}),
1932
2122
  text.disableLabel
1933
2123
  ]
1934
2124
  }
1935
2125
  ),
1936
- /* @__PURE__ */ jsx(
2126
+ /* @__PURE__ */ jsx18(
1937
2127
  ConfirmDialog,
1938
2128
  {
1939
2129
  open,
@@ -1950,6 +2140,11 @@ function TwoFactorDisableButton({
1950
2140
  }
1951
2141
  );
1952
2142
  }
2143
+
2144
+ // src/blocks/two-factor/recovery-codes.tsx
2145
+ import { Eye, EyeOff, RefreshCw } from "lucide-react";
2146
+ import { useState as useState6 } from "react";
2147
+ import { jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
1953
2148
  function TwoFactorRecoveryCodes({
1954
2149
  codes,
1955
2150
  defaultRevealed = false,
@@ -1960,9 +2155,9 @@ function TwoFactorRecoveryCodes({
1960
2155
  slotName = "two-factor-recovery-codes"
1961
2156
  }) {
1962
2157
  const text = resolveLabels(labels);
1963
- const [revealed, setRevealed] = useState(defaultRevealed);
1964
- const [copyFailed, setCopyFailed] = useState(false);
1965
- const [regenerating, setRegenerating] = useState(false);
2158
+ const [revealed, setRevealed] = useState6(defaultRevealed);
2159
+ const [copyFailed, setCopyFailed] = useState6(false);
2160
+ const [regenerating, setRegenerating] = useState6(false);
1966
2161
  const handleRegenerate = async () => {
1967
2162
  if (!onRegenerate || regenerating) {
1968
2163
  return;
@@ -1974,22 +2169,22 @@ function TwoFactorRecoveryCodes({
1974
2169
  setRegenerating(false);
1975
2170
  }
1976
2171
  };
1977
- return /* @__PURE__ */ jsxs(
2172
+ return /* @__PURE__ */ jsxs19(
1978
2173
  "div",
1979
2174
  {
1980
2175
  "data-revealed": revealed || void 0,
1981
2176
  className: cn("gap-4 flex w-full flex-col", className),
1982
2177
  "data-slot": slotName,
1983
2178
  children: [
1984
- showHeading && /* @__PURE__ */ jsxs("div", { className: "gap-1 flex flex-col", children: [
1985
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: text.recoveryTitle }),
1986
- /* @__PURE__ */ jsxs("p", { className: "text-xs font-medium text-muted-foreground", children: [
2179
+ showHeading && /* @__PURE__ */ jsxs19("div", { className: "gap-1 flex flex-col", children: [
2180
+ /* @__PURE__ */ jsx19("p", { className: "text-sm font-semibold text-foreground", children: text.recoveryTitle }),
2181
+ /* @__PURE__ */ jsxs19("p", { className: "text-xs font-medium text-muted-foreground", children: [
1987
2182
  text.recoveryDescription,
1988
2183
  " ",
1989
2184
  text.recoveryWarning
1990
2185
  ] })
1991
2186
  ] }),
1992
- revealed && /* @__PURE__ */ jsx(
2187
+ revealed && /* @__PURE__ */ jsx19(
1993
2188
  "ul",
1994
2189
  {
1995
2190
  "data-slot": "two-factor-recovery-list",
@@ -1997,7 +2192,7 @@ function TwoFactorRecoveryCodes({
1997
2192
  recessedSurface,
1998
2193
  "gap-2 p-4 sm:grid-cols-2 grid"
1999
2194
  ),
2000
- children: codes.map((code) => /* @__PURE__ */ jsx(
2195
+ children: codes.map((code) => /* @__PURE__ */ jsx19(
2001
2196
  "li",
2002
2197
  {
2003
2198
  "data-slot": "two-factor-recovery-code",
@@ -2011,8 +2206,8 @@ function TwoFactorRecoveryCodes({
2011
2206
  ))
2012
2207
  }
2013
2208
  ),
2014
- /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-wrap items-center", children: [
2015
- /* @__PURE__ */ jsxs(
2209
+ /* @__PURE__ */ jsxs19("div", { className: "gap-2 flex flex-wrap items-center", children: [
2210
+ /* @__PURE__ */ jsxs19(
2016
2211
  Button,
2017
2212
  {
2018
2213
  type: "button",
@@ -2021,12 +2216,12 @@ function TwoFactorRecoveryCodes({
2021
2216
  "aria-pressed": revealed,
2022
2217
  onClick: () => setRevealed(!revealed),
2023
2218
  children: [
2024
- revealed ? /* @__PURE__ */ jsx(EyeOff, {}) : /* @__PURE__ */ jsx(Eye, {}),
2219
+ revealed ? /* @__PURE__ */ jsx19(EyeOff, {}) : /* @__PURE__ */ jsx19(Eye, {}),
2025
2220
  revealed ? text.hideLabel : text.revealLabel
2026
2221
  ]
2027
2222
  }
2028
2223
  ),
2029
- /* @__PURE__ */ jsx(
2224
+ /* @__PURE__ */ jsx19(
2030
2225
  CopyButton,
2031
2226
  {
2032
2227
  value: codes.join("\n"),
@@ -2036,7 +2231,7 @@ function TwoFactorRecoveryCodes({
2036
2231
  onCopyFailed: () => setCopyFailed(true)
2037
2232
  }
2038
2233
  ),
2039
- onRegenerate && /* @__PURE__ */ jsxs(
2234
+ onRegenerate && /* @__PURE__ */ jsxs19(
2040
2235
  Button,
2041
2236
  {
2042
2237
  type: "button",
@@ -2046,13 +2241,13 @@ function TwoFactorRecoveryCodes({
2046
2241
  loadingLabel: text.regenerateLabel,
2047
2242
  onClick: handleRegenerate,
2048
2243
  children: [
2049
- /* @__PURE__ */ jsx(RefreshCw, {}),
2244
+ /* @__PURE__ */ jsx19(RefreshCw, {}),
2050
2245
  text.regenerateLabel
2051
2246
  ]
2052
2247
  }
2053
2248
  )
2054
2249
  ] }),
2055
- copyFailed && /* @__PURE__ */ jsx(
2250
+ copyFailed && /* @__PURE__ */ jsx19(
2056
2251
  "p",
2057
2252
  {
2058
2253
  "data-slot": "two-factor-copy-failed",
@@ -2064,6 +2259,11 @@ function TwoFactorRecoveryCodes({
2064
2259
  }
2065
2260
  );
2066
2261
  }
2262
+
2263
+ // src/blocks/two-factor/scan-step.tsx
2264
+ import { Eye as Eye2, EyeOff as EyeOff2 } from "lucide-react";
2265
+ import { useState as useState7 } from "react";
2266
+ import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
2067
2267
  function TwoFactorScanStep({
2068
2268
  qrCode,
2069
2269
  qrCodeSvg,
@@ -2073,14 +2273,14 @@ function TwoFactorScanStep({
2073
2273
  slotName = "two-factor-scan-step"
2074
2274
  }) {
2075
2275
  const text = resolveLabels(labels);
2076
- const [revealed, setRevealed] = useState(false);
2077
- return /* @__PURE__ */ jsxs(
2276
+ const [revealed, setRevealed] = useState7(false);
2277
+ return /* @__PURE__ */ jsxs20(
2078
2278
  "div",
2079
2279
  {
2080
2280
  className: cn("gap-5 flex w-full flex-col", className),
2081
2281
  "data-slot": slotName,
2082
2282
  children: [
2083
- /* @__PURE__ */ jsx(
2283
+ /* @__PURE__ */ jsx20(
2084
2284
  "div",
2085
2285
  {
2086
2286
  "data-slot": "two-factor-qr",
@@ -2088,26 +2288,26 @@ function TwoFactorScanStep({
2088
2288
  recessedSurface,
2089
2289
  "p-4 flex items-center justify-center [&_svg]:size-full [&_svg]:h-auto"
2090
2290
  ),
2091
- children: qrCode ?? (qrCodeSvg ? /* @__PURE__ */ jsx(
2291
+ children: qrCode ?? (qrCodeSvg ? /* @__PURE__ */ jsx20(
2092
2292
  "div",
2093
2293
  {
2094
2294
  "data-slot": "two-factor-qr-markup",
2095
2295
  className: cn(controlRadius, "p-3 bg-card"),
2096
2296
  dangerouslySetInnerHTML: { __html: qrCodeSvg }
2097
2297
  }
2098
- ) : /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: text.qrFallbackLabel }))
2298
+ ) : /* @__PURE__ */ jsx20("p", { className: "text-sm font-medium text-muted-foreground", children: text.qrFallbackLabel }))
2099
2299
  }
2100
2300
  ),
2101
- manualSetupKey && /* @__PURE__ */ jsxs(
2301
+ manualSetupKey && /* @__PURE__ */ jsxs20(
2102
2302
  "div",
2103
2303
  {
2104
2304
  "data-slot": "two-factor-setup-key",
2105
2305
  className: "gap-2 flex flex-col",
2106
2306
  children: [
2107
- /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: text.manualKeyLabel }),
2108
- /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground", children: text.manualKeyDescription }),
2109
- /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-wrap items-center", children: [
2110
- /* @__PURE__ */ jsx(
2307
+ /* @__PURE__ */ jsx20("p", { className: "text-sm font-semibold text-foreground", children: text.manualKeyLabel }),
2308
+ /* @__PURE__ */ jsx20("p", { className: "text-xs font-medium text-muted-foreground", children: text.manualKeyDescription }),
2309
+ /* @__PURE__ */ jsxs20("div", { className: "gap-2 flex flex-wrap items-center", children: [
2310
+ /* @__PURE__ */ jsx20(
2111
2311
  "code",
2112
2312
  {
2113
2313
  "data-slot": "two-factor-setup-key-value",
@@ -2118,7 +2318,7 @@ function TwoFactorScanStep({
2118
2318
  children: revealed ? manualSetupKey : "\u2022".repeat(manualSetupKey.length)
2119
2319
  }
2120
2320
  ),
2121
- /* @__PURE__ */ jsxs(
2321
+ /* @__PURE__ */ jsxs20(
2122
2322
  Button,
2123
2323
  {
2124
2324
  type: "button",
@@ -2127,12 +2327,12 @@ function TwoFactorScanStep({
2127
2327
  "aria-pressed": revealed,
2128
2328
  onClick: () => setRevealed(!revealed),
2129
2329
  children: [
2130
- revealed ? /* @__PURE__ */ jsx(EyeOff, {}) : /* @__PURE__ */ jsx(Eye, {}),
2330
+ revealed ? /* @__PURE__ */ jsx20(EyeOff2, {}) : /* @__PURE__ */ jsx20(Eye2, {}),
2131
2331
  revealed ? text.manualKeyHideLabel : text.manualKeyRevealLabel
2132
2332
  ]
2133
2333
  }
2134
2334
  ),
2135
- /* @__PURE__ */ jsx(
2335
+ /* @__PURE__ */ jsx20(
2136
2336
  CopyButton,
2137
2337
  {
2138
2338
  value: manualSetupKey,
@@ -2148,6 +2348,10 @@ function TwoFactorScanStep({
2148
2348
  }
2149
2349
  );
2150
2350
  }
2351
+
2352
+ // src/blocks/two-factor/setup-dialog.tsx
2353
+ import { useEffect as useEffect2, useRef, useState as useState8 } from "react";
2354
+ import { Fragment as Fragment2, jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
2151
2355
  function TwoFactorSetupDialog({
2152
2356
  open,
2153
2357
  onOpenChange,
@@ -2166,15 +2370,15 @@ function TwoFactorSetupDialog({
2166
2370
  slotName = "two-factor-setup-dialog"
2167
2371
  }) {
2168
2372
  const text = resolveLabels(labels);
2169
- const [step, setStep] = useState(
2373
+ const [step, setStep] = useState8(
2170
2374
  enabled ? "recovery" : "scan"
2171
2375
  );
2172
2376
  const requestSetupData = useRef(onRequestSetupData);
2173
2377
  const openedBefore = useRef(false);
2174
- useEffect(() => {
2378
+ useEffect2(() => {
2175
2379
  requestSetupData.current = onRequestSetupData;
2176
2380
  }, [onRequestSetupData]);
2177
- useEffect(() => {
2381
+ useEffect2(() => {
2178
2382
  if (!open) {
2179
2383
  openedBefore.current = false;
2180
2384
  return;
@@ -2210,20 +2414,20 @@ function TwoFactorSetupDialog({
2210
2414
  confirm: text.confirmDescription,
2211
2415
  recovery: `${text.recoveryDescription} ${text.recoveryWarning}`
2212
2416
  }[step];
2213
- return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(
2417
+ return /* @__PURE__ */ jsx21(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs21(
2214
2418
  DialogContent,
2215
2419
  {
2216
2420
  "data-step": step,
2217
2421
  className: cn("max-w-md p-0", className),
2218
2422
  slotName,
2219
2423
  children: [
2220
- /* @__PURE__ */ jsxs(DialogHeader, { className: "p-6 md:p-8", children: [
2221
- /* @__PURE__ */ jsx(DialogTitle, { children: heading }),
2222
- /* @__PURE__ */ jsx(DialogDescription, { children: description })
2424
+ /* @__PURE__ */ jsxs21(DialogHeader, { className: "p-6 md:p-8", children: [
2425
+ /* @__PURE__ */ jsx21(DialogTitle, { children: heading }),
2426
+ /* @__PURE__ */ jsx21(DialogDescription, { children: description })
2223
2427
  ] }),
2224
- /* @__PURE__ */ jsxs("div", { className: "gap-5 p-6 md:p-8 pt-0 md:pt-0 flex flex-col", children: [
2225
- step === "scan" && (ready ? /* @__PURE__ */ jsxs(Fragment, { children: [
2226
- /* @__PURE__ */ jsx(
2428
+ /* @__PURE__ */ jsxs21("div", { className: "gap-5 p-6 md:p-8 pt-0 md:pt-0 flex flex-col", children: [
2429
+ step === "scan" && (ready ? /* @__PURE__ */ jsxs21(Fragment2, { children: [
2430
+ /* @__PURE__ */ jsx21(
2227
2431
  TwoFactorScanStep,
2228
2432
  {
2229
2433
  qrCode,
@@ -2232,7 +2436,7 @@ function TwoFactorSetupDialog({
2232
2436
  labels
2233
2437
  }
2234
2438
  ),
2235
- /* @__PURE__ */ jsx(
2439
+ /* @__PURE__ */ jsx21(
2236
2440
  Button,
2237
2441
  {
2238
2442
  type: "button",
@@ -2240,25 +2444,25 @@ function TwoFactorSetupDialog({
2240
2444
  children: text.continueLabel
2241
2445
  }
2242
2446
  )
2243
- ] }) : /* @__PURE__ */ jsxs(
2447
+ ] }) : /* @__PURE__ */ jsxs21(
2244
2448
  "div",
2245
2449
  {
2246
2450
  "data-slot": "two-factor-pending",
2247
2451
  className: "gap-3 py-6 text-sm font-medium flex items-center justify-center text-muted-foreground",
2248
2452
  children: [
2249
- /* @__PURE__ */ jsx(Spinner, { label: text.pendingLabel }),
2453
+ /* @__PURE__ */ jsx21(Spinner, { label: text.pendingLabel }),
2250
2454
  text.pendingLabel
2251
2455
  ]
2252
2456
  }
2253
2457
  )),
2254
- step === "confirm" && /* @__PURE__ */ jsx(
2458
+ step === "confirm" && /* @__PURE__ */ jsx21(
2255
2459
  TwoFactorVerifyForm,
2256
2460
  {
2257
2461
  autoFocus: true,
2258
2462
  errors,
2259
2463
  labels,
2260
2464
  onSubmit: handleConfirm,
2261
- footer: /* @__PURE__ */ jsx(
2465
+ footer: /* @__PURE__ */ jsx21(
2262
2466
  Button,
2263
2467
  {
2264
2468
  type: "button",
@@ -2270,8 +2474,8 @@ function TwoFactorSetupDialog({
2270
2474
  )
2271
2475
  }
2272
2476
  ),
2273
- step === "recovery" && /* @__PURE__ */ jsxs(Fragment, { children: [
2274
- /* @__PURE__ */ jsx(
2477
+ step === "recovery" && /* @__PURE__ */ jsxs21(Fragment2, { children: [
2478
+ /* @__PURE__ */ jsx21(
2275
2479
  TwoFactorRecoveryCodes,
2276
2480
  {
2277
2481
  codes,
@@ -2281,14 +2485,87 @@ function TwoFactorSetupDialog({
2281
2485
  onRegenerate: onRegenerateRecoveryCodes
2282
2486
  }
2283
2487
  ),
2284
- /* @__PURE__ */ jsx(Button, { type: "button", onClick: finish, children: text.doneLabel })
2488
+ /* @__PURE__ */ jsx21(Button, { type: "button", onClick: finish, children: text.doneLabel })
2285
2489
  ] })
2286
2490
  ] })
2287
2491
  ]
2288
2492
  }
2289
2493
  ) });
2290
2494
  }
2291
-
2292
- export { CommandPalette, DEFAULT_LABELS as DATE_FILTER_LABELS, DEFAULT_OPERATORS as DATE_FILTER_OPERATORS, DEFAULT_PRESETS as DATE_FILTER_PRESETS, DEFAULT_UNITS as DATE_FILTER_UNITS, DangerZone, DateField, DateFilter, DateFilterAll, DateFilterContent, DateFilterFixed, DateFilterItem, DateFilterPresets, DateFilterRelative, DateFilterSeparator, DateFilterTrigger, DetailEditSheet, FormDialog, FormOverlayActions, InfoField, InfoFieldGroup, LocalizedFields, NumberField, SectionHeader, SelectField, SettingsCard, SettingsEntry, SettingsField, SettingsGroup, SettingsPage, SettingsPanel, SettingsSection, StatCard, StatsGrid, TextField, ToggleRow, TwoFactorChallenge, TwoFactorDisableButton, TwoFactorRecoveryCodes, TwoFactorScanStep, TwoFactorSetupDialog, TwoFactorVerifyForm, dangerZoneLabels, decodeDateFilter, encodeDateFilter, formOverlayDefaultLabels, formatRangePreview, resolveRelativeRange, settingsLabels, summariseDateFilter, twoFactorLabels, useCommandPalette, useDateFilter };
2293
- //# sourceMappingURL=blocks.js.map
2495
+ export {
2496
+ CommandPalette,
2497
+ DEFAULT_LABELS as DATE_FILTER_LABELS,
2498
+ DEFAULT_OPERATORS as DATE_FILTER_OPERATORS,
2499
+ DEFAULT_PRESETS as DATE_FILTER_PRESETS,
2500
+ DEFAULT_UNITS as DATE_FILTER_UNITS,
2501
+ DEFAULT_TOUR_LABELS,
2502
+ DangerZone,
2503
+ DateField,
2504
+ DateFilter,
2505
+ DateFilterAll,
2506
+ DateFilterContent,
2507
+ DateFilterFixed,
2508
+ DateFilterItem,
2509
+ DateFilterPresets,
2510
+ DateFilterRelative,
2511
+ DateFilterSeparator,
2512
+ DateFilterTrigger,
2513
+ DetailEditSheet,
2514
+ FormDialog,
2515
+ FormOverlayActions,
2516
+ InfoField,
2517
+ InfoFieldGroup,
2518
+ LocalizedFields,
2519
+ LoginForm,
2520
+ LoginFormEmail,
2521
+ LoginFormPassword,
2522
+ LoginFormPreset,
2523
+ LoginFormProvider,
2524
+ LoginFormRemember,
2525
+ LoginFormRoot,
2526
+ LoginFormStatus,
2527
+ LoginFormSubmit,
2528
+ NumberField,
2529
+ SectionHeader,
2530
+ SelectField,
2531
+ SettingsCard,
2532
+ SettingsEntry,
2533
+ SettingsField,
2534
+ SettingsGroup,
2535
+ SettingsPage,
2536
+ SettingsPanel,
2537
+ SettingsSection,
2538
+ StatCard,
2539
+ StatsGrid,
2540
+ TextField,
2541
+ ToggleRow,
2542
+ TourProvider,
2543
+ TwoFactorChallenge,
2544
+ TwoFactorDisableButton,
2545
+ TwoFactorRecoveryCodes,
2546
+ TwoFactorScanStep,
2547
+ TwoFactorSetupDialog,
2548
+ TwoFactorVerifyForm,
2549
+ UiLocaleProvider,
2550
+ dangerZoneLabels,
2551
+ decodeDateFilter,
2552
+ encodeDateFilter,
2553
+ formOverlayDefaultLabels,
2554
+ formatRangePreview,
2555
+ loginFormLabels,
2556
+ resolveRelativeRange,
2557
+ resolveSteps,
2558
+ settingsLabels,
2559
+ shouldStartTour,
2560
+ stepsForBreakpoint,
2561
+ summariseDateFilter,
2562
+ twoFactorLabels,
2563
+ useCommandPalette,
2564
+ useDateFilter,
2565
+ useLoginFormContext,
2566
+ useTour,
2567
+ useTourController,
2568
+ useUiLabels,
2569
+ useUiLocale
2570
+ };
2294
2571
  //# sourceMappingURL=blocks.js.map