zignal-stencil-library 1.1.111 → 1.1.113
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/cjs/autocomplete-address_43.cjs.entry.js +81 -77
- package/dist/cjs/quick-message-app.cjs.entry.js +1 -1
- package/dist/collection/components/autocomplete-address/autocomplete-address.css +1 -1
- package/dist/collection/components/autocomplete-multiple-select/autocomplete-multiple-select.css +1 -1
- package/dist/collection/components/autocomplete-select/autocomplete-select.css +1 -1
- package/dist/collection/components/channel-box/channel-box.css +1 -1
- package/dist/collection/components/chat-app/chat-app.css +1 -1
- package/dist/collection/components/chat-app/chat-app.js +1 -1
- package/dist/collection/components/chat-app/chat-app.js.map +1 -1
- package/dist/collection/components/chat-header/chat-header.css +1 -1
- package/dist/collection/components/chat-input/chat-input.css +1 -1
- package/dist/collection/components/checkbox-list/checkbox-list.css +1 -1
- package/dist/collection/components/dialog-bill-editor/dialog-bill-editor.css +1 -1
- package/dist/collection/components/dialog-editor/dialog-editor.css +1 -1
- package/dist/collection/components/dialog-preview-media/dialog-preview-media.css +1 -1
- package/dist/collection/components/dialog-search/dialog-search.css +1 -1
- package/dist/collection/components/menu-chat-channel/menu-chat-channel.css +1 -1
- package/dist/collection/components/menu-chat-type/menu-chat-type.css +1 -1
- package/dist/collection/components/menu-list/menu-list.css +1 -1
- package/dist/collection/components/message-box/message-box.css +1 -1
- package/dist/collection/components/message-content/message-content.css +1 -1
- package/dist/collection/components/message-item/message-item.css +1 -1
- package/dist/collection/components/message-media/message-media.css +1 -1
- package/dist/collection/components/profile-history/profile-history.css +1 -1
- package/dist/collection/components/profile-history/profile-history.js +3 -3
- package/dist/collection/components/profile-history/profile-history.js.map +1 -1
- package/dist/collection/components/profile-info/profile-info.css +1 -1
- package/dist/collection/components/profile-info/profile-info.js +2 -3
- package/dist/collection/components/profile-info/profile-info.js.map +1 -1
- package/dist/collection/components/profile-info/user-info-section.js +15 -10
- package/dist/collection/components/profile-info/user-info-section.js.map +1 -1
- package/dist/collection/components/profile-media/profile-media.css +1 -1
- package/dist/collection/components/profile-media/profile-media.js +1 -1
- package/dist/collection/components/profile-tabs/profile-tabs.css +1 -1
- package/dist/collection/components/profile-tabs/profile-tabs.js +2 -2
- package/dist/collection/components/quick-message-add-template/quick-message-add-template.css +1 -1
- package/dist/collection/components/quick-message-add-template/quick-message-add-template.js +3 -3
- package/dist/collection/components/quick-message-add-template/quick-message-text-content.js +1 -1
- package/dist/collection/components/quick-message-app/quick-message-app.js +1 -1
- package/dist/collection/components/quick-message-file/quick-message-file.css +1 -1
- package/dist/collection/components/quick-message-file/quick-message-file.js +1 -1
- package/dist/collection/components/quick-message-image/quick-message-image.css +1 -1
- package/dist/collection/components/quick-message-image/quick-message-image.js +1 -1
- package/dist/collection/components/quick-message-modal/quick-message-modal.css +1 -1
- package/dist/collection/components/quick-message-modal/quick-message-modal.js +1 -1
- package/dist/collection/components/quick-message-template/quick-message-template.css +1 -1
- package/dist/collection/components/quick-message-template/quick-message-template.js +3 -3
- package/dist/collection/components/search-box/search-box.css +1 -1
- package/dist/collection/components/search-box/search-box.js +1 -1
- package/dist/collection/components/status-badge/status-badge.css +1 -1
- package/dist/collection/components/status-badge/status-badge.js +2 -2
- package/dist/collection/components/tag-list/tag-list.css +1 -1
- package/dist/collection/components/tag-list/tag-list.js +1 -1
- package/dist/collection/components/tag-or-status-item/tag-or-status-item.css +1 -1
- package/dist/collection/components/tag-or-status-item/tag-or-status-item.js +2 -2
- package/dist/collection/components/tag-popper/tag-popper.css +1 -1
- package/dist/collection/components/tag-popper/tag-popper.js +2 -2
- package/dist/collection/components/typography-clamp/typography-clamp.css +1 -1
- package/dist/collection/components/typography-clamp/typography-clamp.js +2 -2
- package/dist/collection/components/z-avatar/z-avatar.css +1 -1
- package/dist/collection/components/z-dialog/z-dialog.css +1 -1
- package/dist/components/autocomplete-address.js +1 -1
- package/dist/components/autocomplete-multiple-select.js +1 -1
- package/dist/components/autocomplete-select.js +1 -1
- package/dist/components/channel-box.js +1 -1
- package/dist/components/chat-app.js +40 -40
- package/dist/components/chat-app.js.map +1 -1
- package/dist/components/chat-header.js +1 -1
- package/dist/components/chat-input.js +1 -1
- package/dist/components/checkbox-list.js +1 -1
- package/dist/components/dialog-bill-editor.js +1 -1
- package/dist/components/dialog-editor.js +1 -1
- package/dist/components/dialog-preview-media.js +1 -1
- package/dist/components/dialog-search.js +1 -1
- package/dist/components/menu-chat-channel.js +1 -1
- package/dist/components/menu-chat-type.js +1 -1
- package/dist/components/menu-list.js +1 -1
- package/dist/components/message-box.js +1 -1
- package/dist/components/message-content.js +1 -1
- package/dist/components/message-item.js +1 -1
- package/dist/components/message-media.js +1 -1
- package/dist/components/p-3XaRlwMZ.js +161 -0
- package/dist/components/p-3XaRlwMZ.js.map +1 -0
- package/dist/components/{p-CgTZtTmT.js → p-B19Afqpk.js} +19 -19
- package/dist/components/{p-CgTZtTmT.js.map → p-B19Afqpk.js.map} +1 -1
- package/dist/components/{p--gZqhhLL.js → p-B2ay8yxa.js} +3 -3
- package/dist/components/{p--gZqhhLL.js.map → p-B2ay8yxa.js.map} +1 -1
- package/dist/components/{p-tkW40LmD.js → p-BHr52dZJ.js} +4 -4
- package/dist/components/{p-tkW40LmD.js.map → p-BHr52dZJ.js.map} +1 -1
- package/dist/components/{p-DGC5KYEl.js → p-BVLGLAQM.js} +9 -9
- package/dist/components/{p-DGC5KYEl.js.map → p-BVLGLAQM.js.map} +1 -1
- package/dist/components/{p-C0MuZqgR.js → p-Baq4FLMS.js} +3 -3
- package/dist/components/{p-C0MuZqgR.js.map → p-Baq4FLMS.js.map} +1 -1
- package/dist/components/{p-BrKDVlCP.js → p-Be5X3t5w.js} +3 -3
- package/dist/components/{p-BrKDVlCP.js.map → p-Be5X3t5w.js.map} +1 -1
- package/dist/components/{p-kbTcbS6Y.js → p-BsV8XOdl.js} +18 -18
- package/dist/components/{p-kbTcbS6Y.js.map → p-BsV8XOdl.js.map} +1 -1
- package/dist/components/{p-Cy-sLMQG.js → p-Bt12179Z.js} +4 -4
- package/dist/components/{p-Cy-sLMQG.js.map → p-Bt12179Z.js.map} +1 -1
- package/dist/components/{p-htsjbc2A.js → p-BuZJtX19.js} +3 -3
- package/dist/components/{p-htsjbc2A.js.map → p-BuZJtX19.js.map} +1 -1
- package/dist/components/{p-3jt5iBgO.js → p-BzogxNIa.js} +3 -3
- package/dist/components/{p-3jt5iBgO.js.map → p-BzogxNIa.js.map} +1 -1
- package/dist/components/p-CJAs00I8.js +161 -0
- package/dist/components/{p-mVYojO3m.js.map → p-CJAs00I8.js.map} +1 -1
- package/dist/components/p-CS4KatwS.js +79 -0
- package/dist/components/{p-DHM0YbIt.js.map → p-CS4KatwS.js.map} +1 -1
- package/dist/components/{p-B7CuMj9y.js → p-C_rJguGq.js} +4 -4
- package/dist/components/{p-B7CuMj9y.js.map → p-C_rJguGq.js.map} +1 -1
- package/dist/components/p-CcPJkDzX.js +35 -0
- package/dist/components/{p-Bj6H7JrX.js.map → p-CcPJkDzX.js.map} +1 -1
- package/dist/components/{p-Cw5rK8nZ.js → p-ChfkflWC.js} +5 -5
- package/dist/components/{p-Cw5rK8nZ.js.map → p-ChfkflWC.js.map} +1 -1
- package/dist/components/{p-maYXfa3o.js → p-Ci1wlgXw.js} +5 -5
- package/dist/components/{p-maYXfa3o.js.map → p-Ci1wlgXw.js.map} +1 -1
- package/dist/components/{p-DG0KCn3k.js → p-CrvmYhih.js} +4 -4
- package/dist/components/{p-DG0KCn3k.js.map → p-CrvmYhih.js.map} +1 -1
- package/dist/components/p-CvyJbTb9.js +145 -0
- package/dist/components/p-CvyJbTb9.js.map +1 -0
- package/dist/components/{p-My1l3OBd.js → p-D0EnDE_o.js} +3 -3
- package/dist/components/{p-My1l3OBd.js.map → p-D0EnDE_o.js.map} +1 -1
- package/dist/components/{p-p3q1OJSb.js → p-D5h0nLE5.js} +9 -9
- package/dist/components/{p-p3q1OJSb.js.map → p-D5h0nLE5.js.map} +1 -1
- package/dist/components/{p-D-75lLYc.js → p-DN1ugCly.js} +3 -3
- package/dist/components/{p-D-75lLYc.js.map → p-DN1ugCly.js.map} +1 -1
- package/dist/components/{p-av8MQL9x.js → p-DW8sC5rc.js} +5 -5
- package/dist/components/{p-av8MQL9x.js.map → p-DW8sC5rc.js.map} +1 -1
- package/dist/components/{p-Dv5lS2bl.js → p-DkVyQai5.js} +7 -7
- package/dist/components/{p-Dv5lS2bl.js.map → p-DkVyQai5.js.map} +1 -1
- package/dist/components/{p-drInZwO0.js → p-DrW4vKrV.js} +4 -4
- package/dist/components/{p-drInZwO0.js.map → p-DrW4vKrV.js.map} +1 -1
- package/dist/components/{p-CBGDhDhT.js → p-DuPV1DzK.js} +6 -6
- package/dist/components/{p-CBGDhDhT.js.map → p-DuPV1DzK.js.map} +1 -1
- package/dist/components/{p-8qMMsvE2.js → p-Dvfar-8p.js} +5 -5
- package/dist/components/{p-8qMMsvE2.js.map → p-Dvfar-8p.js.map} +1 -1
- package/dist/components/{p-CjdpcyF4.js → p-Dx0yXDO_.js} +8 -8
- package/dist/components/{p-CjdpcyF4.js.map → p-Dx0yXDO_.js.map} +1 -1
- package/dist/components/{p-D-3sn9sH.js → p-Dz4G6Q1l.js} +3 -3
- package/dist/components/{p-D-3sn9sH.js.map → p-Dz4G6Q1l.js.map} +1 -1
- package/dist/components/p-EGKFhNRS.js +127 -0
- package/dist/components/{p-BOrhSlbo.js.map → p-EGKFhNRS.js.map} +1 -1
- package/dist/components/{p-C9OqpwzA.js → p-F1r0ydKy.js} +15 -16
- package/dist/components/p-F1r0ydKy.js.map +1 -0
- package/dist/components/{p-Bo_qpOg-.js → p-LQISNowV.js} +3 -3
- package/dist/components/{p-Bo_qpOg-.js.map → p-LQISNowV.js.map} +1 -1
- package/dist/components/{p-C7n7EjKD.js → p-ZXZKAhiz.js} +3 -3
- package/dist/components/{p-C7n7EjKD.js.map → p-ZXZKAhiz.js.map} +1 -1
- package/dist/components/{p-DCmuKByr.js → p-jGwKbBta.js} +5 -5
- package/dist/components/{p-DCmuKByr.js.map → p-jGwKbBta.js.map} +1 -1
- package/dist/components/{p-CH39HrFZ.js → p-nEOSV6qt.js} +4 -4
- package/dist/components/{p-CH39HrFZ.js.map → p-nEOSV6qt.js.map} +1 -1
- package/dist/components/{p-XunATCgp.js → p-sBGx8qre.js} +7 -7
- package/dist/components/{p-XunATCgp.js.map → p-sBGx8qre.js.map} +1 -1
- package/dist/components/{p-C-hvo0Uo.js → p-ufmeP0E5.js} +8 -8
- package/dist/components/{p-C-hvo0Uo.js.map → p-ufmeP0E5.js.map} +1 -1
- package/dist/components/{p-CeHDqun7.js → p-yhRJRzUn.js} +3 -3
- package/dist/components/{p-CeHDqun7.js.map → p-yhRJRzUn.js.map} +1 -1
- package/dist/components/profile-history.js +1 -1
- package/dist/components/profile-info.js +1 -1
- package/dist/components/profile-media.js +1 -1
- package/dist/components/profile-tabs.js +1 -1
- package/dist/components/quick-message-add-template.js +1 -1
- package/dist/components/quick-message-app.js +7 -7
- package/dist/components/quick-message-file.js +1 -1
- package/dist/components/quick-message-image.js +1 -1
- package/dist/components/quick-message-modal.js +1 -1
- package/dist/components/quick-message-template.js +1 -1
- package/dist/components/quick-message-text-content.js +1 -1
- package/dist/components/search-box.js +1 -1
- package/dist/components/status-badge.js +1 -1
- package/dist/components/summarize-message-section.js +1 -1
- package/dist/components/tag-list.js +1 -1
- package/dist/components/tag-or-status-item.js +1 -1
- package/dist/components/tag-popper.js +1 -1
- package/dist/components/typography-clamp.js +1 -1
- package/dist/components/user-info-section.js +1 -1
- package/dist/components/z-avatar.js +1 -1
- package/dist/components/z-dialog.js +1 -1
- package/dist/esm/autocomplete-address_43.entry.js +81 -77
- package/dist/esm/quick-message-app.entry.js +1 -1
- package/dist/zignal-stencil-library/{p-c349823b.entry.js → p-3cea211f.entry.js} +168 -168
- package/dist/zignal-stencil-library/p-3cea211f.entry.js.map +1 -0
- package/dist/zignal-stencil-library/{p-4976f186.entry.js → p-cdcb0c65.entry.js} +2 -2
- package/dist/zignal-stencil-library/zignal-stencil-library.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-BNblLfcs.js +0 -161
- package/dist/components/p-BNblLfcs.js.map +0 -1
- package/dist/components/p-BOrhSlbo.js +0 -127
- package/dist/components/p-Bj6H7JrX.js +0 -35
- package/dist/components/p-C9OqpwzA.js.map +0 -1
- package/dist/components/p-DHM0YbIt.js +0 -79
- package/dist/components/p-Dnb_md64.js +0 -140
- package/dist/components/p-Dnb_md64.js.map +0 -1
- package/dist/components/p-mVYojO3m.js +0 -161
- package/dist/zignal-stencil-library/p-c349823b.entry.js.map +0 -1
- /package/dist/zignal-stencil-library/{p-4976f186.entry.js.map → p-cdcb0c65.entry.js.map} +0 -0
|
@@ -5,14 +5,14 @@ import { c as configStore } from './p-x8gJGTdZ.js';
|
|
|
5
5
|
import { u as useTranslation } from './p-GPPFvEYq.js';
|
|
6
6
|
import { I as Icon } from './p-CErcZoEr.js';
|
|
7
7
|
import { h as handleError, o as openDialog } from './p-C2YAe0Ke.js';
|
|
8
|
-
import { d as defineCustomElement$6 } from './p-
|
|
8
|
+
import { d as defineCustomElement$6 } from './p-sBGx8qre.js';
|
|
9
9
|
import { d as defineCustomElement$5 } from './p-m4eaolum.js';
|
|
10
10
|
import { d as defineCustomElement$4 } from './p-B6HiV-kQ.js';
|
|
11
11
|
import { d as defineCustomElement$3 } from './p-5z3Oz7nB.js';
|
|
12
|
-
import { d as defineCustomElement$2 } from './p-
|
|
12
|
+
import { d as defineCustomElement$2 } from './p-D0EnDE_o.js';
|
|
13
13
|
import { d as defineCustomElement$1 } from './p-CbjDD_ZV.js';
|
|
14
14
|
|
|
15
|
-
const quickMessageTemplateCss = "@layer base{*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-space-x-reverse:0;--tw-drop-shadow-alpha:100%;border:0 solid;box-sizing:border-box;margin:0;padding:0}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-space-x-reverse:0;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-space-y-reverse:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:host,:root{--container-xl:36rem;--container-3xs:16rem;--color-yellow-300:oklch(90.5% .182 98.111);--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--container-md:28rem;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--color-yellow-500:oklch(79.5% .184 86.047);--container-xs:20rem;--container-sm:24rem;--color-red-700:oklch(50.5% .213 27.518);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-blue-500:oklch(62.3% .214 259.815);--color-pink-100:oklch(94.8% .028 342.258);--font-weight-bold:700;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-blue-600:oklch(54.6% .245 262.881);--color-slate-500:oklch(55.4% .046 257.417);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:\"Kanit\",var(--default-font);--default-mono-font-family:var(--font-mono);--default-font:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--color-primary:#e02848;--color-secondary:#023761;--color-background:#fff;--color-primary-dark:#b50f30;--color-secondary-dark:#fff;--color-background-dark:#23292d}}@layer base{::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent;line-height:1.5}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-meridiem-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-color:oklch(55.1% .027 264.364);border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}:is([type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);border-color:oklch(54.6% .245 262.881);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}input::placeholder,textarea::placeholder{color:oklch(55.1% .027 264.364);opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}select{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='oklch(55.1%25 0.027 264.364)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;print-color-adjust:exact}[multiple],[size]:where(select:not([size=\"1\"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;print-color-adjust:unset}[type=checkbox],[type=radio]{appearance:none;color:oklch(54.6% .245 262.881);print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-color:oklch(55.1% .027 264.364);border-width:1px;display:inline-block;flex-shrink:0;height:1rem;padding:0;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0'/%3E%3C/svg%3E\")}[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}}@layer components{.dialog-backdrop{align-items:center;background-color:#0006;display:flex;inset:calc(var(--spacing)*0);justify-content:center;position:fixed;z-index:50}@supports (color:color-mix(in lab,red,red)){.dialog-backdrop{background-color:color-mix(in oklab,var(--color-black)40%,transparent);background-color:color-mix(in srgb,#00040%,transparent)}}.chat-item{border-radius:var(--radius-xl);cursor:pointer;margin-block:calc(var(--spacing)*1);margin-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);align-items:flex-start;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative}:where(.chat-item>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-pin{position:absolute;right:-12px;top:calc(var(--spacing)*1)}.chat-item .chat-item-pin-icon{fill:currentColor;height:calc(var(--spacing)*3);rotate:45deg;width:calc(var(--spacing)*3)}.chat-item .chat-item-content-container{display:flex;flex-direction:row;width:100%}:where(.chat-item .chat-item-content-container>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-avatar-wrapper{align-self:center;flex-shrink:0;position:relative}.chat-item .chat-item-avatar-badge{bottom:-2px;position:absolute;right:-2px}.chat-item .chat-item-content-wrapper{min-height:calc(var(--spacing)*18);width:100%}.chat-item .chat-item-content-main{align-items:center;display:flex}:where(.chat-item .chat-item-content-main>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}.chat-item .chat-item-content-main-image{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.chat-item .chat-item-content-main-name{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-main-time{color:var(--color-gray-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-secondary{align-items:flex-start;display:flex;flex-direction:row;width:100%}.chat-item .chat-item-content-secondary-nickname{font-size:var(--text-base);-webkit-line-clamp:1;line-height:var(--tw-leading,var(--text-base--line-height));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-secondary-message{color:var(--color-gray-600);font-size:var(--text-sm);-webkit-line-clamp:1;line-height:var(--tw-leading,var(--text-sm--line-height));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-unread{background-color:var(--color-primary);border-radius:3.40282e+38px;color:var(--color-white);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-unread-mark{display:inline-block;height:calc(var(--spacing)*2.5);width:calc(var(--spacing)*2.5)}.chat-item .chat-item-content-unread-count{padding-block:calc(var(--spacing)*.5);padding-inline:calc(var(--spacing)*2)}.z-icon-button{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-icon-button:focus{--tw-outline-style:none;outline-style:none}.z-icon-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-icon-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-icon-button-disabled{cursor:not-allowed;opacity:.5}.z-button{cursor:pointer;--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-button:focus{--tw-outline-style:none;outline-style:none}.z-button-small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2)}.z-button-medium{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*3)}.z-button-large{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4)}.z-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px;color:var(--color-primary)}.z-button-disabled{cursor:not-allowed;opacity:.5}.z-button-text{margin-inline:calc(var(--spacing)*2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.z-input-area-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input-area-input,.z-input-area-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input-area-input{border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-width:1px;width:100%}.z-input-area-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-area-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-input-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input,.z-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input{border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-radius:3.40282e+38px;border-width:1px;width:100%}.z-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-select-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-tag-or-status-item{align-items:center;border-radius:var(--radius-2xl);gap:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:inline-flex}.z-tag-or-status-item .z-tag-or-status-item-name{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));max-width:calc(var(--spacing)*20)}.z-tag-or-status-item .z-tag-or-status-item-icon{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.z-context-input{align-items:center;display:flex;flex-direction:row;margin-block:calc(var(--spacing)*1)}.z-context-input-key{border-bottom-left-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-top-left-radius:var(--radius-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);width:100%;--tw-ring-color:var(--color-primary);border-width:1px;flex:1}.z-context-input-key:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-context-input-value{border-bottom-right-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-top-right-radius:var(--radius-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));min-height:2.4rem;padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);width:100%;--tw-ring-color:var(--color-primary);border-width:1px;flex:2}.z-context-input-value:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-text-with-link{color:var(--color-blue-600);text-decoration-line:underline}}@layer utilities{.contents{display:contents}.px-4{padding-inline:calc(var(--spacing)*4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.scroll-container::-webkit-scrollbar{background:#0000001a;height:8px;width:8px}.scroll-container:active::-webkit-scrollbar,.scroll-container:hover::-webkit-scrollbar{background:#0003}.scroll-container:active::-webkit-scrollbar-thumb,.scroll-container:hover::-webkit-scrollbar-thumb{background:#0006;border-radius:4px}.z-text-light{color:var(--color-black)}.z-text-dark{color:var(--color-white)}.z-text-primary-light{color:var(--color-primary)}.z-text-primary-dark{color:var(--color-primary-dark)}.z-text-gray-light{color:var(--color-gray-500)}.z-text-gray-dark{color:var(--color-gray-300)}.z-text-background-light{color:var(--color-background)}.z-text-background-dark{color:var(--color-background-dark)}.z-border-light{border-color:var(--color-black)}.z-border-dark{border-color:var(--color-white)}.z-border-primary-light{border-color:var(--color-primary)}.z-border-primary-dark{border-color:var(--color-primary-dark)}.z-border-divider-light{border-color:var(--color-gray-400)}.z-border-divider-dark{border-color:var(--color-gray-300)}.z-search-input-background-light{background-color:var(--color-gray-200)}.z-search-input-background-dark{background-color:var(--color-gray-500)}.z-chat-input-background-light{background-color:var(--color-white)}.z-chat-input-background-dark{background-color:var(--color-gray-700)}.z-placeholder-light::placeholder{color:var(--color-gray-500)}.z-placeholder-dark::placeholder{color:var(--color-gray-200)}.z-background-primary-light{background-color:var(--color-primary)}.z-background-primary-dark{background-color:var(--color-primary-dark)}.z-background-light{background-color:var(--color-background)}.z-background-dark{background-color:var(--color-background-dark)}.z-paper-light{background-color:var(--color-gray-100)}.z-paper-dark{background-color:var(--color-gray-700)}.z-bg-gray-light{background-color:var(--color-gray-500)}.z-bg-gray-dark{background-color:var(--color-gray-300)}.z-width-100{width:100%}.z-width-90{width:90%}.z-width-75{width:75%}.z-width-50{width:50%}.z-width-25{width:25%}.z-width-0{width:0}.z-animate-width{transition-duration:.5s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.z-animate-grid-template-cols{transition:grid-template-rows .5s}[type=checkbox]{background-color:var(--color-gray-300);border-color:var(--color-gray-300);border-radius:4px;cursor:pointer}[type=checkbox]:checked,[type=checkbox]:indeterminate{background-color:var(--color-primary);border-color:var(--color-primary);border-radius:4px;cursor:pointer}[type=checkbox]:focus{offset:0;outline-offset:0;--tw-ring-color:var(--color-primary);outline:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.grid-cols-1{grid-template-columns:1fr}.grid-cols-1_3{grid-template-columns:1fr 3fr}.grid-cols-1_2_1{grid-template-columns:1fr 2fr 1fr}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-3{top:calc(var(--spacing)*3)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-3{bottom:calc(var(--spacing)*3)}.left-3{left:calc(var(--spacing)*3)}.z-10{z-index:10}.z-\\[80\\]{z-index:80}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-6{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.size-8{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.size-12{height:calc(var(--spacing)*12);width:calc(var(--spacing)*12)}.size-14{height:calc(var(--spacing)*14);width:calc(var(--spacing)*14)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-\\[180px\\]{height:180px}.h-\\[220px\\]{height:220px}.h-\\[280px\\]{height:280px}.h-full{height:100%}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-\\[200px\\]{width:200px}.w-\\[250px\\]{width:250px}.w-full{width:100%}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[18px\\]{border-radius:18px}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\\[1\\.5px\\]{border-bottom-style:var(--tw-border-style);border-bottom-width:1.5px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-current{border-color:currentColor}.border-red-500{border-color:var(--color-red-500)}.bg-slate-900\\/40{background-color:#0f172b66}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\\/40{background-color:color-mix(in oklab,var(--color-slate-900)40%,transparent)}}.bg-slate-900\\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\\/60{background-color:color-mix(in oklab,var(--color-slate-900)60%,transparent)}}.bg-transparent{background-color:#0000}.bg-white\\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\\/90{background-color:color-mix(in srgb,#fff90%,transparent);background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pr-16{padding-right:calc(var(--spacing)*16)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pl-2{padding-left:calc(var(--spacing)*2)}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[13px\\]{font-size:13px}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-red-500{color:var(--color-red-500)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow,.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.ring-primary{--tw-ring-color:var(--color-primary)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-all,.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-opacity{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.focus\\:border-red-500:focus{border-color:var(--color-red-500)}.focus\\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\\:ring-0:focus,.focus\\:ring-2:focus{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\\:ring-red-200:focus{--tw-ring-color:var(--color-red-200)}.focus\\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\\:ring-slate-200:focus{--tw-ring-color:var(--color-slate-200)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}}@keyframes spin{to{transform:rotate(1turn)}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.top-1\\/2{top:50%}.right-2{right:calc(var(--spacing)*2)}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.h-10{height:calc(var(--spacing)*10)}.min-h-0{min-height:calc(var(--spacing)*0)}.w-10{width:calc(var(--spacing)*10)}.min-w-0{min-width:calc(var(--spacing)*0)}.-translate-y-1\\/2{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.overflow-y-auto{overflow-y:auto}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-9{padding-right:calc(var(--spacing)*9)}.break-words{overflow-wrap:break-word}.text-gray-400{color:var(--color-gray-400)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.col-span-full{grid-column:1/-1}.size-3{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.h-16{height:calc(var(--spacing)*16)}.w-16{width:calc(var(--spacing)*16)}.auto-rows-auto{grid-auto-rows:auto}.content-start{align-content:flex-start}.border-transparent{border-color:#0000}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.container{width:100%}.size-5{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.size-10{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10)}.h-\\[160px\\]{height:160px}.h-\\[200px\\]{height:200px}.w-\\[240px\\]{width:240px}.shrink-0{flex-shrink:0}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.self-end{align-self:flex-end}.py-1{padding-block:calc(var(--spacing)*1)}.py-10{padding-block:calc(var(--spacing)*10)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.whitespace-pre-line{white-space:pre-line}.text-slate-500{color:var(--color-slate-500)}.opacity-70{opacity:.7}.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0f172a14)}.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\],.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.max-w-sm{max-width:var(--container-sm)}.text-green-500{color:var(--color-green-500)}.text-yellow-500{color:var(--color-yellow-500)}.mb-auto{margin-bottom:auto}.text-black{color:var(--color-black)}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.m-2{margin:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-0\\.5{margin-left:calc(var(--spacing)*.5)}.w-1\\/2{width:50%}.max-w-32{max-width:calc(var(--spacing)*32)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0)}.translate-y-0,.translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%}.gap-y-1{row-gap:calc(var(--spacing)*1)}.border-b-\\[0\\.5px\\]{border-bottom-style:var(--tw-border-style);border-bottom-width:.5px}.bg-pink-100{background-color:var(--color-pink-100)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-green-700{color:var(--color-green-700)}.text-primary{color:var(--color-primary)}.text-red-700{color:var(--color-red-700)}.capitalize{text-transform:capitalize}.opacity-100{opacity:1}.\\!hidden{display:none!important}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.w-xl{width:var(--container-xl)}.w-xs{width:var(--container-xs)}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.my-2{margin-block:calc(var(--spacing)*2)}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.max-w-3xs{max-width:var(--container-3xs)}.resize{resize:both}.rounded-br-\\[0\\]{border-bottom-right-radius:0}.rounded-bl-\\[0\\]{border-bottom-left-radius:0}.bg-black{background-color:var(--color-black)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.underline{text-decoration-line:underline}.size-18{height:calc(var(--spacing)*18);width:calc(var(--spacing)*18)}.size-42{height:calc(var(--spacing)*42);width:calc(var(--spacing)*42)}.h-20{height:calc(var(--spacing)*20)}.w-42{width:calc(var(--spacing)*42)}.right-full{right:100%}.-bottom-2{bottom:calc(var(--spacing)*-2)}.left-full{left:100%}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-2\\.5{margin-bottom:calc(var(--spacing)*2.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.justify-start{justify-content:flex-start}.bg-yellow-300{background-color:var(--color-yellow-300)}.text-left{text-align:left}.hidden\\!{display:none!important}.visible{visibility:visible}.-top-12{top:calc(var(--spacing)*-12)}.-top-24{top:calc(var(--spacing)*-24)}.mx-auto{margin-inline:auto}.mt-10{margin-top:calc(var(--spacing)*10)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.inline-block{display:inline-block}.pt-4{padding-top:calc(var(--spacing)*4)}.-right-0\\.5{right:calc(var(--spacing)*-.5)}.-bottom-0\\.5{bottom:calc(var(--spacing)*-.5)}.fill-current{fill:currentColor}.size-16{height:calc(var(--spacing)*16);width:calc(var(--spacing)*16)}.size-32{height:calc(var(--spacing)*32);width:calc(var(--spacing)*32)}.size-\\[8px\\]{height:8px;width:8px}.size-\\[10px\\]{height:10px;width:10px}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities;/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components{.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-input,.z-input-area-input,.z-input-area-label,.z-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@layer utilities{.focus\\:ring-0:focus,.focus\\:ring-2:focus,.shadow,.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\],.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.translate-y-0,.translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}.quick-message-template__card{box-shadow:0 8px 24px #0f172a14}.quick-message-template__button-action{color:var(--quick-modal-primary)}.quick-message-template__toggle{border:1px solid #94a3b866}.quick-message-template__dialog-overlay{align-items:center;background:#0f172a59;display:flex;inset:0;justify-content:center;padding:16px;position:absolute;z-index:70}.quick-message-template__dialog{border:1px solid #94a3b840;border-radius:16px;box-shadow:0 20px 45px #11182738;display:flex;flex-direction:column;max-height:min(440px,100%);width:min(440px,100%)}.quick-message-template__dialog-header{align-items:center;border-bottom:1px solid #94a3b847;display:flex;justify-content:space-between;padding:18px 20px 12px}.quick-message-template__dialog-header h3{font-size:16px;font-weight:600;margin:0}.quick-message-template__dialog-close{align-items:center;background:0 0;border:none;border-radius:9999px;cursor:pointer;display:inline-flex;height:32px;justify-content:center;width:32px}.quick-message-template__dialog-body{display:flex;flex-direction:column;gap:16px;overflow-y:auto;padding:16px 20px}.quick-message-template__input,.quick-message-template__textarea{border-radius:12px;border-width:1px;font-size:14px;padding:10px 14px;resize:none}.quick-message-template__textarea{min-height:100px}.quick-message-template__dialog-footer{border-top:1px solid #94a3b82e;display:flex;gap:12px;justify-content:flex-end;padding:16px 20px 20px}.quick-message-template__dialog-button{border:none;border-radius:9999px;cursor:pointer;font-size:13px;font-weight:600;padding:10px 18px}.quick-message-template__dialog-button--ghost{background:0 0;color:#64748b}.quick-message-template__dialog-button--primary{background:var(--quick-modal-primary);box-shadow:0 10px 25px var(--quick-modal-primary-shadow);color:#fff}.quick-message-template__dialog-button--primary:disabled{box-shadow:none;cursor:not-allowed;opacity:.4}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-space-x-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@media (forced-colors:active){[type=checkbox]:checked,[type=radio]:checked{appearance:auto}[type=checkbox]:indeterminate{appearance:auto}[type=checkbox]:checked,[type=checkbox]:indeterminate,[type=radio]:checked{appearance:auto}}@media (hover:hover){.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\\:bg-white:hover{background-color:var(--color-white)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover,.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}@media screen and (min-width:0){.z-max-height{height:calc(100vh - 56px)}}@media screen and (min-width:600px){.z-max-height{height:calc(100vh - 64px)}}@media not all and (min-width:40rem){.max-sm\\:hidden{display:none}}@media (min-width:40rem){.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.container{max-width:40rem}.sm\\:min-w-0{min-width:calc(var(--spacing)*0)}.sm\\:flex-row{flex-direction:row}}@media (min-width:48rem){.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.container{max-width:48rem}}@media (min-width:64rem){.lg\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}";
|
|
15
|
+
const quickMessageTemplateCss = "@layer base{*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-space-x-reverse:0;--tw-drop-shadow-alpha:100%;border:0 solid;box-sizing:border-box;margin:0;padding:0}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-space-x-reverse:0;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-space-y-reverse:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:host,:root{--container-xl:36rem;--color-yellow-500:oklch(79.5% .184 86.047);--container-3xs:16rem;--container-sm:24rem;--color-yellow-300:oklch(90.5% .182 98.111);--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--container-xs:20rem;--container-md:28rem;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--color-red-700:oklch(50.5% .213 27.518);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-blue-500:oklch(62.3% .214 259.815);--color-pink-100:oklch(94.8% .028 342.258);--font-weight-bold:700;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-blue-600:oklch(54.6% .245 262.881);--color-slate-500:oklch(55.4% .046 257.417);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:\"Kanit\",var(--default-font);--default-mono-font-family:var(--font-mono);--default-font:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--color-primary:#e02848;--color-secondary:#023761;--color-background:#fff;--color-primary-dark:#b50f30;--color-secondary-dark:#fff;--color-background-dark:#23292d}}@layer base{::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent;line-height:1.5}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-meridiem-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-color:oklch(55.1% .027 264.364);border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}:is([type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);border-color:oklch(54.6% .245 262.881);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}input::placeholder,textarea::placeholder{color:oklch(55.1% .027 264.364);opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}select{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='oklch(55.1%25 0.027 264.364)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;print-color-adjust:exact}[multiple],[size]:where(select:not([size=\"1\"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;print-color-adjust:unset}[type=checkbox],[type=radio]{appearance:none;color:oklch(54.6% .245 262.881);print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-color:oklch(55.1% .027 264.364);border-width:1px;display:inline-block;flex-shrink:0;height:1rem;padding:0;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0'/%3E%3C/svg%3E\")}[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}}@layer components{.dialog-backdrop{align-items:center;background-color:#0006;display:flex;inset:calc(var(--spacing)*0);justify-content:center;position:fixed;z-index:50}@supports (color:color-mix(in lab,red,red)){.dialog-backdrop{background-color:color-mix(in oklab,var(--color-black)40%,transparent);background-color:color-mix(in srgb,#00040%,transparent)}}.chat-item{border-radius:var(--radius-xl);cursor:pointer;margin-block:calc(var(--spacing)*1);margin-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);align-items:flex-start;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative}:where(.chat-item>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-pin{position:absolute;right:-12px;top:calc(var(--spacing)*1)}.chat-item .chat-item-pin-icon{fill:currentColor;height:calc(var(--spacing)*3);rotate:45deg;width:calc(var(--spacing)*3)}.chat-item .chat-item-content-container{display:flex;flex-direction:row;width:100%}:where(.chat-item .chat-item-content-container>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-avatar-wrapper{align-self:center;flex-shrink:0;position:relative}.chat-item .chat-item-avatar-badge{bottom:-2px;position:absolute;right:-2px}.chat-item .chat-item-content-wrapper{min-height:calc(var(--spacing)*18);width:100%}.chat-item .chat-item-content-main{align-items:center;display:flex}:where(.chat-item .chat-item-content-main>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}.chat-item .chat-item-content-main-image{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.chat-item .chat-item-content-main-name{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-main-time{color:var(--color-gray-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-secondary{align-items:flex-start;display:flex;flex-direction:row;width:100%}.chat-item .chat-item-content-secondary-nickname{font-size:var(--text-base);-webkit-line-clamp:1;line-height:var(--tw-leading,var(--text-base--line-height));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-secondary-message{color:var(--color-gray-600);font-size:var(--text-sm);-webkit-line-clamp:1;line-height:var(--tw-leading,var(--text-sm--line-height));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-unread{background-color:var(--color-primary);border-radius:3.40282e+38px;color:var(--color-white);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-unread-mark{display:inline-block;height:calc(var(--spacing)*2.5);width:calc(var(--spacing)*2.5)}.chat-item .chat-item-content-unread-count{padding-block:calc(var(--spacing)*.5);padding-inline:calc(var(--spacing)*2)}.z-icon-button{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-icon-button:focus{--tw-outline-style:none;outline-style:none}.z-icon-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-icon-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-icon-button-disabled{cursor:not-allowed;opacity:.5}.z-button{cursor:pointer;--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-button:focus{--tw-outline-style:none;outline-style:none}.z-button-small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2)}.z-button-medium{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*3)}.z-button-large{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4)}.z-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px;color:var(--color-primary)}.z-button-disabled{cursor:not-allowed;opacity:.5}.z-button-text{margin-inline:calc(var(--spacing)*2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.z-input-area-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input-area-input,.z-input-area-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input-area-input{border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-width:1px;width:100%}.z-input-area-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-area-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-input-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input,.z-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input{border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-radius:3.40282e+38px;border-width:1px;width:100%}.z-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-select-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-tag-or-status-item{align-items:center;border-radius:var(--radius-2xl);gap:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:inline-flex}.z-tag-or-status-item .z-tag-or-status-item-name{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));max-width:calc(var(--spacing)*20)}.z-tag-or-status-item .z-tag-or-status-item-icon{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.z-context-input{align-items:center;display:flex;flex-direction:row;margin-block:calc(var(--spacing)*1)}.z-context-input-key{border-bottom-left-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-top-left-radius:var(--radius-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);width:100%;--tw-ring-color:var(--color-primary);border-width:1px;flex:1}.z-context-input-key:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-context-input-value{border-bottom-right-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-top-right-radius:var(--radius-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));min-height:2.4rem;padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);width:100%;--tw-ring-color:var(--color-primary);border-width:1px;flex:2}.z-context-input-value:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-text-with-link{color:var(--color-blue-600);text-decoration-line:underline}}@layer utilities{.contents{display:contents}.px-4{padding-inline:calc(var(--spacing)*4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.scroll-container::-webkit-scrollbar{background:#0000001a;height:8px;width:8px}.scroll-container:active::-webkit-scrollbar,.scroll-container:hover::-webkit-scrollbar{background:#0003}.scroll-container:active::-webkit-scrollbar-thumb,.scroll-container:hover::-webkit-scrollbar-thumb{background:#0006;border-radius:4px}.z-text-light{color:var(--color-black)}.z-text-dark{color:var(--color-white)}.z-text-primary-light{color:var(--color-primary)}.z-text-primary-dark{color:var(--color-primary-dark)}.z-text-gray-light{color:var(--color-gray-500)}.z-text-gray-dark{color:var(--color-gray-300)}.z-text-background-light{color:var(--color-background)}.z-text-background-dark{color:var(--color-background-dark)}.z-border-light{border-color:var(--color-black)}.z-border-dark{border-color:var(--color-white)}.z-border-primary-light{border-color:var(--color-primary)}.z-border-primary-dark{border-color:var(--color-primary-dark)}.z-border-divider-light{border-color:var(--color-gray-400)}.z-border-divider-dark{border-color:var(--color-gray-300)}.z-search-input-background-light{background-color:var(--color-gray-200)}.z-search-input-background-dark{background-color:var(--color-gray-500)}.z-chat-input-background-light{background-color:var(--color-white)}.z-chat-input-background-dark{background-color:var(--color-gray-700)}.z-placeholder-light::placeholder{color:var(--color-gray-500)}.z-placeholder-dark::placeholder{color:var(--color-gray-200)}.z-background-primary-light{background-color:var(--color-primary)}.z-background-primary-dark{background-color:var(--color-primary-dark)}.z-background-light{background-color:var(--color-background)}.z-background-dark{background-color:var(--color-background-dark)}.z-paper-light{background-color:var(--color-gray-100)}.z-paper-dark{background-color:var(--color-gray-700)}.z-bg-gray-light{background-color:var(--color-gray-500)}.z-bg-gray-dark{background-color:var(--color-gray-300)}.z-width-100{width:100%}.z-width-90{width:90%}.z-width-75{width:75%}.z-width-50{width:50%}.z-width-25{width:25%}.z-width-0{width:0}.z-animate-width{transition-duration:.5s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.z-animate-grid-template-cols{transition:grid-template-rows .5s}[type=checkbox]{background-color:var(--color-gray-300);border-color:var(--color-gray-300);border-radius:4px;cursor:pointer}[type=checkbox]:checked,[type=checkbox]:indeterminate{background-color:var(--color-primary);border-color:var(--color-primary);border-radius:4px;cursor:pointer}[type=checkbox]:focus{offset:0;outline-offset:0;--tw-ring-color:var(--color-primary);outline:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.grid-cols-1{grid-template-columns:1fr}.grid-cols-1_3{grid-template-columns:1fr 3fr}.grid-cols-1_2_1{grid-template-columns:1fr 2fr 1fr}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-3{top:calc(var(--spacing)*3)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-3{bottom:calc(var(--spacing)*3)}.left-3{left:calc(var(--spacing)*3)}.z-10{z-index:10}.z-\\[80\\]{z-index:80}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-6{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.size-8{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.size-12{height:calc(var(--spacing)*12);width:calc(var(--spacing)*12)}.size-14{height:calc(var(--spacing)*14);width:calc(var(--spacing)*14)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-\\[180px\\]{height:180px}.h-\\[220px\\]{height:220px}.h-\\[280px\\]{height:280px}.h-full{height:100%}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-\\[200px\\]{width:200px}.w-\\[250px\\]{width:250px}.w-full{width:100%}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[18px\\]{border-radius:18px}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\\[1\\.5px\\]{border-bottom-style:var(--tw-border-style);border-bottom-width:1.5px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-current{border-color:currentColor}.border-red-500{border-color:var(--color-red-500)}.bg-slate-900\\/40{background-color:#0f172b66}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\\/40{background-color:color-mix(in oklab,var(--color-slate-900)40%,transparent)}}.bg-slate-900\\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\\/60{background-color:color-mix(in oklab,var(--color-slate-900)60%,transparent)}}.bg-transparent{background-color:#0000}.bg-white\\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\\/90{background-color:color-mix(in srgb,#fff90%,transparent);background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pr-16{padding-right:calc(var(--spacing)*16)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pl-2{padding-left:calc(var(--spacing)*2)}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[13px\\]{font-size:13px}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-red-500{color:var(--color-red-500)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow,.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.ring-primary{--tw-ring-color:var(--color-primary)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-all,.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-opacity{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.focus\\:border-red-500:focus{border-color:var(--color-red-500)}.focus\\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\\:ring-0:focus,.focus\\:ring-2:focus{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\\:ring-red-200:focus{--tw-ring-color:var(--color-red-200)}.focus\\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\\:ring-slate-200:focus{--tw-ring-color:var(--color-slate-200)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}}@keyframes spin{to{transform:rotate(1turn)}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.top-1\\/2{top:50%}.right-2{right:calc(var(--spacing)*2)}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.h-10{height:calc(var(--spacing)*10)}.min-h-0{min-height:calc(var(--spacing)*0)}.w-10{width:calc(var(--spacing)*10)}.min-w-0{min-width:calc(var(--spacing)*0)}.-translate-y-1\\/2{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.overflow-y-auto{overflow-y:auto}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-9{padding-right:calc(var(--spacing)*9)}.break-words{overflow-wrap:break-word}.text-gray-400{color:var(--color-gray-400)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.col-span-full{grid-column:1/-1}.size-3{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.h-16{height:calc(var(--spacing)*16)}.w-16{width:calc(var(--spacing)*16)}.auto-rows-auto{grid-auto-rows:auto}.content-start{align-content:flex-start}.border-transparent{border-color:#0000}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.container{width:100%}.size-5{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.size-10{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10)}.h-\\[160px\\]{height:160px}.h-\\[200px\\]{height:200px}.w-\\[240px\\]{width:240px}.shrink-0{flex-shrink:0}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.self-end{align-self:flex-end}.py-1{padding-block:calc(var(--spacing)*1)}.py-10{padding-block:calc(var(--spacing)*10)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.whitespace-pre-line{white-space:pre-line}.text-slate-500{color:var(--color-slate-500)}.opacity-70{opacity:.7}.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0f172a14)}.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\],.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.max-w-sm{max-width:var(--container-sm)}.text-green-500{color:var(--color-green-500)}.text-yellow-500{color:var(--color-yellow-500)}.hidden\\!{display:none!important}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.rotate-45{rotate:45deg}.text-blue-500{color:var(--color-blue-500)}.mb-2{margin-bottom:calc(var(--spacing)*2)}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.mx-auto{margin-inline:auto}.size-18{height:calc(var(--spacing)*18);width:calc(var(--spacing)*18)}.mb-auto{margin-bottom:auto}.text-black{color:var(--color-black)}.m-auto{margin:auto}.size-32{height:calc(var(--spacing)*32);width:calc(var(--spacing)*32)}.w-xl{width:var(--container-xl)}.w-xs{width:var(--container-xs)}.col-span-2{grid-column:span 2/span 2}.my-2{margin-block:calc(var(--spacing)*2)}.\\!hidden{display:none!important}.bg-pink-100{background-color:var(--color-pink-100)}.visible{visibility:visible}.-top-12{top:calc(var(--spacing)*-12)}.-top-24{top:calc(var(--spacing)*-24)}.mt-10{margin-top:calc(var(--spacing)*10)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.inline-block{display:inline-block}.pt-4{padding-top:calc(var(--spacing)*4)}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.max-w-3xs{max-width:var(--container-3xs)}.resize{resize:both}.rounded-br-\\[0\\]{border-bottom-right-radius:0}.rounded-bl-\\[0\\]{border-bottom-left-radius:0}.bg-black{background-color:var(--color-black)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.underline{text-decoration-line:underline}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.right-full{right:100%}.-bottom-2{bottom:calc(var(--spacing)*-2)}.left-full{left:100%}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-2\\.5{margin-bottom:calc(var(--spacing)*2.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.justify-start{justify-content:flex-start}.bg-yellow-300{background-color:var(--color-yellow-300)}.text-left{text-align:left}.size-42{height:calc(var(--spacing)*42);width:calc(var(--spacing)*42)}.h-20{height:calc(var(--spacing)*20)}.w-42{width:calc(var(--spacing)*42)}.-right-0\\.5{right:calc(var(--spacing)*-.5)}.-bottom-0\\.5{bottom:calc(var(--spacing)*-.5)}.col-span-3{grid-column:span 3/span 3}.gap-y-1{row-gap:calc(var(--spacing)*1)}.border-b-\\[0\\.5px\\]{border-bottom-style:var(--tw-border-style);border-bottom-width:.5px}.fill-current{fill:currentColor}.whitespace-nowrap{white-space:nowrap}.size-16{height:calc(var(--spacing)*16);width:calc(var(--spacing)*16)}.size-\\[8px\\]{height:8px;width:8px}.size-\\[10px\\]{height:10px;width:10px}.col-span-1{grid-column:span 1/span 1}.m-2{margin:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.ml-0\\.5{margin-left:calc(var(--spacing)*.5)}.w-1\\/2{width:50%}.max-w-32{max-width:calc(var(--spacing)*32)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0)}.translate-y-0,.translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%}.text-green-700{color:var(--color-green-700)}.text-primary{color:var(--color-primary)}.text-red-700{color:var(--color-red-700)}.capitalize{text-transform:capitalize}.opacity-100{opacity:1}}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities;/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components{.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-input,.z-input-area-input,.z-input-area-label,.z-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@layer utilities{.focus\\:ring-0:focus,.focus\\:ring-2:focus,.shadow,.shadow-\\[0_8px_24px_rgba\\(15\\,23\\,42\\,0\\.08\\)\\],.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.translate-y-0,.translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}.quick-message-template__card{box-shadow:0 8px 24px #0f172a14}.quick-message-template__button-action{color:var(--quick-modal-primary)}.quick-message-template__toggle{border:1px solid #94a3b866}.quick-message-template__dialog-overlay{align-items:center;background:#0f172a59;display:flex;inset:0;justify-content:center;padding:16px;position:absolute;z-index:70}.quick-message-template__dialog{border:1px solid #94a3b840;border-radius:16px;box-shadow:0 20px 45px #11182738;display:flex;flex-direction:column;max-height:min(440px,100%);width:min(440px,100%)}.quick-message-template__dialog-header{align-items:center;border-bottom:1px solid #94a3b847;display:flex;justify-content:space-between;padding:18px 20px 12px}.quick-message-template__dialog-header h3{font-size:16px;font-weight:600;margin:0}.quick-message-template__dialog-close{align-items:center;background:0 0;border:none;border-radius:9999px;cursor:pointer;display:inline-flex;height:32px;justify-content:center;width:32px}.quick-message-template__dialog-body{display:flex;flex-direction:column;gap:16px;overflow-y:auto;padding:16px 20px}.quick-message-template__input,.quick-message-template__textarea{border-radius:12px;border-width:1px;font-size:14px;padding:10px 14px;resize:none}.quick-message-template__textarea{min-height:100px}.quick-message-template__dialog-footer{border-top:1px solid #94a3b82e;display:flex;gap:12px;justify-content:flex-end;padding:16px 20px 20px}.quick-message-template__dialog-button{border:none;border-radius:9999px;cursor:pointer;font-size:13px;font-weight:600;padding:10px 18px}.quick-message-template__dialog-button--ghost{background:0 0;color:#64748b}.quick-message-template__dialog-button--primary{background:var(--quick-modal-primary);box-shadow:0 10px 25px var(--quick-modal-primary-shadow);color:#fff}.quick-message-template__dialog-button--primary:disabled{box-shadow:none;cursor:not-allowed;opacity:.4}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-space-x-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@media (forced-colors:active){[type=checkbox]:checked,[type=radio]:checked{appearance:auto}[type=checkbox]:indeterminate{appearance:auto}[type=checkbox]:checked,[type=checkbox]:indeterminate,[type=radio]:checked{appearance:auto}}@media (hover:hover){.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\\:bg-white:hover{background-color:var(--color-white)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:opacity-100:hover{opacity:1}.hover\\:brightness-110:hover,.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}@media screen and (min-width:0){.z-max-height{height:calc(100vh - 56px)}}@media screen and (min-width:600px){.z-max-height{height:calc(100vh - 64px)}}@media not all and (min-width:40rem){.max-sm\\:hidden{display:none}}@media (min-width:40rem){.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.container{max-width:40rem}.sm\\:min-w-0{min-width:calc(var(--spacing)*0)}.sm\\:flex-row{flex-direction:row}}@media (min-width:48rem){.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.container{max-width:48rem}}@media (min-width:64rem){.lg\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}";
|
|
16
16
|
|
|
17
17
|
const QuickMessageTemplateComponent = /*@__PURE__*/ proxyCustomElement(class QuickMessageTemplateComponent extends H {
|
|
18
18
|
constructor(registerHost) {
|
|
@@ -426,15 +426,15 @@ const QuickMessageTemplateComponent = /*@__PURE__*/ proxyCustomElement(class Qui
|
|
|
426
426
|
const t = useTranslation();
|
|
427
427
|
const filteredTemplates = this.filterTemplates();
|
|
428
428
|
const showBottomSpinner = (this.isLoading && filteredTemplates.length > 0) || this.isLoadingMore;
|
|
429
|
-
return (h(Host, { key: '
|
|
429
|
+
return (h(Host, { key: '5244affa46d063e18ba112453e4f4bde806e3a5f', class: "relative flex min-h-0 flex-1 flex-col gap-2" }, h("form", { key: '56d700094a1f7b677435305c7765e936ffa60cca', class: "relative w-full", onSubmit: event => this.handleSearchSubmit(event) }, h("input", { key: '13ef6b986cd1f8007f48ca0ab5a746140aac23ba', type: "text", class: `w-full border z-border-divider-${theme} text-sm px-4 py-2 rounded-lg ring-primary focus:outline-none focus:border-primary z-background-${theme} z-text-${theme}`, placeholder: t('quick_message.search_template'), value: this.searchTemplate, onInput: event => this.handleSearchInput(event), autoComplete: "off" }), this.searchTemplate && (h("button", { key: '145b3af258a6c2dbb67243071d37443b34b5846d', type: "button", class: "absolute inset-y-0 right-3 flex items-center text-xs opacity-70 transition-opacity hover:opacity-100", onClick: () => this.clearSearch() }, h(Icon, { key: '48d3a3c8842d0e100da75aca2108eb6b594f7864', name: "X", addClass: "size-4" })))), h("div", { key: 'caca155d663e8ea6117978d1e0985a27302b72aa', class: "flex items-center gap-2" }, h("div", { key: '4fa37644a2783a247e5b8d3fbd6f2662ad758248', class: `inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold text-white z-background-primary-${theme}` }, "ZIGNAL"), h("div", { key: '1cfe44fb5fd809b88fa84ef9f8cc21d3abf36bcb', class: `inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold z-text-primary-${theme} border z-border-primary-${theme}` }, "ZWIZ.AI")), h("div", { key: '56e1f0992fd2975dc25a244b2e081a3cb517b76c', class: "flex flex-1 flex-col gap-3 overflow-y-auto", ref: el => {
|
|
430
430
|
this.scrollContainer = el ? el : undefined;
|
|
431
|
-
}, onScroll: event => this.handleScroll(event) }, h("button", { key: '
|
|
431
|
+
}, onScroll: event => this.handleScroll(event) }, h("button", { key: '20e90a1f4fa6a6cfe515f10d671bca5110f9de3e', class: `inline-flex items-center justify-center gap-2 rounded-xl border-[1.5px] border-dashed px-4 py-2 z-text-primary-${theme} cursor-pointer`, type: "button", onClick: () => this.openTemplateDialog(undefined, 'create') }, h(Icon, { key: '298362a80f453d6f5ae92f534599143f21166af2', name: "Plus", addClass: "size-4" }), h("span", { key: 'de53e7fa26b4cf34e24bb9d2f2653a6d81632e5a', class: "text-sm" }, t('quick_message.add_template'))), this.isLoading && filteredTemplates.length === 0 ? (h("div", { class: "flex flex-1 items-center justify-center py-10 text-sm text-slate-500" }, h(Icon, { name: "Loader2", addClass: "size-6 animate-spin" }))) : (h("div", { class: "flex flex-col gap-3" }, filteredTemplates.length === 0 && h("div", { class: "py-10 text-center text-sm text-slate-500" }, t('quick_message.template_empty')), filteredTemplates.map(template => {
|
|
432
432
|
const lastUpdatedAt = template.last_updated_at || template.created_at || new Date();
|
|
433
433
|
const formattedDate = dayjs(lastUpdatedAt).tz().format('DD/MM/YYYY HH:mm');
|
|
434
434
|
const rawLastUpdatedBy = template.last_updated_by ?? template.created_by ?? '';
|
|
435
435
|
const displayUpdatedBy = typeof rawLastUpdatedBy === 'string' && rawLastUpdatedBy.trim().length > 0 ? rawLastUpdatedBy : '-';
|
|
436
436
|
return (h("div", { class: `quick-message-template__card z-border-primary-${theme} rounded-2xl border-[1.5px] px-4 py-4 shadow-[0_8px_24px_rgba(15,23,42,0.08)]`, key: template.id }, h("div", { class: "flex flex-col sm:flex-row items-start gap-3 sm:min-w-0" }, h("div", { class: "flex-1 flex flex-col gap-1.5 w-full overflow-hidden" }, h("div", { class: "text-base font-semibold truncate", title: template.title }, template.title), h("div", { class: `text-[11px] z-text-gray-${theme}` }, t('quick_message.updated_at').replace('{date}', formattedDate).replace('{by}', displayUpdatedBy))), h("div", { class: "flex gap-4 flex-row items-center self-end" }, this.isMaster && h("button", { type: "button", onClick: () => this.handleTemplateAction(template, 'edit'), "aria-label": t('edit') }, h(Icon, { name: "Pencil", addClass: `size-4 cursor-pointer z-text-primary-${theme}` })), this.isMaster && h("button", { type: "button", "aria-label": t('delete'), onClick: () => this.requestDeleteTemplate(template), disabled: Boolean(this.deletingTemplateId), class: `${this.deletingTemplateId ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'}` }, this.deletingTemplateId === template.id ? (h(Icon, { name: "Loader2", addClass: `size-4 animate-spin z-text-primary-${theme}` })) : (h(Icon, { name: "Trash2", addClass: `size-4 z-text-primary-${theme}` }))), !this.isMaster && (h("button", { type: "button", class: `inline-flex items-center justify-center rounded-full border px-4 py-2 text-xs font-semibold cursor-pointer z-border-primary-${theme} z-text-primary-${theme}`, onClick: () => this.handleTemplateAction(template, 'edit-send') }, t('quick_message.edit_before_send'))), !this.isMaster && (h("button", { type: "button", class: `inline-flex items-center justify-center rounded-full px-4 py-2 text-xs font-semibold text-white cursor-pointer z-background-primary-${theme}`, onClick: () => this.handleTemplateAction(template, 'send') }, t('quick_message.send_now'))), h("button", { type: "button", class: "quick-message-template__toggle inline-flex h-9 w-9 items-center justify-center rounded-full cursor-pointer", onClick: () => this.toggleTemplateExpansion(template.id) }, h(Icon, { name: template.isExpanded ? 'ChevronUp' : 'ChevronDown' })))), template.isExpanded && (h("div", { class: "mt-4 flex flex-col gap-2" }, template.contents.map(content => (h("div", { key: content.id, class: `border z-border-${theme} rounded-xl p-4` }, this.renderTemplateContent(content, theme))))))));
|
|
437
|
-
}))), showBottomSpinner && (h("div", { key: '
|
|
437
|
+
}))), showBottomSpinner && (h("div", { key: '58e95b9a4f96e3f8921ed86a78aeb1e955e8087b', class: "flex justify-center py-4 text-sm text-slate-500" }, h(Icon, { key: '29d387b77f2e5ceaf0b8c6b555dfd81ef69e4314', name: "Loader2", addClass: "size-5 animate-spin" })))), this.showAddTemplateDialog && (h("quick-message-add-template", { key: '22b755e2d32b245013cbc0d03eebdd498ecaae80', handleClose: () => this.closeTemplateDialog(), handleSave: template => this.handleTemplateSave(template), handleSend: template => this.handleTemplateAction(template, 'send'), initialTemplate: this.editingTemplate, mode: this.dialogMode, isSaving: this.isSavingTemplate }))));
|
|
438
438
|
}
|
|
439
439
|
static get watchers() { return {
|
|
440
440
|
"value": ["handleValueChange"]
|
|
@@ -505,6 +505,6 @@ function defineCustomElement() {
|
|
|
505
505
|
defineCustomElement();
|
|
506
506
|
|
|
507
507
|
export { QuickMessageTemplateComponent as Q, defineCustomElement as d };
|
|
508
|
-
//# sourceMappingURL=p-
|
|
508
|
+
//# sourceMappingURL=p-Dx0yXDO_.js.map
|
|
509
509
|
|
|
510
|
-
//# sourceMappingURL=p-
|
|
510
|
+
//# sourceMappingURL=p-Dx0yXDO_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-CjdpcyF4.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","showErrorDialog"],"sources":["src/components/quick-message-template/quick-message-template.css?tag=quick-message-template","src/components/quick-message-template/quick-message-template.tsx"],"sourcesContent":[".quick-message-template__card {\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);\n}\n\n.quick-message-template__button-action {\n color: var(--quick-modal-primary);\n}\n\n.quick-message-template__toggle {\n border: 1px solid rgba(148, 163, 184, 0.4);\n}\n\n.quick-message-template__dialog-overlay {\n position: absolute;\n inset: 0;\n background: rgba(15, 23, 42, 0.35);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 70;\n padding: 16px;\n}\n\n.quick-message-template__dialog {\n width: min(440px, 100%);\n border-radius: 16px;\n box-shadow: 0 20px 45px rgba(17, 24, 39, 0.22);\n border: 1px solid rgba(148, 163, 184, 0.25);\n display: flex;\n flex-direction: column;\n max-height: min(440px, 100%);\n}\n\n.quick-message-template__dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 18px 20px 12px;\n border-bottom: 1px solid rgba(148, 163, 184, 0.28);\n}\n\n.quick-message-template__dialog-header h3 {\n font-size: 16px;\n font-weight: 600;\n margin: 0;\n}\n\n.quick-message-template__dialog-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n.quick-message-template__dialog-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px 20px;\n overflow-y: auto;\n}\n\n.quick-message-template__input,\n.quick-message-template__textarea {\n border-radius: 12px;\n border-width: 1px;\n padding: 10px 14px;\n font-size: 14px;\n resize: none;\n}\n\n.quick-message-template__textarea {\n min-height: 100px;\n}\n\n.quick-message-template__dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px 20px;\n border-top: 1px solid rgba(148, 163, 184, 0.18);\n}\n\n.quick-message-template__dialog-button {\n border-radius: 9999px;\n font-weight: 600;\n font-size: 13px;\n padding: 10px 18px;\n border: none;\n cursor: pointer;\n}\n\n.quick-message-template__dialog-button--ghost {\n background: transparent;\n color: rgba(100, 116, 139, 1);\n}\n\n.quick-message-template__dialog-button--primary {\n background: var(--quick-modal-primary);\n color: #fff;\n box-shadow: 0 10px 25px var(--quick-modal-primary-shadow);\n}\n\n.quick-message-template__dialog-button--primary:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n box-shadow: none;\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport dayjs from 'dayjs';\nimport { createQuickMessageTemplate, deleteQuickMessageTemplate, getQuickMessageTemplates, updateQuickMessageTemplate } from '../../api/quick-message';\nimport { QuickMessageTemplate as QuickMessageTemplateModel, QuickMessageTemplateContent } from '../../store/type';\nimport { configStore } from '../../store/store';\nimport { useTranslation } from '../../utils/utils';\nimport { Icon } from '../internal-component/icon';\nimport type { TemplateSelectionMode } from '../quick-message-modal/template-selection';\nimport { DIALOG_TYPE, openDialog, handleError as showErrorDialog } from '../../store/dialog';\n\n@Component({\n tag: 'quick-message-template',\n styleUrl: 'quick-message-template.css',\n})\nexport class QuickMessageTemplateComponent {\n @Prop() handleClose?: () => void;\n @Prop() value?: string | QuickMessageTemplateModel[];\n @Prop() isMaster: boolean = false;\n\n @State() private searchTemplate = '';\n @State() private templates: QuickMessageTemplateModel[] = [];\n @State() private showAddTemplateDialog = false;\n @State() private editingTemplate?: QuickMessageTemplateModel;\n @State() private dialogMode: TemplateSelectionMode = 'create';\n @State() private isLoading = false;\n @State() private isLoadingMore = false;\n @State() private isSavingTemplate = false;\n @State() private deletingTemplateId?: string;\n @State() private templatePendingDelete?: QuickMessageTemplateModel;\n @State() private totalTemplates = 0;\n @State() private totalPages = 0;\n\n private page = 1;\n private readonly pageSize = 10;\n private readonly loadMoreThreshold = 160;\n private currentSearch = '';\n private scrollContainer?: HTMLDivElement;\n\n @Event({ bubbles: true, composed: true }) templatesChange!: EventEmitter<QuickMessageTemplateModel[]>;\n @Event({ bubbles: true, composed: true }) sendTemplate!: EventEmitter<QuickMessageTemplateModel>;\n\n componentWillLoad() {\n this.syncTemplatesFromProp(this.value);\n }\n\n async componentDidLoad() {\n await this.fetchTemplates({ reset: true });\n }\n\n componentDidRender() {\n this.autoLoadMoreIfNeeded();\n }\n\n @Watch('value')\n protected handleValueChange(newValue?: string | QuickMessageTemplateModel[]) {\n this.syncTemplatesFromProp(newValue);\n }\n\n private syncTemplatesFromProp(value?: string | QuickMessageTemplateModel[]) {\n if (value === undefined || value === null) {\n this.setTemplates([], false);\n return;\n }\n\n const parsed = this.parseTemplateValue(value);\n this.setTemplates(parsed, false);\n }\n\n private mergeWithExistingState(fetched: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (this.templates.length === 0) {\n return fetched;\n }\n\n const expandedMap = new Map(this.templates.map(template => [template.id, template.isExpanded ?? false]));\n\n return fetched.map(template => ({\n ...template,\n isExpanded: expandedMap.get(template.id) ?? template.isExpanded ?? false,\n }));\n }\n\n private appendTemplates(fetched: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (fetched.length === 0) {\n return [...this.templates];\n }\n\n const next = [...this.templates];\n const indexMap = new Map(next.map((template, index) => [template.id, index]));\n\n fetched.forEach(template => {\n const existingIndex = indexMap.get(template.id);\n if (existingIndex !== undefined) {\n next[existingIndex] = {\n ...template,\n isExpanded: next[existingIndex].isExpanded ?? false,\n };\n return;\n }\n\n next.push({ ...template, isExpanded: template.isExpanded ?? false });\n indexMap.set(template.id, next.length - 1);\n });\n\n return next;\n }\n\n private async fetchTemplates({ search, reset = true }: { search?: string; reset?: boolean } = {}) {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n if (!businessId || !shopId) {\n return;\n }\n\n if (reset ? this.isLoading : this.isLoadingMore) {\n return;\n }\n\n const normalizedSearch = search !== undefined ? search : this.currentSearch;\n const trimmedSearch = normalizedSearch?.trim() ?? '';\n const nextPage = reset ? 1 : this.page + 1;\n\n if (search !== undefined) {\n this.searchTemplate = normalizedSearch ?? '';\n }\n\n if (reset) {\n this.isLoading = true;\n } else {\n this.isLoadingMore = true;\n }\n\n try {\n const response = await getQuickMessageTemplates({\n search: trimmedSearch ? trimmedSearch : undefined,\n page: nextPage,\n limit: this.pageSize,\n });\n\n const normalized = this.cloneTemplates(response.templates || []);\n const nextTemplates = reset ? this.mergeWithExistingState(normalized) : this.appendTemplates(normalized);\n\n this.page = response.page > 0 ? response.page : nextPage;\n const resolvedTotalPages = response.total_pages > 0 ? response.total_pages : nextTemplates.length > 0 ? 1 : 0;\n this.totalPages = resolvedTotalPages;\n this.totalTemplates = response.total;\n this.currentSearch = trimmedSearch;\n\n this.setTemplates(nextTemplates);\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to fetch templates');\n } finally {\n if (reset) {\n this.isLoading = false;\n } else {\n this.isLoadingMore = false;\n }\n }\n }\n\n private async loadMoreTemplates() {\n if (this.isLoading || this.isLoadingMore) {\n return;\n }\n\n if (this.totalTemplates > 0 && this.templates.length >= this.totalTemplates) {\n return;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return;\n }\n\n await this.fetchTemplates({ reset: false });\n }\n\n private handleScroll(event: Event) {\n const target = event.target as HTMLElement | null;\n if (!target) {\n return;\n }\n\n this.triggerLoadMoreIfNeeded(target);\n }\n\n private async handleSearchSubmit(event?: Event) {\n event?.preventDefault();\n await this.fetchTemplates({ search: this.searchTemplate, reset: true });\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchTemplate = value;\n\n if (!value.trim() && this.currentSearch && !this.isLoading && !this.isLoadingMore) {\n void this.fetchTemplates({ search: '', reset: true });\n }\n }\n\n private clearSearch() {\n if (!this.searchTemplate && !this.currentSearch) {\n return;\n }\n\n this.searchTemplate = '';\n\n if (!this.isLoading && !this.isLoadingMore) {\n void this.fetchTemplates({ search: '', reset: true });\n }\n }\n\n private parseTemplateValue(value: string | QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (typeof value === 'string') {\n try {\n const deserialized = JSON.parse(value) as QuickMessageTemplateModel[];\n return this.cloneTemplates(deserialized);\n } catch (error: unknown) {\n console.warn('[quick-message-template] Failed to parse templates value', error);\n return [];\n }\n }\n\n return this.cloneTemplates(value);\n }\n\n private cloneTemplates(templates: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n return (templates || []).map(template => {\n const rawContents = template.contents || [];\n\n const normalizedContents = rawContents.map(content => {\n const rawMenuList = content.menu_list || [];\n const menuList = rawMenuList.map(menu => ({\n ...menu,\n buttons: (menu.buttons || []).map(button => ({ ...button })),\n }));\n\n return {\n ...content,\n buttons: (content.buttons || []).map(button => ({ ...button })),\n menu_list: menuList,\n };\n });\n\n return {\n ...template,\n contents: normalizedContents,\n };\n });\n }\n\n private setTemplates(next: QuickMessageTemplateModel[], shouldEmit = true) {\n this.templates = next;\n if (shouldEmit) {\n const payload = this.cloneTemplates(next);\n this.templatesChange.emit(payload);\n }\n }\n\n private canAttemptLoadMore(): boolean {\n if (this.isLoading || this.isLoadingMore) {\n return false;\n }\n\n if (this.totalTemplates > 0 && this.templates.length >= this.totalTemplates) {\n return false;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return false;\n }\n\n return true;\n }\n\n private triggerLoadMoreIfNeeded(container: HTMLElement) {\n if (!this.canAttemptLoadMore()) {\n return;\n }\n\n const remaining = container.scrollHeight - container.scrollTop - container.clientHeight;\n if (remaining < this.loadMoreThreshold) {\n void this.loadMoreTemplates();\n }\n }\n\n private autoLoadMoreIfNeeded() {\n if (!this.scrollContainer) {\n return;\n }\n\n this.triggerLoadMoreIfNeeded(this.scrollContainer);\n }\n\n private toggleTemplateExpansion(id: string) {\n this.setTemplates(this.templates.map(template => (template.id === id ? { ...template, isExpanded: !template.isExpanded } : template)));\n }\n\n private filterTemplates(): QuickMessageTemplateModel[] {\n const search = this.currentSearch.trim().toLowerCase();\n if (!search) return this.templates;\n return this.templates.filter(template => template.title.toLowerCase().includes(search));\n }\n\n private handleTemplateAction(template: QuickMessageTemplateModel, mode: TemplateSelectionMode) {\n if (mode === 'create' || mode === 'edit' || mode === 'edit-send') {\n this.openTemplateDialog(template, mode);\n return;\n }\n if (mode === 'send') {\n const clonedTemplate: QuickMessageTemplateModel = {\n ...template,\n contents: (template.contents || []).map(content => ({\n ...content,\n buttons: [...(content.buttons || [])],\n menu_list: (content.menu_list || []).map(menu => ({\n ...menu,\n buttons: [...(menu.buttons || [])],\n })),\n })),\n };\n\n const processedTemplate = this.processTemplate(clonedTemplate);\n\n this.closeTemplateDialog();\n this.handleClose?.();\n this.sendTemplate.emit(processedTemplate);\n }\n }\n\n private renderTemplateContent(content: QuickMessageTemplateContent, theme: string) {\n switch (content.type) {\n case 'text':\n return (\n <div class=\"flex flex-col gap-2\">\n <p class={`z-text-${theme} whitespace-pre-line text-sm leading-relaxed`}>{content.text}</p>\n </div>\n );\n case 'button':\n return (\n <div class=\"flex flex-col gap-2\">\n <p class={`z-text-${theme} whitespace-pre-line text-sm leading-relaxed`}>{content.text}</p>\n <div class=\"flex flex-col gap-1.5\">\n {content.buttons.length > 0 && (\n <div class=\"flex flex-col gap-2\">\n {content.buttons.map(button => (\n <div\n class={`flex w-full flex-col items-center gap-1 rounded-xl px-3 py-2 text-sm font-medium text-white shadow-sm z-background-primary-${theme} truncate`}\n key={button.id}\n >\n <span class=\"w-full text-center leading-tight truncate\">{button.text || '-'}</span>\n <span class=\"w-full text-center text-xs leading-none opacity-80 truncate\">{button.action_type === 'text' ? '-' : button.action || '-'}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n case 'image':\n return <div class=\"flex flex-wrap gap-3\">{content.file_url && this.renderImageMedia(content.file_url, theme)}</div>;\n case 'menu_list':\n return (\n <div class=\"flex gap-3 overflow-x-auto pb-1\">\n {content.menu_list.map(menu => (\n <div class={`flex w-[240px] shrink-0 flex-col overflow-hidden rounded-[18px] border-[1.5px] shadow-sm z-border-primary-${theme} z-background-${theme}`} key={menu.id}>\n <div class={`relative h-[160px] border-b-[1.5px] z-border-primary-${theme} overflow-hidden`}>\n {menu.file_url ? (\n <img src={menu.file_url} alt={menu.title} class=\"h-full w-full object-cover\" loading=\"lazy\" />\n ) : (\n <div class={`flex h-full w-full items-center justify-center z-background-${theme} z-text-gray-${theme} opacity-60`}>\n <Icon name=\"Image\" addClass=\"size-10\" />\n </div>\n )}\n </div>\n\n <div class=\"flex flex-col gap-2 px-4 py-4\">\n {menu.title && <div class=\"text-sm font-semibold leading-snug\">{menu.title}</div>}\n {menu.description && <div class={`text-xs leading-snug z-text-gray-${theme}`}>{menu.description}</div>}\n\n {menu.buttons.length > 0 && (\n <div class=\"flex flex-col gap-2\">\n {menu.buttons.map(button => (\n <div\n class={`flex w-full flex-col items-center gap-1 rounded-xl px-3 py-2 text-sm font-medium text-white shadow-sm z-background-primary-${theme}`}\n key={button.id}\n >\n <span class=\"w-full text-center leading-tight truncate\">{button.text || '-'}</span>\n <span class=\"w-full text-center text-xs leading-none opacity-80 truncate\">{button.action_type === 'text' ? '-' : button.action || '-'}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n case 'video':\n return (\n <video src={content.file_url} class=\"h-[220px] object-cover rounded-xl\" controls>\n <track kind=\"captions\" src=\"\" label=\"English\" />\n </video>\n );\n default:\n return null;\n }\n }\n\n private renderImageMedia(fileUrl: string, theme: string) {\n return <img src={fileUrl} alt=\"\" class={`h-[200px] w-[200px] rounded-xl border object-cover z-border-${theme}`} loading=\"lazy\" />;\n }\n\n private closeTemplateDialog() {\n this.showAddTemplateDialog = false;\n this.editingTemplate = undefined;\n this.dialogMode = 'edit';\n this.isSavingTemplate = false;\n }\n\n private openTemplateDialog(template?: QuickMessageTemplateModel, mode: TemplateSelectionMode = 'edit') {\n this.editingTemplate = template ? { ...template } : undefined;\n this.dialogMode = mode;\n this.showAddTemplateDialog = true;\n this.isSavingTemplate = false;\n }\n\n private processTemplate(template: QuickMessageTemplateModel) {\n // remove empty menuList\n template.contents = template.contents.map(content => {\n if (content.type === 'menu_list') {\n content.menu_list = content.menu_list.filter(menu => menu.buttons.length > 0 || menu.file_url || menu.title || menu.description);\n }\n return content;\n });\n\n // remove empty content\n template.contents = template.contents.filter(content => content.text || content.buttons.length > 0 || content.file_url || content.menu_list.length > 0);\n\n return template;\n }\n\n private upsertTemplate(template: QuickMessageTemplateModel, { closeDialog = true }: { closeDialog?: boolean } = {}) {\n const withMeta: QuickMessageTemplateModel = {\n ...template,\n isExpanded: this.editingTemplate?.id === template.id ? this.editingTemplate.isExpanded : true,\n };\n\n const exists = this.templates.some(item => item.id === withMeta.id);\n const nextTemplates = exists ? this.templates.map(item => (item.id === withMeta.id ? withMeta : item)) : [...this.templates, withMeta];\n\n this.setTemplates(nextTemplates);\n\n if (closeDialog) {\n this.closeTemplateDialog();\n }\n }\n\n private async handleTemplateSave(template: QuickMessageTemplateModel) {\n if (this.isSavingTemplate) {\n return;\n }\n\n const cloned = this.cloneTemplates([template]);\n const workingTemplate = cloned[0];\n if (!workingTemplate) {\n return;\n }\n\n const processedTemplate = this.processTemplate(workingTemplate);\n const isNewTemplate = !processedTemplate.id || processedTemplate.id.startsWith('template-');\n\n if (!isNewTemplate) {\n try {\n this.isSavingTemplate = true;\n const updated = await updateQuickMessageTemplate(processedTemplate);\n const [normalized] = this.cloneTemplates([updated]);\n this.upsertTemplate(normalized);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to update template');\n } finally {\n this.isSavingTemplate = false;\n }\n return;\n }\n\n try {\n this.isSavingTemplate = true;\n const created = await createQuickMessageTemplate(processedTemplate);\n const [normalized] = this.cloneTemplates([created]);\n this.upsertTemplate(normalized);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to create template');\n } finally {\n this.isSavingTemplate = false;\n }\n }\n\n private requestDeleteTemplate(template: QuickMessageTemplateModel) {\n if (!template?.id || this.deletingTemplateId) {\n return;\n }\n\n this.templatePendingDelete = template;\n const t = useTranslation();\n const title = t('quick_message.delete_template_title');\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title,\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n this.confirmDeleteTemplate();\n },\n onCloseDialog: () => {\n this.templatePendingDelete = undefined;\n },\n });\n }\n\n private async confirmDeleteTemplate() {\n const template = this.templatePendingDelete;\n if (!template?.id || this.deletingTemplateId) {\n this.templatePendingDelete = undefined;\n return;\n }\n\n this.deletingTemplateId = template.id;\n this.templatePendingDelete = undefined;\n\n try {\n await deleteQuickMessageTemplate(template.id);\n const remaining = this.templates.filter(item => item.id !== template.id);\n this.setTemplates(remaining);\n this.totalTemplates = Math.max(0, this.totalTemplates - 1);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to delete template');\n } finally {\n this.deletingTemplateId = undefined;\n }\n }\n\n render() {\n const theme = configStore.get('theme');\n const t = useTranslation();\n const filteredTemplates = this.filterTemplates();\n const showBottomSpinner = (this.isLoading && filteredTemplates.length > 0) || this.isLoadingMore;\n\n return (\n <Host class=\"relative flex min-h-0 flex-1 flex-col gap-2\">\n <form class=\"relative w-full\" onSubmit={event => this.handleSearchSubmit(event)}>\n <input\n type=\"text\"\n class={`w-full border z-border-divider-${theme} text-sm px-4 py-2 rounded-lg ring-primary focus:outline-none focus:border-primary z-background-${theme} z-text-${theme}`}\n placeholder={t('quick_message.search_template')}\n value={this.searchTemplate}\n onInput={event => this.handleSearchInput(event)}\n autoComplete=\"off\"\n />\n {this.searchTemplate && (\n <button type=\"button\" class=\"absolute inset-y-0 right-3 flex items-center text-xs opacity-70 transition-opacity hover:opacity-100\" onClick={() => this.clearSearch()}>\n <Icon name=\"X\" addClass=\"size-4\" />\n </button>\n )}\n </form>\n\n <div class=\"flex items-center gap-2\">\n <div class={`inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold text-white z-background-primary-${theme}`}>ZIGNAL</div>\n <div class={`inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold z-text-primary-${theme} border z-border-primary-${theme}`}>ZWIZ.AI</div>\n </div>\n\n <div\n class=\"flex flex-1 flex-col gap-3 overflow-y-auto\"\n ref={el => {\n this.scrollContainer = el ? (el as HTMLDivElement) : undefined;\n }}\n onScroll={event => this.handleScroll(event)}\n >\n <button\n class={`inline-flex items-center justify-center gap-2 rounded-xl border-[1.5px] border-dashed px-4 py-2 z-text-primary-${theme} cursor-pointer`}\n type=\"button\"\n onClick={() => this.openTemplateDialog(undefined, 'create')}\n >\n <Icon name=\"Plus\" addClass=\"size-4\" />\n <span class=\"text-sm\">{t('quick_message.add_template')}</span>\n </button>\n\n {this.isLoading && filteredTemplates.length === 0 ? (\n <div class=\"flex flex-1 items-center justify-center py-10 text-sm text-slate-500\">\n <Icon name=\"Loader2\" addClass=\"size-6 animate-spin\" />\n </div>\n ) : (\n <div class=\"flex flex-col gap-3\">\n {filteredTemplates.length === 0 && <div class=\"py-10 text-center text-sm text-slate-500\">{t('quick_message.template_empty')}</div>}\n\n {filteredTemplates.map(template => {\n const lastUpdatedAt = template.last_updated_at || template.created_at || new Date();\n const formattedDate = dayjs(lastUpdatedAt).tz().format('DD/MM/YYYY HH:mm');\n const rawLastUpdatedBy = template.last_updated_by ?? template.created_by ?? '';\n const displayUpdatedBy = typeof rawLastUpdatedBy === 'string' && rawLastUpdatedBy.trim().length > 0 ? rawLastUpdatedBy : '-';\n\n return (\n <div\n class={`quick-message-template__card z-border-primary-${theme} rounded-2xl border-[1.5px] px-4 py-4 shadow-[0_8px_24px_rgba(15,23,42,0.08)]`}\n key={template.id}\n >\n <div class=\"flex flex-col sm:flex-row items-start gap-3 sm:min-w-0\">\n <div class=\"flex-1 flex flex-col gap-1.5 w-full overflow-hidden\">\n <div class=\"text-base font-semibold truncate\" title={template.title}>\n {template.title}\n </div>\n <div class={`text-[11px] z-text-gray-${theme}`}>{t('quick_message.updated_at').replace('{date}', formattedDate).replace('{by}', displayUpdatedBy)}</div>\n </div>\n <div class=\"flex gap-4 flex-row items-center self-end\">\n {this.isMaster && <button type=\"button\" onClick={() => this.handleTemplateAction(template, 'edit')} aria-label={t('edit')}>\n <Icon name=\"Pencil\" addClass={`size-4 cursor-pointer z-text-primary-${theme}`} />\n </button>}\n {this.isMaster && <button\n type=\"button\"\n aria-label={t('delete')}\n onClick={() => this.requestDeleteTemplate(template)}\n disabled={Boolean(this.deletingTemplateId)}\n class={`${this.deletingTemplateId ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'}`}\n >\n {this.deletingTemplateId === template.id ? (\n <Icon name=\"Loader2\" addClass={`size-4 animate-spin z-text-primary-${theme}`} />\n ) : (\n <Icon name=\"Trash2\" addClass={`size-4 z-text-primary-${theme}`} />\n )}\n </button>}\n {!this.isMaster && (\n <button\n type=\"button\"\n class={`inline-flex items-center justify-center rounded-full border px-4 py-2 text-xs font-semibold cursor-pointer z-border-primary-${theme} z-text-primary-${theme}`}\n onClick={() => this.handleTemplateAction(template, 'edit-send')}\n >\n {t('quick_message.edit_before_send')}\n </button>\n )}\n {!this.isMaster && (\n <button\n type=\"button\"\n class={`inline-flex items-center justify-center rounded-full px-4 py-2 text-xs font-semibold text-white cursor-pointer z-background-primary-${theme}`}\n onClick={() => this.handleTemplateAction(template, 'send')}\n >\n {t('quick_message.send_now')}\n </button>\n )}\n <button\n type=\"button\"\n class=\"quick-message-template__toggle inline-flex h-9 w-9 items-center justify-center rounded-full cursor-pointer\"\n onClick={() => this.toggleTemplateExpansion(template.id)}\n >\n <Icon name={template.isExpanded ? 'ChevronUp' : 'ChevronDown'} />\n </button>\n </div>\n </div>\n {template.isExpanded && (\n <div class=\"mt-4 flex flex-col gap-2\">\n {template.contents.map(content => (\n <div key={content.id} class={`border z-border-${theme} rounded-xl p-4`}>\n {this.renderTemplateContent(content, theme)}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n {showBottomSpinner && (\n <div class=\"flex justify-center py-4 text-sm text-slate-500\">\n <Icon name=\"Loader2\" addClass=\"size-5 animate-spin\" />\n </div>\n )}\n </div>\n\n {this.showAddTemplateDialog && (\n <quick-message-add-template\n handleClose={() => this.closeTemplateDialog()}\n handleSave={template => this.handleTemplateSave(template)}\n handleSend={template => this.handleTemplateAction(template, 'send')}\n initialTemplate={this.editingTemplate}\n mode={this.dialogMode}\n isSaving={this.isSavingTemplate}\n />\n )}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-Dx0yXDO_.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","showErrorDialog"],"sources":["src/components/quick-message-template/quick-message-template.css?tag=quick-message-template","src/components/quick-message-template/quick-message-template.tsx"],"sourcesContent":[".quick-message-template__card {\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);\n}\n\n.quick-message-template__button-action {\n color: var(--quick-modal-primary);\n}\n\n.quick-message-template__toggle {\n border: 1px solid rgba(148, 163, 184, 0.4);\n}\n\n.quick-message-template__dialog-overlay {\n position: absolute;\n inset: 0;\n background: rgba(15, 23, 42, 0.35);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 70;\n padding: 16px;\n}\n\n.quick-message-template__dialog {\n width: min(440px, 100%);\n border-radius: 16px;\n box-shadow: 0 20px 45px rgba(17, 24, 39, 0.22);\n border: 1px solid rgba(148, 163, 184, 0.25);\n display: flex;\n flex-direction: column;\n max-height: min(440px, 100%);\n}\n\n.quick-message-template__dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 18px 20px 12px;\n border-bottom: 1px solid rgba(148, 163, 184, 0.28);\n}\n\n.quick-message-template__dialog-header h3 {\n font-size: 16px;\n font-weight: 600;\n margin: 0;\n}\n\n.quick-message-template__dialog-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n.quick-message-template__dialog-body {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px 20px;\n overflow-y: auto;\n}\n\n.quick-message-template__input,\n.quick-message-template__textarea {\n border-radius: 12px;\n border-width: 1px;\n padding: 10px 14px;\n font-size: 14px;\n resize: none;\n}\n\n.quick-message-template__textarea {\n min-height: 100px;\n}\n\n.quick-message-template__dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px 20px;\n border-top: 1px solid rgba(148, 163, 184, 0.18);\n}\n\n.quick-message-template__dialog-button {\n border-radius: 9999px;\n font-weight: 600;\n font-size: 13px;\n padding: 10px 18px;\n border: none;\n cursor: pointer;\n}\n\n.quick-message-template__dialog-button--ghost {\n background: transparent;\n color: rgba(100, 116, 139, 1);\n}\n\n.quick-message-template__dialog-button--primary {\n background: var(--quick-modal-primary);\n color: #fff;\n box-shadow: 0 10px 25px var(--quick-modal-primary-shadow);\n}\n\n.quick-message-template__dialog-button--primary:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n box-shadow: none;\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport dayjs from 'dayjs';\nimport { createQuickMessageTemplate, deleteQuickMessageTemplate, getQuickMessageTemplates, updateQuickMessageTemplate } from '../../api/quick-message';\nimport { QuickMessageTemplate as QuickMessageTemplateModel, QuickMessageTemplateContent } from '../../store/type';\nimport { configStore } from '../../store/store';\nimport { useTranslation } from '../../utils/utils';\nimport { Icon } from '../internal-component/icon';\nimport type { TemplateSelectionMode } from '../quick-message-modal/template-selection';\nimport { DIALOG_TYPE, openDialog, handleError as showErrorDialog } from '../../store/dialog';\n\n@Component({\n tag: 'quick-message-template',\n styleUrl: 'quick-message-template.css',\n})\nexport class QuickMessageTemplateComponent {\n @Prop() handleClose?: () => void;\n @Prop() value?: string | QuickMessageTemplateModel[];\n @Prop() isMaster: boolean = false;\n\n @State() private searchTemplate = '';\n @State() private templates: QuickMessageTemplateModel[] = [];\n @State() private showAddTemplateDialog = false;\n @State() private editingTemplate?: QuickMessageTemplateModel;\n @State() private dialogMode: TemplateSelectionMode = 'create';\n @State() private isLoading = false;\n @State() private isLoadingMore = false;\n @State() private isSavingTemplate = false;\n @State() private deletingTemplateId?: string;\n @State() private templatePendingDelete?: QuickMessageTemplateModel;\n @State() private totalTemplates = 0;\n @State() private totalPages = 0;\n\n private page = 1;\n private readonly pageSize = 10;\n private readonly loadMoreThreshold = 160;\n private currentSearch = '';\n private scrollContainer?: HTMLDivElement;\n\n @Event({ bubbles: true, composed: true }) templatesChange!: EventEmitter<QuickMessageTemplateModel[]>;\n @Event({ bubbles: true, composed: true }) sendTemplate!: EventEmitter<QuickMessageTemplateModel>;\n\n componentWillLoad() {\n this.syncTemplatesFromProp(this.value);\n }\n\n async componentDidLoad() {\n await this.fetchTemplates({ reset: true });\n }\n\n componentDidRender() {\n this.autoLoadMoreIfNeeded();\n }\n\n @Watch('value')\n protected handleValueChange(newValue?: string | QuickMessageTemplateModel[]) {\n this.syncTemplatesFromProp(newValue);\n }\n\n private syncTemplatesFromProp(value?: string | QuickMessageTemplateModel[]) {\n if (value === undefined || value === null) {\n this.setTemplates([], false);\n return;\n }\n\n const parsed = this.parseTemplateValue(value);\n this.setTemplates(parsed, false);\n }\n\n private mergeWithExistingState(fetched: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (this.templates.length === 0) {\n return fetched;\n }\n\n const expandedMap = new Map(this.templates.map(template => [template.id, template.isExpanded ?? false]));\n\n return fetched.map(template => ({\n ...template,\n isExpanded: expandedMap.get(template.id) ?? template.isExpanded ?? false,\n }));\n }\n\n private appendTemplates(fetched: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (fetched.length === 0) {\n return [...this.templates];\n }\n\n const next = [...this.templates];\n const indexMap = new Map(next.map((template, index) => [template.id, index]));\n\n fetched.forEach(template => {\n const existingIndex = indexMap.get(template.id);\n if (existingIndex !== undefined) {\n next[existingIndex] = {\n ...template,\n isExpanded: next[existingIndex].isExpanded ?? false,\n };\n return;\n }\n\n next.push({ ...template, isExpanded: template.isExpanded ?? false });\n indexMap.set(template.id, next.length - 1);\n });\n\n return next;\n }\n\n private async fetchTemplates({ search, reset = true }: { search?: string; reset?: boolean } = {}) {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n if (!businessId || !shopId) {\n return;\n }\n\n if (reset ? this.isLoading : this.isLoadingMore) {\n return;\n }\n\n const normalizedSearch = search !== undefined ? search : this.currentSearch;\n const trimmedSearch = normalizedSearch?.trim() ?? '';\n const nextPage = reset ? 1 : this.page + 1;\n\n if (search !== undefined) {\n this.searchTemplate = normalizedSearch ?? '';\n }\n\n if (reset) {\n this.isLoading = true;\n } else {\n this.isLoadingMore = true;\n }\n\n try {\n const response = await getQuickMessageTemplates({\n search: trimmedSearch ? trimmedSearch : undefined,\n page: nextPage,\n limit: this.pageSize,\n });\n\n const normalized = this.cloneTemplates(response.templates || []);\n const nextTemplates = reset ? this.mergeWithExistingState(normalized) : this.appendTemplates(normalized);\n\n this.page = response.page > 0 ? response.page : nextPage;\n const resolvedTotalPages = response.total_pages > 0 ? response.total_pages : nextTemplates.length > 0 ? 1 : 0;\n this.totalPages = resolvedTotalPages;\n this.totalTemplates = response.total;\n this.currentSearch = trimmedSearch;\n\n this.setTemplates(nextTemplates);\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to fetch templates');\n } finally {\n if (reset) {\n this.isLoading = false;\n } else {\n this.isLoadingMore = false;\n }\n }\n }\n\n private async loadMoreTemplates() {\n if (this.isLoading || this.isLoadingMore) {\n return;\n }\n\n if (this.totalTemplates > 0 && this.templates.length >= this.totalTemplates) {\n return;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return;\n }\n\n await this.fetchTemplates({ reset: false });\n }\n\n private handleScroll(event: Event) {\n const target = event.target as HTMLElement | null;\n if (!target) {\n return;\n }\n\n this.triggerLoadMoreIfNeeded(target);\n }\n\n private async handleSearchSubmit(event?: Event) {\n event?.preventDefault();\n await this.fetchTemplates({ search: this.searchTemplate, reset: true });\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchTemplate = value;\n\n if (!value.trim() && this.currentSearch && !this.isLoading && !this.isLoadingMore) {\n void this.fetchTemplates({ search: '', reset: true });\n }\n }\n\n private clearSearch() {\n if (!this.searchTemplate && !this.currentSearch) {\n return;\n }\n\n this.searchTemplate = '';\n\n if (!this.isLoading && !this.isLoadingMore) {\n void this.fetchTemplates({ search: '', reset: true });\n }\n }\n\n private parseTemplateValue(value: string | QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n if (typeof value === 'string') {\n try {\n const deserialized = JSON.parse(value) as QuickMessageTemplateModel[];\n return this.cloneTemplates(deserialized);\n } catch (error: unknown) {\n console.warn('[quick-message-template] Failed to parse templates value', error);\n return [];\n }\n }\n\n return this.cloneTemplates(value);\n }\n\n private cloneTemplates(templates: QuickMessageTemplateModel[]): QuickMessageTemplateModel[] {\n return (templates || []).map(template => {\n const rawContents = template.contents || [];\n\n const normalizedContents = rawContents.map(content => {\n const rawMenuList = content.menu_list || [];\n const menuList = rawMenuList.map(menu => ({\n ...menu,\n buttons: (menu.buttons || []).map(button => ({ ...button })),\n }));\n\n return {\n ...content,\n buttons: (content.buttons || []).map(button => ({ ...button })),\n menu_list: menuList,\n };\n });\n\n return {\n ...template,\n contents: normalizedContents,\n };\n });\n }\n\n private setTemplates(next: QuickMessageTemplateModel[], shouldEmit = true) {\n this.templates = next;\n if (shouldEmit) {\n const payload = this.cloneTemplates(next);\n this.templatesChange.emit(payload);\n }\n }\n\n private canAttemptLoadMore(): boolean {\n if (this.isLoading || this.isLoadingMore) {\n return false;\n }\n\n if (this.totalTemplates > 0 && this.templates.length >= this.totalTemplates) {\n return false;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return false;\n }\n\n return true;\n }\n\n private triggerLoadMoreIfNeeded(container: HTMLElement) {\n if (!this.canAttemptLoadMore()) {\n return;\n }\n\n const remaining = container.scrollHeight - container.scrollTop - container.clientHeight;\n if (remaining < this.loadMoreThreshold) {\n void this.loadMoreTemplates();\n }\n }\n\n private autoLoadMoreIfNeeded() {\n if (!this.scrollContainer) {\n return;\n }\n\n this.triggerLoadMoreIfNeeded(this.scrollContainer);\n }\n\n private toggleTemplateExpansion(id: string) {\n this.setTemplates(this.templates.map(template => (template.id === id ? { ...template, isExpanded: !template.isExpanded } : template)));\n }\n\n private filterTemplates(): QuickMessageTemplateModel[] {\n const search = this.currentSearch.trim().toLowerCase();\n if (!search) return this.templates;\n return this.templates.filter(template => template.title.toLowerCase().includes(search));\n }\n\n private handleTemplateAction(template: QuickMessageTemplateModel, mode: TemplateSelectionMode) {\n if (mode === 'create' || mode === 'edit' || mode === 'edit-send') {\n this.openTemplateDialog(template, mode);\n return;\n }\n if (mode === 'send') {\n const clonedTemplate: QuickMessageTemplateModel = {\n ...template,\n contents: (template.contents || []).map(content => ({\n ...content,\n buttons: [...(content.buttons || [])],\n menu_list: (content.menu_list || []).map(menu => ({\n ...menu,\n buttons: [...(menu.buttons || [])],\n })),\n })),\n };\n\n const processedTemplate = this.processTemplate(clonedTemplate);\n\n this.closeTemplateDialog();\n this.handleClose?.();\n this.sendTemplate.emit(processedTemplate);\n }\n }\n\n private renderTemplateContent(content: QuickMessageTemplateContent, theme: string) {\n switch (content.type) {\n case 'text':\n return (\n <div class=\"flex flex-col gap-2\">\n <p class={`z-text-${theme} whitespace-pre-line text-sm leading-relaxed`}>{content.text}</p>\n </div>\n );\n case 'button':\n return (\n <div class=\"flex flex-col gap-2\">\n <p class={`z-text-${theme} whitespace-pre-line text-sm leading-relaxed`}>{content.text}</p>\n <div class=\"flex flex-col gap-1.5\">\n {content.buttons.length > 0 && (\n <div class=\"flex flex-col gap-2\">\n {content.buttons.map(button => (\n <div\n class={`flex w-full flex-col items-center gap-1 rounded-xl px-3 py-2 text-sm font-medium text-white shadow-sm z-background-primary-${theme} truncate`}\n key={button.id}\n >\n <span class=\"w-full text-center leading-tight truncate\">{button.text || '-'}</span>\n <span class=\"w-full text-center text-xs leading-none opacity-80 truncate\">{button.action_type === 'text' ? '-' : button.action || '-'}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n case 'image':\n return <div class=\"flex flex-wrap gap-3\">{content.file_url && this.renderImageMedia(content.file_url, theme)}</div>;\n case 'menu_list':\n return (\n <div class=\"flex gap-3 overflow-x-auto pb-1\">\n {content.menu_list.map(menu => (\n <div class={`flex w-[240px] shrink-0 flex-col overflow-hidden rounded-[18px] border-[1.5px] shadow-sm z-border-primary-${theme} z-background-${theme}`} key={menu.id}>\n <div class={`relative h-[160px] border-b-[1.5px] z-border-primary-${theme} overflow-hidden`}>\n {menu.file_url ? (\n <img src={menu.file_url} alt={menu.title} class=\"h-full w-full object-cover\" loading=\"lazy\" />\n ) : (\n <div class={`flex h-full w-full items-center justify-center z-background-${theme} z-text-gray-${theme} opacity-60`}>\n <Icon name=\"Image\" addClass=\"size-10\" />\n </div>\n )}\n </div>\n\n <div class=\"flex flex-col gap-2 px-4 py-4\">\n {menu.title && <div class=\"text-sm font-semibold leading-snug\">{menu.title}</div>}\n {menu.description && <div class={`text-xs leading-snug z-text-gray-${theme}`}>{menu.description}</div>}\n\n {menu.buttons.length > 0 && (\n <div class=\"flex flex-col gap-2\">\n {menu.buttons.map(button => (\n <div\n class={`flex w-full flex-col items-center gap-1 rounded-xl px-3 py-2 text-sm font-medium text-white shadow-sm z-background-primary-${theme}`}\n key={button.id}\n >\n <span class=\"w-full text-center leading-tight truncate\">{button.text || '-'}</span>\n <span class=\"w-full text-center text-xs leading-none opacity-80 truncate\">{button.action_type === 'text' ? '-' : button.action || '-'}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n case 'video':\n return (\n <video src={content.file_url} class=\"h-[220px] object-cover rounded-xl\" controls>\n <track kind=\"captions\" src=\"\" label=\"English\" />\n </video>\n );\n default:\n return null;\n }\n }\n\n private renderImageMedia(fileUrl: string, theme: string) {\n return <img src={fileUrl} alt=\"\" class={`h-[200px] w-[200px] rounded-xl border object-cover z-border-${theme}`} loading=\"lazy\" />;\n }\n\n private closeTemplateDialog() {\n this.showAddTemplateDialog = false;\n this.editingTemplate = undefined;\n this.dialogMode = 'edit';\n this.isSavingTemplate = false;\n }\n\n private openTemplateDialog(template?: QuickMessageTemplateModel, mode: TemplateSelectionMode = 'edit') {\n this.editingTemplate = template ? { ...template } : undefined;\n this.dialogMode = mode;\n this.showAddTemplateDialog = true;\n this.isSavingTemplate = false;\n }\n\n private processTemplate(template: QuickMessageTemplateModel) {\n // remove empty menuList\n template.contents = template.contents.map(content => {\n if (content.type === 'menu_list') {\n content.menu_list = content.menu_list.filter(menu => menu.buttons.length > 0 || menu.file_url || menu.title || menu.description);\n }\n return content;\n });\n\n // remove empty content\n template.contents = template.contents.filter(content => content.text || content.buttons.length > 0 || content.file_url || content.menu_list.length > 0);\n\n return template;\n }\n\n private upsertTemplate(template: QuickMessageTemplateModel, { closeDialog = true }: { closeDialog?: boolean } = {}) {\n const withMeta: QuickMessageTemplateModel = {\n ...template,\n isExpanded: this.editingTemplate?.id === template.id ? this.editingTemplate.isExpanded : true,\n };\n\n const exists = this.templates.some(item => item.id === withMeta.id);\n const nextTemplates = exists ? this.templates.map(item => (item.id === withMeta.id ? withMeta : item)) : [...this.templates, withMeta];\n\n this.setTemplates(nextTemplates);\n\n if (closeDialog) {\n this.closeTemplateDialog();\n }\n }\n\n private async handleTemplateSave(template: QuickMessageTemplateModel) {\n if (this.isSavingTemplate) {\n return;\n }\n\n const cloned = this.cloneTemplates([template]);\n const workingTemplate = cloned[0];\n if (!workingTemplate) {\n return;\n }\n\n const processedTemplate = this.processTemplate(workingTemplate);\n const isNewTemplate = !processedTemplate.id || processedTemplate.id.startsWith('template-');\n\n if (!isNewTemplate) {\n try {\n this.isSavingTemplate = true;\n const updated = await updateQuickMessageTemplate(processedTemplate);\n const [normalized] = this.cloneTemplates([updated]);\n this.upsertTemplate(normalized);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to update template');\n } finally {\n this.isSavingTemplate = false;\n }\n return;\n }\n\n try {\n this.isSavingTemplate = true;\n const created = await createQuickMessageTemplate(processedTemplate);\n const [normalized] = this.cloneTemplates([created]);\n this.upsertTemplate(normalized);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to create template');\n } finally {\n this.isSavingTemplate = false;\n }\n }\n\n private requestDeleteTemplate(template: QuickMessageTemplateModel) {\n if (!template?.id || this.deletingTemplateId) {\n return;\n }\n\n this.templatePendingDelete = template;\n const t = useTranslation();\n const title = t('quick_message.delete_template_title');\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title,\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n this.confirmDeleteTemplate();\n },\n onCloseDialog: () => {\n this.templatePendingDelete = undefined;\n },\n });\n }\n\n private async confirmDeleteTemplate() {\n const template = this.templatePendingDelete;\n if (!template?.id || this.deletingTemplateId) {\n this.templatePendingDelete = undefined;\n return;\n }\n\n this.deletingTemplateId = template.id;\n this.templatePendingDelete = undefined;\n\n try {\n await deleteQuickMessageTemplate(template.id);\n const remaining = this.templates.filter(item => item.id !== template.id);\n this.setTemplates(remaining);\n this.totalTemplates = Math.max(0, this.totalTemplates - 1);\n void this.fetchTemplates({ reset: true });\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-template] Failed to delete template');\n } finally {\n this.deletingTemplateId = undefined;\n }\n }\n\n render() {\n const theme = configStore.get('theme');\n const t = useTranslation();\n const filteredTemplates = this.filterTemplates();\n const showBottomSpinner = (this.isLoading && filteredTemplates.length > 0) || this.isLoadingMore;\n\n return (\n <Host class=\"relative flex min-h-0 flex-1 flex-col gap-2\">\n <form class=\"relative w-full\" onSubmit={event => this.handleSearchSubmit(event)}>\n <input\n type=\"text\"\n class={`w-full border z-border-divider-${theme} text-sm px-4 py-2 rounded-lg ring-primary focus:outline-none focus:border-primary z-background-${theme} z-text-${theme}`}\n placeholder={t('quick_message.search_template')}\n value={this.searchTemplate}\n onInput={event => this.handleSearchInput(event)}\n autoComplete=\"off\"\n />\n {this.searchTemplate && (\n <button type=\"button\" class=\"absolute inset-y-0 right-3 flex items-center text-xs opacity-70 transition-opacity hover:opacity-100\" onClick={() => this.clearSearch()}>\n <Icon name=\"X\" addClass=\"size-4\" />\n </button>\n )}\n </form>\n\n <div class=\"flex items-center gap-2\">\n <div class={`inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold text-white z-background-primary-${theme}`}>ZIGNAL</div>\n <div class={`inline-flex items-center rounded-full px-4 py-1 text-[10px] font-semibold z-text-primary-${theme} border z-border-primary-${theme}`}>ZWIZ.AI</div>\n </div>\n\n <div\n class=\"flex flex-1 flex-col gap-3 overflow-y-auto\"\n ref={el => {\n this.scrollContainer = el ? (el as HTMLDivElement) : undefined;\n }}\n onScroll={event => this.handleScroll(event)}\n >\n <button\n class={`inline-flex items-center justify-center gap-2 rounded-xl border-[1.5px] border-dashed px-4 py-2 z-text-primary-${theme} cursor-pointer`}\n type=\"button\"\n onClick={() => this.openTemplateDialog(undefined, 'create')}\n >\n <Icon name=\"Plus\" addClass=\"size-4\" />\n <span class=\"text-sm\">{t('quick_message.add_template')}</span>\n </button>\n\n {this.isLoading && filteredTemplates.length === 0 ? (\n <div class=\"flex flex-1 items-center justify-center py-10 text-sm text-slate-500\">\n <Icon name=\"Loader2\" addClass=\"size-6 animate-spin\" />\n </div>\n ) : (\n <div class=\"flex flex-col gap-3\">\n {filteredTemplates.length === 0 && <div class=\"py-10 text-center text-sm text-slate-500\">{t('quick_message.template_empty')}</div>}\n\n {filteredTemplates.map(template => {\n const lastUpdatedAt = template.last_updated_at || template.created_at || new Date();\n const formattedDate = dayjs(lastUpdatedAt).tz().format('DD/MM/YYYY HH:mm');\n const rawLastUpdatedBy = template.last_updated_by ?? template.created_by ?? '';\n const displayUpdatedBy = typeof rawLastUpdatedBy === 'string' && rawLastUpdatedBy.trim().length > 0 ? rawLastUpdatedBy : '-';\n\n return (\n <div\n class={`quick-message-template__card z-border-primary-${theme} rounded-2xl border-[1.5px] px-4 py-4 shadow-[0_8px_24px_rgba(15,23,42,0.08)]`}\n key={template.id}\n >\n <div class=\"flex flex-col sm:flex-row items-start gap-3 sm:min-w-0\">\n <div class=\"flex-1 flex flex-col gap-1.5 w-full overflow-hidden\">\n <div class=\"text-base font-semibold truncate\" title={template.title}>\n {template.title}\n </div>\n <div class={`text-[11px] z-text-gray-${theme}`}>{t('quick_message.updated_at').replace('{date}', formattedDate).replace('{by}', displayUpdatedBy)}</div>\n </div>\n <div class=\"flex gap-4 flex-row items-center self-end\">\n {this.isMaster && <button type=\"button\" onClick={() => this.handleTemplateAction(template, 'edit')} aria-label={t('edit')}>\n <Icon name=\"Pencil\" addClass={`size-4 cursor-pointer z-text-primary-${theme}`} />\n </button>}\n {this.isMaster && <button\n type=\"button\"\n aria-label={t('delete')}\n onClick={() => this.requestDeleteTemplate(template)}\n disabled={Boolean(this.deletingTemplateId)}\n class={`${this.deletingTemplateId ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'}`}\n >\n {this.deletingTemplateId === template.id ? (\n <Icon name=\"Loader2\" addClass={`size-4 animate-spin z-text-primary-${theme}`} />\n ) : (\n <Icon name=\"Trash2\" addClass={`size-4 z-text-primary-${theme}`} />\n )}\n </button>}\n {!this.isMaster && (\n <button\n type=\"button\"\n class={`inline-flex items-center justify-center rounded-full border px-4 py-2 text-xs font-semibold cursor-pointer z-border-primary-${theme} z-text-primary-${theme}`}\n onClick={() => this.handleTemplateAction(template, 'edit-send')}\n >\n {t('quick_message.edit_before_send')}\n </button>\n )}\n {!this.isMaster && (\n <button\n type=\"button\"\n class={`inline-flex items-center justify-center rounded-full px-4 py-2 text-xs font-semibold text-white cursor-pointer z-background-primary-${theme}`}\n onClick={() => this.handleTemplateAction(template, 'send')}\n >\n {t('quick_message.send_now')}\n </button>\n )}\n <button\n type=\"button\"\n class=\"quick-message-template__toggle inline-flex h-9 w-9 items-center justify-center rounded-full cursor-pointer\"\n onClick={() => this.toggleTemplateExpansion(template.id)}\n >\n <Icon name={template.isExpanded ? 'ChevronUp' : 'ChevronDown'} />\n </button>\n </div>\n </div>\n {template.isExpanded && (\n <div class=\"mt-4 flex flex-col gap-2\">\n {template.contents.map(content => (\n <div key={content.id} class={`border z-border-${theme} rounded-xl p-4`}>\n {this.renderTemplateContent(content, theme)}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n {showBottomSpinner && (\n <div class=\"flex justify-center py-4 text-sm text-slate-500\">\n <Icon name=\"Loader2\" addClass=\"size-5 animate-spin\" />\n </div>\n )}\n </div>\n\n {this.showAddTemplateDialog && (\n <quick-message-add-template\n handleClose={() => this.closeTemplateDialog()}\n handleSave={template => this.handleTemplateSave(template)}\n handleSend={template => this.handleTemplateAction(template, 'send')}\n initialTemplate={this.editingTemplate}\n mode={this.dialogMode}\n isSaving={this.isSavingTemplate}\n />\n )}\n </Host>\n );\n }\n}\n"],"version":3}
|