@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.
- package/dist/blocks.d.ts +6 -6
- package/dist/blocks.js +6 -3
- package/dist/blocks.js.map +1 -1
- package/dist/{chunk-XLAOE5MV.js → chunk-7DAA3DPJ.js} +11 -6
- package/dist/chunk-7DAA3DPJ.js.map +1 -0
- package/dist/chunk-EXTOGROG.js +42 -0
- package/dist/chunk-EXTOGROG.js.map +1 -0
- package/dist/{chunk-BR3JI3KN.js → chunk-L56VUE3E.js} +3 -2
- package/dist/chunk-L56VUE3E.js.map +1 -0
- package/dist/{chunk-ZQXZ4UGE.js → chunk-PYXUFFMO.js} +10 -3
- package/dist/chunk-PYXUFFMO.js.map +1 -0
- package/dist/{chunk-DPLCEU34.js → chunk-RE4M2G2Y.js} +76 -85
- package/dist/chunk-RE4M2G2Y.js.map +1 -0
- package/dist/{chunk-L2H5GIF7.js → chunk-VVBBKTC5.js} +6 -1
- package/dist/chunk-VVBBKTC5.js.map +1 -0
- package/dist/{context-2wTOwxCk.d.ts → context-CWkgje9v.d.ts} +3 -2
- package/dist/index.d.ts +23 -10
- package/dist/index.js +149 -116
- package/dist/index.js.map +1 -1
- package/dist/inertia.d.ts +1 -1
- package/dist/inertia.js +5 -4
- package/dist/inertia.js.map +1 -1
- package/dist/locales/fr.d.ts +2 -2
- package/dist/locales/pt.d.ts +2 -2
- package/dist/shells.d.ts +1 -1
- package/dist/shells.js +4 -3
- package/dist/shells.js.map +1 -1
- package/dist/{sidebar-BLL2tgTt.d.ts → sidebar-_xQ3IehY.d.ts} +3 -1
- package/dist/{types-1LUmNJf_.d.ts → types-DEJsTx8E.d.ts} +2 -1
- package/package.json +2 -1
- package/dist/chunk-BR3JI3KN.js.map +0 -1
- package/dist/chunk-DPLCEU34.js.map +0 -1
- package/dist/chunk-L2H5GIF7.js.map +0 -1
- package/dist/chunk-XLAOE5MV.js.map +0 -1
- 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) =>
|
|
574
|
-
|
|
575
|
-
{
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
className
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
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
|
-
|
|
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
|
|
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] =
|
|
801
|
-
const [container, setContainer] =
|
|
802
|
-
const register =
|
|
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 =
|
|
799
|
+
const unregister = React3.useCallback((id) => {
|
|
808
800
|
setEntries((current) => current.filter((item) => item.id !== id));
|
|
809
801
|
}, []);
|
|
810
|
-
const closeAll =
|
|
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 =
|
|
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/
|
|
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
|
|
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
|
|
890
|
+
import * as React4 from "react";
|
|
899
891
|
function useFloatingSheetBodyEdges(containerRef, topSentinelRef, bottomSentinelRef, reportEdges) {
|
|
900
|
-
|
|
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 =
|
|
942
|
+
const id = React5.useId();
|
|
951
943
|
const titleId = `${id}-title`;
|
|
952
944
|
const descriptionId = `${id}-description`;
|
|
953
|
-
const close =
|
|
954
|
-
const closeRef =
|
|
955
|
-
const titleRef =
|
|
956
|
-
const openerRef =
|
|
957
|
-
const panelRef =
|
|
958
|
-
const focusedRef =
|
|
959
|
-
const [edges, setEdges] =
|
|
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
|
-
|
|
954
|
+
React5.useEffect(() => {
|
|
963
955
|
closeRef.current = close;
|
|
964
956
|
titleRef.current = title;
|
|
965
957
|
});
|
|
966
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
1112
|
-
const containerRef =
|
|
1113
|
-
const topSentinelRef =
|
|
1114
|
-
const bottomSentinelRef =
|
|
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 =
|
|
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
|
|
1168
|
+
import * as React6 from "react";
|
|
1177
1169
|
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1178
|
-
var InputOTP =
|
|
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 =
|
|
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 =
|
|
1194
|
-
const inputOTPContext =
|
|
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 =
|
|
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
|
|
1214
|
+
import * as React7 from "react";
|
|
1223
1215
|
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1224
|
-
var Switch =
|
|
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
|
|
1241
|
+
import * as React8 from "react";
|
|
1250
1242
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1251
|
-
var Tabs =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
1288
|
+
import * as React9 from "react";
|
|
1297
1289
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1298
|
-
var Textarea =
|
|
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-
|
|
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-
|
|
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-
|
|
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;
|