@wealthx/shadcn 1.5.16 → 1.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/.turbo/turbo-build.log +130 -130
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-UJMVXREM.mjs → chunk-2UA4CPE5.mjs} +1 -1
  4. package/dist/{chunk-DYSVJ473.mjs → chunk-2VTOF7PW.mjs} +1 -1
  5. package/dist/{chunk-6MDNL5I2.mjs → chunk-45V7X563.mjs} +3 -3
  6. package/dist/{chunk-RKHKBEE6.mjs → chunk-5BU7TNB4.mjs} +2 -2
  7. package/dist/{chunk-B7DD3ODQ.mjs → chunk-7T4TYUO3.mjs} +2 -2
  8. package/dist/{chunk-JGBV3XMQ.mjs → chunk-ANERULZS.mjs} +2 -2
  9. package/dist/{chunk-LRQSY3TP.mjs → chunk-C4ESZLGT.mjs} +142 -69
  10. package/dist/{chunk-5YVJSKFH.mjs → chunk-DKH35J4U.mjs} +2 -2
  11. package/dist/{chunk-MXP2RX2V.mjs → chunk-ET4MTPIY.mjs} +1 -1
  12. package/dist/{chunk-QHAMVWDG.mjs → chunk-G7YCLJ53.mjs} +2 -2
  13. package/dist/{chunk-XAS6KBIG.mjs → chunk-JJSA772M.mjs} +1 -1
  14. package/dist/{chunk-MNMSHB2J.mjs → chunk-K3XP5ETH.mjs} +2 -2
  15. package/dist/{chunk-I4P7RXAE.mjs → chunk-KJQ3BVTB.mjs} +1 -1
  16. package/dist/{chunk-MUV4EGDW.mjs → chunk-KPGARKFC.mjs} +1 -1
  17. package/dist/{chunk-R6U246E4.mjs → chunk-L7IZ3YHI.mjs} +1 -1
  18. package/dist/{chunk-P7CEBZM6.mjs → chunk-LSRGA5BI.mjs} +19 -5
  19. package/dist/{chunk-GMF7INNS.mjs → chunk-LWYMZHN7.mjs} +2 -2
  20. package/dist/{chunk-XMP24PWA.mjs → chunk-NXZ2F4JA.mjs} +1 -1
  21. package/dist/{chunk-4X4MGYHE.mjs → chunk-PUGQVHQL.mjs} +1 -1
  22. package/dist/{chunk-LPVXO3TD.mjs → chunk-RFWP2325.mjs} +2 -2
  23. package/dist/{chunk-3KLJ4XRE.mjs → chunk-RPOIXMHW.mjs} +1 -1
  24. package/dist/{chunk-IFSQWDRN.mjs → chunk-SH5L5VG6.mjs} +1 -1
  25. package/dist/{chunk-FW4U543X.mjs → chunk-STDCXTUU.mjs} +2 -2
  26. package/dist/{chunk-2KNQZG5S.mjs → chunk-SU6TPDEU.mjs} +1 -1
  27. package/dist/{chunk-K4WDPVFY.mjs → chunk-WZFBLRNP.mjs} +1 -1
  28. package/dist/{chunk-UYRHYJPX.mjs → chunk-XNX3XJ2F.mjs} +1 -1
  29. package/dist/components/ui/about-you-form.js +17 -4
  30. package/dist/components/ui/about-you-form.mjs +3 -3
  31. package/dist/components/ui/add-column-modal.js +17 -4
  32. package/dist/components/ui/add-column-modal.mjs +2 -2
  33. package/dist/components/ui/ai-conversations.js +458 -345
  34. package/dist/components/ui/ai-conversations.mjs +2 -1
  35. package/dist/components/ui/appointment-action-dialogs.js +17 -4
  36. package/dist/components/ui/appointment-action-dialogs.mjs +2 -2
  37. package/dist/components/ui/appointment-availability-settings.js +17 -4
  38. package/dist/components/ui/appointment-availability-settings.mjs +4 -4
  39. package/dist/components/ui/appointment-book-dialog.js +17 -4
  40. package/dist/components/ui/appointment-book-dialog.mjs +3 -3
  41. package/dist/components/ui/appointment-detail-sheet.js +17 -4
  42. package/dist/components/ui/appointment-detail-sheet.mjs +3 -3
  43. package/dist/components/ui/appointment-upcoming-card.js +17 -4
  44. package/dist/components/ui/appointment-upcoming-card.mjs +2 -2
  45. package/dist/components/ui/backoffice-signup-steps.js +17 -4
  46. package/dist/components/ui/backoffice-signup-steps.mjs +4 -4
  47. package/dist/components/ui/bank-statement-generate-dialog.js +17 -4
  48. package/dist/components/ui/bank-statement-generate-dialog.mjs +5 -5
  49. package/dist/components/ui/chat-widget.js +17 -4
  50. package/dist/components/ui/chat-widget.mjs +3 -3
  51. package/dist/components/ui/contact-alert-dialog/index.js +17 -4
  52. package/dist/components/ui/contact-alert-dialog/index.mjs +3 -3
  53. package/dist/components/ui/create-contact-modal.js +17 -4
  54. package/dist/components/ui/create-contact-modal.mjs +3 -3
  55. package/dist/components/ui/date-picker.mjs +2 -2
  56. package/dist/components/ui/expense-detail-item.mjs +3 -3
  57. package/dist/components/ui/expense-work-details.mjs +3 -3
  58. package/dist/components/ui/field.js +17 -4
  59. package/dist/components/ui/field.mjs +2 -2
  60. package/dist/components/ui/form-primitives.js +17 -4
  61. package/dist/components/ui/form-primitives.mjs +2 -2
  62. package/dist/components/ui/frontend-signup-steps.js +17 -4
  63. package/dist/components/ui/frontend-signup-steps.mjs +6 -6
  64. package/dist/components/ui/income-work-details.mjs +3 -3
  65. package/dist/components/ui/label.js +20 -4
  66. package/dist/components/ui/label.mjs +1 -1
  67. package/dist/components/ui/opportunity-edit-modals.js +17 -4
  68. package/dist/components/ui/opportunity-edit-modals.mjs +5 -5
  69. package/dist/components/ui/opportunity-summary-tab.js +17 -4
  70. package/dist/components/ui/opportunity-summary-tab.mjs +6 -6
  71. package/dist/components/ui/pipeline-dialogs.mjs +3 -3
  72. package/dist/components/ui/property-report-dialog.js +17 -4
  73. package/dist/components/ui/property-report-dialog.mjs +4 -4
  74. package/dist/components/ui/review-alerts-dialog.js +17 -4
  75. package/dist/components/ui/review-alerts-dialog.mjs +2 -2
  76. package/dist/components/ui/savings-goal-modal.mjs +2 -2
  77. package/dist/components/ui/share-details-dialog.js +17 -4
  78. package/dist/components/ui/share-details-dialog.mjs +2 -2
  79. package/dist/components/ui/signup-form-primitives.js +17 -4
  80. package/dist/components/ui/signup-form-primitives.mjs +3 -3
  81. package/dist/components/ui/two-fa-setup-form.js +17 -4
  82. package/dist/components/ui/two-fa-setup-form.mjs +3 -3
  83. package/dist/index.js +1360 -1281
  84. package/dist/index.mjs +35 -35
  85. package/dist/styles.css +1 -1
  86. package/package.json +9 -1
  87. package/src/components/ui/ai-conversations.tsx +161 -83
  88. package/src/components/ui/label.tsx +18 -3
  89. package/src/styles/styles-css.ts +1 -1
  90. package/dist/{chunk-TRM3KIHT.mjs → chunk-UMF6LLQK.mjs} +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @wealthx/shadcn
2
2
 
3
+ ## 1.5.18
4
+
5
+ ### Patch Changes
6
+
7
+ - de40925: update to company page and conversation
8
+
9
+ ## 1.5.17
10
+
11
+ ### Patch Changes
12
+
13
+ - e7f14f3: account page update
14
+
3
15
  ## 1.5.16
4
16
 
5
17
  ### Patch Changes
@@ -5,7 +5,7 @@ import {
5
5
  Field,
6
6
  FieldError,
7
7
  FieldLabel
8
- } from "./chunk-MUV4EGDW.mjs";
8
+ } from "./chunk-KPGARKFC.mjs";
9
9
  import {
10
10
  Select,
11
11
  SelectContent,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CurrencyInputWithSlider
3
- } from "./chunk-MXP2RX2V.mjs";
3
+ } from "./chunk-ET4MTPIY.mjs";
4
4
  import {
5
5
  Switch
6
6
  } from "./chunk-PNSYFE3K.mjs";
@@ -6,7 +6,7 @@ import {
6
6
  AddressAutocomplete,
7
7
  CurrencyInputWithSlider,
8
8
  OwnershipSplit
9
- } from "./chunk-MXP2RX2V.mjs";
9
+ } from "./chunk-ET4MTPIY.mjs";
10
10
  import {
11
11
  Slider
12
12
  } from "./chunk-ISUA7DSB.mjs";
@@ -32,10 +32,10 @@ import {
32
32
  } from "./chunk-LI2CTS5O.mjs";
33
33
  import {
34
34
  DatePicker
35
- } from "./chunk-TRM3KIHT.mjs";
35
+ } from "./chunk-UMF6LLQK.mjs";
36
36
  import {
37
37
  Label
38
- } from "./chunk-P7CEBZM6.mjs";
38
+ } from "./chunk-LSRGA5BI.mjs";
39
39
  import {
40
40
  ToggleGroup,
41
41
  ToggleGroupItem
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-JTK6VJXY.mjs";
6
6
  import {
7
7
  AddressAutocomplete
8
- } from "./chunk-MXP2RX2V.mjs";
8
+ } from "./chunk-ET4MTPIY.mjs";
9
9
  import {
10
10
  AppointmentSlotSection
11
11
  } from "./chunk-CQ7HKBEX.mjs";
@@ -46,7 +46,7 @@ import {
46
46
  } from "./chunk-LHWJQNLG.mjs";
47
47
  import {
48
48
  Label
49
- } from "./chunk-P7CEBZM6.mjs";
49
+ } from "./chunk-LSRGA5BI.mjs";
50
50
  import {
51
51
  Toggle
52
52
  } from "./chunk-6QAFGZC2.mjs";
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  Field,
7
7
  FieldError
8
- } from "./chunk-MUV4EGDW.mjs";
8
+ } from "./chunk-KPGARKFC.mjs";
9
9
  import {
10
10
  Label
11
- } from "./chunk-P7CEBZM6.mjs";
11
+ } from "./chunk-LSRGA5BI.mjs";
12
12
  import {
13
13
  Button
14
14
  } from "./chunk-NOOEKOWY.mjs";
@@ -6,10 +6,10 @@ import {
6
6
  } from "./chunk-HK4HUQTV.mjs";
7
7
  import {
8
8
  FormField
9
- } from "./chunk-UJMVXREM.mjs";
9
+ } from "./chunk-2UA4CPE5.mjs";
10
10
  import {
11
11
  AddressAutocomplete
12
- } from "./chunk-MXP2RX2V.mjs";
12
+ } from "./chunk-ET4MTPIY.mjs";
13
13
  import {
14
14
  Slider
15
15
  } from "./chunk-ISUA7DSB.mjs";
@@ -41,6 +41,11 @@ import {
41
41
  ToggleGroup,
42
42
  ToggleGroupItem
43
43
  } from "./chunk-OWFQSXVD.mjs";
44
+ import {
45
+ Popover,
46
+ PopoverContent,
47
+ PopoverTrigger
48
+ } from "./chunk-HB5BKRMH.mjs";
44
49
  import {
45
50
  Input
46
51
  } from "./chunk-LBTHZSBT.mjs";
@@ -55,6 +60,13 @@ import {
55
60
 
56
61
  // src/components/ui/ai-conversations.tsx
57
62
  import React, { useState } from "react";
63
+ import { useEditor, EditorContent } from "@tiptap/react";
64
+ import StarterKit from "@tiptap/starter-kit";
65
+ import TiptapUnderline from "@tiptap/extension-underline";
66
+ import TiptapLink from "@tiptap/extension-link";
67
+ import ReactMarkdown from "react-markdown";
68
+ import rehypeRaw from "rehype-raw";
69
+ import rehypeSanitize, { defaultSchema } from "rehype-sanitize";
58
70
  import {
59
71
  Archive,
60
72
  ArrowLeft,
@@ -405,12 +417,12 @@ function ChatBubble({ message, className }) {
405
417
  "div",
406
418
  {
407
419
  className: cn(
408
- "px-3 py-2 text-sm leading-relaxed",
409
- isBot && "border border-border bg-muted/60 text-foreground",
410
- isVisitor && "border border-border bg-background text-foreground",
411
- isAdvisor && "bg-primary text-primary-foreground"
420
+ "px-3 py-2 text-sm leading-relaxed break-words [&_a]:underline [&_p]:m-0",
421
+ isBot && "border border-border bg-muted/60 text-foreground [&_a]:text-primary",
422
+ isVisitor && "border border-border bg-background text-foreground [&_a]:text-primary",
423
+ isAdvisor && "bg-primary text-primary-foreground [&_a]:text-primary-foreground"
412
424
  ),
413
- children: content
425
+ children: /* @__PURE__ */ jsx(ReactMarkdown, { rehypePlugins: [rehypeRaw, [rehypeSanitize, defaultSchema]], children: content })
414
426
  }
415
427
  ),
416
428
  timestamp && /* @__PURE__ */ jsx("span", { className: "text-caption text-muted-foreground", children: timestamp })
@@ -421,6 +433,89 @@ function ChatBubble({ message, className }) {
421
433
  }
422
434
  );
423
435
  }
436
+ function ComposerToolbarButton({
437
+ label,
438
+ icon: Icon,
439
+ pressed,
440
+ onToggle
441
+ }) {
442
+ return /* @__PURE__ */ jsx(
443
+ "button",
444
+ {
445
+ type: "button",
446
+ "aria-label": label,
447
+ "aria-pressed": pressed,
448
+ onClick: onToggle,
449
+ className: cn(
450
+ "flex size-7 items-center justify-center transition-colors",
451
+ pressed ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground"
452
+ ),
453
+ children: /* @__PURE__ */ jsx(Icon, { className: "size-3.5" })
454
+ }
455
+ );
456
+ }
457
+ function ComposerLinkPopover({ editor }) {
458
+ const [open, setOpen] = React.useState(false);
459
+ const [url, setUrl] = React.useState("");
460
+ const handleApply = () => {
461
+ if (url.trim()) {
462
+ editor == null ? void 0 : editor.chain().focus().setLink({ href: url.trim() }).run();
463
+ }
464
+ setOpen(false);
465
+ setUrl("");
466
+ };
467
+ return /* @__PURE__ */ jsxs(
468
+ Popover,
469
+ {
470
+ open,
471
+ onOpenChange: (newOpen) => {
472
+ if (newOpen && (editor == null ? void 0 : editor.isActive("link"))) {
473
+ editor.chain().focus().unsetLink().run();
474
+ return;
475
+ }
476
+ if (newOpen) setUrl("");
477
+ setOpen(newOpen);
478
+ },
479
+ children: [
480
+ /* @__PURE__ */ jsx(
481
+ PopoverTrigger,
482
+ {
483
+ "aria-label": "Insert link",
484
+ className: cn(
485
+ "flex size-7 items-center justify-center transition-colors",
486
+ (editor == null ? void 0 : editor.isActive("link")) ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground"
487
+ ),
488
+ children: /* @__PURE__ */ jsx(Link2, { className: "size-3.5" })
489
+ }
490
+ ),
491
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-72 p-2", align: "start", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
492
+ /* @__PURE__ */ jsx(
493
+ "input",
494
+ {
495
+ type: "url",
496
+ value: url,
497
+ onChange: (e) => setUrl(e.target.value),
498
+ onKeyDown: (e) => e.key === "Enter" && handleApply(),
499
+ placeholder: "https://",
500
+ className: "min-w-0 flex-1 border border-border bg-transparent px-2 py-1.5 text-sm text-foreground outline-none placeholder:text-muted-foreground focus:border-primary",
501
+ autoFocus: true
502
+ }
503
+ ),
504
+ /* @__PURE__ */ jsx(Button, { size: "sm", className: "h-8 px-3", onClick: handleApply, children: "Apply" })
505
+ ] }) })
506
+ ]
507
+ }
508
+ );
509
+ }
510
+ function ComposerEmailFieldRow({
511
+ label,
512
+ children
513
+ }) {
514
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4 py-2.5", children: [
515
+ /* @__PURE__ */ jsx("span", { className: "w-14 shrink-0 text-sm text-muted-foreground", children: label }),
516
+ children
517
+ ] });
518
+ }
424
519
  function ChatComposer({
425
520
  mode,
426
521
  channel: channelProp = "chat",
@@ -442,43 +537,25 @@ function ChatComposer({
442
537
  const [emailCc, setEmailCc] = React.useState("");
443
538
  const [showCc, setShowCc] = React.useState(false);
444
539
  const [emailSubject, setEmailSubject] = React.useState("");
445
- const [bold, setBold] = React.useState(false);
446
- const [italic, setItalic] = React.useState(false);
447
- const [underline, setUnderline] = React.useState(false);
540
+ const [, forceUpdate] = React.useReducer((x) => x + 1, 0);
541
+ const editor = useEditor({
542
+ extensions: [
543
+ StarterKit,
544
+ TiptapUnderline,
545
+ TiptapLink.configure({ openOnClick: false })
546
+ ],
547
+ content: "",
548
+ onTransaction: () => forceUpdate(),
549
+ editorProps: {
550
+ attributes: {
551
+ class: "min-h-[150px] px-4 py-3 text-base text-foreground outline-none prose prose-sm max-w-none [&_p]:m-0 [&_a]:text-primary [&_a]:underline [&_a]:cursor-pointer"
552
+ }
553
+ }
554
+ });
448
555
  const handleChannelChange = (c) => {
449
556
  setChannel(c);
450
557
  onChannelChange == null ? void 0 : onChannelChange(c);
451
558
  };
452
- function ToolbarButton({
453
- label,
454
- icon: Icon,
455
- pressed,
456
- onToggle
457
- }) {
458
- return /* @__PURE__ */ jsx(
459
- "button",
460
- {
461
- type: "button",
462
- "aria-label": label,
463
- "aria-pressed": pressed,
464
- onClick: onToggle,
465
- className: cn(
466
- "flex size-7 items-center justify-center transition-colors",
467
- pressed ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground"
468
- ),
469
- children: /* @__PURE__ */ jsx(Icon, { className: "size-3.5" })
470
- }
471
- );
472
- }
473
- function EmailFieldRow({
474
- label,
475
- children
476
- }) {
477
- return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4 py-2.5", children: [
478
- /* @__PURE__ */ jsx("span", { className: "w-14 shrink-0 text-sm text-muted-foreground", children: label }),
479
- children
480
- ] });
481
- }
482
559
  return /* @__PURE__ */ jsxs(
483
560
  "div",
484
561
  {
@@ -531,7 +608,7 @@ function ChatComposer({
531
608
  ),
532
609
  "aria-hidden": channel !== "email",
533
610
  children: [
534
- /* @__PURE__ */ jsxs(EmailFieldRow, { label: "To", children: [
611
+ /* @__PURE__ */ jsxs(ComposerEmailFieldRow, { label: "To", children: [
535
612
  /* @__PURE__ */ jsx(
536
613
  "input",
537
614
  {
@@ -555,7 +632,7 @@ function ChatComposer({
555
632
  }
556
633
  )
557
634
  ] }),
558
- showCc && /* @__PURE__ */ jsx(EmailFieldRow, { label: "CC", children: /* @__PURE__ */ jsx(
635
+ showCc && /* @__PURE__ */ jsx(ComposerEmailFieldRow, { label: "CC", children: /* @__PURE__ */ jsx(
559
636
  "input",
560
637
  {
561
638
  type: "email",
@@ -565,7 +642,7 @@ function ChatComposer({
565
642
  className: "min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground"
566
643
  }
567
644
  ) }),
568
- /* @__PURE__ */ jsx(EmailFieldRow, { label: "Subject", children: /* @__PURE__ */ jsx(
645
+ /* @__PURE__ */ jsx(ComposerEmailFieldRow, { label: "Subject", children: /* @__PURE__ */ jsx(
569
646
  "input",
570
647
  {
571
648
  type: "text",
@@ -575,60 +652,56 @@ function ChatComposer({
575
652
  className: "min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground"
576
653
  }
577
654
  ) }),
578
- /* @__PURE__ */ jsx(
579
- Textarea,
580
- {
581
- value: inputValue,
582
- onChange: (e) => onInputChange == null ? void 0 : onInputChange(e.target.value),
583
- placeholder: "Write your email...",
584
- rows: 6,
585
- className: "resize-y border-0 px-4 py-3 text-base shadow-none focus-visible:ring-0"
586
- }
587
- ),
655
+ /* @__PURE__ */ jsx(EditorContent, { editor }),
588
656
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-border px-3 py-2", children: [
589
657
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
590
658
  /* @__PURE__ */ jsx(
591
- ToolbarButton,
659
+ ComposerToolbarButton,
592
660
  {
593
661
  label: "Bold",
594
662
  icon: Bold,
595
- pressed: bold,
596
- onToggle: () => setBold((v) => !v)
663
+ pressed: editor == null ? void 0 : editor.isActive("bold"),
664
+ onToggle: () => editor == null ? void 0 : editor.chain().focus().toggleBold().run()
597
665
  }
598
666
  ),
599
667
  /* @__PURE__ */ jsx(
600
- ToolbarButton,
668
+ ComposerToolbarButton,
601
669
  {
602
670
  label: "Italic",
603
671
  icon: Italic,
604
- pressed: italic,
605
- onToggle: () => setItalic((v) => !v)
672
+ pressed: editor == null ? void 0 : editor.isActive("italic"),
673
+ onToggle: () => editor == null ? void 0 : editor.chain().focus().toggleItalic().run()
606
674
  }
607
675
  ),
608
676
  /* @__PURE__ */ jsx(
609
- ToolbarButton,
677
+ ComposerToolbarButton,
610
678
  {
611
679
  label: "Underline",
612
680
  icon: Underline,
613
- pressed: underline,
614
- onToggle: () => setUnderline((v) => !v)
681
+ pressed: editor == null ? void 0 : editor.isActive("underline"),
682
+ onToggle: () => editor == null ? void 0 : editor.chain().focus().toggleUnderline().run()
615
683
  }
616
684
  ),
617
685
  /* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "mx-1.5 h-4" }),
618
- /* @__PURE__ */ jsx(ToolbarButton, { label: "Link", icon: Link2 }),
619
- /* @__PURE__ */ jsx(ToolbarButton, { label: "Attach file", icon: Paperclip })
686
+ /* @__PURE__ */ jsx(ComposerLinkPopover, { editor }),
687
+ /* @__PURE__ */ jsx(ComposerToolbarButton, { label: "Attach file", icon: Paperclip })
620
688
  ] }),
621
689
  /* @__PURE__ */ jsxs(
622
690
  Button,
623
691
  {
624
692
  size: "sm",
625
- onClick: () => onSendEmail == null ? void 0 : onSendEmail({
626
- content: inputValue,
627
- to: emailTo,
628
- cc: emailCc,
629
- subject: emailSubject
630
- }),
631
- disabled: !inputValue.trim() || !emailTo.trim(),
693
+ onClick: () => {
694
+ var _a;
695
+ const html = (_a = editor == null ? void 0 : editor.getHTML()) != null ? _a : "";
696
+ onSendEmail == null ? void 0 : onSendEmail({
697
+ content: html,
698
+ to: emailTo,
699
+ cc: emailCc,
700
+ subject: emailSubject
701
+ });
702
+ editor == null ? void 0 : editor.commands.clearContent();
703
+ },
704
+ disabled: !editor || editor.isEmpty || !emailTo.trim(),
632
705
  children: [
633
706
  /* @__PURE__ */ jsx(Send, { className: "mr-1.5 size-3.5" }),
634
707
  "Send Email"
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AddressAutocomplete
3
- } from "./chunk-MXP2RX2V.mjs";
3
+ } from "./chunk-ET4MTPIY.mjs";
4
4
  import {
5
5
  Select,
6
6
  SelectContent,
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-LI2CTS5O.mjs";
21
21
  import {
22
22
  Label
23
- } from "./chunk-P7CEBZM6.mjs";
23
+ } from "./chunk-LSRGA5BI.mjs";
24
24
  import {
25
25
  Input
26
26
  } from "./chunk-LBTHZSBT.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ISUA7DSB.mjs";
4
4
  import {
5
5
  Label
6
- } from "./chunk-P7CEBZM6.mjs";
6
+ } from "./chunk-LSRGA5BI.mjs";
7
7
  import {
8
8
  ToggleGroup,
9
9
  ToggleGroupItem
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  Field,
9
9
  FieldLabel
10
- } from "./chunk-MUV4EGDW.mjs";
10
+ } from "./chunk-KPGARKFC.mjs";
11
11
  import {
12
12
  Checkbox
13
13
  } from "./chunk-IKXYTCSB.mjs";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-LI2CTS5O.mjs";
28
28
  import {
29
29
  Label
30
- } from "./chunk-P7CEBZM6.mjs";
30
+ } from "./chunk-LSRGA5BI.mjs";
31
31
  import {
32
32
  ToggleGroup,
33
33
  ToggleGroupItem
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-FBNEIYSE.mjs";
29
29
  import {
30
30
  Label
31
- } from "./chunk-P7CEBZM6.mjs";
31
+ } from "./chunk-LSRGA5BI.mjs";
32
32
  import {
33
33
  Button
34
34
  } from "./chunk-NOOEKOWY.mjs";
@@ -27,13 +27,13 @@ import {
27
27
  } from "./chunk-LI2CTS5O.mjs";
28
28
  import {
29
29
  DatePicker
30
- } from "./chunk-TRM3KIHT.mjs";
30
+ } from "./chunk-UMF6LLQK.mjs";
31
31
  import {
32
32
  formatDateWithWeekday
33
33
  } from "./chunk-LHWJQNLG.mjs";
34
34
  import {
35
35
  Label
36
- } from "./chunk-P7CEBZM6.mjs";
36
+ } from "./chunk-LSRGA5BI.mjs";
37
37
  import {
38
38
  Input
39
39
  } from "./chunk-LBTHZSBT.mjs";
@@ -8,7 +8,7 @@ import {
8
8
  Field,
9
9
  FieldError,
10
10
  FieldLabel
11
- } from "./chunk-MUV4EGDW.mjs";
11
+ } from "./chunk-KPGARKFC.mjs";
12
12
  import {
13
13
  Input
14
14
  } from "./chunk-LBTHZSBT.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2GIYVERS.mjs";
4
4
  import {
5
5
  Label
6
- } from "./chunk-P7CEBZM6.mjs";
6
+ } from "./chunk-LSRGA5BI.mjs";
7
7
  import {
8
8
  cn
9
9
  } from "./chunk-AFML43VJ.mjs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppointmentConfirmDialog,
3
3
  AppointmentRescheduleDialog
4
- } from "./chunk-2KNQZG5S.mjs";
4
+ } from "./chunk-SU6TPDEU.mjs";
5
5
  import {
6
6
  Sheet,
7
7
  SheetContent
@@ -3,24 +3,38 @@ import {
3
3
  } from "./chunk-AFML43VJ.mjs";
4
4
  import {
5
5
  __objRest,
6
+ __spreadProps,
6
7
  __spreadValues
7
8
  } from "./chunk-WNQUEZJF.mjs";
8
9
 
9
10
  // src/components/ui/label.tsx
10
- import { jsx } from "react/jsx-runtime";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
11
12
  function Label(_a) {
12
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
13
+ var _b = _a, {
14
+ className,
15
+ required,
16
+ children
17
+ } = _b, props = __objRest(_b, [
18
+ "className",
19
+ "required",
20
+ "children"
21
+ ]);
13
22
  return (
14
23
  // eslint-disable-next-line jsx-a11y/label-has-associated-control -- htmlFor is passed by the consumer
15
- /* @__PURE__ */ jsx(
24
+ /* @__PURE__ */ jsxs(
16
25
  "label",
17
- __spreadValues({
26
+ __spreadProps(__spreadValues({
18
27
  className: cn(
19
28
  "flex items-center gap-2 text-label-medium leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
20
29
  className
21
30
  ),
22
31
  "data-slot": "label"
23
- }, props)
32
+ }, props), {
33
+ children: [
34
+ children,
35
+ required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
36
+ ]
37
+ })
24
38
  )
25
39
  );
26
40
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Field,
3
3
  FieldLabel
4
- } from "./chunk-MUV4EGDW.mjs";
4
+ } from "./chunk-KPGARKFC.mjs";
5
5
  import {
6
6
  PaginationNavButtons
7
7
  } from "./chunk-SSUK6C2K.mjs";
@@ -35,7 +35,7 @@ import {
35
35
  } from "./chunk-LI2CTS5O.mjs";
36
36
  import {
37
37
  DatePicker
38
- } from "./chunk-TRM3KIHT.mjs";
38
+ } from "./chunk-UMF6LLQK.mjs";
39
39
  import {
40
40
  ToggleGroup,
41
41
  ToggleGroupItem
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  AddressAutocomplete,
10
10
  CurrencyInputWithSlider
11
- } from "./chunk-MXP2RX2V.mjs";
11
+ } from "./chunk-ET4MTPIY.mjs";
12
12
  import {
13
13
  Checkbox
14
14
  } from "./chunk-IKXYTCSB.mjs";
@@ -6,7 +6,7 @@ import {
6
6
  EditIncomeModal,
7
7
  EditLoanScenarioModal,
8
8
  PROPERTY_ASSET_TYPES
9
- } from "./chunk-6MDNL5I2.mjs";
9
+ } from "./chunk-45V7X563.mjs";
10
10
  import {
11
11
  AboutCard,
12
12
  DebtCard,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Field,
3
3
  FieldLabel
4
- } from "./chunk-MUV4EGDW.mjs";
4
+ } from "./chunk-KPGARKFC.mjs";
5
5
  import {
6
6
  AddressAutocomplete
7
- } from "./chunk-MXP2RX2V.mjs";
7
+ } from "./chunk-ET4MTPIY.mjs";
8
8
  import {
9
9
  Table,
10
10
  TableBody,
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-LI2CTS5O.mjs";
20
20
  import {
21
21
  Label
22
- } from "./chunk-P7CEBZM6.mjs";
22
+ } from "./chunk-LSRGA5BI.mjs";
23
23
  import {
24
24
  Input
25
25
  } from "./chunk-LBTHZSBT.mjs";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-LI2CTS5O.mjs";
11
11
  import {
12
12
  Label
13
- } from "./chunk-P7CEBZM6.mjs";
13
+ } from "./chunk-LSRGA5BI.mjs";
14
14
  import {
15
15
  Button
16
16
  } from "./chunk-NOOEKOWY.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  PasswordField,
4
4
  SectionHeading,
5
5
  StaffRowItem
6
- } from "./chunk-UJMVXREM.mjs";
6
+ } from "./chunk-2UA4CPE5.mjs";
7
7
  import {
8
8
  ColorPicker
9
9
  } from "./chunk-IW33VLL5.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  Field,
15
15
  FieldError,
16
16
  FieldLabel
17
- } from "./chunk-MUV4EGDW.mjs";
17
+ } from "./chunk-KPGARKFC.mjs";
18
18
  import {
19
19
  Checkbox
20
20
  } from "./chunk-IKXYTCSB.mjs";
@@ -31,7 +31,7 @@ import {
31
31
  } from "./chunk-FBNEIYSE.mjs";
32
32
  import {
33
33
  Label
34
- } from "./chunk-P7CEBZM6.mjs";
34
+ } from "./chunk-LSRGA5BI.mjs";
35
35
  import {
36
36
  Button
37
37
  } from "./chunk-NOOEKOWY.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-LI2CTS5O.mjs";
15
15
  import {
16
16
  DatePicker
17
- } from "./chunk-TRM3KIHT.mjs";
17
+ } from "./chunk-UMF6LLQK.mjs";
18
18
  import {
19
19
  ToggleGroup,
20
20
  ToggleGroupItem