@wealthx/shadcn 1.5.6 → 1.5.8

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 (212) hide show
  1. package/.turbo/turbo-build.log +177 -171
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-XHGISOX5.mjs → chunk-33VT74R4.mjs} +1 -1
  4. package/dist/{chunk-M4LTX3MH.mjs → chunk-3C4DZTGA.mjs} +1 -1
  5. package/dist/{chunk-ODO6BUOF.mjs → chunk-3CGM3QXQ.mjs} +3 -5
  6. package/dist/{chunk-QBPNYXTI.mjs → chunk-3NJPNSJG.mjs} +1 -1
  7. package/dist/{chunk-6SR4K5T5.mjs → chunk-3S6KVFF5.mjs} +1 -1
  8. package/dist/{chunk-7KT5HPYM.mjs → chunk-3VZ6CYY2.mjs} +1 -1
  9. package/dist/chunk-3Z75IKFO.mjs +34 -0
  10. package/dist/{chunk-DFL5CV75.mjs → chunk-4BHDDLWK.mjs} +2 -2
  11. package/dist/{chunk-KLJLDNCA.mjs → chunk-4LLTZ45R.mjs} +1 -1
  12. package/dist/{chunk-RAKBWNQH.mjs → chunk-54MTIKNC.mjs} +27 -66
  13. package/dist/{chunk-JTG5R5YV.mjs → chunk-54TRNCID.mjs} +287 -61
  14. package/dist/{chunk-KCKYGQVQ.mjs → chunk-5DAQU3B6.mjs} +1 -1
  15. package/dist/{chunk-CKPEFZNH.mjs → chunk-5LZZYODG.mjs} +2 -2
  16. package/dist/{chunk-2A53WPEC.mjs → chunk-5YVJSKFH.mjs} +2 -2
  17. package/dist/{chunk-JUBUN65Q.mjs → chunk-5YWUGE6F.mjs} +1 -1
  18. package/dist/chunk-65PZNG4Y.mjs +129 -0
  19. package/dist/{chunk-K7WSRWOU.mjs → chunk-6LWCFAB4.mjs} +1 -1
  20. package/dist/{chunk-Q5SGEIJV.mjs → chunk-6MDNL5I2.mjs} +3 -3
  21. package/dist/{chunk-AUEUTZIC.mjs → chunk-6U4NQGVM.mjs} +3 -3
  22. package/dist/{chunk-V4CUTCHS.mjs → chunk-77L3UPBW.mjs} +1 -1
  23. package/dist/{chunk-CW32WTZU.mjs → chunk-7UIL5UN3.mjs} +1 -1
  24. package/dist/{chunk-2LLFNGJZ.mjs → chunk-AANINK2B.mjs} +3 -3
  25. package/dist/{chunk-UEREFDAE.mjs → chunk-AZGLSIHF.mjs} +1 -1
  26. package/dist/{chunk-XN37434W.mjs → chunk-B3CTBLIY.mjs} +2 -2
  27. package/dist/{chunk-XTWAJWCQ.mjs → chunk-BAONSY54.mjs} +1 -1
  28. package/dist/{chunk-XIY5DJXI.mjs → chunk-BXL74CM2.mjs} +1 -1
  29. package/dist/{chunk-OYBIUEGE.mjs → chunk-BZGFW6L7.mjs} +1 -1
  30. package/dist/chunk-CEEVYRQA.mjs +61 -0
  31. package/dist/{chunk-BD3DWDT4.mjs → chunk-CEYEK3TI.mjs} +1 -1
  32. package/dist/{chunk-I3UDLWQ7.mjs → chunk-D3HKFRQO.mjs} +1 -1
  33. package/dist/{chunk-3AREQTZU.mjs → chunk-DCKT635J.mjs} +1 -1
  34. package/dist/{chunk-VLELWBEW.mjs → chunk-E2BNCA6L.mjs} +1 -1
  35. package/dist/{chunk-QRVEI6J3.mjs → chunk-E5EDZQ5J.mjs} +1 -3
  36. package/dist/{chunk-QHJDGB54.mjs → chunk-EAKRTKHJ.mjs} +2 -2
  37. package/dist/{chunk-Q35PNFJ7.mjs → chunk-FBNEIYSE.mjs} +1 -1
  38. package/dist/{chunk-KB7MZMED.mjs → chunk-FGMDBJCF.mjs} +1 -1
  39. package/dist/{chunk-S4CTM3UE.mjs → chunk-FRCTOAKZ.mjs} +35 -4
  40. package/dist/{chunk-K7TWMLLW.mjs → chunk-FW4U543X.mjs} +4 -4
  41. package/dist/{chunk-PGR53HMH.mjs → chunk-G2W754UJ.mjs} +1 -1
  42. package/dist/{chunk-46Q4335I.mjs → chunk-GS47ZSSA.mjs} +12 -22
  43. package/dist/{chunk-AHKHVBWR.mjs → chunk-GYWOD2YI.mjs} +1 -1
  44. package/dist/{chunk-HNDTLT5X.mjs → chunk-H5DTKPJ2.mjs} +1 -1
  45. package/dist/{chunk-C6SWS7OW.mjs → chunk-HB5BKRMH.mjs} +1 -1
  46. package/dist/{chunk-WUA546RX.mjs → chunk-IFSQWDRN.mjs} +1 -1
  47. package/dist/{chunk-KAD26MCC.mjs → chunk-IRZWYTGV.mjs} +1 -1
  48. package/dist/{chunk-AL6GOL2Y.mjs → chunk-IW33VLL5.mjs} +1 -1
  49. package/dist/{chunk-A6ER36CW.mjs → chunk-JGBV3XMQ.mjs} +1 -1
  50. package/dist/{chunk-Y6UM3VTN.mjs → chunk-JUMEIPII.mjs} +1 -1
  51. package/dist/{chunk-VFH632TB.mjs → chunk-K4WDPVFY.mjs} +3 -3
  52. package/dist/{chunk-PV3Y7QGK.mjs → chunk-LHWJQNLG.mjs} +3 -3
  53. package/dist/{chunk-NCUH54IZ.mjs → chunk-LI2CTS5O.mjs} +1 -1
  54. package/dist/{chunk-F24U4QQQ.mjs → chunk-LPVXO3TD.mjs} +1 -1
  55. package/dist/{chunk-VJ3GC7W3.mjs → chunk-MNMSHB2J.mjs} +5 -5
  56. package/dist/{chunk-J5NW5NCT.mjs → chunk-NCMV3LTP.mjs} +1 -1
  57. package/dist/{chunk-IXR4BQSQ.mjs → chunk-O5CP6VP6.mjs} +3 -3
  58. package/dist/{chunk-TGVXRD53.mjs → chunk-OZ2R6ERP.mjs} +1 -1
  59. package/dist/{chunk-D447W45Z.mjs → chunk-PCULNQWA.mjs} +42 -50
  60. package/dist/{chunk-CDVG7SFT.mjs → chunk-PGJRZHN7.mjs} +1 -1
  61. package/dist/{chunk-IKDTOCSY.mjs → chunk-RSEVIQEO.mjs} +1 -1
  62. package/dist/{chunk-GNER6MCO.mjs → chunk-SSUK6C2K.mjs} +1 -1
  63. package/dist/{chunk-6TX73WG7.mjs → chunk-TCE5L44O.mjs} +3 -2
  64. package/dist/{chunk-OECGKCVF.mjs → chunk-TLLD5IU6.mjs} +1 -1
  65. package/dist/{chunk-BFB3UH7V.mjs → chunk-TRM3KIHT.mjs} +2 -2
  66. package/dist/{chunk-TLYSVRSK.mjs → chunk-TUC2BNUR.mjs} +3 -3
  67. package/dist/{chunk-HXU5JGLQ.mjs → chunk-UBHBIWIA.mjs} +3 -3
  68. package/dist/{chunk-TXUBGKB7.mjs → chunk-UJMVXREM.mjs} +2 -2
  69. package/dist/{chunk-TAX3KL66.mjs → chunk-USOVLDGS.mjs} +1 -1
  70. package/dist/{chunk-HF4FUBCY.mjs → chunk-UTCW5YUX.mjs} +1 -1
  71. package/dist/{chunk-OL65UQHQ.mjs → chunk-UYRHYJPX.mjs} +27 -61
  72. package/dist/{chunk-BDESHD25.mjs → chunk-VLVEZHFE.mjs} +1 -1
  73. package/dist/{chunk-EUYPMDQG.mjs → chunk-VWZS32ZQ.mjs} +1 -1
  74. package/dist/{chunk-HROG643K.mjs → chunk-W5QJ57PU.mjs} +1 -1
  75. package/dist/{chunk-F4O2YPXJ.mjs → chunk-WHIW6KOB.mjs} +1 -1
  76. package/dist/{chunk-TOIVHWNC.mjs → chunk-WWIWRNBK.mjs} +1 -1
  77. package/dist/{chunk-2QNOPXMQ.mjs → chunk-XMP24PWA.mjs} +1 -1
  78. package/dist/{chunk-HO6S3ECM.mjs → chunk-XUCDPAVI.mjs} +2 -2
  79. package/dist/{chunk-EW72FINW.mjs → chunk-XVZGXPIX.mjs} +1 -1
  80. package/dist/{chunk-WDTXHLYM.mjs → chunk-XYSRRDBH.mjs} +17 -11
  81. package/dist/{chunk-QAX6HCUH.mjs → chunk-ZAXZBOWI.mjs} +1 -1
  82. package/dist/{chunk-E3PQDBYI.mjs → chunk-ZFKAYRFQ.mjs} +1 -1
  83. package/dist/components/ui/about-you-form.mjs +6 -6
  84. package/dist/components/ui/add-column-modal.js +56 -227
  85. package/dist/components/ui/add-column-modal.mjs +4 -5
  86. package/dist/components/ui/add-lead-modal.mjs +6 -6
  87. package/dist/components/ui/ai-assistant-drawer.mjs +4 -4
  88. package/dist/components/ui/ai-builder.mjs +4 -4
  89. package/dist/components/ui/ai-conversations.js +278 -58
  90. package/dist/components/ui/ai-conversations.mjs +6 -6
  91. package/dist/components/ui/alert-dialog.mjs +3 -3
  92. package/dist/components/ui/appointment-action-dialogs.mjs +7 -7
  93. package/dist/components/ui/appointment-availability-settings.js +1 -1
  94. package/dist/components/ui/appointment-availability-settings.mjs +9 -9
  95. package/dist/components/ui/appointment-book-dialog.js +11 -21
  96. package/dist/components/ui/appointment-book-dialog.mjs +7 -7
  97. package/dist/components/ui/appointment-calendar-view.mjs +2 -2
  98. package/dist/components/ui/appointment-detail-sheet.mjs +9 -9
  99. package/dist/components/ui/appointment-upcoming-card.mjs +6 -6
  100. package/dist/components/ui/assets-liabilities-side-card.mjs +3 -3
  101. package/dist/components/ui/backoffice-alert-history-chart.mjs +3 -3
  102. package/dist/components/ui/backoffice-alert-matching-chart.mjs +3 -3
  103. package/dist/components/ui/backoffice-alerts-chart.mjs +3 -3
  104. package/dist/components/ui/backoffice-connections-chart.mjs +3 -3
  105. package/dist/components/ui/backoffice-contact-history-chart.mjs +3 -3
  106. package/dist/components/ui/backoffice-contact-matching-chart.mjs +3 -3
  107. package/dist/components/ui/backoffice-signup-steps.mjs +9 -9
  108. package/dist/components/ui/bank-statement-generate-dialog.mjs +9 -9
  109. package/dist/components/ui/bank-statement-pdf-viewer.mjs +4 -4
  110. package/dist/components/ui/borrowing-capacity-card.mjs +3 -3
  111. package/dist/components/ui/borrowing-capacity-line-chart.mjs +3 -3
  112. package/dist/components/ui/calculator-section.mjs +4 -4
  113. package/dist/components/ui/calendar.mjs +2 -2
  114. package/dist/components/ui/cash-balance-line-chart.mjs +3 -3
  115. package/dist/components/ui/cashflow-bar-chart.mjs +3 -3
  116. package/dist/components/ui/category-edit-dialog.mjs +4 -4
  117. package/dist/components/ui/color-picker.mjs +4 -4
  118. package/dist/components/ui/contact-alert-dialog/index.mjs +5 -5
  119. package/dist/components/ui/create-contact-modal.mjs +5 -5
  120. package/dist/components/ui/csv-import-modal.mjs +4 -4
  121. package/dist/components/ui/dashboard-transactions-table.mjs +5 -5
  122. package/dist/components/ui/data-table.mjs +6 -6
  123. package/dist/components/ui/date-picker.mjs +6 -6
  124. package/dist/components/ui/delete-contact-component.mjs +4 -4
  125. package/dist/components/ui/dialog.mjs +3 -3
  126. package/dist/components/ui/document-checklist-template.mjs +4 -4
  127. package/dist/components/ui/drawer.mjs +3 -3
  128. package/dist/components/ui/dropdown-menu.mjs +3 -3
  129. package/dist/components/ui/dynamic-tabs.mjs +3 -3
  130. package/dist/components/ui/editable-money-item.mjs +4 -4
  131. package/dist/components/ui/expense-bar-chart.mjs +3 -3
  132. package/dist/components/ui/expense-work-details.mjs +4 -4
  133. package/dist/components/ui/file-preview-dialog.mjs +6 -6
  134. package/dist/components/ui/financial-cards.mjs +2 -2
  135. package/dist/components/ui/financial-drawers.mjs +4 -4
  136. package/dist/components/ui/financial-sections.mjs +3 -3
  137. package/dist/components/ui/frontend-signup-steps.mjs +7 -7
  138. package/dist/components/ui/income-bar-chart.mjs +3 -3
  139. package/dist/components/ui/income-work-details.mjs +4 -4
  140. package/dist/components/ui/integration-card.js +326 -0
  141. package/dist/components/ui/integration-card.mjs +11 -0
  142. package/dist/components/ui/kanban-column.js +151 -243
  143. package/dist/components/ui/kanban-column.mjs +6 -7
  144. package/dist/components/ui/loan-application-cards.mjs +1 -1
  145. package/dist/components/ui/money-item-with-color-indicator.mjs +4 -4
  146. package/dist/components/ui/onboarding-layout.js +65 -4
  147. package/dist/components/ui/onboarding-layout.mjs +6 -4
  148. package/dist/components/ui/opportunity-card.js +126 -216
  149. package/dist/components/ui/opportunity-card.mjs +5 -6
  150. package/dist/components/ui/opportunity-edit-modals.mjs +9 -9
  151. package/dist/components/ui/opportunity-summary-tab.mjs +11 -11
  152. package/dist/components/ui/pagination.mjs +4 -4
  153. package/dist/components/ui/password-strength-tooltip.mjs +4 -4
  154. package/dist/components/ui/pipeline-board.js +167 -261
  155. package/dist/components/ui/pipeline-board.mjs +7 -8
  156. package/dist/components/ui/pipeline-chart.js +128 -55
  157. package/dist/components/ui/pipeline-chart.mjs +4 -3
  158. package/dist/components/ui/pipeline-dialogs.mjs +9 -9
  159. package/dist/components/ui/popover.mjs +3 -3
  160. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +3 -3
  161. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +3 -3
  162. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +3 -3
  163. package/dist/components/ui/property-report-dialog.mjs +4 -4
  164. package/dist/components/ui/resource-center.mjs +4 -4
  165. package/dist/components/ui/review-alerts-dialog.mjs +4 -4
  166. package/dist/components/ui/savings-goal-modal.mjs +7 -7
  167. package/dist/components/ui/scenario-drawer.mjs +3 -3
  168. package/dist/components/ui/scenario-item.mjs +4 -4
  169. package/dist/components/ui/scenario-list.mjs +4 -4
  170. package/dist/components/ui/select.mjs +3 -3
  171. package/dist/components/ui/selectable-card.js +163 -0
  172. package/dist/components/ui/selectable-card.mjs +9 -0
  173. package/dist/components/ui/share-details-dialog.mjs +4 -4
  174. package/dist/components/ui/sheet.mjs +3 -3
  175. package/dist/components/ui/sidebar-nav.mjs +4 -4
  176. package/dist/components/ui/signup-form-primitives.mjs +6 -6
  177. package/dist/components/ui/signup-shell.js +3 -2
  178. package/dist/components/ui/signup-shell.mjs +2 -2
  179. package/dist/components/ui/stepper.js +3 -2
  180. package/dist/components/ui/stepper.mjs +1 -1
  181. package/dist/components/ui/tooltip.mjs +3 -3
  182. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +3 -3
  183. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +3 -3
  184. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +3 -3
  185. package/dist/index.js +2144 -1875
  186. package/dist/index.mjs +105 -95
  187. package/dist/lib/colors.js +36 -3
  188. package/dist/lib/colors.mjs +5 -1
  189. package/dist/lib/theme-provider.js +60 -13
  190. package/dist/lib/theme-provider.mjs +2 -2
  191. package/dist/styles.css +1 -1
  192. package/package.json +11 -1
  193. package/src/components/index.tsx +13 -1
  194. package/src/components/ui/add-column-modal.tsx +9 -58
  195. package/src/components/ui/ai-conversations.tsx +308 -42
  196. package/src/components/ui/appointment-availability-settings.tsx +1 -1
  197. package/src/components/ui/appointment-book-dialog.tsx +25 -48
  198. package/src/components/ui/integration-card.tsx +88 -0
  199. package/src/components/ui/kanban-column.tsx +0 -7
  200. package/src/components/ui/onboarding-layout.tsx +102 -1
  201. package/src/components/ui/opportunity-card.tsx +5 -53
  202. package/src/components/ui/pipeline-board.tsx +0 -3
  203. package/src/components/ui/pipeline-chart.tsx +47 -53
  204. package/src/components/ui/selectable-card.tsx +37 -0
  205. package/src/components/ui/stepper.tsx +3 -2
  206. package/src/lib/colors.ts +73 -5
  207. package/src/lib/format-date.ts +6 -6
  208. package/src/lib/theme-provider.tsx +13 -8
  209. package/src/styles/globals.css +37 -9
  210. package/src/styles/styles-css.ts +1 -1
  211. package/tsup.config.ts +2 -0
  212. package/dist/chunk-2P7HP7LR.mjs +0 -68
@@ -71,7 +71,7 @@ __export(ai_conversations_exports, {
71
71
  LeadInfoPanel: () => LeadInfoPanel
72
72
  });
73
73
  module.exports = __toCommonJS(ai_conversations_exports);
74
- var import_react3 = require("react");
74
+ var import_react3 = __toESM(require("react"));
75
75
  var import_lucide_react4 = require("lucide-react");
76
76
 
77
77
  // src/lib/utils.ts
@@ -980,6 +980,7 @@ function ConversationListItem({
980
980
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "truncate text-sm font-semibold text-foreground", children: displayContactName(data.contact.name) }),
981
981
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
982
982
  data.status === "needs-attention" && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Flag, { className: "size-3 text-warning-text" }),
983
+ data.channel === "email" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Mail, { className: "size-3 text-muted-foreground" }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.MessageSquare, { className: "size-3 text-muted-foreground" }),
983
984
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "whitespace-nowrap text-xs text-muted-foreground", children: data.timestamp })
984
985
  ] })
985
986
  ] }),
@@ -1013,12 +1014,14 @@ function ConversationListItem({
1013
1014
  }
1014
1015
  );
1015
1016
  }
1016
- function filterConversations(conversations, query, filter) {
1017
+ function filterConversations(conversations, query, filter, channelFilter) {
1017
1018
  const q = query.toLowerCase();
1018
1019
  return conversations.filter((c) => {
1020
+ var _a;
1019
1021
  const matchesFilter = filter === "all" || (filter === "open" ? c.status !== "closed" : c.status === filter);
1022
+ const matchesChannel = channelFilter === "all" || ((_a = c.channel) != null ? _a : "chat") === channelFilter;
1020
1023
  const matchesSearch = !q || c.contact.name.toLowerCase().includes(q) || c.lastMessage.toLowerCase().includes(q);
1021
- return matchesFilter && matchesSearch;
1024
+ return matchesFilter && matchesChannel && matchesSearch;
1022
1025
  });
1023
1026
  }
1024
1027
  var FILTER_TABS = [
@@ -1033,15 +1036,25 @@ function ConversationList({
1033
1036
  activeId,
1034
1037
  searchQuery = "",
1035
1038
  activeFilter = "all",
1039
+ channelFilter: channelFilterProp = "all",
1036
1040
  hasMore,
1037
1041
  isLoadingMore,
1038
1042
  onSearchChange,
1039
1043
  onFilterChange,
1044
+ onChannelFilterChange,
1040
1045
  onSelect,
1041
1046
  onRead,
1042
1047
  onLoadMore,
1043
1048
  className
1044
1049
  }) {
1050
+ const [channelFilter, setChannelFilter] = (0, import_react3.useState)(channelFilterProp);
1051
+ function handleChannelFilterChange(vals) {
1052
+ const v = vals[0];
1053
+ if (v) {
1054
+ setChannelFilter(v);
1055
+ onChannelFilterChange == null ? void 0 : onChannelFilterChange(v);
1056
+ }
1057
+ }
1045
1058
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1046
1059
  "div",
1047
1060
  {
@@ -1051,18 +1064,37 @@ function ConversationList({
1051
1064
  ),
1052
1065
  children: [
1053
1066
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: cn(PANEL_HEADER_HEIGHT, "flex shrink-0 flex-col"), children: [
1054
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "border-b border-border p-3 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "relative", children: [
1055
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
1056
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1057
- Input,
1067
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-2.5", children: [
1068
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "relative flex-1", children: [
1069
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Search, { className: "absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }),
1070
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1071
+ Input,
1072
+ {
1073
+ value: searchQuery,
1074
+ onChange: (e) => onSearchChange == null ? void 0 : onSearchChange(e.target.value),
1075
+ placeholder: "Search conversations...",
1076
+ className: "h-8 pl-8 text-sm"
1077
+ }
1078
+ )
1079
+ ] }),
1080
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1081
+ ToggleGroup,
1058
1082
  {
1059
- value: searchQuery,
1060
- onChange: (e) => onSearchChange == null ? void 0 : onSearchChange(e.target.value),
1061
- placeholder: "Search conversations...",
1062
- className: "h-8 pl-8 text-sm"
1083
+ type: "single",
1084
+ variant: "outline",
1085
+ size: "sm",
1086
+ spacing: 0,
1087
+ value: [channelFilter],
1088
+ onValueChange: handleChannelFilterChange,
1089
+ className: "shrink-0",
1090
+ children: [
1091
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToggleGroupItem, { value: "all", "aria-label": "All channels", children: "All" }),
1092
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToggleGroupItem, { value: "chat", "aria-label": "Chat", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.MessageSquare, { className: "size-3.5" }) }),
1093
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToggleGroupItem, { value: "email", "aria-label": "Email", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Mail, { className: "size-3.5" }) })
1094
+ ]
1063
1095
  }
1064
1096
  )
1065
- ] }) }),
1097
+ ] }),
1066
1098
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-1 items-center border-b border-border", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1067
1099
  Tabs,
1068
1100
  {
@@ -1092,7 +1124,8 @@ function ConversationList({
1092
1124
  const filtered = filterConversations(
1093
1125
  conversations,
1094
1126
  searchQuery,
1095
- activeFilter
1127
+ activeFilter,
1128
+ channelFilter
1096
1129
  );
1097
1130
  return filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-col items-center justify-center gap-2 p-8 text-muted-foreground", children: [
1098
1131
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.MessageSquare, { className: "size-8 opacity-30" }),
@@ -1209,6 +1242,9 @@ function ChatBubble({ message, className }) {
1209
1242
  }
1210
1243
  function ChatComposer({
1211
1244
  mode,
1245
+ channel: channelProp = "chat",
1246
+ onChannelChange,
1247
+ contactEmail = "",
1212
1248
  inputValue = "",
1213
1249
  onInputChange,
1214
1250
  onSend,
@@ -1216,68 +1252,234 @@ function ChatComposer({
1216
1252
  onLetAiHandle,
1217
1253
  className
1218
1254
  }) {
1219
- if (mode === "ai") {
1220
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1221
- "div",
1255
+ const [channel, setChannel] = import_react3.default.useState(channelProp);
1256
+ const [emailTo, setEmailTo] = import_react3.default.useState(contactEmail);
1257
+ const [emailCc, setEmailCc] = import_react3.default.useState("");
1258
+ const [showCc, setShowCc] = import_react3.default.useState(false);
1259
+ const [emailSubject, setEmailSubject] = import_react3.default.useState("");
1260
+ const [bold, setBold] = import_react3.default.useState(false);
1261
+ const [italic, setItalic] = import_react3.default.useState(false);
1262
+ const [underline, setUnderline] = import_react3.default.useState(false);
1263
+ const handleChannelChange = (c) => {
1264
+ setChannel(c);
1265
+ onChannelChange == null ? void 0 : onChannelChange(c);
1266
+ };
1267
+ function ToolbarButton({
1268
+ label,
1269
+ icon: Icon,
1270
+ pressed,
1271
+ onToggle
1272
+ }) {
1273
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1274
+ "button",
1222
1275
  {
1276
+ type: "button",
1277
+ "aria-label": label,
1278
+ "aria-pressed": pressed,
1279
+ onClick: onToggle,
1223
1280
  className: cn(
1224
- "flex items-center gap-2 border-t border-border bg-muted/30 px-4 py-2.5 text-[12px] text-muted-foreground",
1225
- className
1281
+ "flex size-7 items-center justify-center transition-colors",
1282
+ pressed ? "bg-foreground text-background" : "text-muted-foreground hover:bg-muted hover:text-foreground"
1226
1283
  ),
1227
- children: [
1228
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Bot, { className: "size-3.5 shrink-0 text-muted-foreground" }),
1229
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "AI is handling this conversation." }),
1230
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1231
- Button,
1232
- {
1233
- variant: "link",
1234
- size: "sm",
1235
- className: "h-auto p-0 text-[12px] font-medium text-foreground",
1236
- onClick: onTakeOver,
1237
- children: "Take Over"
1238
- }
1239
- ),
1240
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "to reply directly." })
1241
- ]
1284
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { className: "size-3.5" })
1242
1285
  }
1243
1286
  );
1244
1287
  }
1288
+ function EmailFieldRow({
1289
+ label,
1290
+ children
1291
+ }) {
1292
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-3 border-b border-border px-4 py-2.5", children: [
1293
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "w-14 shrink-0 text-sm text-muted-foreground", children: label }),
1294
+ children
1295
+ ] });
1296
+ }
1245
1297
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1246
1298
  "div",
1247
1299
  {
1248
1300
  className: cn(
1249
- "flex flex-col gap-2 border-t border-border bg-background p-3",
1301
+ "flex flex-col border-t border-border bg-background",
1250
1302
  className
1251
1303
  ),
1252
1304
  children: [
1253
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1254
- Textarea,
1305
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "border-b border-border px-3 py-2", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1306
+ Tabs,
1255
1307
  {
1256
- value: inputValue,
1257
- onChange: (e) => onInputChange == null ? void 0 : onInputChange(e.target.value),
1258
- placeholder: "Reply to lead...",
1259
- rows: 3,
1260
- className: "resize-none text-sm"
1308
+ value: channel,
1309
+ onValueChange: (v) => v && handleChannelChange(v),
1310
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(TabsList, { variant: "default", className: "w-full", children: [
1311
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(TabsTrigger, { value: "chat", className: "flex-1 gap-1.5", children: [
1312
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.MessageSquare, { className: "size-3.5" }),
1313
+ "Chat"
1314
+ ] }),
1315
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(TabsTrigger, { value: "email", className: "flex-1 gap-1.5", children: [
1316
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Mail, { className: "size-3.5" }),
1317
+ "Email"
1318
+ ] })
1319
+ ] })
1261
1320
  }
1262
- ),
1263
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center justify-between", children: [
1264
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Button, { variant: "outline", size: "sm", onClick: onLetAiHandle, children: [
1265
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Bot, { className: "mr-1.5 size-3.5" }),
1266
- "Let AI Handle"
1267
- ] }),
1268
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1321
+ ) }),
1322
+ mode === "ai" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-2 bg-muted/30 px-4 py-2.5 text-[12px] text-muted-foreground", children: [
1323
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Bot, { className: "size-3.5 shrink-0 text-muted-foreground" }),
1324
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "AI is handling this conversation." }),
1325
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1269
1326
  Button,
1270
1327
  {
1328
+ variant: "link",
1271
1329
  size: "sm",
1272
- onClick: () => onSend == null ? void 0 : onSend(inputValue),
1273
- disabled: !inputValue.trim(),
1274
- children: [
1275
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Send, { className: "mr-1.5 size-3.5" }),
1276
- "Send"
1277
- ]
1330
+ className: "h-auto p-0 text-[12px] font-medium text-foreground",
1331
+ onClick: onTakeOver,
1332
+ children: "Take Over"
1278
1333
  }
1279
- )
1280
- ] })
1334
+ ),
1335
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "to reply directly." })
1336
+ ] }) : (
1337
+ /* Email panel stays in normal flow to anchor container height;
1338
+ chat panel is an absolute overlay so both tabs share identical dimensions */
1339
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "relative", children: [
1340
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1341
+ "div",
1342
+ {
1343
+ className: cn(
1344
+ "flex flex-col",
1345
+ channel !== "email" && "invisible pointer-events-none"
1346
+ ),
1347
+ "aria-hidden": channel !== "email",
1348
+ children: [
1349
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(EmailFieldRow, { label: "To", children: [
1350
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1351
+ "input",
1352
+ {
1353
+ type: "email",
1354
+ value: emailTo,
1355
+ onChange: (e) => setEmailTo(e.target.value),
1356
+ placeholder: "Recipient email",
1357
+ className: "min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground"
1358
+ }
1359
+ ),
1360
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1361
+ "button",
1362
+ {
1363
+ type: "button",
1364
+ onClick: () => setShowCc((v) => !v),
1365
+ className: "flex shrink-0 items-center gap-0.5 text-sm text-muted-foreground hover:text-foreground",
1366
+ children: [
1367
+ "CC",
1368
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.ChevronDown, { className: "size-3.5" })
1369
+ ]
1370
+ }
1371
+ )
1372
+ ] }),
1373
+ showCc && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmailFieldRow, { label: "CC", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1374
+ "input",
1375
+ {
1376
+ type: "email",
1377
+ value: emailCc,
1378
+ onChange: (e) => setEmailCc(e.target.value),
1379
+ placeholder: "CC email",
1380
+ className: "min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground"
1381
+ }
1382
+ ) }),
1383
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmailFieldRow, { label: "Subject", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1384
+ "input",
1385
+ {
1386
+ type: "text",
1387
+ value: emailSubject,
1388
+ onChange: (e) => setEmailSubject(e.target.value),
1389
+ placeholder: "Email subject",
1390
+ className: "min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-muted-foreground"
1391
+ }
1392
+ ) }),
1393
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1394
+ Textarea,
1395
+ {
1396
+ value: inputValue,
1397
+ onChange: (e) => onInputChange == null ? void 0 : onInputChange(e.target.value),
1398
+ placeholder: "Write your email...",
1399
+ rows: 6,
1400
+ className: "resize-y border-0 px-4 py-3 text-base shadow-none focus-visible:ring-0"
1401
+ }
1402
+ ),
1403
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center justify-between border-t border-border px-3 py-2", children: [
1404
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-0.5", children: [
1405
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1406
+ ToolbarButton,
1407
+ {
1408
+ label: "Bold",
1409
+ icon: import_lucide_react4.Bold,
1410
+ pressed: bold,
1411
+ onToggle: () => setBold((v) => !v)
1412
+ }
1413
+ ),
1414
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1415
+ ToolbarButton,
1416
+ {
1417
+ label: "Italic",
1418
+ icon: import_lucide_react4.Italic,
1419
+ pressed: italic,
1420
+ onToggle: () => setItalic((v) => !v)
1421
+ }
1422
+ ),
1423
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1424
+ ToolbarButton,
1425
+ {
1426
+ label: "Underline",
1427
+ icon: import_lucide_react4.Underline,
1428
+ pressed: underline,
1429
+ onToggle: () => setUnderline((v) => !v)
1430
+ }
1431
+ ),
1432
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Separator, { orientation: "vertical", className: "mx-1.5 h-4" }),
1433
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToolbarButton, { label: "Link", icon: import_lucide_react4.Link2 }),
1434
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToolbarButton, { label: "Attach file", icon: import_lucide_react4.Paperclip })
1435
+ ] }),
1436
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1437
+ Button,
1438
+ {
1439
+ size: "sm",
1440
+ onClick: () => onSend == null ? void 0 : onSend(inputValue),
1441
+ disabled: !inputValue.trim() || !emailTo.trim(),
1442
+ children: [
1443
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Send, { className: "mr-1.5 size-3.5" }),
1444
+ "Send Email"
1445
+ ]
1446
+ }
1447
+ )
1448
+ ] })
1449
+ ]
1450
+ }
1451
+ ),
1452
+ channel === "chat" && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "absolute inset-0 flex flex-col gap-3 p-4", children: [
1453
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1454
+ Textarea,
1455
+ {
1456
+ value: inputValue,
1457
+ onChange: (e) => onInputChange == null ? void 0 : onInputChange(e.target.value),
1458
+ placeholder: "Reply to lead...",
1459
+ className: "min-h-0 flex-1 resize-none text-base"
1460
+ }
1461
+ ),
1462
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center justify-between", children: [
1463
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Button, { variant: "outline", size: "sm", onClick: onLetAiHandle, children: [
1464
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Bot, { className: "mr-1.5 size-3.5" }),
1465
+ "Let AI Handle"
1466
+ ] }),
1467
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1468
+ Button,
1469
+ {
1470
+ size: "sm",
1471
+ onClick: () => onSend == null ? void 0 : onSend(inputValue),
1472
+ disabled: !inputValue.trim(),
1473
+ children: [
1474
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react4.Send, { className: "mr-1.5 size-3.5" }),
1475
+ "Send"
1476
+ ]
1477
+ }
1478
+ )
1479
+ ] })
1480
+ ] })
1481
+ ] })
1482
+ )
1281
1483
  ]
1282
1484
  }
1283
1485
  );
@@ -1288,6 +1490,8 @@ function ChatThread({
1288
1490
  mode,
1289
1491
  messages,
1290
1492
  isAiTyping = false,
1493
+ channel,
1494
+ onChannelChange,
1291
1495
  inputValue,
1292
1496
  onInputChange,
1293
1497
  onSend,
@@ -1431,6 +1635,9 @@ function ChatThread({
1431
1635
  ChatComposer,
1432
1636
  {
1433
1637
  mode,
1638
+ channel,
1639
+ onChannelChange,
1640
+ contactEmail: contact.email,
1434
1641
  inputValue,
1435
1642
  onInputChange,
1436
1643
  onSend,
@@ -1548,6 +1755,7 @@ function LeadInfoPanel({
1548
1755
  contact,
1549
1756
  firstSeen,
1550
1757
  source = "Website Chatbot",
1758
+ topic,
1551
1759
  aiFields = [],
1552
1760
  appointment,
1553
1761
  internalNotes = "",
@@ -1625,7 +1833,8 @@ function LeadInfoPanel({
1625
1833
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ContactAvatar, { name: contact.name, size: "lg" }),
1626
1834
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "min-w-0 flex-1", children: [
1627
1835
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "truncate text-sm font-semibold text-foreground", children: displayContactName(contact.name) }),
1628
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-sm text-muted-foreground", children: source })
1836
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-sm text-muted-foreground", children: source }),
1837
+ topic && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Badge, { variant: "secondary", className: "mt-1 text-xs", children: topic })
1629
1838
  ] })
1630
1839
  ] }),
1631
1840
  (contact.email || contact.phone || firstSeen) && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "mt-3 flex flex-col gap-1.5", children: [
@@ -1775,8 +1984,13 @@ function ConversationsPage({
1775
1984
  appointment,
1776
1985
  leadFirstSeen,
1777
1986
  leadSource,
1987
+ leadTopic,
1778
1988
  searchQuery,
1779
1989
  activeFilter,
1990
+ channelFilter,
1991
+ onChannelFilterChange,
1992
+ channel,
1993
+ onChannelChange,
1780
1994
  inputValue,
1781
1995
  internalNotes,
1782
1996
  showLeadPanel = true,
@@ -1832,10 +2046,12 @@ function ConversationsPage({
1832
2046
  activeId: activeConversationId,
1833
2047
  searchQuery,
1834
2048
  activeFilter,
2049
+ channelFilter,
1835
2050
  hasMore,
1836
2051
  isLoadingMore,
1837
2052
  onSearchChange,
1838
2053
  onFilterChange,
2054
+ onChannelFilterChange,
1839
2055
  onSelect: handleSelectConversation,
1840
2056
  onRead,
1841
2057
  onLoadMore,
@@ -1854,6 +2070,8 @@ function ConversationsPage({
1854
2070
  mode,
1855
2071
  messages,
1856
2072
  isAiTyping,
2073
+ channel,
2074
+ onChannelChange,
1857
2075
  inputValue,
1858
2076
  onInputChange,
1859
2077
  onSend,
@@ -1870,7 +2088,8 @@ function ConversationsPage({
1870
2088
  "min-w-0 flex-1 border-r border-border",
1871
2089
  mobilePanel === "chat" ? "flex flex-col md:flex" : "hidden md:flex"
1872
2090
  )
1873
- }
2091
+ },
2092
+ contact.id
1874
2093
  ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1875
2094
  "div",
1876
2095
  {
@@ -1901,6 +2120,7 @@ function ConversationsPage({
1901
2120
  contact,
1902
2121
  firstSeen: leadFirstSeen,
1903
2122
  source: leadSource,
2123
+ topic: leadTopic,
1904
2124
  aiFields,
1905
2125
  appointment,
1906
2126
  internalNotes,
@@ -9,20 +9,20 @@ import {
9
9
  ConversationStatusChip,
10
10
  ConversationsPage,
11
11
  LeadInfoPanel
12
- } from "../../chunk-JTG5R5YV.mjs";
13
- import "../../chunk-HNDTLT5X.mjs";
14
- import "../../chunk-6SR4K5T5.mjs";
12
+ } from "../../chunk-54TRNCID.mjs";
13
+ import "../../chunk-H5DTKPJ2.mjs";
14
+ import "../../chunk-3S6KVFF5.mjs";
15
15
  import "../../chunk-WE4YKBDE.mjs";
16
16
  import "../../chunk-2GIYVERS.mjs";
17
17
  import "../../chunk-BS75ICOO.mjs";
18
- import "../../chunk-NCUH54IZ.mjs";
18
+ import "../../chunk-LI2CTS5O.mjs";
19
19
  import "../../chunk-H6NQTIF4.mjs";
20
20
  import "../../chunk-WL6WVV47.mjs";
21
21
  import "../../chunk-OWFQSXVD.mjs";
22
22
  import "../../chunk-6QAFGZC2.mjs";
23
23
  import "../../chunk-LBTHZSBT.mjs";
24
- import "../../chunk-WDTXHLYM.mjs";
25
- import "../../chunk-S4CTM3UE.mjs";
24
+ import "../../chunk-XYSRRDBH.mjs";
25
+ import "../../chunk-FRCTOAKZ.mjs";
26
26
  import "../../chunk-NOOEKOWY.mjs";
27
27
  import "../../chunk-R4HCRDU5.mjs";
28
28
  import "../../chunk-AFML43VJ.mjs";
@@ -11,9 +11,9 @@ import {
11
11
  AlertDialogPortal,
12
12
  AlertDialogTitle,
13
13
  AlertDialogTrigger
14
- } from "../../chunk-BD3DWDT4.mjs";
15
- import "../../chunk-WDTXHLYM.mjs";
16
- import "../../chunk-S4CTM3UE.mjs";
14
+ } from "../../chunk-CEYEK3TI.mjs";
15
+ import "../../chunk-XYSRRDBH.mjs";
16
+ import "../../chunk-FRCTOAKZ.mjs";
17
17
  import "../../chunk-NOOEKOWY.mjs";
18
18
  import "../../chunk-R4HCRDU5.mjs";
19
19
  import "../../chunk-AFML43VJ.mjs";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  AppointmentConfirmDialog,
3
3
  AppointmentRescheduleDialog
4
- } from "../../chunk-2LLFNGJZ.mjs";
4
+ } from "../../chunk-AANINK2B.mjs";
5
5
  import "../../chunk-FRT3S72S.mjs";
6
6
  import "../../chunk-2GIYVERS.mjs";
7
7
  import "../../chunk-BS75ICOO.mjs";
8
- import "../../chunk-NCUH54IZ.mjs";
8
+ import "../../chunk-LI2CTS5O.mjs";
9
9
  import "../../chunk-WL6WVV47.mjs";
10
- import "../../chunk-BD3DWDT4.mjs";
11
- import "../../chunk-Q35PNFJ7.mjs";
12
- import "../../chunk-PV3Y7QGK.mjs";
10
+ import "../../chunk-CEYEK3TI.mjs";
11
+ import "../../chunk-FBNEIYSE.mjs";
12
+ import "../../chunk-LHWJQNLG.mjs";
13
13
  import "../../chunk-P7CEBZM6.mjs";
14
14
  import "../../chunk-6QAFGZC2.mjs";
15
- import "../../chunk-WDTXHLYM.mjs";
16
- import "../../chunk-S4CTM3UE.mjs";
15
+ import "../../chunk-XYSRRDBH.mjs";
16
+ import "../../chunk-FRCTOAKZ.mjs";
17
17
  import "../../chunk-NOOEKOWY.mjs";
18
18
  import "../../chunk-R4HCRDU5.mjs";
19
19
  import "../../chunk-AFML43VJ.mjs";
@@ -1229,7 +1229,7 @@ function TimeSelect({
1229
1229
  onValueChange: (v) => onChange(v),
1230
1230
  disabled,
1231
1231
  children: [
1232
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-36", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, {}) }),
1232
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-36", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(TIME_OPTIONS, v) }) }),
1233
1233
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: TIME_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
1234
1234
  ]
1235
1235
  }
@@ -2,20 +2,20 @@ import {
2
2
  AppointmentAvailabilitySettings,
3
3
  MEETING_PLATFORM_OPTIONS,
4
4
  TIMEZONE_OPTIONS
5
- } from "../../chunk-VJ3GC7W3.mjs";
6
- import "../../chunk-TAX3KL66.mjs";
5
+ } from "../../chunk-MNMSHB2J.mjs";
6
+ import "../../chunk-USOVLDGS.mjs";
7
7
  import "../../chunk-PNSYFE3K.mjs";
8
8
  import "../../chunk-WE4YKBDE.mjs";
9
9
  import "../../chunk-2GIYVERS.mjs";
10
- import "../../chunk-NCUH54IZ.mjs";
11
- import "../../chunk-BFB3UH7V.mjs";
12
- import "../../chunk-C6SWS7OW.mjs";
13
- import "../../chunk-Q35PNFJ7.mjs";
14
- import "../../chunk-PV3Y7QGK.mjs";
10
+ import "../../chunk-LI2CTS5O.mjs";
11
+ import "../../chunk-TRM3KIHT.mjs";
12
+ import "../../chunk-HB5BKRMH.mjs";
13
+ import "../../chunk-FBNEIYSE.mjs";
14
+ import "../../chunk-LHWJQNLG.mjs";
15
15
  import "../../chunk-P7CEBZM6.mjs";
16
16
  import "../../chunk-LBTHZSBT.mjs";
17
- import "../../chunk-WDTXHLYM.mjs";
18
- import "../../chunk-S4CTM3UE.mjs";
17
+ import "../../chunk-XYSRRDBH.mjs";
18
+ import "../../chunk-FRCTOAKZ.mjs";
19
19
  import "../../chunk-NOOEKOWY.mjs";
20
20
  import "../../chunk-R4HCRDU5.mjs";
21
21
  import "../../chunk-AFML43VJ.mjs";