@fayz-ai/ui 0.11.0 → 0.12.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.
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsCard.d.ts","sourceRoot":"","sources":["../../src/analytics/AnalyticsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,gBAAgB,EAAkC,MAAM,eAAe,CAAA;AAyBrF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA0ID,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBA4I9E"}
1
+ {"version":3,"file":"AnalyticsCard.d.ts","sourceRoot":"","sources":["../../src/analytics/AnalyticsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,gBAAgB,EAAkC,MAAM,eAAe,CAAA;AAyBrF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA4ID,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBA4I9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/analytics/derive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/analytics/derive.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { useSaveBarVisible, useCrossModuleBack, useBackHandler, HeaderTabs } from './chunk-VAKWUUVC.js';
2
2
  import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, Card, DataTable, SegmentedControl } from './chunk-JGJNRNQW.js';
3
3
  import { cn, Button } from './chunk-OKZ6WQB3.js';
4
- import * as React13 from 'react';
4
+ import * as React14 from 'react';
5
5
  import { useState, useRef, useEffect, useMemo, useCallback } from 'react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import { cva } from 'class-variance-authority';
8
8
  import * as DialogPrimitive from '@radix-ui/react-dialog';
9
- import { X, ChevronDown, ChevronUp, Check, ArrowLeft, Search, ChevronLeft, ChevronRight, MoreHorizontal, ImageIcon, Clock, Plus, RefreshCw, Download, Calendar, Loader2, CheckCircle2, AlertTriangle, XCircle, Info } from 'lucide-react';
9
+ import { X, ChevronDown, ChevronUp, Check, ArrowLeft, Search, ChevronLeft, ChevronRight, MoreHorizontal, ImageIcon, RefreshCw, Clock, Plus, Download, Calendar, Loader2, CheckCircle2, AlertTriangle, XCircle, Info } from 'lucide-react';
10
10
  import * as SelectPrimitive from '@radix-ui/react-select';
11
11
  import { Toaster } from 'sonner';
12
12
  export { toast } from 'sonner';
@@ -17,9 +17,9 @@ import { useTranslation, getCountry, unmaskPhone, maskPhone, getCurrentLocale }
17
17
  import { createPortal } from 'react-dom';
18
18
  import * as PopoverPrimitive from '@radix-ui/react-popover';
19
19
 
20
- var Input = React13.forwardRef(
20
+ var Input = React14.forwardRef(
21
21
  ({ className, type, error, description, id, ...props }, ref) => {
22
- const inputId = id ?? React13.useId();
22
+ const inputId = id ?? React14.useId();
23
23
  const descriptionId = description ? `${inputId}-description` : void 0;
24
24
  const errorId = error ? `${inputId}-error` : void 0;
25
25
  return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
@@ -107,7 +107,7 @@ var Modal = DialogPrimitive.Root;
107
107
  var ModalTrigger = DialogPrimitive.Trigger;
108
108
  var ModalClose = DialogPrimitive.Close;
109
109
  var ModalPortal = DialogPrimitive.Portal;
110
- var ModalOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
110
+ var ModalOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
111
111
  DialogPrimitive.Overlay,
112
112
  {
113
113
  ref,
@@ -120,7 +120,7 @@ var ModalOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PU
120
120
  }
121
121
  ));
122
122
  ModalOverlay.displayName = "ModalOverlay";
123
- var ModalContent = React13.forwardRef(({ className, children, size = "lg", hideClose, noPadding, onPointerDownOutside, onInteractOutside, onCloseAutoFocus, ...props }, ref) => /* @__PURE__ */ jsx(ModalPortal, { children: /* @__PURE__ */ jsx(ModalOverlay, { children: /* @__PURE__ */ jsxs(
123
+ var ModalContent = React14.forwardRef(({ className, children, size = "lg", hideClose, noPadding, onPointerDownOutside, onInteractOutside, onCloseAutoFocus, ...props }, ref) => /* @__PURE__ */ jsx(ModalPortal, { children: /* @__PURE__ */ jsx(ModalOverlay, { children: /* @__PURE__ */ jsxs(
124
124
  DialogPrimitive.Content,
125
125
  {
126
126
  ref,
@@ -175,14 +175,14 @@ function ModalBody({ className, ...props }) {
175
175
  function ModalFooter({ className, ...props }) {
176
176
  return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 shrink-0", className), ...props });
177
177
  }
178
- var ModalTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props }));
178
+ var ModalTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props }));
179
179
  ModalTitle.displayName = "ModalTitle";
180
- var ModalDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
180
+ var ModalDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
181
181
  ModalDescription.displayName = "ModalDescription";
182
182
  var Select = SelectPrimitive.Root;
183
183
  var SelectGroup = SelectPrimitive.Group;
184
184
  var SelectValue = SelectPrimitive.Value;
185
- var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
185
+ var SelectTrigger = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
186
186
  SelectPrimitive.Trigger,
187
187
  {
188
188
  ref,
@@ -198,7 +198,7 @@ var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref)
198
198
  }
199
199
  ));
200
200
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
201
- var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
201
+ var SelectScrollUpButton = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
202
202
  SelectPrimitive.ScrollUpButton,
203
203
  {
204
204
  ref,
@@ -211,7 +211,7 @@ var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) =>
211
211
  }
212
212
  ));
213
213
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
214
- var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
214
+ var SelectScrollDownButton = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
215
215
  SelectPrimitive.ScrollDownButton,
216
216
  {
217
217
  ref,
@@ -224,7 +224,7 @@ var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) =
224
224
  }
225
225
  ));
226
226
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
227
- var SelectContent = React13.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
227
+ var SelectContent = React14.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
228
228
  SelectPrimitive.Content,
229
229
  {
230
230
  ref,
@@ -252,7 +252,7 @@ var SelectContent = React13.forwardRef(({ className, children, position = "poppe
252
252
  }
253
253
  ) }));
254
254
  SelectContent.displayName = SelectPrimitive.Content.displayName;
255
- var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
255
+ var SelectLabel = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
256
256
  SelectPrimitive.Label,
257
257
  {
258
258
  ref,
@@ -261,7 +261,7 @@ var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
261
261
  }
262
262
  ));
263
263
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
264
- var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
264
+ var SelectItem = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
265
265
  SelectPrimitive.Item,
266
266
  {
267
267
  ref,
@@ -277,7 +277,7 @@ var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) =>
277
277
  }
278
278
  ));
279
279
  SelectItem.displayName = SelectPrimitive.Item.displayName;
280
- var SelectSeparator = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
280
+ var SelectSeparator = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
281
281
  SelectPrimitive.Separator,
282
282
  {
283
283
  ref,
@@ -315,7 +315,7 @@ function ToastProvider({
315
315
  );
316
316
  }
317
317
  var Tabs = TabsPrimitive.Root;
318
- var TabsList = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
318
+ var TabsList = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
319
319
  TabsPrimitive.List,
320
320
  {
321
321
  ref,
@@ -327,7 +327,7 @@ var TabsList = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__
327
327
  }
328
328
  ));
329
329
  TabsList.displayName = TabsPrimitive.List.displayName;
330
- var TabsTrigger = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
330
+ var TabsTrigger = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
331
331
  TabsPrimitive.Trigger,
332
332
  {
333
333
  ref,
@@ -339,7 +339,7 @@ var TabsTrigger = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
339
339
  }
340
340
  ));
341
341
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
342
- var TabsContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
342
+ var TabsContent = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
343
343
  TabsPrimitive.Content,
344
344
  {
345
345
  ref,
@@ -351,7 +351,7 @@ var TabsContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PUR
351
351
  }
352
352
  ));
353
353
  TabsContent.displayName = TabsPrimitive.Content.displayName;
354
- var Separator2 = React13.forwardRef(
354
+ var Separator2 = React14.forwardRef(
355
355
  ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
356
356
  SeparatorPrimitive.Root,
357
357
  {
@@ -402,7 +402,7 @@ function formatPhone(digits, fallback, countryCode) {
402
402
  const tail = rest.length === 9 ? rest.slice(5) : rest.slice(4);
403
403
  return `+55 (${ddd}) ${head}-${tail}`;
404
404
  }
405
- var PhoneLink = React13.forwardRef(
405
+ var PhoneLink = React14.forwardRef(
406
406
  ({ phone, message, countryCode, raw, className, children, ...props }, ref) => {
407
407
  const { e164, display } = normalizePhone(phone, countryCode);
408
408
  const label = children ?? (raw ? phone ?? "" : display);
@@ -451,7 +451,7 @@ function Breadcrumb({ parent, current, onBack }) {
451
451
  var TooltipProvider = TooltipPrimitive.Provider;
452
452
  var Tooltip = TooltipPrimitive.Root;
453
453
  var TooltipTrigger = TooltipPrimitive.Trigger;
454
- var TooltipContent = React13.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
454
+ var TooltipContent = React14.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
455
455
  TooltipPrimitive.Content,
456
456
  {
457
457
  ref,
@@ -617,8 +617,8 @@ var ICON_CLASSES = {
617
617
  lg: "h-5 w-5"
618
618
  };
619
619
  function Thumbnail({ src, alt = "", size = "md", icon: Icon2 = ImageIcon, className }) {
620
- const [failed, setFailed] = React13.useState(false);
621
- React13.useEffect(() => {
620
+ const [failed, setFailed] = React14.useState(false);
621
+ React14.useEffect(() => {
622
622
  setFailed(false);
623
623
  }, [src]);
624
624
  const base = cn("shrink-0 overflow-hidden", SIZE_CLASSES[size], className);
@@ -644,6 +644,47 @@ function Thumbnail({ src, alt = "", size = "md", icon: Icon2 = ImageIcon, classN
644
644
  );
645
645
  }
646
646
  Thumbnail.displayName = "Thumbnail";
647
+ function RefreshButton({ onRefresh, fromCache, label, labelCached, className, ...rest }) {
648
+ const [phase, setPhase] = React14.useState("idle");
649
+ const alive = React14.useRef(true);
650
+ React14.useEffect(() => () => {
651
+ alive.current = false;
652
+ }, []);
653
+ const title = fromCache ? labelCached ?? label : label;
654
+ async function run() {
655
+ if (phase === "busy") return;
656
+ setPhase("busy");
657
+ try {
658
+ await onRefresh();
659
+ } catch {
660
+ }
661
+ if (!alive.current) return;
662
+ setPhase("done");
663
+ setTimeout(() => {
664
+ if (alive.current) setPhase((p) => p === "done" ? "idle" : p);
665
+ }, 1400);
666
+ }
667
+ return /* @__PURE__ */ jsx(
668
+ "button",
669
+ {
670
+ type: "button",
671
+ title,
672
+ "aria-label": title,
673
+ onClick: () => {
674
+ void run();
675
+ },
676
+ className: cn(
677
+ "inline-flex items-center justify-center transition",
678
+ fromCache && phase !== "done" && "text-amber-600 hover:text-amber-700 dark:text-amber-500 dark:hover:text-amber-400",
679
+ phase === "done" && "text-emerald-600 dark:text-emerald-500",
680
+ className
681
+ ),
682
+ ...rest,
683
+ children: phase === "done" ? /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx(RefreshCw, { className: cn("h-4 w-4", phase === "busy" && "animate-spin") })
684
+ }
685
+ );
686
+ }
687
+ RefreshButton.displayName = "RefreshButton";
647
688
  function PhoneField({
648
689
  value,
649
690
  onChange,
@@ -704,7 +745,7 @@ var THUMB = {
704
745
  sm: "h-3 w-3 data-[on=true]:translate-x-3",
705
746
  md: "h-4 w-4 data-[on=true]:translate-x-4"
706
747
  };
707
- var Switch = React13.forwardRef(function Switch2({ checked, onCheckedChange, size = "sm", label, className, disabled, ...rest }, ref) {
748
+ var Switch = React14.forwardRef(function Switch2({ checked, onCheckedChange, size = "sm", label, className, disabled, ...rest }, ref) {
708
749
  const control = /* @__PURE__ */ jsx(
709
750
  "button",
710
751
  {
@@ -755,8 +796,8 @@ var Switch = React13.forwardRef(function Switch2({ checked, onCheckedChange, siz
755
796
  }
756
797
  );
757
798
  });
758
- var Hint = React13.forwardRef(function Hint2({ label, children, side = "top", delayDuration = 0, ...rest }, ref) {
759
- if (!label) return React13.cloneElement(children, { ...rest, ref });
799
+ var Hint = React14.forwardRef(function Hint2({ label, children, side = "top", delayDuration = 0, ...rest }, ref) {
800
+ if (!label) return React14.cloneElement(children, { ...rest, ref });
760
801
  return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
761
802
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, ...rest, ref, children }),
762
803
  /* @__PURE__ */ jsx(TooltipContent, { side, className: "px-2 py-1 text-xs font-medium", children: label })
@@ -1231,16 +1272,16 @@ function SearchSelect({
1231
1272
  className,
1232
1273
  disabled
1233
1274
  }) {
1234
- const [open, setOpen] = React13.useState(false);
1235
- const [query, setQuery] = React13.useState("");
1236
- const [results, setResults] = React13.useState([]);
1237
- const [loading, setLoading] = React13.useState(false);
1238
- const [creating, setCreating] = React13.useState(false);
1239
- const [selectedLabel, setSelectedLabel] = React13.useState(displayValue ?? "");
1240
- const containerRef = React13.useRef(null);
1241
- const inputRef = React13.useRef(null);
1242
- const timerRef = React13.useRef();
1243
- React13.useEffect(() => {
1275
+ const [open, setOpen] = React14.useState(false);
1276
+ const [query, setQuery] = React14.useState("");
1277
+ const [results, setResults] = React14.useState([]);
1278
+ const [loading, setLoading] = React14.useState(false);
1279
+ const [creating, setCreating] = React14.useState(false);
1280
+ const [selectedLabel, setSelectedLabel] = React14.useState(displayValue ?? "");
1281
+ const containerRef = React14.useRef(null);
1282
+ const inputRef = React14.useRef(null);
1283
+ const timerRef = React14.useRef();
1284
+ React14.useEffect(() => {
1244
1285
  function handler(e) {
1245
1286
  if (containerRef.current && !containerRef.current.contains(e.target)) {
1246
1287
  setOpen(false);
@@ -1249,10 +1290,10 @@ function SearchSelect({
1249
1290
  document.addEventListener("mousedown", handler);
1250
1291
  return () => document.removeEventListener("mousedown", handler);
1251
1292
  }, []);
1252
- React13.useEffect(() => {
1293
+ React14.useEffect(() => {
1253
1294
  if (displayValue !== void 0) setSelectedLabel(displayValue);
1254
1295
  }, [displayValue]);
1255
- React13.useEffect(() => {
1296
+ React14.useEffect(() => {
1256
1297
  if (open && loadOnOpen && query.length === 0 && results.length === 0 && !loading) {
1257
1298
  setLoading(true);
1258
1299
  Promise.resolve(onSearch("")).then(setResults).catch(() => setResults([])).finally(() => setLoading(false));
@@ -1310,7 +1351,7 @@ function SearchSelect({
1310
1351
  setResults([]);
1311
1352
  setTimeout(() => inputRef.current?.focus(), 0);
1312
1353
  }
1313
- const groups = React13.useMemo(() => {
1354
+ const groups = React14.useMemo(() => {
1314
1355
  const map = /* @__PURE__ */ new Map();
1315
1356
  for (const opt of results) {
1316
1357
  const group = opt.group ?? "";
@@ -1388,7 +1429,7 @@ function SearchSelect({
1388
1429
  }
1389
1430
  )
1390
1431
  ] }) : /* @__PURE__ */ jsxs("div", { className: "max-h-64 overflow-auto py-1", children: [
1391
- [...groups.entries()].map(([group, options]) => /* @__PURE__ */ jsxs(React13.Fragment, { children: [
1432
+ [...groups.entries()].map(([group, options]) => /* @__PURE__ */ jsxs(React14.Fragment, { children: [
1392
1433
  group && /* @__PURE__ */ jsx("div", { className: "sticky top-0 bg-muted/50 px-3 py-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: group }),
1393
1434
  options.map((opt) => /* @__PURE__ */ jsx(
1394
1435
  "button",
@@ -1439,9 +1480,9 @@ function CurrencyInput({
1439
1480
  className,
1440
1481
  disabled
1441
1482
  }) {
1442
- const inputRef = React13.useRef(null);
1443
- const [focused, setFocused] = React13.useState(false);
1444
- const format = React13.useCallback((v) => {
1483
+ const inputRef = React14.useRef(null);
1484
+ const [focused, setFocused] = React14.useState(false);
1485
+ const format = React14.useCallback((v) => {
1445
1486
  return new Intl.NumberFormat(locale, {
1446
1487
  minimumFractionDigits: 2,
1447
1488
  maximumFractionDigits: 2
@@ -1550,7 +1591,7 @@ function ConfirmDialog({
1550
1591
  }) {
1551
1592
  const config = VARIANT_CONFIG[variant];
1552
1593
  const Icon2 = config.icon;
1553
- React13.useEffect(() => {
1594
+ React14.useEffect(() => {
1554
1595
  if (!open) return;
1555
1596
  function handleKey(e) {
1556
1597
  if (e.key === "Escape") onCancel();
@@ -1597,7 +1638,7 @@ function ConfirmDialog({
1597
1638
  }
1598
1639
  var Popover = PopoverPrimitive.Root;
1599
1640
  var PopoverTrigger = PopoverPrimitive.Trigger;
1600
- var PopoverContent = React13.forwardRef(({ className, align = "start", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1641
+ var PopoverContent = React14.forwardRef(({ className, align = "start", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1601
1642
  PopoverPrimitive.Content,
1602
1643
  {
1603
1644
  ref,
@@ -1658,7 +1699,7 @@ function renderInline(text, keyPrefix) {
1658
1699
  if (part.startsWith("`") && part.endsWith("`") && part.length > 2) {
1659
1700
  return /* @__PURE__ */ jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[0.85em]", children: part.slice(1, -1) }, key);
1660
1701
  }
1661
- return part === "" ? null : /* @__PURE__ */ jsx(React13.Fragment, { children: part }, key);
1702
+ return part === "" ? null : /* @__PURE__ */ jsx(React14.Fragment, { children: part }, key);
1662
1703
  });
1663
1704
  }
1664
1705
  function parseBlocks(source) {
@@ -1742,7 +1783,7 @@ function renderMarkdown(source) {
1742
1783
  case "ol":
1743
1784
  return /* @__PURE__ */ jsx("ol", { className: "list-decimal space-y-1 pl-5", children: block.items.map((item, li) => /* @__PURE__ */ jsx("li", { children: renderInline(item, `${key}-${li}`) }, `${key}-${li}`)) }, key);
1744
1785
  case "p":
1745
- return /* @__PURE__ */ jsx("p", { children: block.lines.map((l, li) => /* @__PURE__ */ jsxs(React13.Fragment, { children: [
1786
+ return /* @__PURE__ */ jsx("p", { children: block.lines.map((l, li) => /* @__PURE__ */ jsxs(React14.Fragment, { children: [
1746
1787
  li > 0 && /* @__PURE__ */ jsx("br", {}),
1747
1788
  renderInline(l, `${key}-${li}`)
1748
1789
  ] }, `${key}-${li}`)) }, key);
@@ -1763,7 +1804,7 @@ function MarkdownEditor({
1763
1804
  renderPreview,
1764
1805
  className
1765
1806
  }) {
1766
- const [mode, setMode] = React13.useState(
1807
+ const [mode, setMode] = React14.useState(
1767
1808
  defaultMode === "preview" && value.trim() === "" ? "edit" : defaultMode
1768
1809
  );
1769
1810
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2", className), children: [
@@ -2006,6 +2047,6 @@ function SearchCombobox({
2006
2047
  ] });
2007
2048
  }
2008
2049
 
2009
- export { Badge, Breadcrumb, BulkActionBar, ChevronPager, ConfirmDialog, CurrencyInput, DatePicker, FilterChip, Hint, Input, ListView, Markdown, MarkdownEditor, Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, PhoneField, PhoneLink, Popover, PopoverContent, PopoverTrigger, SearchCombobox, SearchField, SearchSelect, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, StatTiles, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Thumbnail, TimePicker, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, formatPhone2 as formatPhone, normalizePhone, renderMarkdown };
2010
- //# sourceMappingURL=chunk-XRDCYOND.js.map
2011
- //# sourceMappingURL=chunk-XRDCYOND.js.map
2050
+ export { Badge, Breadcrumb, BulkActionBar, ChevronPager, ConfirmDialog, CurrencyInput, DatePicker, FilterChip, Hint, Input, ListView, Markdown, MarkdownEditor, Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, PhoneField, PhoneLink, Popover, PopoverContent, PopoverTrigger, RefreshButton, SearchCombobox, SearchField, SearchSelect, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, StatTiles, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Thumbnail, TimePicker, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, formatPhone2 as formatPhone, normalizePhone, renderMarkdown };
2051
+ //# sourceMappingURL=chunk-7BHG3XGJ.js.map
2052
+ //# sourceMappingURL=chunk-7BHG3XGJ.js.map