@akira-io/ui 2.1.0 → 2.3.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 (35) hide show
  1. package/dist/blocks.d.ts +6 -6
  2. package/dist/blocks.js +6 -3
  3. package/dist/blocks.js.map +1 -1
  4. package/dist/{chunk-XLAOE5MV.js → chunk-7DAA3DPJ.js} +11 -6
  5. package/dist/chunk-7DAA3DPJ.js.map +1 -0
  6. package/dist/chunk-EXTOGROG.js +42 -0
  7. package/dist/chunk-EXTOGROG.js.map +1 -0
  8. package/dist/{chunk-BR3JI3KN.js → chunk-L56VUE3E.js} +3 -2
  9. package/dist/chunk-L56VUE3E.js.map +1 -0
  10. package/dist/{chunk-ZQXZ4UGE.js → chunk-PYXUFFMO.js} +10 -3
  11. package/dist/chunk-PYXUFFMO.js.map +1 -0
  12. package/dist/{chunk-DPLCEU34.js → chunk-RE4M2G2Y.js} +76 -85
  13. package/dist/chunk-RE4M2G2Y.js.map +1 -0
  14. package/dist/{chunk-L2H5GIF7.js → chunk-VVBBKTC5.js} +6 -1
  15. package/dist/chunk-VVBBKTC5.js.map +1 -0
  16. package/dist/{context-2wTOwxCk.d.ts → context-CWkgje9v.d.ts} +3 -2
  17. package/dist/index.d.ts +23 -10
  18. package/dist/index.js +149 -116
  19. package/dist/index.js.map +1 -1
  20. package/dist/inertia.d.ts +1 -1
  21. package/dist/inertia.js +5 -4
  22. package/dist/inertia.js.map +1 -1
  23. package/dist/locales/fr.d.ts +2 -2
  24. package/dist/locales/pt.d.ts +2 -2
  25. package/dist/shells.d.ts +1 -1
  26. package/dist/shells.js +4 -3
  27. package/dist/shells.js.map +1 -1
  28. package/dist/{sidebar-BLL2tgTt.d.ts → sidebar-_xQ3IehY.d.ts} +3 -1
  29. package/dist/{types-1LUmNJf_.d.ts → types-DEJsTx8E.d.ts} +2 -1
  30. package/package.json +2 -1
  31. package/dist/chunk-BR3JI3KN.js.map +0 -1
  32. package/dist/chunk-DPLCEU34.js.map +0 -1
  33. package/dist/chunk-L2H5GIF7.js.map +0 -1
  34. package/dist/chunk-XLAOE5MV.js.map +0 -1
  35. package/dist/chunk-ZQXZ4UGE.js.map +0 -1
@@ -14,6 +14,16 @@ import {
14
14
  import {
15
15
  Label
16
16
  } from "./chunk-BP2YDMMI.js";
17
+ import {
18
+ FLOATING_SHEET_OFFSET_LIMIT,
19
+ FloatingSheetEdgesContext,
20
+ FloatingSheetReportEdgesContext,
21
+ FloatingSheetStackContext,
22
+ floatingSheetDefaultEdges,
23
+ floatingSheetDefaultLabels,
24
+ useFloatingSheetStack,
25
+ useSheetPortalContainer
26
+ } from "./chunk-EXTOGROG.js";
17
27
  import {
18
28
  Input
19
29
  } from "./chunk-53V4J7MC.js";
@@ -569,21 +579,25 @@ var PopoverContent = React2.forwardRef(
569
579
  align = "center",
570
580
  sideOffset = 4,
571
581
  slotName = "popover-content",
582
+ container,
572
583
  ...props
573
- }, ref) => /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
574
- PopoverPrimitive.Content,
575
- {
576
- ref,
577
- align,
578
- sideOffset,
579
- className: cn(
580
- `${panelSurface} p-4 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-full origin-[--radix-popover-content-transform-origin] bg-popover/90 outline-none`,
581
- className
582
- ),
583
- ...props,
584
- "data-slot": slotName
585
- }
586
- ) })
584
+ }, ref) => {
585
+ const portalContainer = useSheetPortalContainer(container);
586
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx4(
587
+ PopoverPrimitive.Content,
588
+ {
589
+ ref,
590
+ align,
591
+ sideOffset,
592
+ className: cn(
593
+ `${panelSurface} p-4 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-full origin-[--radix-popover-content-transform-origin] bg-popover/90 outline-none`,
594
+ className
595
+ ),
596
+ ...props,
597
+ "data-slot": slotName
598
+ }
599
+ ) });
600
+ }
587
601
  );
588
602
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
589
603
 
@@ -636,9 +650,11 @@ function SelectContent({
636
650
  children,
637
651
  position = "popper",
638
652
  slotName = "select-content",
653
+ container,
639
654
  ...props
640
655
  }) {
641
- return /* @__PURE__ */ jsx5(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs3(
656
+ const portalContainer = useSheetPortalContainer(container);
657
+ return /* @__PURE__ */ jsx5(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs3(
642
658
  SelectPrimitive.Content,
643
659
  {
644
660
  className: cn(
@@ -759,33 +775,9 @@ function SelectScrollDownButton({
759
775
  );
760
776
  }
761
777
 
762
- // src/components/ui/floating-sheet-context.ts
763
- import * as React3 from "react";
764
- var floatingSheetDefaultLabels = {
765
- backLabel: "Back",
766
- closeLabel: "Close"
767
- };
768
- var FLOATING_SHEET_OFFSET_LIMIT = 3;
769
- var FloatingSheetStackContext = React3.createContext(null);
770
- function useFloatingSheetStack() {
771
- const context = React3.useContext(FloatingSheetStackContext);
772
- if (!context) {
773
- throw new Error(
774
- "FloatingSheet must be rendered inside a FloatingSheetStack."
775
- );
776
- }
777
- return context;
778
- }
779
- var floatingSheetDefaultEdges = {
780
- top: true,
781
- bottom: true
782
- };
783
- var FloatingSheetEdgesContext = React3.createContext(floatingSheetDefaultEdges);
784
- var FloatingSheetReportEdgesContext = React3.createContext(null);
785
-
786
778
  // src/components/ui/floating-sheet-stack.tsx
787
779
  import * as DialogPrimitive from "@radix-ui/react-dialog";
788
- import * as React4 from "react";
780
+ import * as React3 from "react";
789
781
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
790
782
  function FloatingSheetStack({
791
783
  children,
@@ -797,22 +789,22 @@ function FloatingSheetStack({
797
789
  floatingSheetDefaultLabels,
798
790
  labels
799
791
  );
800
- const [entries, setEntries] = React4.useState([]);
801
- const [container, setContainer] = React4.useState(null);
802
- const register = React4.useCallback((entry) => {
792
+ const [entries, setEntries] = React3.useState([]);
793
+ const [container, setContainer] = React3.useState(null);
794
+ const register = React3.useCallback((entry) => {
803
795
  setEntries(
804
796
  (current) => current.some((item) => item.id === entry.id) ? current.map((item) => item.id === entry.id ? entry : item) : [...current, entry]
805
797
  );
806
798
  }, []);
807
- const unregister = React4.useCallback((id) => {
799
+ const unregister = React3.useCallback((id) => {
808
800
  setEntries((current) => current.filter((item) => item.id !== id));
809
801
  }, []);
810
- const closeAll = React4.useCallback(() => {
802
+ const closeAll = React3.useCallback(() => {
811
803
  for (const entry of [...entries].reverse()) {
812
804
  entry.close();
813
805
  }
814
806
  }, [entries]);
815
- const value = React4.useMemo(
807
+ const value = React3.useMemo(
816
808
  () => ({
817
809
  labels: { backLabel, closeLabel },
818
810
  container,
@@ -848,7 +840,7 @@ function FloatingSheetStack({
848
840
  DialogPrimitive.Overlay,
849
841
  {
850
842
  "data-slot": "floating-sheet-overlay",
851
- className: "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/60 backdrop-blur-sm fixed z-50"
843
+ className: "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/10 fixed z-50"
852
844
  }
853
845
  ),
854
846
  /* @__PURE__ */ jsxs4(
@@ -891,13 +883,13 @@ function FloatingSheetStack({
891
883
 
892
884
  // src/components/ui/floating-sheet.tsx
893
885
  import { ArrowLeftIcon, XIcon } from "lucide-react";
894
- import * as React6 from "react";
886
+ import * as React5 from "react";
895
887
  import { createPortal } from "react-dom";
896
888
 
897
889
  // src/hooks/use-floating-sheet-body-edges.ts
898
- import * as React5 from "react";
890
+ import * as React4 from "react";
899
891
  function useFloatingSheetBodyEdges(containerRef, topSentinelRef, bottomSentinelRef, reportEdges) {
900
- React5.useEffect(() => {
892
+ React4.useEffect(() => {
901
893
  const container = containerRef.current;
902
894
  const topSentinel = topSentinelRef.current;
903
895
  const bottomSentinel = bottomSentinelRef.current;
@@ -947,23 +939,23 @@ function FloatingSheet({
947
939
  ...props
948
940
  }) {
949
941
  const { labels, container, entries, register, unregister, closeAll } = useFloatingSheetStack();
950
- const id = React6.useId();
942
+ const id = React5.useId();
951
943
  const titleId = `${id}-title`;
952
944
  const descriptionId = `${id}-description`;
953
- const close = React6.useCallback(() => onOpenChange(false), [onOpenChange]);
954
- const closeRef = React6.useRef(close);
955
- const titleRef = React6.useRef(title);
956
- const openerRef = React6.useRef(null);
957
- const panelRef = React6.useRef(null);
958
- const focusedRef = React6.useRef(false);
959
- const [edges, setEdges] = React6.useState(
945
+ const close = React5.useCallback(() => onOpenChange(false), [onOpenChange]);
946
+ const closeRef = React5.useRef(close);
947
+ const titleRef = React5.useRef(title);
948
+ const openerRef = React5.useRef(null);
949
+ const panelRef = React5.useRef(null);
950
+ const focusedRef = React5.useRef(false);
951
+ const [edges, setEdges] = React5.useState(
960
952
  floatingSheetDefaultEdges
961
953
  );
962
- React6.useEffect(() => {
954
+ React5.useEffect(() => {
963
955
  closeRef.current = close;
964
956
  titleRef.current = title;
965
957
  });
966
- React6.useEffect(() => {
958
+ React5.useEffect(() => {
967
959
  if (!open) {
968
960
  return;
969
961
  }
@@ -974,7 +966,7 @@ function FloatingSheet({
974
966
  close: () => closeRef.current()
975
967
  });
976
968
  }, [open, id, persistent, register]);
977
- React6.useEffect(() => {
969
+ React5.useEffect(() => {
978
970
  if (!open) {
979
971
  return;
980
972
  }
@@ -983,7 +975,7 @@ function FloatingSheet({
983
975
  const index = entries.findIndex((entry) => entry.id === id);
984
976
  const depth = index === -1 ? 0 : entries.length - 1 - index;
985
977
  const isTop = index !== -1 && depth === 0;
986
- React6.useEffect(() => {
978
+ React5.useEffect(() => {
987
979
  if (open) {
988
980
  openerRef.current = document.activeElement;
989
981
  return;
@@ -994,7 +986,7 @@ function FloatingSheet({
994
986
  opener.focus();
995
987
  }
996
988
  }, [open]);
997
- React6.useEffect(() => {
989
+ React5.useEffect(() => {
998
990
  if (!open) {
999
991
  focusedRef.current = false;
1000
992
  return;
@@ -1108,10 +1100,10 @@ function FloatingSheetBody({
1108
1100
  children,
1109
1101
  ...props
1110
1102
  }) {
1111
- const reportEdges = React6.useContext(FloatingSheetReportEdgesContext);
1112
- const containerRef = React6.useRef(null);
1113
- const topSentinelRef = React6.useRef(null);
1114
- const bottomSentinelRef = React6.useRef(null);
1103
+ const reportEdges = React5.useContext(FloatingSheetReportEdgesContext);
1104
+ const containerRef = React5.useRef(null);
1105
+ const topSentinelRef = React5.useRef(null);
1106
+ const bottomSentinelRef = React5.useRef(null);
1115
1107
  useFloatingSheetBodyEdges(
1116
1108
  containerRef,
1117
1109
  topSentinelRef,
@@ -1154,7 +1146,7 @@ function FloatingSheetFooter({
1154
1146
  slotName = "floating-sheet-footer",
1155
1147
  ...props
1156
1148
  }) {
1157
- const edges = React6.useContext(FloatingSheetEdgesContext);
1149
+ const edges = React5.useContext(FloatingSheetEdgesContext);
1158
1150
  return /* @__PURE__ */ jsx7(
1159
1151
  "div",
1160
1152
  {
@@ -1173,9 +1165,9 @@ function FloatingSheetFooter({
1173
1165
  // src/components/ui/input-otp.tsx
1174
1166
  import { OTPInput, OTPInputContext } from "input-otp";
1175
1167
  import { Minus } from "lucide-react";
1176
- import * as React7 from "react";
1168
+ import * as React6 from "react";
1177
1169
  import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1178
- var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx8(
1170
+ var InputOTP = React6.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx8(
1179
1171
  OTPInput,
1180
1172
  {
1181
1173
  ref,
@@ -1188,10 +1180,10 @@ var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, r
1188
1180
  }
1189
1181
  ));
1190
1182
  InputOTP.displayName = "InputOTP";
1191
- var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, className: cn("flex items-center", className), ...props }));
1183
+ var InputOTPGroup = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, className: cn("flex items-center", className), ...props }));
1192
1184
  InputOTPGroup.displayName = "InputOTPGroup";
1193
- var InputOTPSlot = React7.forwardRef(({ index, className, slotName = "input-otp-slot", ...props }, ref) => {
1194
- const inputOTPContext = React7.useContext(OTPInputContext);
1185
+ var InputOTPSlot = React6.forwardRef(({ index, className, slotName = "input-otp-slot", ...props }, ref) => {
1186
+ const inputOTPContext = React6.useContext(OTPInputContext);
1195
1187
  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1196
1188
  return /* @__PURE__ */ jsxs6(
1197
1189
  "div",
@@ -1214,14 +1206,14 @@ var InputOTPSlot = React7.forwardRef(({ index, className, slotName = "input-otp-
1214
1206
  );
1215
1207
  });
1216
1208
  InputOTPSlot.displayName = "InputOTPSlot";
1217
- var InputOTPSeparator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx8(Minus, {}) }));
1209
+ var InputOTPSeparator = React6.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx8(Minus, {}) }));
1218
1210
  InputOTPSeparator.displayName = "InputOTPSeparator";
1219
1211
 
1220
1212
  // src/components/ui/switch.tsx
1221
1213
  import * as SwitchPrimitives from "@radix-ui/react-switch";
1222
- import * as React8 from "react";
1214
+ import * as React7 from "react";
1223
1215
  import { jsx as jsx9 } from "react/jsx-runtime";
1224
- var Switch = React8.forwardRef(({ className, slotName = "switch", ...props }, ref) => /* @__PURE__ */ jsx9(
1216
+ var Switch = React7.forwardRef(({ className, slotName = "switch", ...props }, ref) => /* @__PURE__ */ jsx9(
1225
1217
  SwitchPrimitives.Root,
1226
1218
  {
1227
1219
  className: cn(
@@ -1246,11 +1238,11 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
1246
1238
 
1247
1239
  // src/components/ui/tabs.tsx
1248
1240
  import * as TabsPrimitive from "@radix-ui/react-tabs";
1249
- import * as React9 from "react";
1241
+ import * as React8 from "react";
1250
1242
  import { jsx as jsx10 } from "react/jsx-runtime";
1251
- var Tabs = React9.forwardRef(({ slotName = "tabs", ...props }, ref) => /* @__PURE__ */ jsx10(TabsPrimitive.Root, { ref, ...props, "data-slot": slotName }));
1243
+ var Tabs = React8.forwardRef(({ slotName = "tabs", ...props }, ref) => /* @__PURE__ */ jsx10(TabsPrimitive.Root, { ref, ...props, "data-slot": slotName }));
1252
1244
  Tabs.displayName = TabsPrimitive.Root.displayName;
1253
- var TabsList = React9.forwardRef(({ className, slotName = "tabs-list", ...props }, ref) => /* @__PURE__ */ jsx10(
1245
+ var TabsList = React8.forwardRef(({ className, slotName = "tabs-list", ...props }, ref) => /* @__PURE__ */ jsx10(
1254
1246
  TabsPrimitive.List,
1255
1247
  {
1256
1248
  ref,
@@ -1263,7 +1255,7 @@ var TabsList = React9.forwardRef(({ className, slotName = "tabs-list", ...props
1263
1255
  }
1264
1256
  ));
1265
1257
  TabsList.displayName = TabsPrimitive.List.displayName;
1266
- var TabsTrigger = React9.forwardRef(({ className, slotName = "tabs-trigger", ...props }, ref) => /* @__PURE__ */ jsx10(
1258
+ var TabsTrigger = React8.forwardRef(({ className, slotName = "tabs-trigger", ...props }, ref) => /* @__PURE__ */ jsx10(
1267
1259
  TabsPrimitive.Trigger,
1268
1260
  {
1269
1261
  ref,
@@ -1276,7 +1268,7 @@ var TabsTrigger = React9.forwardRef(({ className, slotName = "tabs-trigger", ...
1276
1268
  }
1277
1269
  ));
1278
1270
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
1279
- var TabsContent = React9.forwardRef(({ className, slotName = "tabs-content", ...props }, ref) => /* @__PURE__ */ jsx10(
1271
+ var TabsContent = React8.forwardRef(({ className, slotName = "tabs-content", ...props }, ref) => /* @__PURE__ */ jsx10(
1280
1272
  TabsPrimitive.Content,
1281
1273
  {
1282
1274
  ref,
@@ -1293,9 +1285,9 @@ var TabsContent = React9.forwardRef(({ className, slotName = "tabs-content", ...
1293
1285
  TabsContent.displayName = TabsPrimitive.Content.displayName;
1294
1286
 
1295
1287
  // src/components/ui/textarea.tsx
1296
- import * as React10 from "react";
1288
+ import * as React9 from "react";
1297
1289
  import { jsx as jsx11 } from "react/jsx-runtime";
1298
- var Textarea = React10.forwardRef(({ className, slotName = "textarea", ...props }, ref) => {
1290
+ var Textarea = React9.forwardRef(({ className, slotName = "textarea", ...props }, ref) => {
1299
1291
  return /* @__PURE__ */ jsx11(
1300
1292
  "textarea",
1301
1293
  {
@@ -1342,7 +1334,6 @@ export {
1342
1334
  SelectSeparator,
1343
1335
  SelectScrollUpButton,
1344
1336
  SelectScrollDownButton,
1345
- floatingSheetDefaultLabels,
1346
1337
  FloatingSheetStack,
1347
1338
  FloatingSheet,
1348
1339
  FloatingSheetBody,
@@ -1358,4 +1349,4 @@ export {
1358
1349
  TabsContent,
1359
1350
  Textarea
1360
1351
  };
1361
- //# sourceMappingURL=chunk-DPLCEU34.js.map
1352
+ //# sourceMappingURL=chunk-RE4M2G2Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/confirm-dialog.tsx","../src/components/ui/calendar.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/ui/select.tsx","../src/components/ui/floating-sheet-stack.tsx","../src/components/ui/floating-sheet.tsx","../src/hooks/use-floating-sheet-body-edges.ts","../src/components/ui/input-otp.tsx","../src/components/ui/switch.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx"],"sourcesContent":["import { Button } from '@/components/ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { AlertCircle, ChevronRight } from 'lucide-react';\nimport { ReactNode, useEffect, useId, useState } from 'react';\n\nexport interface ConfirmDialogLabels {\n title: string;\n description: string;\n confirmText: string;\n cancelText: string;\n}\n\nexport const confirmDialogDefaultLabels: ConfirmDialogLabels = {\n title: 'Confirm Action',\n description:\n 'Are you sure you want to continue? This action cannot be undone.',\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n};\n\ninterface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: ConfirmDialogLabels['title'];\n description?: ConfirmDialogLabels['description'] | ReactNode;\n confirmText?: ConfirmDialogLabels['confirmText'];\n cancelText?: ConfirmDialogLabels['cancelText'];\n variant?: 'destructive' | 'default';\n processing?: boolean;\n requiredValue?: string;\n requiredValueLabel?: string;\n onConfirm: () => void;\n onCancel?: () => void;\n}\n\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmText,\n cancelText,\n variant = 'destructive',\n processing = false,\n requiredValue,\n requiredValueLabel = 'Type {{value}} to confirm',\n onConfirm,\n onCancel,\n slotName = 'confirm-dialog',\n}: ConfirmDialogProps & SlotNameProps) {\n const labels = useUiLabels('confirmDialog', confirmDialogDefaultLabels, {\n title,\n confirmText,\n cancelText,\n });\n const resolvedDescription = description ?? labels.description;\n const inputId = useId();\n const [typedValue, setTypedValue] = useState('');\n const unlocked =\n requiredValue === undefined || typedValue === requiredValue;\n\n useEffect(() => {\n if (!open) {\n setTypedValue('');\n }\n }, [open]);\n\n const handleConfirm = () => {\n if (processing || !unlocked) {\n return;\n }\n onConfirm();\n onOpenChange(false);\n };\n\n const handleCancel = () => {\n if (processing) {\n return;\n }\n onCancel?.();\n onOpenChange(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-md p-0\" slotName={slotName}>\n <DialogHeader className=\"p-6 md:p-8\">\n <div className=\"mb-6 flex justify-center\">\n <div\n className={cn(\n 'size-16 rounded-3xl shadow-xl flex items-center justify-center',\n variant === 'destructive'\n ? 'bg-destructive text-destructive-foreground shadow-destructive/20'\n : 'bg-primary text-primary-foreground shadow-primary/20',\n )}\n >\n <AlertCircle className=\"h-8 w-8\" />\n </div>\n </div>\n <DialogTitle>{labels.title}</DialogTitle>\n <DialogDescription>{resolvedDescription}</DialogDescription>\n </DialogHeader>\n\n {requiredValue !== undefined && (\n <div\n data-slot=\"confirm-dialog-gate\"\n className=\"gap-2 px-6 md:px-8 flex flex-col\"\n >\n <Label htmlFor={inputId}>\n {requiredValueLabel.replace(\n '{{value}}',\n requiredValue,\n )}\n </Label>\n <Input\n id={inputId}\n value={typedValue}\n autoComplete=\"off\"\n disabled={processing}\n onChange={(event) =>\n setTypedValue(event.target.value)\n }\n />\n </div>\n )}\n\n <DialogFooter className=\"p-6 md:p-8\">\n <div className=\"gap-4 sm:grid-cols-2 grid w-full\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n disabled={processing}\n onClick={handleCancel}\n className=\"text-muted-foreground\"\n >\n {labels.cancelText}\n </Button>\n <Button\n variant={variant}\n disabled={processing || !unlocked}\n onClick={handleConfirm}\n >\n {labels.confirmText}\n <ChevronRight className=\"ml-2 h-5 w-5\" />\n </Button>\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from 'lucide-react';\nimport * as React from 'react';\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from 'react-day-picker';\n\nimport { Button, buttonVariants } from '@/components/ui/button';\nimport { elevatedSurface, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n slotName = 'calendar',\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n} & SlotNameProps) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'group/calendar p-4 [--cell-size:--spacing(8)] bg-card',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'gap-4 md:flex-row relative flex flex-col',\n defaultClassNames.months,\n ),\n month: cn(\n 'gap-4 flex w-full flex-col',\n defaultClassNames.month,\n ),\n nav: cn(\n 'inset-x-0 top-0 gap-1 absolute flex w-full items-center justify-between',\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'p-0 size-(--cell-size) select-none aria-disabled:opacity-50',\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'p-0 size-(--cell-size) select-none aria-disabled:opacity-50',\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n 'flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)',\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n 'gap-1.5 text-sm font-medium flex h-(--cell-size) w-full items-center justify-center',\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n 'shadow-xs rounded-xl relative border border-border has-focus:outline-1 has-focus:outline-offset-0 has-focus:outline-ring has-focus:outline-solid',\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\n 'inset-0 absolute bg-popover opacity-0',\n defaultClassNames.dropdown,\n ),\n caption_label: cn(\n 'font-medium select-none',\n captionLayout === 'label'\n ? 'text-sm'\n : 'h-8 gap-1 pr-1 pl-2 text-sm [&>svg]:size-3.5 rounded-xl flex items-center [&>svg]:text-muted-foreground',\n defaultClassNames.caption_label,\n ),\n month_grid: cn(\n 'w-full border-collapse',\n defaultClassNames.month_grid,\n ),\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'font-normal rounded-xl flex-1 text-[0.8rem] text-muted-foreground select-none',\n defaultClassNames.weekday,\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn(\n 'w-(--cell-size) select-none',\n defaultClassNames.week_number_header,\n ),\n week_number: cn(\n 'text-[0.8rem] text-muted-foreground select-none',\n defaultClassNames.week_number,\n ),\n day: cn(\n 'group/day p-0 [&:last-child[data-selected=true]_button]:rounded-r-xl relative aspect-square h-full w-full text-center select-none',\n props.showWeekNumber\n ? '[&:nth-child(2)[data-selected=true]_button]:rounded-l-xl'\n : '[&:first-child[data-selected=true]_button]:rounded-l-xl',\n defaultClassNames.day,\n ),\n range_start: cn(\n 'rounded-l-xl bg-accent',\n defaultClassNames.range_start,\n ),\n range_middle: cn(\n 'rounded-none',\n defaultClassNames.range_middle,\n ),\n range_end: cn(\n 'rounded-r-xl bg-accent',\n defaultClassNames.range_end,\n ),\n today: cn(\n 'rounded-xl bg-accent text-accent-foreground data-[selected=true]:rounded-none',\n defaultClassNames.today,\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside,\n ),\n disabled: cn(\n 'text-muted-foreground opacity-50',\n defaultClassNames.disabled,\n ),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n ref={rootRef}\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon\n className={cn('size-4', className)}\n {...props}\n />\n );\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-4', className)}\n {...props}\n />\n );\n }\n\n return (\n <ChevronDownIcon\n className={cn('size-4', className)}\n {...props}\n />\n );\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'gap-1 font-normal [&>span]:text-xs data-[range-end=true]:rounded-xl data-[range-end=true]:rounded-r-xl data-[range-start=true]:rounded-xl data-[range-start=true]:rounded-l-xl flex aspect-square size-auto w-full min-w-(--cell-size) flex-col leading-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:opacity-70',\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n","'use client';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon, SearchXIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport {\n elevatedSurface,\n fieldSurface,\n modalSurface,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Command({\n className,\n slotName = 'command',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive> & SlotNameProps) {\n return (\n <CommandPrimitive\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'flex h-full w-full flex-col overflow-hidden bg-card text-card-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n hideCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n hideCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\n `${modalSurface} gap-0 p-0 overflow-hidden`,\n className,\n )}\n hideCloseButton={hideCloseButton}\n >\n <Command className=\"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-item]]:py-2.5 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n slotName = 'command-input',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input> & SlotNameProps) {\n return (\n <div className=\"shrink-0 border-b border-border\">\n <div\n data-slot=\"command-input-wrapper\"\n className={cn(\n fieldSurface,\n 'h-11 gap-3 px-4 m-3 flex items-center',\n )}\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'h-11 text-base sm:text-sm font-medium flex w-full bg-transparent outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </div>\n </div>\n );\n}\n\nfunction CommandList({\n className,\n slotName = 'command-list',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List> & SlotNameProps) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'scroll-py-1 max-h-[300px] overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CommandEmpty({\n className,\n children,\n slotName = 'command-empty',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty> & SlotNameProps) {\n return (\n <CommandPrimitive.Empty\n className={cn(\n 'gap-3 px-6 py-10 flex flex-col items-center justify-center text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"size-10 flex items-center justify-center rounded-full bg-surface-recessed text-muted-foreground\">\n <SearchXIcon className=\"size-5\" />\n </span>\n <span className=\"text-sm text-muted-foreground\">{children}</span>\n </CommandPrimitive.Empty>\n );\n}\n\nfunction CommandGroup({\n className,\n slotName = 'command-group',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group> & SlotNameProps) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'p-3 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium overflow-hidden text-foreground [&_[cmdk-group-heading]]:text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n slotName = 'command-separator',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator> & SlotNameProps) {\n return (\n <CommandPrimitive.Separator\n className={cn('mx-3 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CommandItem({\n className,\n slotName = 'command-item',\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item> & SlotNameProps) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n slotName = 'command-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n","import { Popover as PopoverPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }\n>(\n (\n {\n className,\n align = 'center',\n sideOffset = 4,\n slotName = 'popover-content',\n container,\n ...props\n },\n ref,\n ) => {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <PopoverPrimitive.Portal container={portalContainer}>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `${panelSurface} p-4 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-full origin-[--radix-popover-content-transform-origin] bg-popover/90 outline-none`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </PopoverPrimitive.Portal>\n );\n },\n);\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n","import * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport { fieldFocus, fieldSurface, menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Select({\n slotName = 'select',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root> & SlotNameProps) {\n return <SelectPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction SelectGroup({\n slotName = 'select-group',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group> & SlotNameProps) {\n return <SelectPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction SelectValue({\n slotName = 'select-value',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value> & SlotNameProps) {\n return <SelectPrimitive.Value {...props} data-slot={slotName} />;\n}\n\nfunction SelectTrigger({\n className,\n children,\n slotName = 'select-trigger',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & SlotNameProps) {\n return (\n <SelectPrimitive.Trigger\n className={cn(\n `${fieldSurface} h-11 px-4 font-medium *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 flex w-full items-center justify-between transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0 [&>span]:line-clamp-1 ${fieldFocus}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n slotName = 'select-content',\n container,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <SelectPrimitive.Portal container={portalContainer}>\n <SelectPrimitive.Content\n className={cn(\n `${menuSurface} max-h-96 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 relative z-50 min-w-[8rem] overflow-hidden bg-popover/95`,\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n data-slot={slotName}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'scroll-my-1 h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n slotName = 'select-label',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label> & SlotNameProps) {\n return (\n <SelectPrimitive.Label\n className={cn(\n 'px-2 py-1.5 text-xs font-medium tracking-wider text-muted-foreground uppercase',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n slotName = 'select-item',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item> & SlotNameProps) {\n return (\n <SelectPrimitive.Item\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:gap-2 focus:font-semibold relative flex w-full cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"right-2 size-3.5 absolute flex items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n slotName = 'select-separator',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator> & SlotNameProps) {\n return (\n <SelectPrimitive.Separator\n className={cn(\n '-mx-1 my-1 pointer-events-none h-px bg-border',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n slotName = 'select-scroll-up-button',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton> &\n SlotNameProps) {\n return (\n <SelectPrimitive.ScrollUpButton\n className={cn(\n 'py-1 flex cursor-default items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n slotName = 'select-scroll-down-button',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton> &\n SlotNameProps) {\n return (\n <SelectPrimitive.ScrollDownButton\n className={cn(\n 'py-1 flex cursor-default items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\n\nimport {\n FloatingSheetStackContext,\n floatingSheetDefaultLabels,\n type FloatingSheetLabels,\n type FloatingSheetStackContextValue,\n type FloatingSheetStackEntry,\n} from '@/components/ui/floating-sheet-context';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\n\nexport function FloatingSheetStack({\n children,\n labels,\n slotName = 'floating-sheet-stack',\n}: {\n children: React.ReactNode;\n labels?: Partial<FloatingSheetLabels>;\n} & SlotNameProps) {\n const { backLabel, closeLabel } = useUiLabels(\n 'floatingSheet',\n floatingSheetDefaultLabels,\n labels,\n );\n const [entries, setEntries] = React.useState<FloatingSheetStackEntry[]>([]);\n const [container, setContainer] = React.useState<HTMLElement | null>(null);\n\n const register = React.useCallback((entry: FloatingSheetStackEntry) => {\n setEntries((current) =>\n current.some((item) => item.id === entry.id)\n ? current.map((item) => (item.id === entry.id ? entry : item))\n : [...current, entry],\n );\n }, []);\n\n const unregister = React.useCallback((id: string) => {\n setEntries((current) => current.filter((item) => item.id !== id));\n }, []);\n\n const closeAll = React.useCallback(() => {\n for (const entry of [...entries].reverse()) {\n entry.close();\n }\n }, [entries]);\n\n const value = React.useMemo<FloatingSheetStackContextValue>(\n () => ({\n labels: { backLabel, closeLabel },\n container,\n entries,\n register,\n unregister,\n closeAll,\n }),\n [\n backLabel,\n closeLabel,\n container,\n entries,\n register,\n unregister,\n closeAll,\n ],\n );\n\n const top = entries.at(-1);\n\n return (\n <FloatingSheetStackContext.Provider value={value}>\n {children}\n\n <DialogPrimitive.Root\n open={entries.length > 0}\n onOpenChange={(open) => {\n if (!open) {\n closeAll();\n }\n }}\n >\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-slot=\"floating-sheet-overlay\"\n className=\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/10 fixed z-50\"\n />\n <DialogPrimitive.Content\n aria-describedby={undefined}\n onEscapeKeyDown={(event) => {\n event.preventDefault();\n\n if (!top?.persistent) {\n top?.close();\n }\n }}\n onInteractOutside={(event) => {\n if (top?.persistent) {\n event.preventDefault();\n }\n }}\n onOpenAutoFocus={(event) => event.preventDefault()}\n onCloseAutoFocus={(event) => event.preventDefault()}\n className=\"inset-2 sm:inset-y-4 sm:right-4 sm:left-auto sm:w-[calc(100vw-2rem)] sm:max-w-lg sm:p-0 fixed z-50 p-[env(safe-area-inset-top)_env(safe-area-inset-right)_env(safe-area-inset-bottom)_env(safe-area-inset-left)] outline-none\"\n data-slot={slotName}\n >\n <DialogPrimitive.Title className=\"sr-only\">\n {top?.title}\n </DialogPrimitive.Title>\n <div\n ref={setContainer}\n data-slot=\"floating-sheet-panels\"\n className=\"relative h-full w-full\"\n />\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n </FloatingSheetStackContext.Provider>\n );\n}\n","import { ArrowLeftIcon, XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n FLOATING_SHEET_OFFSET_LIMIT,\n floatingSheetDefaultEdges,\n floatingSheetDefaultLabels,\n FloatingSheetEdgesContext,\n FloatingSheetReportEdgesContext,\n useFloatingSheetStack,\n type FloatingSheetEdges,\n type FloatingSheetLabels,\n} from '@/components/ui/floating-sheet-context';\nimport { FloatingSheetStack } from '@/components/ui/floating-sheet-stack';\nimport { useFloatingSheetBodyEdges } from '@/hooks/use-floating-sheet-body-edges';\nimport {\n focusRing,\n modalSurface,\n scrollEdgeTransition,\n scrollShadowFromBottom,\n scrollShadowFromTop,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction FloatingSheet({\n open,\n onOpenChange,\n title,\n description,\n persistent = false,\n className,\n children,\n slotName = 'floating-sheet',\n ...props\n}: Omit<React.ComponentProps<'section'>, 'title'> & {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: React.ReactNode;\n description?: React.ReactNode;\n persistent?: boolean;\n} & SlotNameProps) {\n const { labels, container, entries, register, unregister, closeAll } =\n useFloatingSheetStack();\n const id = React.useId();\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const close = React.useCallback(() => onOpenChange(false), [onOpenChange]);\n const closeRef = React.useRef(close);\n const titleRef = React.useRef(title);\n const openerRef = React.useRef<Element | null>(null);\n const panelRef = React.useRef<HTMLElement | null>(null);\n const focusedRef = React.useRef(false);\n const [edges, setEdges] = React.useState<FloatingSheetEdges>(\n floatingSheetDefaultEdges,\n );\n\n React.useEffect(() => {\n closeRef.current = close;\n titleRef.current = title;\n });\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n register({\n id,\n title: titleRef.current,\n persistent,\n close: () => closeRef.current(),\n });\n }, [open, id, persistent, register]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n return () => unregister(id);\n }, [open, id, unregister]);\n\n const index = entries.findIndex((entry) => entry.id === id);\n const depth = index === -1 ? 0 : entries.length - 1 - index;\n const isTop = index !== -1 && depth === 0;\n\n React.useEffect(() => {\n if (open) {\n openerRef.current = document.activeElement;\n\n return;\n }\n\n const opener = openerRef.current;\n openerRef.current = null;\n\n if (opener instanceof HTMLElement && document.contains(opener)) {\n opener.focus();\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open) {\n focusedRef.current = false;\n\n return;\n }\n\n if (!isTop || focusedRef.current) {\n return;\n }\n\n focusedRef.current = true;\n\n const frame = requestAnimationFrame(() => panelRef.current?.focus());\n\n return () => cancelAnimationFrame(frame);\n }, [open, isTop]);\n\n if (!open || !container) {\n return null;\n }\n\n const offset = Math.min(depth, FLOATING_SHEET_OFFSET_LIMIT);\n\n return createPortal(\n <section\n ref={panelRef}\n data-depth={depth}\n role=\"dialog\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n tabIndex={-1}\n inert={!isTop}\n style={{\n transform: `translateX(-${offset * 26}px) scale(${1 - offset * 0.035})`,\n zIndex: index,\n }}\n className={cn(\n `${modalSurface} inset-0 ease-out absolute flex flex-col overflow-hidden transition-transform duration-300 outline-none`,\n depth > 0 && 'max-sm:hidden pointer-events-none',\n depth > FLOATING_SHEET_OFFSET_LIMIT && 'hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <header\n data-slot=\"floating-sheet-header\"\n className={cn(\n 'gap-1 p-5 relative z-10 flex flex-col',\n scrollEdgeTransition,\n !edges.top && scrollShadowFromTop,\n )}\n >\n {index > 0 ? (\n <button\n type=\"button\"\n data-slot=\"floating-sheet-back\"\n onClick={close}\n className={cn(\n 'gap-2 h-8 -ml-2 px-2 text-sm font-medium inline-flex w-fit items-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n focusRing,\n )}\n >\n <ArrowLeftIcon className=\"size-4\" />\n {labels.backLabel}\n </button>\n ) : null}\n\n <h2\n id={titleId}\n data-slot=\"floating-sheet-title\"\n className=\"pr-10 text-lg font-semibold text-foreground\"\n >\n {title}\n </h2>\n\n {description ? (\n <p\n id={descriptionId}\n data-slot=\"floating-sheet-description\"\n className=\"text-sm text-muted-foreground\"\n >\n {description}\n </p>\n ) : null}\n </header>\n\n <FloatingSheetReportEdgesContext.Provider value={setEdges}>\n <FloatingSheetEdgesContext.Provider value={edges}>\n {children}\n </FloatingSheetEdgesContext.Provider>\n </FloatingSheetReportEdgesContext.Provider>\n\n <button\n type=\"button\"\n data-slot=\"floating-sheet-close\"\n aria-label={labels.closeLabel}\n onClick={closeAll}\n className={cn(\n 'top-4 right-4 size-9 shadow-xs absolute z-20 flex items-center justify-center rounded-full border border-border bg-muted text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none',\n focusRing,\n )}\n >\n <XIcon className=\"size-4\" />\n </button>\n </section>,\n container,\n );\n}\n\nfunction FloatingSheetBody({\n className,\n slotName = 'floating-sheet-body',\n children,\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const reportEdges = React.useContext(FloatingSheetReportEdgesContext);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const topSentinelRef = React.useRef<HTMLDivElement | null>(null);\n const bottomSentinelRef = React.useRef<HTMLDivElement | null>(null);\n\n useFloatingSheetBodyEdges(\n containerRef,\n topSentinelRef,\n bottomSentinelRef,\n reportEdges,\n );\n\n return (\n <div\n ref={containerRef}\n className={cn('p-5 flex-1 overflow-y-auto', className)}\n {...props}\n data-slot={slotName}\n >\n <div\n ref={topSentinelRef}\n aria-hidden=\"true\"\n data-slot=\"floating-sheet-top-sentinel\"\n className=\"h-0\"\n />\n {children}\n <div\n ref={bottomSentinelRef}\n aria-hidden=\"true\"\n data-slot=\"floating-sheet-bottom-sentinel\"\n className=\"h-0\"\n />\n </div>\n );\n}\n\nfunction FloatingSheetFooter({\n className,\n slotName = 'floating-sheet-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const edges = React.useContext(FloatingSheetEdgesContext);\n\n return (\n <div\n className={cn(\n 'gap-2 p-5 relative z-10 mt-auto flex items-center justify-end',\n scrollEdgeTransition,\n !edges.bottom && scrollShadowFromBottom,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n FloatingSheet,\n FloatingSheetBody,\n floatingSheetDefaultLabels,\n FloatingSheetFooter,\n FloatingSheetStack,\n type FloatingSheetLabels,\n};\n","import * as React from 'react';\n\nimport {\n floatingSheetDefaultEdges,\n type FloatingSheetEdges,\n} from '@/components/ui/floating-sheet-context';\n\nexport function useFloatingSheetBodyEdges(\n containerRef: React.RefObject<HTMLElement | null>,\n topSentinelRef: React.RefObject<HTMLElement | null>,\n bottomSentinelRef: React.RefObject<HTMLElement | null>,\n reportEdges: ((edges: FloatingSheetEdges) => void) | null,\n): void {\n React.useEffect(() => {\n const container = containerRef.current;\n const topSentinel = topSentinelRef.current;\n const bottomSentinel = bottomSentinelRef.current;\n\n if (\n !reportEdges ||\n !container ||\n !topSentinel ||\n !bottomSentinel ||\n typeof IntersectionObserver === 'undefined'\n ) {\n return;\n }\n\n let edges = floatingSheetDefaultEdges;\n const edgeKeyByTarget = new Map<Element, keyof FloatingSheetEdges>([\n [topSentinel, 'top'],\n [bottomSentinel, 'bottom'],\n ]);\n\n const observer = new IntersectionObserver(\n (entries) => {\n const next = { ...edges };\n\n for (const entry of entries) {\n const key = edgeKeyByTarget.get(entry.target);\n\n if (!key) {\n continue;\n }\n\n next[key] = entry.isIntersecting;\n }\n\n edges = next;\n reportEdges(next);\n },\n { root: container, threshold: 0 },\n );\n\n observer.observe(topSentinel);\n observer.observe(bottomSentinel);\n\n return () => {\n observer.disconnect();\n reportEdges(floatingSheetDefaultEdges);\n };\n }, [containerRef, topSentinelRef, bottomSentinelRef, reportEdges]);\n}\n","import { OTPInput, OTPInputContext } from 'input-otp';\nimport { Minus } from 'lucide-react';\nimport * as React from 'react';\n\nimport { controlFill, glassControl } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n 'gap-2 flex items-center has-[:disabled]:opacity-50',\n containerClassName,\n )}\n className={cn('disabled:cursor-not-allowed', className)}\n {...props}\n />\n));\nInputOTP.displayName = 'InputOTP';\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center', className)} {...props} />\n));\nInputOTPGroup.displayName = 'InputOTPGroup';\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'> & { index: number } & SlotNameProps\n>(({ index, className, slotName = 'input-otp-slot', ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];\n\n return (\n <div\n ref={ref}\n className={cn(\n glassControl,\n controlFill,\n 'size-11 text-base sm:text-sm font-medium first:rounded-l-2xl last:rounded-r-2xl relative flex items-center justify-center rounded-none transition-all',\n isActive && 'z-10 ring-[3px] ring-ring/50',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"inset-0 pointer-events-none absolute flex items-center justify-center\">\n <div className=\"h-4 animate-caret-blink w-px bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n});\nInputOTPSlot.displayName = 'InputOTPSlot';\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'>\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Minus />\n </div>\n));\nInputOTPSeparator.displayName = 'InputOTPSeparator';\n\nexport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };\n","import * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SlotNameProps\n>(({ className, slotName = 'switch', ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n `peer h-6 w-11 shadow-sm inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input ${focusRing}`,\n className,\n )}\n {...props}\n ref={ref}\n data-slot={slotName}\n >\n <SwitchPrimitives.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'size-5 shadow-lg data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0 pointer-events-none block rounded-full bg-background ring-0 transition-transform',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport * as React from 'react';\n\nimport { elevatedSurface, focusRing, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & SlotNameProps\n>(({ slotName = 'tabs', ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} {...props} data-slot={slotName} />\n));\nTabs.displayName = TabsPrimitive.Root.displayName;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & SlotNameProps\n>(({ className, slotName = 'tabs-list', ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'h-11 p-1.5 rounded-2xl inline-flex items-center justify-center bg-muted text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & SlotNameProps\n>(({ className, slotName = 'tabs-trigger', ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n `px-4 text-sm font-medium data-[state=active]:shadow-sm h-8 rounded-xl data-[state=active]:font-semibold inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-tab-active data-[state=active]:text-foreground ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> & SlotNameProps\n>(({ className, slotName = 'tabs-content', ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n `mt-2 p-5 bg-card ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n","import * as React from 'react';\n\nimport { fieldFocus, fieldSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<'textarea'> & SlotNameProps\n>(({ className, slotName = 'textarea', ...props }, ref) => {\n return (\n <textarea\n className={cn(\n fieldSurface,\n 'px-4 py-3 font-medium min-h-24 flex w-full resize-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n fieldFocus,\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n className,\n )}\n ref={ref}\n {...props}\n data-slot={slotName}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n"],"mappings":"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","names":["jsx","className","props","jsx","jsxs","React","jsx","ChevronDownIcon","jsx","jsxs","ChevronDownIcon","React","jsx","jsxs","React","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","React","jsx"]}
@@ -3,6 +3,10 @@ import { createElement } from "react";
3
3
  function hrefToString(href) {
4
4
  return typeof href === "string" ? href : href.url;
5
5
  }
6
+ function pathOfHref(href) {
7
+ const url = typeof href === "string" ? href : hrefToString(href);
8
+ return url.split("?")[0].split("#")[0];
9
+ }
6
10
  var DefaultLink = ({
7
11
  href,
8
12
  children,
@@ -18,6 +22,7 @@ function resolveLink(linkComponent) {
18
22
 
19
23
  export {
20
24
  hrefToString,
25
+ pathOfHref,
21
26
  resolveLink
22
27
  };
23
- //# sourceMappingURL=chunk-L2H5GIF7.js.map
28
+ //# sourceMappingURL=chunk-VVBBKTC5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/href.ts"],"sourcesContent":["import type { ComponentType } from 'react';\nimport { createElement } from 'react';\n\nimport type { LinkComponent, LinkProps, UrlLike } from '@/types';\n\nexport function hrefToString(href: UrlLike): string {\n return typeof href === 'string' ? href : href.url;\n}\n\nexport function pathOfHref(href: UrlLike | string): string {\n const url = typeof href === 'string' ? href : hrefToString(href);\n\n return url.split('?')[0].split('#')[0];\n}\n\nexport const DefaultLink: ComponentType<LinkProps> = ({\n href,\n children,\n prefetch: _prefetch,\n as: _as,\n ...props\n}) => {\n return createElement('a', { href: hrefToString(href), ...props }, children);\n};\n\nexport function resolveLink(linkComponent?: LinkComponent): LinkComponent {\n return linkComponent ?? DefaultLink;\n}\n"],"mappings":";AACA,SAAS,qBAAqB;AAIvB,SAAS,aAAa,MAAuB;AAChD,SAAO,OAAO,SAAS,WAAW,OAAO,KAAK;AAClD;AAEO,SAAS,WAAW,MAAgC;AACvD,QAAM,MAAM,OAAO,SAAS,WAAW,OAAO,aAAa,IAAI;AAE/D,SAAO,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACzC;AAEO,IAAM,cAAwC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,GAAG;AACP,MAAM;AACF,SAAO,cAAc,KAAK,EAAE,MAAM,aAAa,IAAI,GAAG,GAAG,MAAM,GAAG,QAAQ;AAC9E;AAEO,SAAS,YAAY,eAA8C;AACtE,SAAO,iBAAiB;AAC5B;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode, ComponentProps } from 'react';
3
3
  import { LucideIcon } from 'lucide-react';
4
- import { a as LoginFormLabels, e as TourLabels } from './types-1LUmNJf_.js';
4
+ import { a as LoginFormLabels, e as TourLabels } from './types-DEJsTx8E.js';
5
5
  import { S as SlotNameProps, U as UrlLike, L as LinkComponent, I as IconComponent } from './types-CMZRvMV5.js';
6
6
  import * as class_variance_authority_types from 'class-variance-authority/types';
7
7
  import { VariantProps } from 'class-variance-authority';
@@ -249,12 +249,13 @@ interface DataTableRowAction<TData> {
249
249
  label: string;
250
250
  icon?: IconComponent;
251
251
  variant?: 'default' | 'destructive';
252
+ hidden?: (row: TData) => boolean;
252
253
  onClick: (row: TData) => void;
253
254
  }
254
255
  declare function RowActionsMenu<TData>({ row, actions, slotName, }: {
255
256
  row: TData;
256
257
  actions: DataTableRowAction<TData>[];
257
- } & SlotNameProps): React.JSX.Element;
258
+ } & SlotNameProps): React.JSX.Element | null;
258
259
 
259
260
  interface DataTableLabels {
260
261
  searchPlaceholder: string;