@aizu-chat/react 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/chunk-BRNQSZ2E.mjs +931 -0
  2. package/dist/components.d.mts +2 -12
  3. package/dist/components.d.ts +2 -12
  4. package/dist/components.js +423 -313
  5. package/dist/components.mjs +3 -5
  6. package/dist/index.d.mts +1 -2
  7. package/dist/index.d.ts +1 -2
  8. package/dist/index.js +423 -357
  9. package/dist/index.mjs +2 -10
  10. package/package.json +1 -1
  11. package/dist/chunk-27KHUFCW.mjs +0 -826
  12. package/dist/chunk-2E7KQQED.mjs +0 -816
  13. package/dist/chunk-2PRXGXTN.mjs +0 -826
  14. package/dist/chunk-2UZJYWLD.mjs +0 -49
  15. package/dist/chunk-2ZNJT52V.mjs +0 -814
  16. package/dist/chunk-34B6VEJC.mjs +0 -677
  17. package/dist/chunk-35JN2QFA.mjs +0 -784
  18. package/dist/chunk-3FHGECHR.mjs +0 -829
  19. package/dist/chunk-3IU2OVAG.mjs +0 -780
  20. package/dist/chunk-3QKHSOJ4.mjs +0 -728
  21. package/dist/chunk-3XKU4RH2.mjs +0 -814
  22. package/dist/chunk-432NOVMD.mjs +0 -822
  23. package/dist/chunk-4FW2X356.mjs +0 -653
  24. package/dist/chunk-4KUZUKKS.mjs +0 -776
  25. package/dist/chunk-4UO5EJ54.mjs +0 -826
  26. package/dist/chunk-66DXSMQL.mjs +0 -826
  27. package/dist/chunk-6IIUDDOD.mjs +0 -775
  28. package/dist/chunk-6LVL2AO4.mjs +0 -660
  29. package/dist/chunk-6OMCLP7J.mjs +0 -727
  30. package/dist/chunk-6SYZLU5L.mjs +0 -782
  31. package/dist/chunk-6XLUHLNW.mjs +0 -826
  32. package/dist/chunk-6Z4U3TJM.mjs +0 -728
  33. package/dist/chunk-6ZNP2727.mjs +0 -686
  34. package/dist/chunk-75Q3MZEF.mjs +0 -52
  35. package/dist/chunk-A4YWLH3K.mjs +0 -751
  36. package/dist/chunk-AT5CG6CS.mjs +0 -53
  37. package/dist/chunk-B4CPQFKO.mjs +0 -826
  38. package/dist/chunk-BH52V6JW.mjs +0 -776
  39. package/dist/chunk-BYPRKP6J.mjs +0 -782
  40. package/dist/chunk-BZVP32PP.mjs +0 -826
  41. package/dist/chunk-C6T755JT.mjs +0 -780
  42. package/dist/chunk-CCFEXIKG.mjs +0 -815
  43. package/dist/chunk-CTYW4VK4.mjs +0 -815
  44. package/dist/chunk-D2UMLUGP.mjs +0 -685
  45. package/dist/chunk-D4DQP4GI.mjs +0 -817
  46. package/dist/chunk-DIBJNQPT.mjs +0 -782
  47. package/dist/chunk-DJQK65LJ.mjs +0 -822
  48. package/dist/chunk-DLQEX6QS.mjs +0 -661
  49. package/dist/chunk-EADN4TWS.mjs +0 -819
  50. package/dist/chunk-EAW7EHJI.mjs +0 -826
  51. package/dist/chunk-EBU5NLRJ.mjs +0 -661
  52. package/dist/chunk-EDBTUKCC.mjs +0 -738
  53. package/dist/chunk-EHQQJPCV.mjs +0 -53
  54. package/dist/chunk-EKELJTME.mjs +0 -674
  55. package/dist/chunk-ELAN3AIY.mjs +0 -784
  56. package/dist/chunk-EWW3DF5X.mjs +0 -814
  57. package/dist/chunk-EXJ5M326.mjs +0 -826
  58. package/dist/chunk-F3DEI4YK.mjs +0 -682
  59. package/dist/chunk-FBJJFSCR.mjs +0 -778
  60. package/dist/chunk-G7M72PUZ.mjs +0 -776
  61. package/dist/chunk-GFVIBK25.mjs +0 -673
  62. package/dist/chunk-GYZ6ICY2.mjs +0 -685
  63. package/dist/chunk-H733EISO.mjs +0 -826
  64. package/dist/chunk-H7C7VETZ.mjs +0 -776
  65. package/dist/chunk-HD2IHWNW.mjs +0 -776
  66. package/dist/chunk-HKAXD2CX.mjs +0 -776
  67. package/dist/chunk-HLRWI4YU.mjs +0 -778
  68. package/dist/chunk-HNPNRGTG.mjs +0 -686
  69. package/dist/chunk-HQYDHSWS.mjs +0 -678
  70. package/dist/chunk-HVPJAO66.mjs +0 -654
  71. package/dist/chunk-I36Q4NZE.mjs +0 -675
  72. package/dist/chunk-ICOCFEPA.mjs +0 -776
  73. package/dist/chunk-IMM7TFAT.mjs +0 -685
  74. package/dist/chunk-J5OEYYWK.mjs +0 -728
  75. package/dist/chunk-JDR62NUF.mjs +0 -729
  76. package/dist/chunk-JEOWW4D7.mjs +0 -49
  77. package/dist/chunk-JIAD2PHZ.mjs +0 -779
  78. package/dist/chunk-JMHZ4OMV.mjs +0 -814
  79. package/dist/chunk-JUYVQ5F6.mjs +0 -673
  80. package/dist/chunk-K2EPLJ4A.mjs +0 -728
  81. package/dist/chunk-K2WK46MB.mjs +0 -776
  82. package/dist/chunk-KM4P2EHL.mjs +0 -729
  83. package/dist/chunk-KR4PTVQ4.mjs +0 -779
  84. package/dist/chunk-KUHNPG4Q.mjs +0 -796
  85. package/dist/chunk-KXFNNAMR.mjs +0 -814
  86. package/dist/chunk-LEZIDZXE.mjs +0 -831
  87. package/dist/chunk-LMFIKGQM.mjs +0 -782
  88. package/dist/chunk-LT43AVHN.mjs +0 -780
  89. package/dist/chunk-MBHPFGVB.mjs +0 -782
  90. package/dist/chunk-MDMZAAPV.mjs +0 -685
  91. package/dist/chunk-MFFRGYEX.mjs +0 -728
  92. package/dist/chunk-O3U6ONKJ.mjs +0 -677
  93. package/dist/chunk-OEPSB4XZ.mjs +0 -686
  94. package/dist/chunk-OJ5M55LN.mjs +0 -660
  95. package/dist/chunk-OSHAWBTV.mjs +0 -800
  96. package/dist/chunk-OVDFBN6H.mjs +0 -800
  97. package/dist/chunk-OWFM4DXQ.mjs +0 -686
  98. package/dist/chunk-P4FEBZ5I.mjs +0 -829
  99. package/dist/chunk-QBXYSNTR.mjs +0 -675
  100. package/dist/chunk-QDS6QW7Y.mjs +0 -738
  101. package/dist/chunk-QN5L3XNN.mjs +0 -830
  102. package/dist/chunk-QOK4APM5.mjs +0 -728
  103. package/dist/chunk-QR37WSLB.mjs +0 -826
  104. package/dist/chunk-QS7TKK6W.mjs +0 -685
  105. package/dist/chunk-QTL5KRV3.mjs +0 -686
  106. package/dist/chunk-QV2LQKNI.mjs +0 -686
  107. package/dist/chunk-QV74GE66.mjs +0 -778
  108. package/dist/chunk-R3NQ7SPU.mjs +0 -780
  109. package/dist/chunk-R3Z7JF73.mjs +0 -673
  110. package/dist/chunk-S63OOCED.mjs +0 -781
  111. package/dist/chunk-SJJDDFKI.mjs +0 -830
  112. package/dist/chunk-SLS4OSOJ.mjs +0 -826
  113. package/dist/chunk-SRFLVMCW.mjs +0 -685
  114. package/dist/chunk-SUOZPZBK.mjs +0 -826
  115. package/dist/chunk-TBBN7SM4.mjs +0 -660
  116. package/dist/chunk-TLJKLZBR.mjs +0 -734
  117. package/dist/chunk-U4ODVQIJ.mjs +0 -728
  118. package/dist/chunk-UA2YL34U.mjs +0 -782
  119. package/dist/chunk-UOQWXJXH.mjs +0 -779
  120. package/dist/chunk-UYBDUWOL.mjs +0 -776
  121. package/dist/chunk-UZD3IED4.mjs +0 -676
  122. package/dist/chunk-V2YCL6RC.mjs +0 -798
  123. package/dist/chunk-V5ROKX6T.mjs +0 -779
  124. package/dist/chunk-VBZLGI7W.mjs +0 -819
  125. package/dist/chunk-VEAZMIG4.mjs +0 -830
  126. package/dist/chunk-VMG4TRFB.mjs +0 -750
  127. package/dist/chunk-VOLA2PFJ.mjs +0 -676
  128. package/dist/chunk-VTBZU2XN.mjs +0 -826
  129. package/dist/chunk-WC37DM4U.mjs +0 -816
  130. package/dist/chunk-WDLA4JJY.mjs +0 -778
  131. package/dist/chunk-WQ6BKSTC.mjs +0 -815
  132. package/dist/chunk-WXSNIINA.mjs +0 -778
  133. package/dist/chunk-WYBPKSFQ.mjs +0 -816
  134. package/dist/chunk-XFRN7OPZ.mjs +0 -686
  135. package/dist/chunk-XLRF64SW.mjs +0 -53
  136. package/dist/chunk-YLNMIJBD.mjs +0 -728
  137. package/dist/chunk-YUGESFKI.mjs +0 -819
  138. package/dist/chunk-YVDMWPWQ.mjs +0 -776
  139. package/dist/chunk-Z6L7TEVJ.mjs +0 -828
  140. package/dist/chunk-Z72DRRM6.mjs +0 -829
  141. package/dist/chunk-ZXF3RMZZ.mjs +0 -685
  142. package/dist/sdk.d.mts +0 -39
  143. package/dist/sdk.d.ts +0 -39
  144. package/dist/sdk.js +0 -121
  145. package/dist/sdk.mjs +0 -10
package/dist/index.js CHANGED
@@ -71,12 +71,9 @@ var __async = (__this, __arguments, generator) => {
71
71
  var src_exports = {};
72
72
  __export(src_exports, {
73
73
  AizuChat: () => AizuChat,
74
- AizuClient: () => AizuClient,
75
74
  Button: () => Button,
76
75
  Loading: () => Loading,
77
76
  QuickMenus: () => QuickMenus,
78
- TestComponent: () => TestComponent,
79
- createAizuClient: () => createAizuClient,
80
77
  useCustom: () => useCustom
81
78
  });
82
79
  module.exports = __toCommonJS(src_exports);
@@ -104,10 +101,224 @@ function styleInject(css, { insertAt } = {}) {
104
101
  }
105
102
 
106
103
  // src/global.css
107
- styleInject('/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n --font-mono:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-300: oklch(83.7% 0.128 66.29);\n --color-orange-400: oklch(75% 0.183 55.934);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-600: oklch(44.6% 0.03 256.802);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --font-weight-bold: 700;\n --radius-3xl: 1.5rem;\n --radius-4xl: 2rem;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --font-sukhumvit:\n "Sukhumvit Set",\n ui-sans-serif,\n system-ui,\n sans-serif;\n --animate-wiggle: wiggle 1s ease-in-out infinite;\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n 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");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-5 {\n right: calc(var(--spacing) * 5);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .bottom-5 {\n bottom: calc(var(--spacing) * 5);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .z-10 {\n z-index: 10;\n }\n .z-9999 {\n z-index: 9999;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .h-0\\.75 {\n height: calc(var(--spacing) * 0.75);\n }\n .h-1\\.25 {\n height: calc(var(--spacing) * 1.25);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-29\\.5 {\n height: calc(var(--spacing) * 29.5);\n }\n .h-42\\.5 {\n height: calc(var(--spacing) * 42.5);\n }\n .h-full {\n height: 100%;\n }\n .w-0\\.75 {\n width: calc(var(--spacing) * 0.75);\n }\n .w-1\\.25 {\n width: calc(var(--spacing) * 1.25);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-75\\.5 {\n width: calc(var(--spacing) * 75.5);\n }\n .w-full {\n width: 100%;\n }\n .max-w-69\\.5 {\n max-width: calc(var(--spacing) * 69.5);\n }\n .max-w-75\\.5 {\n max-width: calc(var(--spacing) * 75.5);\n }\n .min-w-max {\n min-width: max-content;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .animate-wiggle {\n animation: var(--animate-wiggle);\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .gap-x-1 {\n column-gap: calc(var(--spacing) * 1);\n }\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-scroll {\n overflow-x: scroll;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-black\\/50 {\n border-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-orange-300 {\n border-color: var(--color-orange-300);\n }\n .border-orange-400 {\n border-color: var(--color-orange-400);\n }\n .bg-\\[\\#F8F8FA\\] {\n background-color: #F8F8FA;\n }\n .bg-black\\/60 {\n background-color: color-mix(in srgb, #000 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 60%, transparent);\n }\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-orange-200 {\n background-color: var(--color-orange-200);\n }\n .bg-orange-400 {\n background-color: var(--color-orange-400);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-linear-to-l {\n --tw-gradient-position: to left;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to left in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-white {\n --tw-gradient-from: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .text-center {\n text-align: center;\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[12px\\] {\n font-size: 12px;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .text-nowrap {\n text-wrap: nowrap;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-black\\/85 {\n color: color-mix(in srgb, #000 85%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-black) 85%, transparent);\n }\n }\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-white {\n color: var(--color-white);\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .shadow-orange-400 {\n --tw-shadow-color: oklch(75% 0.183 55.934);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-orange-400) var(--tw-shadow-alpha), transparent);\n }\n }\n .transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n outline-color,\n text-decoration-color,\n fill,\n stroke,\n --tw-gradient-from,\n --tw-gradient-via,\n --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .hover\\:bg-blue-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:bg-gray-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-200);\n }\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n }\n .focus\\:ring-orange-300 {\n &:focus {\n --tw-ring-color: var(--color-orange-300);\n }\n }\n .disabled\\:bg-gray-400 {\n &:disabled {\n background-color: var(--color-gray-400);\n }\n }\n .lg\\:top-auto {\n @media (width >= 64rem) {\n top: auto;\n }\n }\n .lg\\:right-5 {\n @media (width >= 64rem) {\n right: calc(var(--spacing) * 5);\n }\n }\n .lg\\:bottom-20 {\n @media (width >= 64rem) {\n bottom: calc(var(--spacing) * 20);\n }\n }\n .lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n .lg\\:h-46 {\n @media (width >= 64rem) {\n height: calc(var(--spacing) * 46);\n }\n }\n .lg\\:max-h-201 {\n @media (width >= 64rem) {\n max-height: calc(var(--spacing) * 201);\n }\n }\n .lg\\:w-107\\.5 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 107.5);\n }\n }\n .lg\\:max-w-80 {\n @media (width >= 64rem) {\n max-width: calc(var(--spacing) * 80);\n }\n }\n .lg\\:flex-wrap {\n @media (width >= 64rem) {\n flex-wrap: wrap;\n }\n }\n .lg\\:rounded-4xl {\n @media (width >= 64rem) {\n border-radius: var(--radius-4xl);\n }\n }\n}\n@layer base {\n * {\n font-family: var(--font-sukhumvit);\n }\n}\n@layer utilities {\n .scrollbar-hide::-webkit-scrollbar {\n display: none;\n }\n .scrollbar-hide {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n}\n@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-space-y-reverse { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-gradient-position { syntax: "*"; inherits: false; }\n@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }\n@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }\n@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-font-weight { syntax: "*"; inherits: false; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@keyframes wiggle {\n 0%, 100% {\n transform: translateY(-50%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n }\n }\n}\n');
104
+ styleInject('/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n --font-mono:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-300: oklch(83.7% 0.128 66.29);\n --color-orange-400: oklch(75% 0.183 55.934);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-300: oklch(87.2% 0.01 258.338);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --radius-3xl: 1.5rem;\n --radius-4xl: 2rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --font-sukhumvit:\n "Sukhumvit Set",\n ui-sans-serif,\n system-ui,\n sans-serif;\n --animate-circle-keys: circle-keys 2s ease-in-out infinite;\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n 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");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-5 {\n right: calc(var(--spacing) * 5);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-5 {\n bottom: calc(var(--spacing) * 5);\n }\n .z-10 {\n z-index: 10;\n }\n .z-9998 {\n z-index: 9998;\n }\n .z-9999 {\n z-index: 9999;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-3 {\n margin-right: calc(var(--spacing) * 3);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-29\\.5 {\n height: calc(var(--spacing) * 29.5);\n }\n .h-42\\.5 {\n height: calc(var(--spacing) * 42.5);\n }\n .h-full {\n height: 100%;\n }\n .min-h-full {\n min-height: 100%;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-75\\.5 {\n width: calc(var(--spacing) * 75.5);\n }\n .w-full {\n width: 100%;\n }\n .max-w-69\\.5 {\n max-width: calc(var(--spacing) * 69.5);\n }\n .max-w-75\\.5 {\n max-width: calc(var(--spacing) * 75.5);\n }\n .min-w-max {\n min-width: max-content;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-4 {\n --tw-translate-y: calc(var(--spacing) * 4);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .animate-circle-keys {\n animation: var(--animate-circle-keys);\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-x-1 {\n column-gap: calc(var(--spacing) * 1);\n }\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-scroll {\n overflow-x: scroll;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-black\\/50 {\n border-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-orange-300 {\n border-color: var(--color-orange-300);\n }\n .border-orange-400 {\n border-color: var(--color-orange-400);\n }\n .bg-\\[\\#3D3D3D\\] {\n background-color: #3D3D3D;\n }\n .bg-\\[\\#F8F8FA\\] {\n background-color: #F8F8FA;\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-orange-200 {\n background-color: var(--color-orange-200);\n }\n .bg-orange-400 {\n background-color: var(--color-orange-400);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-linear-to-l {\n --tw-gradient-position: to left;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to left in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-white {\n --tw-gradient-from: var(--color-white);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[12px\\] {\n font-size: 12px;\n }\n .text-nowrap {\n text-wrap: nowrap;\n }\n .text-\\[\\#3D3D3D\\] {\n color: #3D3D3D;\n }\n .text-\\[\\#7C7C7C\\] {\n color: #7C7C7C;\n }\n .text-\\[\\#FFF8EC\\] {\n color: #FFF8EC;\n }\n .text-black {\n color: var(--color-black);\n }\n .text-black\\/85 {\n color: color-mix(in srgb, #000 85%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-black) 85%, transparent);\n }\n }\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .shadow-orange-blur {\n --tw-shadow: 0 4px 20px 0 var(--tw-shadow-color, #a1440299);\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .shadow-orange-400 {\n --tw-shadow-color: oklch(75% 0.183 55.934);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-orange-400) var(--tw-shadow-alpha), transparent);\n }\n }\n .filter {\n 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,);\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n outline-color,\n text-decoration-color,\n fill,\n stroke,\n --tw-gradient-from,\n --tw-gradient-via,\n --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .focus-within\\:ring-2 {\n &:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n }\n .focus-within\\:ring-orange-300 {\n &:focus-within {\n --tw-ring-color: var(--color-orange-300);\n }\n }\n .hover\\:bg-gray-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-gray-200);\n }\n }\n }\n .hover\\:opacity-70 {\n &:hover {\n @media (hover: hover) {\n opacity: 70%;\n }\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:bg-gray-300 {\n &:disabled {\n background-color: var(--color-gray-300);\n }\n }\n .lg\\:invisible {\n @media (width >= 64rem) {\n visibility: hidden;\n }\n }\n .lg\\:visible {\n @media (width >= 64rem) {\n visibility: visible;\n }\n }\n .lg\\:top-auto {\n @media (width >= 64rem) {\n top: auto;\n }\n }\n .lg\\:right-1\\/2 {\n @media (width >= 64rem) {\n right: calc(1/2 * 100%);\n }\n }\n .lg\\:right-5 {\n @media (width >= 64rem) {\n right: calc(var(--spacing) * 5);\n }\n }\n .lg\\:bottom-25 {\n @media (width >= 64rem) {\n bottom: calc(var(--spacing) * 25);\n }\n }\n .lg\\:hidden {\n @media (width >= 64rem) {\n display: none;\n }\n }\n .lg\\:h-46 {\n @media (width >= 64rem) {\n height: calc(var(--spacing) * 46);\n }\n }\n .lg\\:h-\\[calc\\(100vh-100px\\)\\] {\n @media (width >= 64rem) {\n height: calc(100vh - 100px);\n }\n }\n .lg\\:max-h-201 {\n @media (width >= 64rem) {\n max-height: calc(var(--spacing) * 201);\n }\n }\n .lg\\:w-107\\.5 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 107.5);\n }\n }\n .lg\\:w-\\[calc\\(100vw-100px\\)\\] {\n @media (width >= 64rem) {\n width: calc(100vw - 100px);\n }\n }\n .lg\\:max-w-80 {\n @media (width >= 64rem) {\n max-width: calc(var(--spacing) * 80);\n }\n }\n .lg\\:max-w-289 {\n @media (width >= 64rem) {\n max-width: calc(var(--spacing) * 289);\n }\n }\n .lg\\:translate-x-1\\/2 {\n @media (width >= 64rem) {\n --tw-translate-x: calc(1/2 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .lg\\:flex-wrap {\n @media (width >= 64rem) {\n flex-wrap: wrap;\n }\n }\n .lg\\:rounded-4xl {\n @media (width >= 64rem) {\n border-radius: var(--radius-4xl);\n }\n }\n}\n@layer base {\n * {\n font-family: var(--font-sukhumvit);\n }\n}\n@layer utilities {\n .scrollbar-hide::-webkit-scrollbar {\n display: none;\n }\n .scrollbar-hide {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n .animation-delay-0 {\n animation-delay: 0s;\n }\n .animation-delay-300 {\n animation-delay: 0.3s;\n }\n .animation-delay-600 {\n animation-delay: 0.6s;\n }\n .animation-delay-900 {\n animation-delay: 0.9s;\n }\n .animation-delay-1200 {\n animation-delay: 1.2s;\n }\n}\n@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-gradient-position { syntax: "*"; inherits: false; }\n@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }\n@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }\n@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-blur { syntax: "*"; inherits: false; }\n@property --tw-brightness { syntax: "*"; inherits: false; }\n@property --tw-contrast { syntax: "*"; inherits: false; }\n@property --tw-grayscale { syntax: "*"; inherits: false; }\n@property --tw-hue-rotate { syntax: "*"; inherits: false; }\n@property --tw-invert { syntax: "*"; inherits: false; }\n@property --tw-opacity { syntax: "*"; inherits: false; }\n@property --tw-saturate { syntax: "*"; inherits: false; }\n@property --tw-sepia { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }\n@property --tw-duration { syntax: "*"; inherits: false; }\n@property --tw-ease { syntax: "*"; inherits: false; }\n@keyframes circle-keys {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(0.7);\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n');
105
+
106
+ // src/utils/cn.ts
107
+ var import_clsx = require("clsx");
108
+ var import_tailwind_merge = require("tailwind-merge");
109
+ function cn(...args) {
110
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(args));
111
+ }
112
+
113
+ // src/assets/icons/ai/index.tsx
114
+ var import_jsx_runtime = require("react/jsx-runtime");
115
+ var IconAI = (_a) => {
116
+ var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
117
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
118
+ "svg",
119
+ __spreadProps(__spreadValues({
120
+ width: "64",
121
+ height: "64",
122
+ viewBox: "0 0 64 64",
123
+ fill: "none",
124
+ xmlns: "http://www.w3.org/2000/svg",
125
+ className: cn("w-8 h-8", className)
126
+ }, props), {
127
+ children: [
128
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: "Icon AI" }),
129
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { filter: "url(#filter0_ii_48_32)", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "32.0001", cy: "32", r: "32", fill: "url(#paint0_linear_48_32)" }) }),
130
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M34.2288 17.7789C33.9922 16.7384 33.0671 16 32 16C30.9329 16 30.0078 16.7384 29.7712 17.7789L28.5065 23.3405C27.9216 25.9129 25.9129 27.9216 23.3405 28.5065L17.7789 29.7712C16.7384 30.0078 16 30.9329 16 32C16 33.0671 16.7384 33.9922 17.7789 34.2288L23.3405 35.4935C25.9129 36.0784 27.9216 38.0871 28.5065 40.6595L29.7712 46.2211C30.0078 47.2616 30.9329 48 32 48C33.0671 48 33.9922 47.2616 34.2288 46.2211L35.4935 40.6595C36.0784 38.0871 38.0871 36.0784 40.6595 35.4935L46.2211 34.2288C47.2616 33.9922 48 33.0671 48 32C48 30.9329 47.2616 30.0078 46.2211 29.7712L40.6595 28.5065C38.0871 27.9216 36.0784 25.9129 35.4935 23.3405L34.2288 17.7789Z", fill: "url(#paint1_linear_48_32)" }),
131
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("defs", { children: [
132
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("filter", { id: "filter0_ii_48_32", x: "0.00012207", y: "0", width: "63.9999", height: "64", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [
133
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }),
134
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feBlend", { mode: "normal", in: "SourceGraphic", in2: "BackgroundImageFix", result: "shape" }),
135
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feMorphology", { radius: "4", operator: "erode", in: "SourceAlpha", result: "effect1_innerShadow_48_32" }),
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feOffset", {}),
138
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { stdDeviation: "4" }),
139
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in2: "hardAlpha", operator: "arithmetic", k2: "-1", k3: "1" }),
140
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", { type: "matrix", values: "0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.2 0" }),
141
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feBlend", { mode: "normal", in2: "shape", result: "effect1_innerShadow_48_32" }),
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feOffset", {}),
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feGaussianBlur", { stdDeviation: "1" }),
145
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feComposite", { in2: "hardAlpha", operator: "arithmetic", k2: "-1", k3: "1" }),
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feColorMatrix", { type: "matrix", values: "0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0" }),
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("feBlend", { mode: "normal", in2: "effect1_innerShadow_48_32", result: "effect2_innerShadow_48_32" })
148
+ ] }),
149
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("linearGradient", { id: "paint0_linear_48_32", x1: "32.0001", y1: "-5.96047e-08", x2: "32.0001", y2: "64", gradientUnits: "userSpaceOnUse", children: [
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { stopColor: "#3D3D3D" }),
151
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0.496312" }),
152
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0.723156", stopColor: "#803500" }),
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0.95", stopColor: "#FF6A00" })
154
+ ] }),
155
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("linearGradient", { id: "paint1_linear_48_32", x1: "32", y1: "16", x2: "32", y2: "48", gradientUnits: "userSpaceOnUse", children: [
156
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { stopColor: "white" }),
157
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "1", stopColor: "#EBEBEB" })
158
+ ] })
159
+ ] })
160
+ ]
161
+ })
162
+ );
163
+ };
164
+
165
+ // src/assets/icons/arrow-narrow-up/index.tsx
166
+ var import_jsx_runtime2 = require("react/jsx-runtime");
167
+ var IconArrowNarrowUp = (_a) => {
168
+ var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
169
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
170
+ "svg",
171
+ __spreadProps(__spreadValues({
172
+ width: "20",
173
+ height: "20",
174
+ viewBox: "0 0 20 20",
175
+ fill: "none",
176
+ xmlns: "http://www.w3.org/2000/svg",
177
+ className
178
+ }, props), {
179
+ children: [
180
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { children: "Arrow Narrow up" }),
181
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
182
+ "path",
183
+ {
184
+ d: "M10 16.6666V3.33331M10 3.33331L5 8.33331M10 3.33331L15 8.33331",
185
+ stroke: "currentColor",
186
+ strokeWidth: "2",
187
+ strokeLinecap: "round",
188
+ strokeLinejoin: "round"
189
+ }
190
+ )
191
+ ]
192
+ })
193
+ );
194
+ };
195
+
196
+ // src/assets/icons/chevron-left/index.tsx
197
+ var import_jsx_runtime3 = require("react/jsx-runtime");
198
+ var IconChevronLeft = (_a) => {
199
+ var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
200
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
201
+ "svg",
202
+ __spreadProps(__spreadValues({
203
+ width: "20",
204
+ height: "20",
205
+ viewBox: "0 0 20 20",
206
+ fill: "none",
207
+ xmlns: "http://www.w3.org/2000/svg",
208
+ className
209
+ }, props), {
210
+ children: [
211
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("title", { children: "Chevron Left" }),
212
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
213
+ "path",
214
+ {
215
+ d: "M12.5 15L7.5 10L12.5 5",
216
+ stroke: "currentColor",
217
+ strokeWidth: "1.5",
218
+ strokeLinecap: "round",
219
+ strokeLinejoin: "round"
220
+ }
221
+ )
222
+ ]
223
+ })
224
+ );
225
+ };
226
+
227
+ // src/assets/icons/expand/index.tsx
228
+ var import_jsx_runtime4 = require("react/jsx-runtime");
229
+ var IconExpand = (_a) => {
230
+ var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
231
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
232
+ "svg",
233
+ __spreadProps(__spreadValues({
234
+ width: "20",
235
+ height: "20",
236
+ viewBox: "0 0 20 20",
237
+ fill: "none",
238
+ xmlns: "http://www.w3.org/2000/svg",
239
+ className: cn("text-[#3D3D3D]", className)
240
+ }, props), {
241
+ children: [
242
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("title", { children: "Icon Expand" }),
243
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
244
+ "path",
245
+ {
246
+ d: "M11.6667 8.33333L17.5 2.5M17.5 2.5H12.5M17.5 2.5V7.5M8.33333 11.6667L2.5 17.5M2.5 17.5H7.5M2.5 17.5L2.5 12.5",
247
+ stroke: "currentColor",
248
+ strokeWidth: "1.5",
249
+ strokeLinecap: "round",
250
+ strokeLinejoin: "round"
251
+ }
252
+ )
253
+ ]
254
+ })
255
+ );
256
+ };
257
+
258
+ // src/assets/icons/image-plus/index.tsx
259
+ var import_jsx_runtime5 = require("react/jsx-runtime");
260
+ var IconImagePlus = (_a) => {
261
+ var _b = _a, { className = "text-[#FFF8EC]" } = _b, props = __objRest(_b, ["className"]);
262
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
263
+ "svg",
264
+ __spreadProps(__spreadValues({
265
+ width: "20",
266
+ height: "20",
267
+ viewBox: "0 0 20 20",
268
+ fill: "none",
269
+ xmlns: "http://www.w3.org/2000/svg",
270
+ className
271
+ }, props), {
272
+ children: [
273
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("title", { children: "Icon Image Plus" }),
274
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
275
+ "path",
276
+ {
277
+ d: "M10.4167 2.50002H6.5C5.09987 2.50002 4.3998 2.50002 3.86502 2.7725C3.39462 3.01219 3.01217 3.39464 2.77248 3.86504C2.5 4.39982 2.5 5.09989 2.5 6.50002V13.5C2.5 14.9002 2.5 15.6002 2.77248 16.135C3.01217 16.6054 3.39462 16.9879 3.86502 17.2275C4.3998 17.5 5.09987 17.5 6.5 17.5H14.1667C14.9416 17.5 15.3291 17.5 15.647 17.4148C16.5098 17.1837 17.1836 16.5098 17.4148 15.6471C17.5 15.3292 17.5 14.9417 17.5 14.1667M15.8333 6.66669V1.66669M13.3333 4.16669H18.3333M8.75 7.08335C8.75 8.00383 8.00381 8.75002 7.08333 8.75002C6.16286 8.75002 5.41667 8.00383 5.41667 7.08335C5.41667 6.16288 6.16286 5.41669 7.08333 5.41669C8.00381 5.41669 8.75 6.16288 8.75 7.08335ZM12.4917 9.93181L5.44262 16.3401C5.04614 16.7005 4.84789 16.8807 4.83036 17.0368C4.81516 17.1722 4.86704 17.3064 4.96932 17.3963C5.08732 17.5 5.35523 17.5 5.89107 17.5H13.7133C14.9126 17.5 15.5123 17.5 15.9833 17.2985C16.5745 17.0456 17.0456 16.5746 17.2985 15.9833C17.5 15.5123 17.5 14.9126 17.5 13.7133C17.5 13.3098 17.5 13.108 17.4559 12.9201C17.4004 12.684 17.2941 12.4628 17.1444 12.272C17.0252 12.1202 16.8677 11.9941 16.5526 11.7421L14.2215 9.87724C13.9062 9.62494 13.7485 9.4988 13.5748 9.45428C13.4218 9.41504 13.2607 9.42012 13.1104 9.46893C12.94 9.5243 12.7905 9.66014 12.4917 9.93181Z",
278
+ stroke: "currentColor",
279
+ strokeWidth: "1.5",
280
+ strokeLinecap: "round",
281
+ strokeLinejoin: "round"
282
+ }
283
+ )
284
+ ]
285
+ })
286
+ );
287
+ };
288
+
289
+ // src/assets/icons/x-close/index.tsx
290
+ var import_jsx_runtime6 = require("react/jsx-runtime");
291
+ var IconXClose = (_a) => {
292
+ var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
293
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
294
+ "svg",
295
+ __spreadProps(__spreadValues({
296
+ width: "20",
297
+ height: "20",
298
+ viewBox: "0 0 20 20",
299
+ fill: "none",
300
+ xmlns: "http://www.w3.org/2000/svg",
301
+ className: cn("text-[#3D3D3D]", className)
302
+ }, props), {
303
+ children: [
304
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("title", { children: "Icon XClose" }),
305
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
306
+ "path",
307
+ {
308
+ d: "M15 5L5 15M5 5L15 15",
309
+ stroke: "currentColor",
310
+ strokeWidth: "1.5",
311
+ strokeLinecap: "round",
312
+ strokeLinejoin: "round"
313
+ }
314
+ )
315
+ ]
316
+ })
317
+ );
318
+ };
108
319
 
109
320
  // src/constant/default.ts
110
- var defaultQuickMenuMessage = "\u0E2A\u0E27\u0E31\u0E2A\u0E14\u0E35\u0E04\u0E23\u0E31\u0E1A Brooklyn! \u{1F44B} UTECH \u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E0A\u0E48\u0E27\u0E22\u0E04\u0E38\u0E13\u0E2B\u0E32\u0E2D\u0E38\u0E1B\u0E01\u0E23\u0E13\u0E4C IT \u0E17\u0E35\u0E48\u0E15\u0E2D\u0E1A\u0E42\u0E08\u0E17\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E2A\u0E38\u0E14 \u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E04\u0E2D\u0E21\u0E1E\u0E34\u0E27\u0E40\u0E15\u0E2D\u0E23\u0E4C \u0E2D\u0E38\u0E1B\u0E01\u0E23\u0E13\u0E4C\u0E40\u0E2A\u0E23\u0E34\u0E21 \u0E2B\u0E23\u0E37\u0E2D\u0E2D\u0E30\u0E44\u0E23\u0E01\u0E47\u0E15\u0E32\u0E21 \u0E16\u0E32\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22\u0E04\u0E23\u0E31\u0E1A \u{1F60A}";
321
+ var defaultQuickMenuMessage = "\u0E2A\u0E27\u0E31\u0E2A\u0E14\u0E35\u0E04\u0E23\u0E31\u0E1A \u{1F44B} ZIMCRAFT \u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E0A\u0E48\u0E27\u0E22\u0E04\u0E38\u0E13\u0E2B\u0E32\u0E2D\u0E38\u0E1B\u0E01\u0E23\u0E13\u0E4C IT \u0E17\u0E35\u0E48\u0E15\u0E2D\u0E1A\u0E42\u0E08\u0E17\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E2A\u0E38\u0E14 \u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E04\u0E2D\u0E21\u0E1E\u0E34\u0E27\u0E40\u0E15\u0E2D\u0E23\u0E4C \u0E2D\u0E38\u0E1B\u0E01\u0E23\u0E13\u0E4C\u0E40\u0E2A\u0E23\u0E34\u0E21 \u0E2B\u0E23\u0E37\u0E2D\u0E2D\u0E30\u0E44\u0E23\u0E01\u0E47\u0E15\u0E32\u0E21 \u0E16\u0E32\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22\u0E04\u0E23\u0E31\u0E1A \u{1F60A}";
111
322
  var defaultBanner = "https://utech-dev.zimpligital.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcoupon-banner-th.edad52fd.webp&w=640&q=75";
112
323
  var defaultQuickMenus = [
113
324
  { id: "1", title: "\u0E2A\u0E31\u0E48\u0E07\u0E0B\u0E37\u0E49\u0E2D\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32 \u{1F6CD}\uFE0F", value: "\u0E2A\u0E31\u0E48\u0E07\u0E0B\u0E37\u0E49\u0E2D\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32", mockResponse: "QUICK_MENU_SHOP" /* QUICK_MENU_SHOP */ },
@@ -242,7 +453,7 @@ var mockResponse = {
242
453
  ["PROMOTION_INFO" /* PROMOTION_INFO */]: {
243
454
  id: "bot-promotion-info",
244
455
  type: "BOT_TEXT" /* BOT_TEXT */,
245
- text: "\u{1F389} \u0E42\u0E1B\u0E23\u0E42\u0E21\u0E0A\u0E31\u0E48\u0E19\u0E1E\u0E34\u0E40\u0E28\u0E29\u0E1B\u0E23\u0E30\u0E08\u0E33\u0E40\u0E14\u0E37\u0E2D\u0E19\n\n\u{1F525} \u0E25\u0E14\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14 30% \u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E17\u0E38\u0E01\u0E2B\u0E21\u0E27\u0E14\n\u{1F525} \u0E0B\u0E37\u0E49\u0E2D\u0E04\u0E23\u0E1A 5,000 \u0E1A\u0E32\u0E17 \u0E23\u0E31\u0E1A\u0E2A\u0E48\u0E27\u0E19\u0E25\u0E14 500 \u0E1A\u0E32\u0E17\n\u{1F525} \u0E1C\u0E48\u0E2D\u0E19 0% \u0E19\u0E32\u0E19 10 \u0E40\u0E14\u0E37\u0E2D\u0E19\n\u{1F525} \u0E02\u0E2D\u0E07\u0E41\u0E16\u0E21\u0E21\u0E39\u0E25\u0E04\u0E48\u0E32\u0E2A\u0E39\u0E07 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E25\u0E39\u0E01\u0E04\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48\n\n\u0E43\u0E0A\u0E49\u0E42\u0E04\u0E49\u0E14: UTECH2024 \u0E23\u0E31\u0E1A\u0E2A\u0E48\u0E27\u0E19\u0E25\u0E14\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2D\u0E35\u0E01 5%!"
456
+ text: "\u{1F389} \u0E42\u0E1B\u0E23\u0E42\u0E21\u0E0A\u0E31\u0E48\u0E19\u0E1E\u0E34\u0E40\u0E28\u0E29\u0E1B\u0E23\u0E30\u0E08\u0E33\u0E40\u0E14\u0E37\u0E2D\u0E19\n\n\u{1F525} \u0E25\u0E14\u0E2A\u0E39\u0E07\u0E2A\u0E38\u0E14 30% \u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E17\u0E38\u0E01\u0E2B\u0E21\u0E27\u0E14\n\u{1F525} \u0E0B\u0E37\u0E49\u0E2D\u0E04\u0E23\u0E1A 5,000 \u0E1A\u0E32\u0E17 \u0E23\u0E31\u0E1A\u0E2A\u0E48\u0E27\u0E19\u0E25\u0E14 500 \u0E1A\u0E32\u0E17\n\u{1F525} \u0E1C\u0E48\u0E2D\u0E19 0% \u0E19\u0E32\u0E19 10 \u0E40\u0E14\u0E37\u0E2D\u0E19\n\u{1F525} \u0E02\u0E2D\u0E07\u0E41\u0E16\u0E21\u0E21\u0E39\u0E25\u0E04\u0E48\u0E32\u0E2A\u0E39\u0E07 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E25\u0E39\u0E01\u0E04\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48\n\n\u0E43\u0E0A\u0E49\u0E42\u0E04\u0E49\u0E14: ZIMCRAFT 2024 \u0E23\u0E31\u0E1A\u0E2A\u0E48\u0E27\u0E19\u0E25\u0E14\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2D\u0E35\u0E01 5%!"
246
457
  },
247
458
  ["STOCK_AVAILABLE" /* STOCK_AVAILABLE */]: {
248
459
  id: "bot-stock-available",
@@ -279,21 +490,25 @@ var mockMessages = [
279
490
  // src/hooks/use-openchat.tsx
280
491
  var import_react = require("react");
281
492
  var useOpenChat = () => {
282
- const [isOpen, setIsOpen] = (0, import_react.useState)(true);
493
+ const [isOpen, setIsOpen] = (0, import_react.useState)(false);
494
+ const [isExpanded, setIsExpanded] = (0, import_react.useState)(false);
283
495
  const openChat = (0, import_react.useCallback)(() => setIsOpen(true), []);
284
496
  const closeChat = (0, import_react.useCallback)(() => setIsOpen(false), []);
285
497
  const toggleChat = (0, import_react.useCallback)(() => setIsOpen((prev) => !prev), []);
498
+ const toggleExpand = (0, import_react.useCallback)(() => setIsExpanded((prev) => !prev), []);
286
499
  return {
287
500
  isOpen,
501
+ isExpanded,
288
502
  openChat,
289
503
  closeChat,
290
- toggleChat
504
+ toggleChat,
505
+ toggleExpand
291
506
  };
292
507
  };
293
508
 
294
509
  // src/contexts/chat-context.tsx
295
510
  var import_react2 = require("react");
296
- var import_jsx_runtime = require("react/jsx-runtime");
511
+ var import_jsx_runtime7 = require("react/jsx-runtime");
297
512
  var ChatContext = (0, import_react2.createContext)(void 0);
298
513
  var ChatProvider = ({ children }) => {
299
514
  const [messages, setMessages] = (0, import_react2.useState)([]);
@@ -332,7 +547,7 @@ var ChatProvider = ({ children }) => {
332
547
  }),
333
548
  [messages, latestMessage, isLoading, chatControls, addUserMessage, addBotMessage, clearMessages]
334
549
  );
335
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChatContext.Provider, { value, children });
550
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChatContext.Provider, { value, children });
336
551
  };
337
552
  var useChatContext = () => {
338
553
  const context = (0, import_react2.useContext)(ChatContext);
@@ -342,13 +557,6 @@ var useChatContext = () => {
342
557
  return context;
343
558
  };
344
559
 
345
- // src/utils/cn.ts
346
- var import_clsx = require("clsx");
347
- var import_tailwind_merge = require("tailwind-merge");
348
- function cn(...args) {
349
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(args));
350
- }
351
-
352
560
  // src/utils/message.ts
353
561
  var getMockBotMessage = (menu) => {
354
562
  const newMessage = mockResponse[menu.mockResponse];
@@ -364,43 +572,38 @@ var getMockBotMessageByText = (text) => {
364
572
  };
365
573
 
366
574
  // src/components/aizu-chat.tsx
367
- var import_react4 = require("react");
575
+ var import_react3 = require("react");
368
576
 
369
577
  // src/components/input-bar/index.tsx
370
- var import_jsx_runtime2 = require("react/jsx-runtime");
578
+ var import_jsx_runtime8 = require("react/jsx-runtime");
371
579
  var ButtonSelectImage = (_a) => {
372
580
  var _b = _a, { onClick, className } = _b, props = __objRest(_b, ["onClick", "className"]);
373
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
581
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
374
582
  "button",
375
583
  __spreadProps(__spreadValues({
376
584
  type: "button",
377
585
  onClick,
378
586
  className: cn(
379
- "shrink-0 w-10 h-10 rounded-full bg-gray-100 flex items-center justify-center hover:bg-gray-200 transition-colors",
587
+ "shrink-0 w-8 h-8 rounded-full bg-[#3D3D3D] flex items-center justify-center hover:opacity-70 cursor-pointer transition-colors",
380
588
  className
381
589
  ),
382
590
  "aria-label": "Upload image"
383
591
  }, props), {
384
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
385
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { children: "Image Upload Icon" }),
386
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }),
387
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "8.5", cy: "8.5", r: "1.5" }),
388
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("polyline", { points: "21 15 16 10 5 21" })
389
- ] })
592
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconImagePlus, {})
390
593
  })
391
594
  );
392
595
  };
393
596
  var InputText = (_a) => {
394
597
  var _b = _a, { onMagicClick, placeholder, className } = _b, props = __objRest(_b, ["onMagicClick", "placeholder", "className"]);
395
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex-1 relative", children: [
396
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
598
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex-1 relative", children: [
599
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
397
600
  "input",
398
601
  __spreadValues({
399
602
  type: "text",
400
603
  name: "message",
401
604
  placeholder,
402
605
  className: cn(
403
- "w-full px-4 py-2 pr-12 rounded-full bg-gray-100 border-none outline-none focus:ring-2 focus:ring-orange-300 text-sm",
606
+ "w-full pr-12 bg-gray-100 outline-none ",
404
607
  className
405
608
  ),
406
609
  onKeyDown: (e) => {
@@ -412,49 +615,52 @@ var InputText = (_a) => {
412
615
  }
413
616
  }, props)
414
617
  ),
415
- onMagicClick && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
618
+ onMagicClick && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
416
619
  "button",
417
620
  {
418
621
  type: "button",
419
622
  onClick: onMagicClick,
420
623
  className: "absolute right-2 top-1/2 -translate-y-1/2 w-8 h-8 flex items-center justify-center hover:bg-gray-200 rounded-full transition-colors",
421
624
  "aria-label": "AI assist",
422
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
423
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { children: "Magic/AI Icon" }),
424
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 2L15 8.5L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L9 8.5L12 2Z" })
625
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
626
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("title", { children: "Magic/AI Icon" }),
627
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M12 2L15 8.5L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L9 8.5L12 2Z" })
425
628
  ] })
426
629
  }
427
630
  )
428
631
  ] });
429
632
  };
430
633
  var ButtonConfirm = (_a) => {
431
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
432
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
634
+ var _b = _a, { className, disabled } = _b, props = __objRest(_b, ["className", "disabled"]);
635
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
433
636
  "button",
434
637
  __spreadProps(__spreadValues({
435
638
  type: "submit",
436
639
  className: cn(
437
- "shrink-0 w-10 h-10 rounded-full bg-gray-100 flex items-center justify-center hover:bg-gray-200 transition-colors",
640
+ "shrink-0 w-10 h-10 rounded-full ",
641
+ "bg-gray-100 hover:bg-gray-200 transition-colors",
642
+ "flex items-center justify-center",
643
+ "cursor-pointer",
644
+ "disabled:bg-gray-300 disabled:cursor-not-allowed",
438
645
  className
439
646
  ),
440
- "aria-label": "Send message"
647
+ "aria-label": "Send message",
648
+ disabled
441
649
  }, props), {
442
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
443
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { children: "Send Icon" }),
444
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("line", { x1: "12", y1: "19", x2: "12", y2: "5" }),
445
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("polyline", { points: "5 12 12 5 19 12" })
446
- ] })
650
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconArrowNarrowUp, { className: "text-black" })
447
651
  })
448
652
  );
449
653
  };
450
654
  var InputBar = (_a) => {
451
655
  var _b = _a, {
656
+ isLoading,
452
657
  onSend,
453
658
  onImageClick,
454
659
  onMagicClick,
455
660
  placeholder = "\u0E16\u0E32\u0E21\u0E04\u0E33\u0E16\u0E32\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22...",
456
661
  className
457
662
  } = _b, props = __objRest(_b, [
663
+ "isLoading",
458
664
  "onSend",
459
665
  "onImageClick",
460
666
  "onMagicClick",
@@ -470,10 +676,19 @@ var InputBar = (_a) => {
470
676
  e.currentTarget.reset();
471
677
  }
472
678
  };
473
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("section", __spreadProps(__spreadValues({ className: cn("bg-white p-4", className) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("form", { onSubmit: handleSubmit, className: "flex items-center gap-3", children: [
474
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ButtonSelectImage, { onClick: onImageClick }),
475
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(InputText, { placeholder, onMagicClick }),
476
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ButtonConfirm, {})
679
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("section", __spreadProps(__spreadValues({ className: cn("bg-white p-4", className) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("form", { onSubmit: handleSubmit, className: "flex items-center gap-3", children: [
680
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
681
+ "label",
682
+ {
683
+ htmlFor: "chat-input-text",
684
+ className: "flex items-center rounded-full bg-gray-100 flex-1 p-2 focus-within:ring-2 focus-within:ring-orange-300",
685
+ children: [
686
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ButtonSelectImage, { onClick: onImageClick, className: "mr-3" }),
687
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(InputText, { id: "chat-input-text", placeholder, onMagicClick })
688
+ ]
689
+ }
690
+ ),
691
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ButtonConfirm, { disabled: isLoading })
477
692
  ] }) }));
478
693
  };
479
694
  InputBar.ButtonSelectImage = ButtonSelectImage;
@@ -481,23 +696,23 @@ InputBar.InputText = InputText;
481
696
  InputBar.ButtonConfirm = ButtonConfirm;
482
697
 
483
698
  // src/components/loading.tsx
484
- var import_jsx_runtime3 = require("react/jsx-runtime");
699
+ var import_jsx_runtime9 = require("react/jsx-runtime");
485
700
  var Loading = ({ message }) => {
486
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("section", { className: cn("flex flex-col justify-center items-center border border-orange-400 shadow shadow-orange-400 h-10 max-w-69.5 rounded-3xl", { "h-16": !!message }), children: [
487
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex justify-center items-center gap-x-1 ", children: [
488
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "w-2 h-2 rounded-full bg-orange-400 animate-wiggle" }),
489
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "w-1.25 h-1.25 rounded-full bg-orange-400 animate-wiggle" }),
490
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "w-0.75 h-0.75 rounded-full bg-orange-400 animate-wiggle" })
701
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: cn("flex flex-col justify-center items-center border border-orange-400 shadow shadow-orange-400 h-10 max-w-69.5 rounded-3xl", { "h-16": !!message }), children: [
702
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex justify-center items-center gap-x-1 ", children: [
703
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "w-2 h-2 rounded-full bg-orange-400 animate-circle-keys animation-delay-300" }),
704
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "w-2 h-2 rounded-full bg-orange-400 animate-circle-keys animation-delay-600" }),
705
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "w-2 h-2 rounded-full bg-orange-400 animate-circle-keys animation-delay-900" })
491
706
  ] }),
492
- message && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-center text-[12px] text-gray-500 mt-1", children: message })
707
+ message && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-center text-[12px] text-gray-500 mt-1", children: message })
493
708
  ] });
494
709
  };
495
710
 
496
711
  // src/components/button.tsx
497
- var import_jsx_runtime4 = require("react/jsx-runtime");
712
+ var import_jsx_runtime10 = require("react/jsx-runtime");
498
713
  var Button = (_a) => {
499
714
  var _b = _a, { children, className, onClick, ref } = _b, props = __objRest(_b, ["children", "className", "onClick", "ref"]);
500
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
715
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
501
716
  "button",
502
717
  __spreadProps(__spreadValues({
503
718
  ref,
@@ -517,38 +732,32 @@ var Button = (_a) => {
517
732
  };
518
733
 
519
734
  // src/components/container.tsx
520
- var import_jsx_runtime5 = require("react/jsx-runtime");
735
+ var import_jsx_runtime11 = require("react/jsx-runtime");
521
736
  var Container = (_a) => {
522
737
  var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
523
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn("p-3 rounded-3xl border border-orange-300", className), children });
738
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("p-3 rounded-3xl border border-orange-300", className), children });
524
739
  };
525
740
 
526
741
  // src/components/message/index.tsx
527
- var import_jsx_runtime6 = require("react/jsx-runtime");
742
+ var import_jsx_runtime12 = require("react/jsx-runtime");
528
743
  var MessageBubble = ({ message, handleClick }) => {
529
744
  if (message.type === "USER_TEXT" /* USER_TEXT */) {
530
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Container, { className: "ml-auto bg-orange-200 border-none text-sm", children: message.text });
745
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Container, { className: "ml-auto bg-orange-200 border-none text-sm", children: message.text });
531
746
  }
532
747
  if (message.type === "BOT_TEXT" /* BOT_TEXT */) {
533
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Container, { className: "mr-auto max-w-75.5 text-sm", children: message.text });
534
- }
535
- if (message.type === "BOT_TEXT_WITH_MENUS" /* BOT_TEXT_WITH_MENUS */) {
536
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MessageWithMenus, { type: message.type, message: message.text || "", menus: message.menus || [], handleClick });
748
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BotMessageWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Container, { className: "mr-auto max-w-75.5 text-sm", children: message.text }) });
537
749
  }
538
- if (message.type === "BOT_QUICK_MENUS" /* BOT_QUICK_MENUS */) {
539
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MessageWithMenus, { type: message.type, message: message.text || "", menus: message.menus || [], handleClick });
750
+ if (message.type === "BOT_TEXT_WITH_MENUS" /* BOT_TEXT_WITH_MENUS */ || message.type === "BOT_QUICK_MENUS" /* BOT_QUICK_MENUS */ || message.type === "BOT_ERROR_WITH_MENUS" /* BOT_ERROR_WITH_MENUS */) {
751
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BotMessageWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MessageWithMenus, { type: message.type, message: message.text || "", menus: message.menus || [], handleClick }) });
540
752
  }
541
- if (message.type === "BOT_ERROR_WITH_MENUS" /* BOT_ERROR_WITH_MENUS */) {
542
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MessageWithMenus, { type: message.type, message: message.text || "", menus: message.menus || [], handleClick });
543
- }
544
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MenusImage, { menus: message.menus || [] });
753
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenusImage, { menus: message.menus || [] });
545
754
  };
546
755
  var MessageWithMenus = ({ type, message, menus, className, handleClick }) => {
547
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Container, { className: cn("mr-auto max-w-75.5 lg:max-w-80", className), children: [
548
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm mb-4", children: message }),
549
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("ul", { className: cn("flex flex-wrap gap-x-1 gap-y-3", { "flex-col": type === "BOT_ERROR_WITH_MENUS" /* BOT_ERROR_WITH_MENUS */ }), children: menus == null ? void 0 : menus.map((menu) => {
756
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Container, { className: cn("mr-auto max-w-75.5 lg:max-w-80", className), children: [
757
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "text-sm mb-4", children: message }),
758
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("ul", { className: cn("flex flex-wrap gap-x-1 gap-y-3", { "flex-col": type === "BOT_ERROR_WITH_MENUS" /* BOT_ERROR_WITH_MENUS */ }), children: menus == null ? void 0 : menus.map((menu) => {
550
759
  if (menu == null ? void 0 : menu.phoneNumber) {
551
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("li", { className: "w-full ", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
760
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("li", { className: "w-full ", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
552
761
  "a",
553
762
  {
554
763
  href: `tel:+${menu == null ? void 0 : menu.phoneNumber}`,
@@ -557,7 +766,7 @@ var MessageWithMenus = ({ type, message, menus, className, handleClick }) => {
557
766
  }
558
767
  ) }, menu.id);
559
768
  }
560
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("li", { className: "min-w-max ", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
769
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("li", { className: "min-w-max ", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
561
770
  Button,
562
771
  {
563
772
  className: cn({ "w-full": type === "BOT_ERROR_WITH_MENUS" /* BOT_ERROR_WITH_MENUS */ }),
@@ -571,17 +780,21 @@ var MessageWithMenus = ({ type, message, menus, className, handleClick }) => {
571
780
  ] });
572
781
  };
573
782
  var MenusImage = ({ menus }) => {
574
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("ul", { className: "flex gap-x-2", children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: menu == null ? void 0 : menu.imageUrl, alt: "menu-image" }) }, menu.id)) });
783
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("ul", { className: "flex gap-x-2", children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("img", { src: menu == null ? void 0 : menu.imageUrl, alt: "menu-image" }) }, menu.id)) });
575
784
  };
785
+ var BotMessageWrapper = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex flex-col items-start", children: [
786
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconAI, { className: "mb-2" }),
787
+ children
788
+ ] });
576
789
 
577
790
  // src/components/quick-menus.tsx
578
- var import_jsx_runtime7 = require("react/jsx-runtime");
791
+ var import_jsx_runtime13 = require("react/jsx-runtime");
579
792
  var QuickMenus = ({ bannerSrc, message = "welcome message", menus, handleClick }) => {
580
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("section", { className: "w-75.5 bg-white shadow rounded-3xl overflow-hidden", children: [
581
- bannerSrc ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: bannerSrc, alt: "banner" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "w-75.5 h-29.5 border-b border-gray-200" }),
582
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "p-3 flex flex-col gap-y-3", children: [
583
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-sm", children: message }),
584
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ul", { className: "flex gap-3 flex-wrap", children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Button, { onClick: () => {
793
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("section", { className: "w-75.5 bg-white shadow rounded-3xl overflow-hidden", children: [
794
+ bannerSrc ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("img", { src: bannerSrc, alt: "banner" }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "w-75.5 h-29.5 border-b border-gray-200" }),
795
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "p-3 flex flex-col gap-y-3", children: [
796
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-sm", children: message }),
797
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("ul", { className: "flex gap-3 flex-wrap", children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Button, { onClick: () => {
585
798
  handleClick(menu);
586
799
  }, children: menu.title }) }, menu.id)) })
587
800
  ] })
@@ -589,11 +802,11 @@ var QuickMenus = ({ bannerSrc, message = "welcome message", menus, handleClick }
589
802
  };
590
803
 
591
804
  // src/components/quick-menus-chip.tsx
592
- var import_jsx_runtime8 = require("react/jsx-runtime");
805
+ var import_jsx_runtime14 = require("react/jsx-runtime");
593
806
  var QuickMenuChips = ({ menus, handleClick, className }) => {
594
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "relative", children: [
595
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "absolute lg:hidden right-0 top-0 bottom-0 w-8 bg-linear-to-l from-white to-transparent pointer-events-none z-10" }),
596
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: cn("flex lg:flex-wrap gap-3 overflow-x-scroll scrollbar-hide", className), children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
807
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "relative", children: [
808
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "absolute lg:hidden right-0 top-0 bottom-0 w-8 bg-linear-to-l from-white to-transparent pointer-events-none z-10" }),
809
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("ul", { className: cn("flex lg:flex-wrap gap-3 overflow-x-scroll scrollbar-hide", className), children: menus == null ? void 0 : menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
597
810
  Button,
598
811
  {
599
812
  onClick: () => {
@@ -607,137 +820,123 @@ var QuickMenuChips = ({ menus, handleClick, className }) => {
607
820
  };
608
821
  var quick_menus_chip_default = QuickMenuChips;
609
822
 
610
- // src/contexts/aizu-client-context.tsx
611
- var import_react3 = require("react");
612
- var import_jsx_runtime9 = require("react/jsx-runtime");
613
- var AizuClientContext = (0, import_react3.createContext)(
614
- void 0
615
- );
616
- var AizuClientProvider = ({
617
- children,
618
- client,
619
- initialThreadId,
620
- initialResourceId
621
- }) => {
622
- const [threadId, setThreadId] = (0, import_react3.useState)(initialThreadId);
623
- const [resourceId, setResourceId] = (0, import_react3.useState)(
624
- initialResourceId
625
- );
626
- const sendMessage = (0, import_react3.useCallback)(
627
- (query) => __async(null, null, function* () {
628
- console.log("\u{1F4E4} Sending message:", query);
629
- console.log("\u{1F517} Current threadId:", threadId);
630
- console.log("\u{1F4E6} Current resourceId:", resourceId);
631
- const params = __spreadValues(__spreadValues({
632
- query
633
- }, threadId && { thread_id: threadId }), resourceId && { resource_id: resourceId });
634
- const response = yield client.chat(params);
635
- console.log("\u{1F4E5} Response received:", {
636
- thread_id: response.thread_id,
637
- resource_id: response.resource_id
638
- });
639
- if (response.thread_id && response.thread_id !== threadId) {
640
- console.log("\u2705 Update threadId:", response.thread_id);
641
- setThreadId(response.thread_id);
642
- }
643
- if (response.resource_id && response.resource_id !== resourceId) {
644
- console.log("\u2705 Update resourceId:", response.resource_id);
645
- setResourceId(response.resource_id);
646
- }
647
- return response;
648
- }),
649
- [client, threadId, resourceId]
650
- );
651
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
652
- AizuClientContext.Provider,
653
- {
654
- value: { aizuClient: client, threadId, resourceId, sendMessage },
655
- children
656
- }
657
- );
658
- };
659
- var useAizuClient = () => {
660
- const context = (0, import_react3.useContext)(AizuClientContext);
661
- if (!context) {
662
- throw new Error("useAizuClient must be used within AizuClientProvider");
663
- }
664
- return context;
665
- };
666
-
667
823
  // src/components/aizu-chat.tsx
668
- var import_jsx_runtime10 = require("react/jsx-runtime");
669
- var AizuChat = ({ aizuClient }) => {
670
- console.log("\u{1F680} ~ AizuChat ~ aizuClient:", aizuClient);
671
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AizuClientProvider, { client: aizuClient, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChatProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
672
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FloatingButton, {}),
673
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(ChatWindow, { children: [
674
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChatHeader, {}),
675
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChatBody, {}),
676
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChatFooter, {})
824
+ var import_jsx_runtime15 = require("react/jsx-runtime");
825
+ var AizuChat = () => {
826
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChatProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
827
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(FloatingButton, {}),
828
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(ChatWindow, { children: [
829
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChatHeader, {}),
830
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChatBody, {}),
831
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChatFooter, {})
677
832
  ] })
678
- ] }) }) });
833
+ ] }) });
679
834
  };
680
835
  var FloatingButton = () => {
681
836
  const { chatControls } = useChatContext();
682
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
837
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
683
838
  "button",
684
839
  {
685
840
  type: "button",
686
841
  onClick: chatControls.toggleChat,
687
- className: "rounded-full p-2 aspect-square w-10 bg-black/60 cursor-pointer fixed right-5 bottom-5",
688
- children: "AI"
842
+ className: "rounded-full aspect-square w-16 cursor-pointer fixed right-5 bottom-5 shadow-orange-blur",
843
+ "aria-label": "Toggle chat",
844
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconAI, { className: "w-full h-full" })
689
845
  }
690
846
  );
691
847
  };
692
848
  var ChatWindow = ({ children }) => {
693
849
  const { chatControls } = useChatContext();
694
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
695
- "div",
696
- {
697
- className: cn(
698
- "w-full lg:w-107.5 h-full lg:max-h-201",
699
- "z-9999 fixed top-0 right-0 lg:right-5 lg:bottom-20 lg:top-auto bg-[#F8F8FA]",
700
- "lg:rounded-4xl shadow-2xl overflow-hidden",
701
- "flex flex-col",
702
- { invisible: !chatControls.isOpen }
703
- ),
704
- children
705
- }
706
- );
850
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
851
+ chatControls.isExpanded && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
852
+ "div",
853
+ {
854
+ className: "fixed inset-0 bg-black/50 z-9998 transition-opacity duration-300",
855
+ onClick: chatControls.toggleExpand,
856
+ onKeyDown: void 0,
857
+ "aria-hidden": "true",
858
+ "aria-label": "Close expanded chat"
859
+ }
860
+ ),
861
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn(
862
+ "w-full lg:w-107.5 h-full lg:h-[calc(100vh-100px)] lg:max-h-201",
863
+ "z-9999 fixed top-0 right-0 lg:right-5 lg:bottom-25 lg:top-auto bg-[#F8F8FA]",
864
+ "lg:rounded-4xl shadow-orange-blur overflow-hidden",
865
+ "flex flex-col",
866
+ "transition-all duration-300 ease-in-out",
867
+ {
868
+ "opacity-0 pointer-events-none translate-y-4": !chatControls.isOpen,
869
+ "opacity-100 pointer-events-auto translate-y-0": chatControls.isOpen
870
+ },
871
+ {
872
+ "lg:right-1/2 lg:translate-x-1/2 lg:w-[calc(100vw-100px)] lg:max-w-289 ": chatControls.isExpanded
873
+ }
874
+ ), children })
875
+ ] });
707
876
  };
708
877
  var ChatHeader = () => {
709
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { className: "flex justify-between items-center bg-white py-3 px-4", children: [
710
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", children: " Back" }),
711
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col items-center", children: [
712
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: "Shop Logo" }),
713
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[10px]", children: "Powered by Zimpligital" })
878
+ const { chatControls } = useChatContext();
879
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "flex justify-between items-center bg-white py-3 px-4", children: [
880
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
881
+ "button",
882
+ {
883
+ type: "button",
884
+ onClick: chatControls.closeChat,
885
+ className: "text-sm text-left cursor-pointer flex flex-1 lg:invisible",
886
+ children: [
887
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconChevronLeft, {}),
888
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: "\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A" })
889
+ ]
890
+ }
891
+ ),
892
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col items-center flex-1 ", children: [
893
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-nowrap", children: "ZIMCRAFT STORE" }),
894
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[10px] text-[#7C7C7C]", children: "Powered by Zimpligital" })
714
895
  ] }),
715
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", {})
896
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex-1 flex items-center justify-end gap-2 invisible lg:visible", children: [
897
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
898
+ "button",
899
+ {
900
+ type: "button",
901
+ "aria-label": "Expand chat",
902
+ onClick: chatControls.toggleExpand,
903
+ className: "text-sm p-2.5 cursor-pointer",
904
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconExpand, {})
905
+ }
906
+ ),
907
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
908
+ "button",
909
+ {
910
+ type: "button",
911
+ "aria-label": "Close chat",
912
+ onClick: chatControls.closeChat,
913
+ className: "text-sm p-2.5 cursor-pointer",
914
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconXClose, {})
915
+ }
916
+ )
917
+ ] })
716
918
  ] });
717
919
  };
718
920
  var ChatBody = () => {
719
921
  const { isLoading, addUserMessage, addBotMessage, messages, latestMessage } = useChatContext();
720
- const [showWaitMessage, setShowWaitMessage] = (0, import_react4.useState)(false);
721
- const messagesEndRef = (0, import_react4.useRef)(null);
922
+ const [showWaitMessage, setShowWaitMessage] = (0, import_react3.useState)(false);
923
+ const messagesEndRef = (0, import_react3.useRef)(null);
722
924
  const loadingMessage = showWaitMessage ? "Wait a minute..." : void 0;
723
925
  const messagesDisplay = messages || [];
724
926
  const displayWelcomeMessage = messagesDisplay.length === 0 && !isLoading;
725
- const handleClick = (0, import_react4.useCallback)(
726
- (menu) => __async(null, null, function* () {
727
- if (menu.title.includes(tryAgain) && !!(latestMessage == null ? void 0 : latestMessage.text)) {
728
- return addUserMessage(latestMessage == null ? void 0 : latestMessage.text);
729
- }
730
- addUserMessage(menu.title);
731
- const mockResponse2 = getMockBotMessage(menu);
732
- addBotMessage(mockResponse2);
733
- }),
734
- [addUserMessage, addBotMessage, latestMessage]
735
- );
736
- (0, import_react4.useEffect)(() => {
927
+ const handleClick = (0, import_react3.useCallback)((menu) => __async(null, null, function* () {
928
+ if (menu.title.includes(tryAgain) && !!(latestMessage == null ? void 0 : latestMessage.text)) {
929
+ return addUserMessage(latestMessage == null ? void 0 : latestMessage.text);
930
+ }
931
+ addUserMessage(menu.title);
932
+ const mockResponse2 = getMockBotMessage(menu);
933
+ addBotMessage(mockResponse2);
934
+ }), [addUserMessage, addBotMessage, latestMessage]);
935
+ (0, import_react3.useEffect)(() => {
737
936
  var _a;
738
937
  (_a = messagesEndRef.current) == null ? void 0 : _a.scrollIntoView({ behavior: "smooth" });
739
938
  }, [isLoading, messagesDisplay.length]);
740
- (0, import_react4.useEffect)(() => {
939
+ (0, import_react3.useEffect)(() => {
741
940
  let timer;
742
941
  if (isLoading) {
743
942
  timer = setTimeout(() => {
@@ -750,63 +949,44 @@ var ChatBody = () => {
750
949
  if (timer) clearTimeout(timer);
751
950
  };
752
951
  }, [isLoading]);
753
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("section", { className: "flex-1 overflow-y-auto relative", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { className: " p-4 flex flex-col gap-y-3 overflow-y-auto", children: [
754
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
755
- QuickMenus,
756
- {
757
- bannerSrc: defaultBanner,
758
- menus: defaultQuickMenus,
759
- message: defaultQuickMenuMessage,
760
- handleClick
761
- }
762
- ),
763
- messagesDisplay == null ? void 0 : messagesDisplay.map((message) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
764
- MessageBubble,
765
- {
766
- message,
767
- handleClick
768
- },
769
- message.id
770
- )),
771
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Loading, { message: loadingMessage }),
772
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: messagesEndRef }),
773
- displayWelcomeMessage && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "absolute bottom-4 left-1/2 -translate-x-1/2 text-center text-sm text-gray-500", children: "\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19\u0E2A\u0E19\u0E17\u0E19\u0E32\u0E01\u0E31\u0E1A UTECH AI" })
952
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("section", { className: "flex-1 overflow-y-auto relative", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: " p-4 flex flex-col gap-y-3 overflow-y-auto min-h-full", children: [
953
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
954
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconAI, { className: "mb-2" }),
955
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(QuickMenus, { bannerSrc: defaultBanner, menus: defaultQuickMenus, message: defaultQuickMenuMessage, handleClick })
956
+ ] }),
957
+ messagesDisplay == null ? void 0 : messagesDisplay.map((message) => {
958
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-full flex flex-col items-start", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MessageBubble, { message, handleClick }) }, message.id);
959
+ }),
960
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
961
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconAI, { className: "mb-2" }),
962
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Loading, { message: loadingMessage })
963
+ ] }),
964
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { ref: messagesEndRef }),
965
+ displayWelcomeMessage && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "mt-auto text-center text-sm text-gray-500", children: "\u0E04\u0E38\u0E13\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19\u0E2A\u0E19\u0E17\u0E19\u0E32\u0E01\u0E31\u0E1A ZIMCRAFT AI" })
774
966
  ] }) });
775
967
  };
776
968
  var ChatFooter = () => {
777
- const { addUserMessage, addBotMessage, latestMessage } = useChatContext();
778
- const handleClick = (0, import_react4.useCallback)(
779
- (menu) => __async(null, null, function* () {
780
- if (menu.title.includes(tryAgain) && !!(latestMessage == null ? void 0 : latestMessage.text)) {
781
- return addUserMessage(latestMessage == null ? void 0 : latestMessage.text);
782
- }
783
- addUserMessage(menu.title);
784
- const mockResponse2 = getMockBotMessage(menu);
785
- addBotMessage(mockResponse2);
786
- }),
787
- [addUserMessage, addBotMessage, latestMessage]
788
- );
789
- const handleSend = (0, import_react4.useCallback)(
790
- (message) => {
791
- addUserMessage(message);
792
- const mockResponse2 = getMockBotMessageByText(message);
793
- addBotMessage(mockResponse2);
794
- },
795
- [addUserMessage, addBotMessage]
796
- );
797
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { className: "bg-white h-42.5 lg:h-46", children: [
798
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
799
- quick_menus_chip_default,
800
- {
801
- handleClick,
802
- menus: defaultQuickMenuChips,
803
- className: "pl-4 pt-4 pb-2"
804
- }
805
- ),
806
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
969
+ const { addUserMessage, addBotMessage, latestMessage, isLoading } = useChatContext();
970
+ const handleClick = (0, import_react3.useCallback)((menu) => __async(null, null, function* () {
971
+ if (menu.title.includes(tryAgain) && !!(latestMessage == null ? void 0 : latestMessage.text)) {
972
+ return addUserMessage(latestMessage == null ? void 0 : latestMessage.text);
973
+ }
974
+ addUserMessage(menu.title);
975
+ const mockResponse2 = getMockBotMessage(menu);
976
+ addBotMessage(mockResponse2);
977
+ }), [addUserMessage, addBotMessage, latestMessage]);
978
+ const handleSend = (0, import_react3.useCallback)((message) => {
979
+ addUserMessage(message);
980
+ const mockResponse2 = getMockBotMessageByText(message);
981
+ addBotMessage(mockResponse2);
982
+ }, [addUserMessage, addBotMessage]);
983
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "bg-white h-42.5 lg:h-46", children: [
984
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(quick_menus_chip_default, { handleClick, menus: defaultQuickMenuChips, className: "pl-4 pt-4 pb-2" }),
985
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
807
986
  InputBar,
808
987
  {
809
988
  placeholder: "\u0E16\u0E32\u0E21\u0E04\u0E33\u0E16\u0E32\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22...",
989
+ isLoading,
810
990
  onSend: handleSend,
811
991
  onImageClick: () => console.log("Image upload"),
812
992
  onMagicClick: () => console.log("AI assist")
@@ -815,134 +995,20 @@ var ChatFooter = () => {
815
995
  ] });
816
996
  };
817
997
 
818
- // src/components/test-component.tsx
819
- var import_react5 = require("react");
820
- var import_jsx_runtime11 = require("react/jsx-runtime");
821
- var TestComponent = ({ client }) => {
822
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AizuClientProvider, { client, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TestComponentContent, {}) });
823
- };
824
- var TestComponentContent = () => {
825
- const { sendMessage, resourceId, threadId } = useAizuClient();
826
- const [query, setQuery] = (0, import_react5.useState)("");
827
- const [response, setResponse] = (0, import_react5.useState)("");
828
- const [loading, setLoading] = (0, import_react5.useState)(false);
829
- const handleSend = () => __async(null, null, function* () {
830
- if (!query.trim()) return;
831
- try {
832
- setLoading(true);
833
- setResponse("");
834
- console.log("\u{1F4E4} Sending query:", query);
835
- const result = yield sendMessage(query);
836
- console.log("\u2705 Got response:", result);
837
- setResponse(result.response);
838
- setQuery("");
839
- } catch (error) {
840
- console.error("\u274C Error:", error);
841
- setResponse(`\u274C Error: ${error.message}`);
842
- } finally {
843
- setLoading(false);
844
- }
845
- });
846
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "border-2 border-blue-500 p-4 rounded space-y-4", children: [
847
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: "font-bold text-xl", children: "Test API Call" }),
848
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "text-sm text-gray-600 space-y-1", children: [
849
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { children: [
850
- "\u{1F517} Thread ID: ",
851
- threadId || "(none yet)"
852
- ] }),
853
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { children: [
854
- "\u{1F4E6} Resource ID: ",
855
- resourceId || "(none yet)"
856
- ] })
857
- ] }),
858
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex gap-2", children: [
859
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
860
- "input",
861
- {
862
- type: "text",
863
- value: query,
864
- onChange: (e) => setQuery(e.target.value),
865
- onKeyDown: (e) => e.key === "Enter" && handleSend(),
866
- placeholder: "Type your question...",
867
- className: "flex-1 border p-2 rounded",
868
- disabled: loading
869
- }
870
- ),
871
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
872
- "button",
873
- {
874
- type: "button",
875
- onClick: handleSend,
876
- disabled: loading || !query.trim(),
877
- className: "bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600 disabled:bg-gray-400",
878
- children: loading ? "Sending..." : "Send"
879
- }
880
- )
881
- ] }),
882
- response && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "p-3 bg-gray-100 rounded", children: [
883
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("strong", { children: "Response:" }),
884
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "mt-1 whitespace-pre-wrap", children: response })
885
- ] })
886
- ] });
887
- };
888
-
889
998
  // src/hooks/use-custom.ts
890
- var import_react6 = require("react");
999
+ var import_react4 = require("react");
891
1000
  var useCustom = () => {
892
- const [count, setCount] = (0, import_react6.useState)(0);
1001
+ const [count, setCount] = (0, import_react4.useState)(0);
893
1002
  const increment = () => {
894
1003
  setCount(count + 1);
895
1004
  };
896
1005
  return { count, increment };
897
1006
  };
898
-
899
- // src/sdk/client.ts
900
- var AizuClient = class {
901
- constructor(config) {
902
- this.hostUrl = config.hostUrl;
903
- this.apiKey = config.apiKey;
904
- }
905
- request(_0) {
906
- return __async(this, arguments, function* (path, options = {}) {
907
- const url = `${this.hostUrl}${path}`;
908
- const _a = options, { body } = _a, restOptions = __objRest(_a, ["body"]);
909
- const response = yield fetch(url, __spreadProps(__spreadValues({}, restOptions), {
910
- headers: __spreadValues({
911
- "Content-Type": "application/json",
912
- "x-api-key": this.apiKey
913
- }, options.headers),
914
- body: body ? JSON.stringify(body) : void 0
915
- }));
916
- if (!response.ok) {
917
- throw new Error(`API Error: ${response.statusText}`);
918
- }
919
- return yield response.json();
920
- });
921
- }
922
- chat(params) {
923
- return __async(this, null, function* () {
924
- return this.request("/chat/query", {
925
- method: "POST",
926
- body: params
927
- });
928
- });
929
- }
930
- };
931
- var createAizuClient = ({
932
- hostUrl,
933
- apiKey,
934
- options
935
- }) => {
936
- return new AizuClient(__spreadValues({ hostUrl, apiKey }, options));
937
- };
938
1007
  // Annotate the CommonJS export names for ESM import in node:
939
1008
  0 && (module.exports = {
940
1009
  AizuChat,
941
- AizuClient,
942
1010
  Button,
943
1011
  Loading,
944
1012
  QuickMenus,
945
- TestComponent,
946
- createAizuClient,
947
1013
  useCustom
948
1014
  });