@bizapps/ui 1.3.6 → 1.4.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/main.cjs CHANGED
@@ -10,8 +10,10 @@ var react = require('react');
10
10
  var radixUi = require('radix-ui');
11
11
  var dateFns = require('date-fns');
12
12
  var useEmblaCarousel = require('embla-carousel-react');
13
- var react$1 = require('motion/react');
13
+ var libphonenumberJs = require('libphonenumber-js');
14
14
  var cmdk = require('cmdk');
15
+ var _3x2 = require('country-flag-icons/react/3x2');
16
+ var react$1 = require('motion/react');
15
17
  var reactDropzone = require('react-dropzone');
16
18
  var Color = require('color');
17
19
  var reactDayPicker = require('react-day-picker');
@@ -1052,6 +1054,410 @@ function Link({
1052
1054
  }
1053
1055
  );
1054
1056
  }
1057
+ function Popover({ ...props }) {
1058
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Root, { "data-slot": "popover", ...props });
1059
+ }
1060
+ function PopoverTrigger({ ...props }) {
1061
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
1062
+ }
1063
+ function PopoverContent({
1064
+ className,
1065
+ align = "center",
1066
+ sideOffset = 4,
1067
+ container,
1068
+ ...props
1069
+ }) {
1070
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Portal, { container, children: /* @__PURE__ */ jsxRuntime.jsx(
1071
+ radixUi.Popover.Content,
1072
+ {
1073
+ "data-slot": "popover-content",
1074
+ align,
1075
+ sideOffset,
1076
+ className: cn(
1077
+ "bg-popover text-popover-foreground ring-foreground/5 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=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-1 rounded-3xl p-4 text-sm shadow-lg ring-1 outline-hidden duration-100",
1078
+ className
1079
+ ),
1080
+ ...props
1081
+ }
1082
+ ) });
1083
+ }
1084
+ function PopoverAnchor({ ...props }) {
1085
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Anchor, { "data-slot": "popover-anchor", ...props });
1086
+ }
1087
+ function PopoverHeader({ className, ...props }) {
1088
+ return /* @__PURE__ */ jsxRuntime.jsx(
1089
+ "div",
1090
+ {
1091
+ "data-slot": "popover-header",
1092
+ className: cn("flex flex-col gap-1 text-sm", className),
1093
+ ...props
1094
+ }
1095
+ );
1096
+ }
1097
+ function PopoverTitle({ className, ...props }) {
1098
+ return /* @__PURE__ */ jsxRuntime.jsx(
1099
+ "div",
1100
+ {
1101
+ "data-slot": "popover-title",
1102
+ className: cn("text-base font-medium", className),
1103
+ ...props
1104
+ }
1105
+ );
1106
+ }
1107
+ function PopoverDescription({ className, ...props }) {
1108
+ return /* @__PURE__ */ jsxRuntime.jsx(
1109
+ "p",
1110
+ {
1111
+ "data-slot": "popover-description",
1112
+ className: cn("text-muted-foreground", className),
1113
+ ...props
1114
+ }
1115
+ );
1116
+ }
1117
+ function stripLeadingDialCode(raw, dialCode) {
1118
+ if (!raw.startsWith("+")) {
1119
+ return raw.replace(/\D/g, "");
1120
+ }
1121
+ const parsed = libphonenumberJs.parsePhoneNumberFromString(raw);
1122
+ if (parsed) {
1123
+ return parsed.nationalNumber;
1124
+ }
1125
+ const digits = raw.replace(/\D/g, "");
1126
+ const code = dialCode.replace(/\D/g, "");
1127
+ return code && digits.startsWith(code) ? digits.length > code.length ? digits.slice(code.length) : "" : digits;
1128
+ }
1129
+ var flagByCode = {
1130
+ AR: _3x2.AR,
1131
+ BO: _3x2.BO,
1132
+ BR: _3x2.BR,
1133
+ CA: _3x2.CA,
1134
+ CL: _3x2.CL,
1135
+ CO: _3x2.CO,
1136
+ CR: _3x2.CR,
1137
+ CU: _3x2.CU,
1138
+ DE: _3x2.DE,
1139
+ DO: _3x2.DO,
1140
+ EC: _3x2.EC,
1141
+ ES: _3x2.ES,
1142
+ FR: _3x2.FR,
1143
+ GB: _3x2.GB,
1144
+ GT: _3x2.GT,
1145
+ HN: _3x2.HN,
1146
+ IN: _3x2.IN,
1147
+ IT: _3x2.IT,
1148
+ MX: _3x2.MX,
1149
+ NI: _3x2.NI,
1150
+ PA: _3x2.PA,
1151
+ PE: _3x2.PE,
1152
+ PT: _3x2.PT,
1153
+ PY: _3x2.PY,
1154
+ SV: _3x2.SV,
1155
+ US: _3x2.US,
1156
+ UY: _3x2.UY,
1157
+ VE: _3x2.VE
1158
+ };
1159
+ function CountryFlag({
1160
+ code,
1161
+ flagUrl,
1162
+ className
1163
+ }) {
1164
+ if (flagUrl) {
1165
+ return /* @__PURE__ */ jsxRuntime.jsx(
1166
+ "img",
1167
+ {
1168
+ src: flagUrl,
1169
+ alt: "",
1170
+ "aria-hidden": "true",
1171
+ className: cn("size-4 shrink-0 rounded-[2px] object-cover", className)
1172
+ }
1173
+ );
1174
+ }
1175
+ const FlagComponent = flagByCode[(code || "").toUpperCase()];
1176
+ if (FlagComponent) {
1177
+ return /* @__PURE__ */ jsxRuntime.jsx(
1178
+ FlagComponent,
1179
+ {
1180
+ "aria-hidden": "true",
1181
+ className: cn("size-4 shrink-0 rounded-[2px]", className)
1182
+ }
1183
+ );
1184
+ }
1185
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: cn("bg-muted size-4 shrink-0 rounded-full", className) });
1186
+ }
1187
+ function PhoneField({
1188
+ countries,
1189
+ value,
1190
+ onValueChange,
1191
+ defaultCountry,
1192
+ placeholder = "Phone number",
1193
+ disabled = false,
1194
+ className,
1195
+ container,
1196
+ name,
1197
+ ...inputProps
1198
+ }) {
1199
+ const [open, setOpen] = react.useState(false);
1200
+ const [pickedCode, setPickedCode] = react.useState(
1201
+ (defaultCountry ?? countries[0]?.code)?.toUpperCase()
1202
+ );
1203
+ const [internalValue, setInternalValue] = react.useState("");
1204
+ const listRef = react.useRef(null);
1205
+ const inputRef = react.useRef(null);
1206
+ const caretRef = react.useRef(null);
1207
+ const listId = `${react.useId()}-countries-list`;
1208
+ const isControlled = value !== void 0;
1209
+ const currentValue = isControlled ? value : internalValue;
1210
+ const parsed = currentValue ? libphonenumberJs.parsePhoneNumberFromString(currentValue) : void 0;
1211
+ const parsedCountry = parsed?.country;
1212
+ const parsedCallingCode = parsed?.countryCallingCode;
1213
+ const countryInList = parsedCountry !== void 0 && countries.some((country) => country.code.toUpperCase() === parsedCountry);
1214
+ const callingCodeInList = parsedCallingCode !== void 0 && countries.some(
1215
+ (country) => country.dialCode.replace(/\D/g, "") === parsedCallingCode
1216
+ );
1217
+ const representedCode = countryInList ? parsedCountry : callingCodeInList ? countries.find(
1218
+ (country) => country.dialCode.replace(/\D/g, "") === parsedCallingCode
1219
+ )?.code : void 0;
1220
+ const selectedCode = representedCode ?? pickedCode ?? defaultCountry ?? countries[0]?.code;
1221
+ const selectedCountry = countries.find(
1222
+ (country) => country.code.toUpperCase() === selectedCode?.toUpperCase()
1223
+ ) ?? countries[0];
1224
+ const dialCode = selectedCountry ? selectedCountry.dialCode.replace(/\D/g, "") : "";
1225
+ const emitDialCode = parsedCallingCode ?? dialCode;
1226
+ const nationalDigits = parsed ? parsed.nationalNumber : currentValue ? stripLeadingDialCode(currentValue, dialCode) : "";
1227
+ const canFormat = selectedCountry !== void 0 && (!parsed || countryInList || callingCodeInList);
1228
+ const inputValue = selectedCountry && canFormat && nationalDigits ? new libphonenumberJs.AsYouType((selectedCountry.code || "").toUpperCase()).input(
1229
+ nationalDigits
1230
+ ) : nationalDigits;
1231
+ const isInvalid = inputProps["aria-invalid"] === true || inputProps["aria-invalid"] === "true";
1232
+ react.useLayoutEffect(() => {
1233
+ const input = inputRef.current;
1234
+ const caret = caretRef.current;
1235
+ if (!input || !caret || document.activeElement !== input) {
1236
+ return;
1237
+ }
1238
+ const digitsBefore = caret.raw.slice(0, caret.start).replace(/\D/g, "").length;
1239
+ let position = 0;
1240
+ if (digitsBefore > 0) {
1241
+ let digitsSeen = 0;
1242
+ for (let i = 0; i < inputValue.length; i++) {
1243
+ if (/\d/.test(inputValue[i])) {
1244
+ digitsSeen += 1;
1245
+ }
1246
+ position = i + 1;
1247
+ if (digitsSeen >= digitsBefore) {
1248
+ break;
1249
+ }
1250
+ }
1251
+ }
1252
+ input.setSelectionRange(position, position + (caret.end - caret.start));
1253
+ caretRef.current = null;
1254
+ }, [inputValue]);
1255
+ const handleSearchChange = () => {
1256
+ requestAnimationFrame(() => listRef.current?.scrollTo({ top: 0 }));
1257
+ };
1258
+ function handleCountrySelect(code) {
1259
+ setPickedCode(code);
1260
+ setOpen(false);
1261
+ const nextCountry = countries.find(
1262
+ (country) => country.code.toUpperCase() === code.toUpperCase()
1263
+ );
1264
+ if (nextCountry && nationalDigits) {
1265
+ const next = `+${nextCountry.dialCode.replace(/\D/g, "")}${nationalDigits}`;
1266
+ onValueChange?.(next);
1267
+ if (!isControlled) {
1268
+ setInternalValue(next);
1269
+ }
1270
+ }
1271
+ }
1272
+ function deriveFromE164(e164) {
1273
+ const parsed2 = libphonenumberJs.parsePhoneNumberFromString(e164);
1274
+ if (!parsed2?.nationalNumber) {
1275
+ return void 0;
1276
+ }
1277
+ const countryMatch = parsed2.country ? countries.find((country) => country.code.toUpperCase() === parsed2.country) : void 0;
1278
+ const nextPickedCode = countryMatch ? countryMatch.code : parsed2.countryCallingCode ? countries.find(
1279
+ (country) => country.dialCode.replace(/\D/g, "") === parsed2.countryCallingCode
1280
+ )?.code : void 0;
1281
+ return {
1282
+ nationalNumber: parsed2.nationalNumber,
1283
+ emitCode: parsed2.countryCallingCode,
1284
+ nextPickedCode
1285
+ };
1286
+ }
1287
+ function handleInputChange(raw, nativeEvent) {
1288
+ const input = inputRef.current;
1289
+ if (input) {
1290
+ caretRef.current = {
1291
+ raw,
1292
+ start: input.selectionStart ?? raw.length,
1293
+ end: input.selectionEnd ?? raw.length
1294
+ };
1295
+ }
1296
+ if (!selectedCountry) return;
1297
+ let national = stripLeadingDialCode(raw, dialCode);
1298
+ let emitCode = emitDialCode;
1299
+ let nextPickedCode;
1300
+ const plusIndex = raw.indexOf("+");
1301
+ if (plusIndex === 0) {
1302
+ const derived = deriveFromE164(raw);
1303
+ if (derived) {
1304
+ emitCode = derived.emitCode || emitDialCode;
1305
+ nextPickedCode = derived.nextPickedCode;
1306
+ } else if (nativeEvent?.inputType === "insertFromPaste") {
1307
+ national = "";
1308
+ }
1309
+ } else if (plusIndex > 0) {
1310
+ const pasted = nativeEvent?.inputType === "insertFromPaste" && nativeEvent.data?.startsWith("+") ? nativeEvent.data : void 0;
1311
+ if (pasted) {
1312
+ const derived = deriveFromE164(pasted);
1313
+ const prefixDigits = raw.slice(0, plusIndex).replace(/\D/g, "");
1314
+ const suffixDigits = raw.slice(plusIndex + pasted.length).replace(/\D/g, "");
1315
+ if (derived) {
1316
+ national = prefixDigits + derived.nationalNumber + suffixDigits;
1317
+ emitCode = derived.emitCode || emitDialCode;
1318
+ nextPickedCode = derived.nextPickedCode;
1319
+ } else {
1320
+ national = prefixDigits + suffixDigits;
1321
+ }
1322
+ }
1323
+ }
1324
+ if (nextPickedCode) {
1325
+ setPickedCode(nextPickedCode);
1326
+ }
1327
+ if (!national) {
1328
+ onValueChange?.("");
1329
+ if (!isControlled) {
1330
+ setInternalValue("");
1331
+ }
1332
+ return;
1333
+ }
1334
+ const next = `+${emitCode}${national}`;
1335
+ onValueChange?.(next);
1336
+ if (!isControlled) {
1337
+ setInternalValue(next);
1338
+ }
1339
+ }
1340
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1341
+ "div",
1342
+ {
1343
+ "data-slot": "phone-field",
1344
+ "data-invalid": isInvalid || void 0,
1345
+ className: cn(
1346
+ "border-input flex h-9 w-full min-w-0 items-center overflow-hidden rounded-md border bg-transparent shadow-xs transition-[color,box-shadow]",
1347
+ "focus-within:border-ring focus-within:ring-ring/30 focus-within:ring-3",
1348
+ "data-[invalid=true]:border-destructive data-[invalid=true]:ring-destructive/20 data-[invalid=true]:ring-3",
1349
+ "dark:data-[invalid=true]:border-destructive/50 dark:data-[invalid=true]:ring-destructive/40",
1350
+ className
1351
+ ),
1352
+ children: [
1353
+ /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: setOpen, children: [
1354
+ /* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1355
+ "button",
1356
+ {
1357
+ type: "button",
1358
+ "data-slot": "phone-field-country-select",
1359
+ disabled,
1360
+ "aria-expanded": open,
1361
+ "aria-haspopup": "listbox",
1362
+ "aria-controls": open ? listId : void 0,
1363
+ "aria-label": selectedCountry ? `${selectedCountry.name} ${selectedCountry.dialCode}` : void 0,
1364
+ className: cn(
1365
+ "flex h-full shrink-0 cursor-pointer items-center gap-1.5 border-r border-input px-2.5 text-sm font-medium outline-none select-none",
1366
+ "hover:bg-muted",
1367
+ "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50"
1368
+ ),
1369
+ children: selectedCountry && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1370
+ /* @__PURE__ */ jsxRuntime.jsx(
1371
+ CountryFlag,
1372
+ {
1373
+ code: selectedCountry.code,
1374
+ flagUrl: selectedCountry.flagUrl
1375
+ }
1376
+ ),
1377
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: selectedCountry.dialCode }),
1378
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsUpDownIcon, { size: 14, className: "text-muted-foreground shrink-0" })
1379
+ ] })
1380
+ }
1381
+ ) }),
1382
+ /* @__PURE__ */ jsxRuntime.jsx(
1383
+ PopoverContent,
1384
+ {
1385
+ className: "w-72 rounded-xl p-0",
1386
+ align: "start",
1387
+ container,
1388
+ children: /* @__PURE__ */ jsxRuntime.jsxs(cmdk.Command, { className: "rounded-xl", label: "Search countries", children: [
1389
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border flex items-center gap-2 border-b px-3", children: [
1390
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, { size: 14, className: "text-muted-foreground shrink-0" }),
1391
+ /* @__PURE__ */ jsxRuntime.jsx(
1392
+ cmdk.Command.Input,
1393
+ {
1394
+ placeholder: "Search country...",
1395
+ onValueChange: handleSearchChange,
1396
+ className: "placeholder:text-muted-foreground flex h-9 w-full bg-transparent py-2 text-sm outline-none"
1397
+ }
1398
+ )
1399
+ ] }),
1400
+ /* @__PURE__ */ jsxRuntime.jsx("div", { id: listId, children: /* @__PURE__ */ jsxRuntime.jsxs(cmdk.Command.List, { ref: listRef, className: "max-h-56 overflow-y-auto p-1", children: [
1401
+ /* @__PURE__ */ jsxRuntime.jsx(cmdk.Command.Empty, { className: "text-muted-foreground py-4 text-center text-sm", children: "No country found." }),
1402
+ countries.map((country) => /* @__PURE__ */ jsxRuntime.jsxs(
1403
+ cmdk.Command.Item,
1404
+ {
1405
+ value: country.code,
1406
+ keywords: [country.name, country.dialCode],
1407
+ "data-slot": "phone-field-country-item",
1408
+ onSelect: () => handleCountrySelect(country.code),
1409
+ className: cn(
1410
+ "flex cursor-pointer items-center justify-between gap-2 rounded-md px-2 py-1.5 text-sm outline-none select-none",
1411
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground",
1412
+ "hover:bg-accent hover:text-accent-foreground"
1413
+ ),
1414
+ children: [
1415
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [
1416
+ /* @__PURE__ */ jsxRuntime.jsx(CountryFlag, { code: country.code, flagUrl: country.flagUrl }),
1417
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: country.name })
1418
+ ] }),
1419
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
1420
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground tabular-nums", children: country.dialCode }),
1421
+ selectedCode?.toUpperCase() === country.code.toUpperCase() && /* @__PURE__ */ jsxRuntime.jsx(
1422
+ lucideReact.CheckIcon,
1423
+ {
1424
+ size: 14,
1425
+ className: "text-[var(--color-main-blue-primary)] shrink-0"
1426
+ }
1427
+ )
1428
+ ] })
1429
+ ]
1430
+ },
1431
+ country.code
1432
+ ))
1433
+ ] }) })
1434
+ ] })
1435
+ }
1436
+ )
1437
+ ] }),
1438
+ /* @__PURE__ */ jsxRuntime.jsx(
1439
+ Input,
1440
+ {
1441
+ ref: inputRef,
1442
+ ...inputProps,
1443
+ "data-slot": "phone-field-input",
1444
+ type: "tel",
1445
+ value: inputValue,
1446
+ onChange: (event) => handleInputChange(event.target.value, event.nativeEvent),
1447
+ placeholder,
1448
+ disabled,
1449
+ autoComplete: inputProps.autoComplete ?? "tel",
1450
+ className: cn(
1451
+ "h-full flex-1 rounded-none border-0 bg-transparent shadow-none",
1452
+ "px-3 focus-visible:border-transparent focus-visible:ring-0"
1453
+ )
1454
+ }
1455
+ ),
1456
+ name !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("input", { type: "hidden", name, value: currentValue, "data-slot": "phone-field-hidden-input" })
1457
+ ]
1458
+ }
1459
+ );
1460
+ }
1055
1461
  function PinInput({
1056
1462
  length = 6,
1057
1463
  value = "",
@@ -2116,66 +2522,6 @@ function TooltipContent({
2116
2522
  }
2117
2523
  ) });
2118
2524
  }
2119
- function Popover({ ...props }) {
2120
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Root, { "data-slot": "popover", ...props });
2121
- }
2122
- function PopoverTrigger({ ...props }) {
2123
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
2124
- }
2125
- function PopoverContent({
2126
- className,
2127
- align = "center",
2128
- sideOffset = 4,
2129
- container,
2130
- ...props
2131
- }) {
2132
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Portal, { container, children: /* @__PURE__ */ jsxRuntime.jsx(
2133
- radixUi.Popover.Content,
2134
- {
2135
- "data-slot": "popover-content",
2136
- align,
2137
- sideOffset,
2138
- className: cn(
2139
- "bg-popover text-popover-foreground ring-foreground/5 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=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-1 rounded-3xl p-4 text-sm shadow-lg ring-1 outline-hidden duration-100",
2140
- className
2141
- ),
2142
- ...props
2143
- }
2144
- ) });
2145
- }
2146
- function PopoverAnchor({ ...props }) {
2147
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Anchor, { "data-slot": "popover-anchor", ...props });
2148
- }
2149
- function PopoverHeader({ className, ...props }) {
2150
- return /* @__PURE__ */ jsxRuntime.jsx(
2151
- "div",
2152
- {
2153
- "data-slot": "popover-header",
2154
- className: cn("flex flex-col gap-1 text-sm", className),
2155
- ...props
2156
- }
2157
- );
2158
- }
2159
- function PopoverTitle({ className, ...props }) {
2160
- return /* @__PURE__ */ jsxRuntime.jsx(
2161
- "div",
2162
- {
2163
- "data-slot": "popover-title",
2164
- className: cn("text-base font-medium", className),
2165
- ...props
2166
- }
2167
- );
2168
- }
2169
- function PopoverDescription({ className, ...props }) {
2170
- return /* @__PURE__ */ jsxRuntime.jsx(
2171
- "p",
2172
- {
2173
- "data-slot": "popover-description",
2174
- className: cn("text-muted-foreground", className),
2175
- ...props
2176
- }
2177
- );
2178
- }
2179
2525
  var TEXT_SIZES = [12, 14, 16, 18, 20, 24, 28, 32, 40, 48];
2180
2526
  var TEXT_WEIGHTS = [100, 200, 300, 400, 500, 700, 800, 900];
2181
2527
  function Text({
@@ -2230,7 +2576,7 @@ function DialogTrigger({ ...props }) {
2230
2576
  }
2231
2577
  function DialogPortal({ children, ...props }) {
2232
2578
  const isOpen = react.useContext(DialogContext);
2233
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Portal, { "data-slot": "dialog-portal", forceMount: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.AnimatePresence, { mode: "wait", children: isOpen && children }) });
2579
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Portal, { "data-slot": "dialog-portal", forceMount: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.AnimatePresence, { mode: "sync", children: isOpen && children }) });
2234
2580
  }
2235
2581
  function DialogClose({ ...props }) {
2236
2582
  return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Dialog.Close, { "data-slot": "dialog-close", ...props });
@@ -2257,7 +2603,7 @@ function DialogContent({
2257
2603
  ...props
2258
2604
  }) {
2259
2605
  return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
2260
- /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
2606
+ /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}, "dialog-overlay"),
2261
2607
  /* @__PURE__ */ jsxRuntime.jsx(
2262
2608
  radixUi.Dialog.Content,
2263
2609
  {
@@ -2294,7 +2640,8 @@ function DialogContent({
2294
2640
  ]
2295
2641
  }
2296
2642
  )
2297
- }
2643
+ },
2644
+ "dialog-content"
2298
2645
  )
2299
2646
  ] });
2300
2647
  }
@@ -2397,7 +2744,7 @@ function AlertDialogPortal({
2397
2744
  ...props
2398
2745
  }) {
2399
2746
  const isOpen = react.useContext(AlertDialogContext);
2400
- return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Portal, { "data-slot": "alert-dialog-portal", forceMount: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.AnimatePresence, { mode: "wait", children: isOpen && children }) });
2747
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AlertDialog.Portal, { "data-slot": "alert-dialog-portal", forceMount: true, ...props, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.AnimatePresence, { mode: "sync", children: isOpen && children }) });
2401
2748
  }
2402
2749
  function AlertDialogOverlay({
2403
2750
  className,
@@ -2439,7 +2786,8 @@ function AlertDialogContent({
2439
2786
  AlertDialogOverlay,
2440
2787
  {
2441
2788
  className: cn(variant === "dark-glass" && "bg-primary/60 backdrop-blur-md")
2442
- }
2789
+ },
2790
+ "alert-dialog-overlay"
2443
2791
  ),
2444
2792
  /* @__PURE__ */ jsxRuntime.jsx(
2445
2793
  radixUi.AlertDialog.Content,
@@ -2473,7 +2821,8 @@ function AlertDialogContent({
2473
2821
  ]
2474
2822
  }
2475
2823
  )
2476
- }
2824
+ },
2825
+ "alert-dialog-content"
2477
2826
  )
2478
2827
  ] });
2479
2828
  }
@@ -8606,7 +8955,7 @@ function DrawerContent({
8606
8955
  const dragRef = react.useRef(null);
8607
8956
  const { modal } = react.useContext(DrawerContext);
8608
8957
  return /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { children: [
8609
- modal && /* @__PURE__ */ jsxRuntime.jsx(DrawerOverlay, {}),
8958
+ modal && /* @__PURE__ */ jsxRuntime.jsx(DrawerOverlay, {}, "drawer-overlay"),
8610
8959
  /* @__PURE__ */ jsxRuntime.jsx(
8611
8960
  radixUi.Dialog.Content,
8612
8961
  {
@@ -8703,7 +9052,8 @@ function DrawerContent({
8703
9052
  ]
8704
9053
  }
8705
9054
  )
8706
- }
9055
+ },
9056
+ "drawer-content"
8707
9057
  )
8708
9058
  ] });
8709
9059
  }
@@ -8945,6 +9295,7 @@ exports.PaginationItem = PaginationItem;
8945
9295
  exports.PaginationLink = PaginationLink;
8946
9296
  exports.PaginationNext = PaginationNext;
8947
9297
  exports.PaginationPrevious = PaginationPrevious;
9298
+ exports.PhoneField = PhoneField;
8948
9299
  exports.PinInput = PinInput;
8949
9300
  exports.Popover = Popover;
8950
9301
  exports.PopoverAnchor = PopoverAnchor;