qt-ui-kit 1.0.112 → 1.0.114

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/index.js CHANGED
@@ -11177,16 +11177,22 @@ var require_lib7 = __commonJS({
11177
11177
  // src/index.ts
11178
11178
  var index_exports = {};
11179
11179
  __export(index_exports, {
11180
+ AccountInfoField: () => AccountInfoField,
11181
+ AccountInfoSection: () => AccountInfoSection,
11182
+ AccountIntegrationCard: () => account_integration_card_default,
11183
+ AccountIntegrationCardItem: () => account_integration_card_item_default,
11180
11184
  BaseIconName: () => BaseIconName,
11181
11185
  BrandIcon: () => BrandIcon,
11182
11186
  ChatBody: () => ChatBody,
11183
11187
  ColorVariants: () => ColorVariants,
11188
+ ConfirmationModal: () => ConfirmationModal,
11184
11189
  EmailBody: () => EmailBody,
11185
11190
  EventCard: () => EventCard,
11186
11191
  EventState: () => EventState,
11187
11192
  EventType: () => EventType,
11188
11193
  FilterBar: () => FilterBar,
11189
11194
  IntegrationService: () => IntegrationService,
11195
+ Modal: () => Modal,
11190
11196
  NavBar: () => NavBar,
11191
11197
  PreviewCard: () => PreviewCard,
11192
11198
  SearchBar: () => SearchBar,
@@ -15513,27 +15519,27 @@ function InsightsIcon2({
15513
15519
  return {
15514
15520
  viewBox: "0 0 16 16",
15515
15521
  path: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
15516
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M7.57056 8.23242C8.09352 9.12376 8.86065 9.86065 9.78247 10.3662C8.86107 10.8715 8.09453 11.6084 7.57153 12.499C7.04828 11.608 6.28062 10.8715 5.35864 10.3662C6.28064 9.86068 7.04747 9.12371 7.57056 8.23242Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.5" }),
15517
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M10.1426 4.60156C10.3709 4.92296 10.6514 5.20403 10.9727 5.43262C10.6514 5.66102 10.371 5.94244 10.1426 6.26367C9.91394 5.94224 9.63309 5.66111 9.31152 5.43262C9.63308 5.20398 9.91402 4.92318 10.1426 4.60156Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.3" }),
15518
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M6.28516 3.18848C6.43792 3.38705 6.61599 3.56487 6.81445 3.71777C6.61598 3.87054 6.438 4.04864 6.28516 4.24707C6.13225 4.04861 5.95444 3.87053 5.75586 3.71777C5.95443 3.56487 6.1323 3.38705 6.28516 3.18848Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.2" })
15522
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M7.57056 8.23242C8.09352 9.12376 8.86065 9.86065 9.78247 10.3662C8.86107 10.8715 8.09453 11.6084 7.57153 12.499C7.04828 11.608 6.28062 10.8715 5.35864 10.3662C6.28064 9.86068 7.04747 9.12371 7.57056 8.23242Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.5" }),
15523
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M10.1426 4.60156C10.3709 4.92296 10.6514 5.20403 10.9727 5.43262C10.6514 5.66102 10.371 5.94244 10.1426 6.26367C9.91394 5.94224 9.63309 5.66111 9.31152 5.43262C9.63308 5.20398 9.91402 4.92318 10.1426 4.60156Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.3" }),
15524
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M6.28516 3.18848C6.43792 3.38705 6.61599 3.56487 6.81445 3.71777C6.61598 3.87054 6.438 4.04864 6.28516 4.24707C6.13225 4.04861 5.95444 3.87053 5.75586 3.71777C5.95443 3.56487 6.1323 3.38705 6.28516 3.18848Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.2" })
15519
15525
  ] })
15520
15526
  };
15521
15527
  case 20:
15522
15528
  return {
15523
15529
  viewBox: "0 0 20 20",
15524
15530
  path: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
15525
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M14.999 14.248C16.2754 17.6222 19.0787 20.2871 22.6006 21.5205C19.0788 22.7541 16.2762 25.4195 15 28.793C13.7231 25.4191 10.9201 22.7539 7.39746 21.5205C10.9195 20.2871 13.7226 17.6216 14.999 14.248Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.5" }),
15531
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M14.999 14.248C16.2754 17.6222 19.0787 20.2871 22.6006 21.5205C19.0788 22.7541 16.2762 25.4195 15 28.793C13.7231 25.4191 10.9201 22.7539 7.39746 21.5205C10.9195 20.2871 13.7226 17.6216 14.999 14.248Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.5" }),
15526
15532
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M21 6.3418C21.7345 7.96846 23.0424 9.27714 24.6689 10.0117C23.0433 10.7457 21.7336 12.0531 20.999 13.6787C20.2642 12.0536 18.9559 10.7456 17.3301 10.0117C18.9568 9.27716 20.2657 7.96871 21 6.3418Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.3" }),
15527
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M12 3.25977C12.5821 4.45668 13.5524 5.42629 14.749 6.00879C13.5529 6.59057 12.5825 7.5608 12 8.75684C11.4177 7.56091 10.4473 6.59157 9.25098 6.00977C10.4479 5.42726 11.4177 4.45653 12 3.25977Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.2" })
15533
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M12 3.25977C12.5821 4.45668 13.5524 5.42629 14.749 6.00879C13.5529 6.59057 12.5825 7.5608 12 8.75684C11.4177 7.56091 10.4473 6.59157 9.25098 6.00977C10.4479 5.42726 11.4177 4.45653 12 3.25977Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.2" })
15528
15534
  ] })
15529
15535
  };
15530
15536
  case 24:
15531
15537
  return {
15532
15538
  viewBox: "0 0 24 24",
15533
15539
  path: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
15534
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M14.999 14.248C16.2754 17.6222 19.0787 20.2871 22.6006 21.5205C19.0788 22.7541 16.2762 25.4195 15 28.793C13.7231 25.4191 10.9201 22.7539 7.39746 21.5205C10.9195 20.2871 13.7226 17.6216 14.999 14.248Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.5" }),
15535
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M21 6.3418C21.7345 7.96846 23.0424 9.27714 24.6689 10.0117C23.0433 10.7457 21.7336 12.0531 20.999 13.6787C20.2642 12.0536 18.9559 10.7456 17.3301 10.0117C18.9568 9.27716 20.2657 7.96871 21 6.3418Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.3" }),
15536
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M12 3.25977C12.5821 4.45668 13.5524 5.42629 14.749 6.00879C13.5529 6.59057 12.5825 7.5608 12 8.75684C11.4177 7.56091 10.4473 6.59157 9.25098 6.00977C10.4479 5.42726 11.4177 4.45653 12 3.25977Z", fill: "#4F3ED0", stroke: "#4F3ED0", "stroke-width": "1.2" })
15540
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M14.999 14.248C16.2754 17.6222 19.0787 20.2871 22.6006 21.5205C19.0788 22.7541 16.2762 25.4195 15 28.793C13.7231 25.4191 10.9201 22.7539 7.39746 21.5205C10.9195 20.2871 13.7226 17.6216 14.999 14.248Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.5" }),
15541
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M21 6.3418C21.7345 7.96846 23.0424 9.27714 24.6689 10.0117C23.0433 10.7457 21.7336 12.0531 20.999 13.6787C20.2642 12.0536 18.9559 10.7456 17.3301 10.0117C18.9568 9.27716 20.2657 7.96871 21 6.3418Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.3" }),
15542
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M12 3.25977C12.5821 4.45668 13.5524 5.42629 14.749 6.00879C13.5529 6.59057 12.5825 7.5608 12 8.75684C11.4177 7.56091 10.4473 6.59157 9.25098 6.00977C10.4479 5.42726 11.4177 4.45653 12 3.25977Z", fill: "#4F3ED0", stroke: "#4F3ED0", strokeWidth: "1.2" })
15537
15543
  ] })
15538
15544
  };
15539
15545
  case 36:
@@ -16432,7 +16438,7 @@ function EmailBody({
16432
16438
  }
16433
16439
  const isHtmlContent = body && isHtml(body);
16434
16440
  const safeText = isHtmlContent ? import_dompurify.default.sanitize(body) : import_dompurify.default.sanitize(body?.replace(/\n/g, "<br>") || "");
16435
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col gap-4 bg-white p-4 rounded-b-2xl overflow-auto", children: [
16441
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col gap-4 bg-white p-4 rounded-b-2xl overflow-y-auto overflow-x-hidden", children: [
16436
16442
  /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
16437
16443
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MetadataRow, { metadata: [`Subject: ${subjectLine}`] }),
16438
16444
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MetadataRow, { metadata: [`To: ${to}`] }),
@@ -16443,27 +16449,35 @@ function EmailBody({
16443
16449
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MetadataRow, { metadata: [`Attachments: ${attachments}`] })
16444
16450
  ] }),
16445
16451
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("hr", { className: "text-qtneutral-500" }),
16446
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "body-small break-all whitespace-pre-line flex", children: body && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
16452
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "body-small break-words whitespace-pre-line w-full overflow-x-hidden", children: body && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
16447
16453
  "iframe",
16448
16454
  {
16449
16455
  srcDoc: `<!DOCTYPE html>
16450
16456
  <html>
16451
16457
  <head>
16458
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
16452
16459
  <link href="https://fonts.googleapis.com/css2?family=Inter&display=swap" rel="stylesheet">
16453
16460
  <style>
16461
+ html, body { max-width: 100%; overflow-x: hidden; }
16454
16462
  body {
16455
16463
  font-family: 'Inter', sans-serif;
16456
16464
  padding: 0;
16457
16465
  margin: 0;
16458
16466
  font-size: 14px;
16459
- word-break: break-all;
16467
+ line-height: 1.5;
16468
+ word-break: break-word;
16460
16469
  }
16470
+ img, svg, video, canvas { max-width: 100%; height: auto; }
16471
+ table { width: 100% !important; table-layout: fixed; border-collapse: collapse; }
16472
+ td, th { word-break: break-word; }
16473
+ pre, code { white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; max-width: 100%; overflow-x: auto; }
16474
+ a { word-break: break-all; }
16461
16475
  </style>
16462
16476
  </head>
16463
16477
  <body>${safeText}</body>
16464
16478
  </html>`,
16465
16479
  sandbox: "allow-popups",
16466
- style: { border: 0, width: "100%", height: "500px" },
16480
+ style: { border: 0, width: "100%", height: "500px", display: "block" },
16467
16481
  title: "Email Content"
16468
16482
  }
16469
16483
  ) })
@@ -17257,18 +17271,27 @@ function PlusLarge({
17257
17271
  // src/components/molecules/buttons/nav_button/filter_nav_button/filter_nav_button.tsx
17258
17272
  var import_clsx11 = __toESM(require("clsx"));
17259
17273
  var import_jsx_runtime44 = require("react/jsx-runtime");
17260
- function FilterNavButton({ icon, label, active, onClick }) {
17274
+ function FilterNavButton({ icon, label, active, onClick, totalItems }) {
17275
+ const formatTotalItems = (count) => {
17276
+ if (typeof count === "number" && count > 99) {
17277
+ return "99+";
17278
+ }
17279
+ return count;
17280
+ };
17281
+ const displayCount = formatTotalItems(totalItems);
17282
+ const shouldShowBadge = !!(displayCount && (typeof displayCount === "number" ? displayCount !== 0 : displayCount !== "0"));
17261
17283
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
17262
17284
  "div",
17263
17285
  {
17264
- className: "w-min h-min flex flex-none flex-col place-items-center gap-2",
17286
+ className: "w-min h-min flex flex-none flex-col place-items-center gap-0 relative pt-[15px]",
17265
17287
  onClick,
17266
17288
  children: [
17289
+ shouldShowBadge && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-[24px] h-[24px] rounded-full flex items-center justify-center bg-[#545454] text-white text-[8px] leading-none absolute right-[-7px] top-[2px] z-999 border-2 border-white", children: displayCount }),
17267
17290
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
17268
17291
  "div",
17269
17292
  {
17270
17293
  className: (0, import_clsx11.default)(
17271
- "w-[44px] h-[44px] flex flex-none flex-col place-items-center place-content-center rounded-xl hover:bg-qtneutral-200 hover:border-2 hover:border-qtneutral-500"
17294
+ "w-[44px] h-[44px] flex flex-none flex-col place-items-center place-content-center rounded-xl hover:bg-qtneutral-200 hover:border-2 hover:border-qtneutral-500 p-[0]"
17272
17295
  ),
17273
17296
  children: icon
17274
17297
  }
@@ -17293,7 +17316,8 @@ function FilterBar({ buttons }) {
17293
17316
  }
17294
17317
  ),
17295
17318
  label: "Fires",
17296
- onClick: buttons?.fires?.onClick
17319
+ onClick: buttons?.fires?.onClick,
17320
+ totalItems: buttons?.fires?.count
17297
17321
  }
17298
17322
  ),
17299
17323
  !buttons?.insights?.disabled && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
@@ -17306,7 +17330,8 @@ function FilterBar({ buttons }) {
17306
17330
  }
17307
17331
  ),
17308
17332
  label: "Q Insights",
17309
- onClick: buttons?.insights?.onClick
17333
+ onClick: buttons?.insights?.onClick,
17334
+ totalItems: buttons?.insights?.count
17310
17335
  }
17311
17336
  ),
17312
17337
  !buttons?.unread?.disabled && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
@@ -17320,7 +17345,8 @@ function FilterBar({ buttons }) {
17320
17345
  }
17321
17346
  ),
17322
17347
  label: "Unread",
17323
- onClick: buttons?.unread?.onClick
17348
+ onClick: buttons?.unread?.onClick,
17349
+ totalItems: buttons?.unread?.count
17324
17350
  }
17325
17351
  ),
17326
17352
  !buttons?.done?.disabled && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
@@ -17335,11 +17361,12 @@ function FilterBar({ buttons }) {
17335
17361
  }
17336
17362
  ),
17337
17363
  label: "Done",
17338
- onClick: buttons?.done?.onClick
17364
+ onClick: buttons?.done?.onClick,
17365
+ totalItems: buttons?.done?.count
17339
17366
  }
17340
17367
  ),
17341
17368
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("hr", { className: "w-full border-0.5 text-qtneutral-700" }),
17342
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex-1 min-h-0 w-full overflow-y-auto flex flex-col gap-4 overscroll-contain [scrollbar-gutter:stable] pl-1", children: [
17369
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex-1 min-h-0 w-full overflow-y-auto flex flex-col gap-4 overscroll-contain items-center min-w-[58px]", children: [
17343
17370
  !buttons?.slack?.disabled && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
17344
17371
  FilterNavButton,
17345
17372
  {
@@ -17434,6 +17461,238 @@ function FilterBar({ buttons }) {
17434
17461
  ] });
17435
17462
  }
17436
17463
 
17464
+ // src/components/molecules/modal/modal.tsx
17465
+ var import_react6 = require("react");
17466
+ var import_react_dom = require("react-dom");
17467
+ var import_clsx12 = __toESM(require("clsx"));
17468
+ var import_jsx_runtime46 = require("react/jsx-runtime");
17469
+ function Modal({
17470
+ isOpen,
17471
+ onClose,
17472
+ children,
17473
+ className,
17474
+ disableBackdropClick = false,
17475
+ disableEscapeKey = false
17476
+ }) {
17477
+ const modalRef = (0, import_react6.useRef)(null);
17478
+ const previousActiveElement = (0, import_react6.useRef)(null);
17479
+ (0, import_react6.useEffect)(() => {
17480
+ if (!isOpen || disableEscapeKey) return;
17481
+ const handleKeyDown = (e) => {
17482
+ if (e.key === "Escape") onClose();
17483
+ };
17484
+ document.addEventListener("keydown", handleKeyDown);
17485
+ return () => document.removeEventListener("keydown", handleKeyDown);
17486
+ }, [isOpen, onClose, disableEscapeKey]);
17487
+ (0, import_react6.useEffect)(() => {
17488
+ if (!isOpen) return;
17489
+ const originalOverflow = document.body.style.overflow;
17490
+ document.body.style.overflow = "hidden";
17491
+ previousActiveElement.current = document.activeElement;
17492
+ setTimeout(() => {
17493
+ const focusable = modalRef.current?.querySelectorAll(
17494
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
17495
+ );
17496
+ if (focusable && focusable.length > 0) {
17497
+ focusable[0].focus();
17498
+ }
17499
+ }, 0);
17500
+ return () => {
17501
+ document.body.style.overflow = originalOverflow;
17502
+ previousActiveElement.current?.focus();
17503
+ };
17504
+ }, [isOpen]);
17505
+ if (!isOpen) return null;
17506
+ const handleBackdropClick = () => {
17507
+ if (!disableBackdropClick) onClose();
17508
+ };
17509
+ return (0, import_react_dom.createPortal)(
17510
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
17511
+ "div",
17512
+ {
17513
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-qtneutral-900/50 animate-fade-in",
17514
+ onClick: handleBackdropClick,
17515
+ "aria-modal": "true",
17516
+ role: "dialog",
17517
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
17518
+ "div",
17519
+ {
17520
+ ref: modalRef,
17521
+ className: (0, import_clsx12.default)(
17522
+ "bg-white rounded-2xl p-6 max-w-[480px] w-full mx-4 modal-shadow animate-modal-scale",
17523
+ className
17524
+ ),
17525
+ onClick: (e) => e.stopPropagation(),
17526
+ role: "document",
17527
+ children
17528
+ }
17529
+ )
17530
+ }
17531
+ ),
17532
+ document.body
17533
+ );
17534
+ }
17535
+
17536
+ // src/components/molecules/modal/confirmation_modal.tsx
17537
+ var import_clsx13 = __toESM(require("clsx"));
17538
+ var import_jsx_runtime47 = require("react/jsx-runtime");
17539
+ var variantStyles = {
17540
+ danger: {
17541
+ confirm: "bg-qtred-500 text-white hover:bg-qtred-400",
17542
+ cancel: "bg-white text-qtpurple-500 border-2 border-qtpurple-500 hover:bg-qtpurple-200"
17543
+ },
17544
+ primary: {
17545
+ confirm: "bg-qtpurple-500 text-white hover:bg-qtpurple-600",
17546
+ cancel: "bg-white text-qtpurple-500 border-2 border-qtpurple-500 hover:bg-qtpurple-200"
17547
+ },
17548
+ warning: {
17549
+ confirm: "bg-qtorange-400 text-qtneutral-900 hover:bg-qtorange-300",
17550
+ cancel: "bg-white text-qtpurple-500 border-2 border-qtpurple-500 hover:bg-qtpurple-200"
17551
+ }
17552
+ };
17553
+ function ConfirmationModal({
17554
+ isOpen,
17555
+ onClose,
17556
+ onConfirm,
17557
+ title,
17558
+ message: message2,
17559
+ confirmLabel = "Confirm",
17560
+ cancelLabel = "Cancel",
17561
+ variant = "primary",
17562
+ children
17563
+ }) {
17564
+ const buttonBase = "px-4 py-2.5 rounded-lg label-1-bold transition-colors";
17565
+ const styles = variantStyles[variant];
17566
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Modal, { isOpen, onClose, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-col gap-6", children: [
17567
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h2", { className: "label-1-bold text-qtneutral-900", children: title }),
17568
+ message2 && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "body-small text-qtneutral-800 whitespace-pre-line", children: typeof message2 === "string" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: message2 }) : message2 }),
17569
+ children,
17570
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex gap-4 justify-end", children: [
17571
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
17572
+ "button",
17573
+ {
17574
+ onClick: onConfirm,
17575
+ className: (0, import_clsx13.default)(buttonBase, styles.confirm),
17576
+ children: confirmLabel
17577
+ }
17578
+ ),
17579
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
17580
+ "button",
17581
+ {
17582
+ onClick: onClose,
17583
+ className: (0, import_clsx13.default)(buttonBase, styles.cancel, "px-8"),
17584
+ children: cancelLabel
17585
+ }
17586
+ )
17587
+ ] })
17588
+ ] }) });
17589
+ }
17590
+
17591
+ // src/components/organisms/account/info/account_info_field.tsx
17592
+ var import_jsx_runtime48 = require("react/jsx-runtime");
17593
+ function AccountInfoField({
17594
+ label,
17595
+ value,
17596
+ className = ""
17597
+ }) {
17598
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: `flex-1 flex flex-col flex-wrap gap-2 ${className}`, children: [
17599
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("label", { className: "body-bold text-qtneutral-900", children: label }),
17600
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("p", { className: "body text-qtneutral-900", children: value || "-" })
17601
+ ] });
17602
+ }
17603
+
17604
+ // src/components/organisms/account/info/account_info_section.tsx
17605
+ var import_jsx_runtime49 = require("react/jsx-runtime");
17606
+ function AccountInfoSection({
17607
+ title,
17608
+ children
17609
+ }) {
17610
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-col flex-wrap gap-4 pt-6 pb-6", children: [
17611
+ title && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "body-bold text-qtneutral-900", children: title }),
17612
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "user-data-row", children })
17613
+ ] });
17614
+ }
17615
+
17616
+ // src/components/organisms/account/integrations/account_integration_card.tsx
17617
+ var import_react7 = __toESM(require("react"));
17618
+ var import_clsx14 = __toESM(require("clsx"));
17619
+ var import_jsx_runtime50 = require("react/jsx-runtime");
17620
+ var AccountIntegrationCard = import_react7.default.memo(function AccountIntegrationCard2({
17621
+ integrationName,
17622
+ children,
17623
+ onConnect,
17624
+ disabled,
17625
+ ready,
17626
+ icon,
17627
+ limit
17628
+ }) {
17629
+ const count = Array.isArray(children) ? children.length : children ? 1 : 0;
17630
+ const isLimitReached = count >= limit;
17631
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "card-your-apps flex flex-col items-center gap-4 rounded-lg border-2 border-qtneutral-400 bg-white p-4", children: [
17632
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex w-full items-center justify-between", children: [
17633
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-3", children: [
17634
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
17635
+ "div",
17636
+ {
17637
+ className: (0, import_clsx14.default)(
17638
+ "w-[44px] h-[44px] flex items-center justify-center transition-opacity border-none bg-transparent p-0",
17639
+ !ready && "opacity-50 cursor-not-allowed",
17640
+ disabled && "grayscale border-2 border-green-700 bg-green-100"
17641
+ ),
17642
+ "aria-label": `Integrate with ${integrationName}`,
17643
+ children: icon
17644
+ }
17645
+ ),
17646
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
17647
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-sm font-bold", children: integrationName }),
17648
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "body-small text-qtneutral-800", children: count > 0 ? `${count} of ${limit} connected` : "No accounts connected" })
17649
+ ] })
17650
+ ] }),
17651
+ !isLimitReached && ready && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
17652
+ "button",
17653
+ {
17654
+ onClick: onConnect,
17655
+ disabled: disabled || !ready,
17656
+ className: (0, import_clsx14.default)(
17657
+ "label-1-bold text-qtpurple-600 bg-transparent border-none p-0 cursor-pointer hover:text-qtpurple-500",
17658
+ (disabled || !ready) && "opacity-50 cursor-not-allowed pointer-events-none"
17659
+ ),
17660
+ children: count > 0 ? `+ Connect Another` : `+ Connect`
17661
+ }
17662
+ )
17663
+ ] }),
17664
+ count > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "flex w-full flex-col gap-2.5", children })
17665
+ ] });
17666
+ });
17667
+ var account_integration_card_default = AccountIntegrationCard;
17668
+
17669
+ // src/components/organisms/account/integrations/account_integration_card_item.tsx
17670
+ var import_react8 = __toESM(require("react"));
17671
+ var import_jsx_runtime51 = require("react/jsx-runtime");
17672
+ var AccountIntegrationCardItem = import_react8.default.memo(
17673
+ function AccountIntegrationCardItem2({
17674
+ name,
17675
+ onDisconnect
17676
+ }) {
17677
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex flex-row flex-nowrap justify-between items-center bg-qtneutral-100 p-4 border border-qtpurple-500 rounded-lg", children: [
17678
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "label-1-bold text-qtneutral-900", children: name }),
17679
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
17680
+ "button",
17681
+ {
17682
+ type: "button",
17683
+ className: "label-2 text-qtred-500 underline bg-transparent border-none p-0 cursor-pointer hover:text-qtred-400",
17684
+ onClick: (e) => {
17685
+ e.stopPropagation();
17686
+ onDisconnect();
17687
+ },
17688
+ children: "Disconnect"
17689
+ }
17690
+ )
17691
+ ] });
17692
+ }
17693
+ );
17694
+ var account_integration_card_item_default = AccountIntegrationCardItem;
17695
+
17437
17696
  // src/types/events.ts
17438
17697
  var EventState = /* @__PURE__ */ ((EventState2) => {
17439
17698
  EventState2["NEW"] = "new";
@@ -17544,16 +17803,22 @@ This is a *markdown* **example**.
17544
17803
  ];
17545
17804
  // Annotate the CommonJS export names for ESM import in node:
17546
17805
  0 && (module.exports = {
17806
+ AccountInfoField,
17807
+ AccountInfoSection,
17808
+ AccountIntegrationCard,
17809
+ AccountIntegrationCardItem,
17547
17810
  BaseIconName,
17548
17811
  BrandIcon,
17549
17812
  ChatBody,
17550
17813
  ColorVariants,
17814
+ ConfirmationModal,
17551
17815
  EmailBody,
17552
17816
  EventCard,
17553
17817
  EventState,
17554
17818
  EventType,
17555
17819
  FilterBar,
17556
17820
  IntegrationService,
17821
+ Modal,
17557
17822
  NavBar,
17558
17823
  PreviewCard,
17559
17824
  SearchBar,