@xplor-education/core-stencil-components 2.0.0

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 (724) hide show
  1. package/LICENSE +21 -0
  2. package/components/index.d.ts +33 -0
  3. package/components/index.js +2324 -0
  4. package/components/index.js.map +1 -0
  5. package/components/p-B1W2qj2l.js +50 -0
  6. package/components/p-B1W2qj2l.js.map +1 -0
  7. package/components/p-BK_ATKuB.js +37 -0
  8. package/components/p-BK_ATKuB.js.map +1 -0
  9. package/components/p-CBSi5kQB.js +56 -0
  10. package/components/p-CBSi5kQB.js.map +1 -0
  11. package/components/p-CTD6SyTD.js +181 -0
  12. package/components/p-CTD6SyTD.js.map +1 -0
  13. package/components/p-Ddr35stE.js +117 -0
  14. package/components/p-Ddr35stE.js.map +1 -0
  15. package/components/p-x30CgLRv.js +184 -0
  16. package/components/p-x30CgLRv.js.map +1 -0
  17. package/components/xplor-alert-dialog.d.ts +11 -0
  18. package/components/xplor-alert-dialog.js +85 -0
  19. package/components/xplor-alert-dialog.js.map +1 -0
  20. package/components/xplor-alert-message.d.ts +11 -0
  21. package/components/xplor-alert-message.js +48 -0
  22. package/components/xplor-alert-message.js.map +1 -0
  23. package/components/xplor-assistant.d.ts +11 -0
  24. package/components/xplor-assistant.js +763 -0
  25. package/components/xplor-assistant.js.map +1 -0
  26. package/components/xplor-autocomplete.d.ts +11 -0
  27. package/components/xplor-autocomplete.js +268 -0
  28. package/components/xplor-autocomplete.js.map +1 -0
  29. package/components/xplor-avatar-and-name.d.ts +11 -0
  30. package/components/xplor-avatar-and-name.js +48 -0
  31. package/components/xplor-avatar-and-name.js.map +1 -0
  32. package/components/xplor-avatar.d.ts +11 -0
  33. package/components/xplor-avatar.js +9 -0
  34. package/components/xplor-avatar.js.map +1 -0
  35. package/components/xplor-badge-active.d.ts +11 -0
  36. package/components/xplor-badge-active.js +35 -0
  37. package/components/xplor-badge-active.js.map +1 -0
  38. package/components/xplor-badge-archived.d.ts +11 -0
  39. package/components/xplor-badge-archived.js +35 -0
  40. package/components/xplor-badge-archived.js.map +1 -0
  41. package/components/xplor-badge-deleted.d.ts +11 -0
  42. package/components/xplor-badge-deleted.js +35 -0
  43. package/components/xplor-badge-deleted.js.map +1 -0
  44. package/components/xplor-badge-expired.d.ts +11 -0
  45. package/components/xplor-badge-expired.js +35 -0
  46. package/components/xplor-badge-expired.js.map +1 -0
  47. package/components/xplor-badge-inactive.d.ts +11 -0
  48. package/components/xplor-badge-inactive.js +35 -0
  49. package/components/xplor-badge-inactive.js.map +1 -0
  50. package/components/xplor-badge-recalled.d.ts +11 -0
  51. package/components/xplor-badge-recalled.js +35 -0
  52. package/components/xplor-badge-recalled.js.map +1 -0
  53. package/components/xplor-badge-session-booking.d.ts +11 -0
  54. package/components/xplor-badge-session-booking.js +60 -0
  55. package/components/xplor-badge-session-booking.js.map +1 -0
  56. package/components/xplor-badge-upcoming.d.ts +11 -0
  57. package/components/xplor-badge-upcoming.js +35 -0
  58. package/components/xplor-badge-upcoming.js.map +1 -0
  59. package/components/xplor-badge-waitlist.d.ts +11 -0
  60. package/components/xplor-badge-waitlist.js +35 -0
  61. package/components/xplor-badge-waitlist.js.map +1 -0
  62. package/components/xplor-badge.d.ts +11 -0
  63. package/components/xplor-badge.js +151 -0
  64. package/components/xplor-badge.js.map +1 -0
  65. package/components/xplor-btn-back-to-parent.d.ts +11 -0
  66. package/components/xplor-btn-back-to-parent.js +72 -0
  67. package/components/xplor-btn-back-to-parent.js.map +1 -0
  68. package/components/xplor-btn-back.d.ts +11 -0
  69. package/components/xplor-btn-back.js +76 -0
  70. package/components/xplor-btn-back.js.map +1 -0
  71. package/components/xplor-btn-icon.d.ts +11 -0
  72. package/components/xplor-btn-icon.js +77 -0
  73. package/components/xplor-btn-icon.js.map +1 -0
  74. package/components/xplor-btn-menu.d.ts +11 -0
  75. package/components/xplor-btn-menu.js +105 -0
  76. package/components/xplor-btn-menu.js.map +1 -0
  77. package/components/xplor-btn-toggle-group.d.ts +11 -0
  78. package/components/xplor-btn-toggle-group.js +46 -0
  79. package/components/xplor-btn-toggle-group.js.map +1 -0
  80. package/components/xplor-btn-toggle-secondary.d.ts +11 -0
  81. package/components/xplor-btn-toggle-secondary.js +64 -0
  82. package/components/xplor-btn-toggle-secondary.js.map +1 -0
  83. package/components/xplor-btn-toggle.d.ts +11 -0
  84. package/components/xplor-btn-toggle.js +69 -0
  85. package/components/xplor-btn-toggle.js.map +1 -0
  86. package/components/xplor-btn-tooltip.d.ts +11 -0
  87. package/components/xplor-btn-tooltip.js +58 -0
  88. package/components/xplor-btn-tooltip.js.map +1 -0
  89. package/components/xplor-button.d.ts +11 -0
  90. package/components/xplor-button.js +9 -0
  91. package/components/xplor-button.js.map +1 -0
  92. package/components/xplor-chat-widget.d.ts +11 -0
  93. package/components/xplor-chat-widget.js +104 -0
  94. package/components/xplor-chat-widget.js.map +1 -0
  95. package/components/xplor-checkbox.d.ts +11 -0
  96. package/components/xplor-checkbox.js +124 -0
  97. package/components/xplor-checkbox.js.map +1 -0
  98. package/components/xplor-combobox.d.ts +11 -0
  99. package/components/xplor-combobox.js +278 -0
  100. package/components/xplor-combobox.js.map +1 -0
  101. package/components/xplor-datatable.d.ts +11 -0
  102. package/components/xplor-datatable.js +243 -0
  103. package/components/xplor-datatable.js.map +1 -0
  104. package/components/xplor-date-picker.d.ts +11 -0
  105. package/components/xplor-date-picker.js +268 -0
  106. package/components/xplor-date-picker.js.map +1 -0
  107. package/components/xplor-drag-and-drop-input.d.ts +11 -0
  108. package/components/xplor-drag-and-drop-input.js +137 -0
  109. package/components/xplor-drag-and-drop-input.js.map +1 -0
  110. package/components/xplor-dropdown.d.ts +11 -0
  111. package/components/xplor-dropdown.js +9 -0
  112. package/components/xplor-dropdown.js.map +1 -0
  113. package/components/xplor-expansion-panel.d.ts +11 -0
  114. package/components/xplor-expansion-panel.js +74 -0
  115. package/components/xplor-expansion-panel.js.map +1 -0
  116. package/components/xplor-expansion-panels.d.ts +11 -0
  117. package/components/xplor-expansion-panels.js +70 -0
  118. package/components/xplor-expansion-panels.js.map +1 -0
  119. package/components/xplor-file-upload.d.ts +11 -0
  120. package/components/xplor-file-upload.js +183 -0
  121. package/components/xplor-file-upload.js.map +1 -0
  122. package/components/xplor-inline-checkbox.d.ts +11 -0
  123. package/components/xplor-inline-checkbox.js +75 -0
  124. package/components/xplor-inline-checkbox.js.map +1 -0
  125. package/components/xplor-inline-date-picker.d.ts +11 -0
  126. package/components/xplor-inline-date-picker.js +9 -0
  127. package/components/xplor-inline-date-picker.js.map +1 -0
  128. package/components/xplor-inline-switch.d.ts +11 -0
  129. package/components/xplor-inline-switch.js +68 -0
  130. package/components/xplor-inline-switch.js.map +1 -0
  131. package/components/xplor-input-file.d.ts +11 -0
  132. package/components/xplor-input-file.js +121 -0
  133. package/components/xplor-input-file.js.map +1 -0
  134. package/components/xplor-input-search.d.ts +11 -0
  135. package/components/xplor-input-search.js +89 -0
  136. package/components/xplor-input-search.js.map +1 -0
  137. package/components/xplor-input-select.d.ts +11 -0
  138. package/components/xplor-input-select.js +168 -0
  139. package/components/xplor-input-select.js.map +1 -0
  140. package/components/xplor-input-send.d.ts +11 -0
  141. package/components/xplor-input-send.js +87 -0
  142. package/components/xplor-input-send.js.map +1 -0
  143. package/components/xplor-input-text-area.d.ts +11 -0
  144. package/components/xplor-input-text-area.js +131 -0
  145. package/components/xplor-input-text-area.js.map +1 -0
  146. package/components/xplor-input-text-secondary.d.ts +11 -0
  147. package/components/xplor-input-text-secondary.js +94 -0
  148. package/components/xplor-input-text-secondary.js.map +1 -0
  149. package/components/xplor-input-text.d.ts +11 -0
  150. package/components/xplor-input-text.js +129 -0
  151. package/components/xplor-input-text.js.map +1 -0
  152. package/components/xplor-input-title.d.ts +11 -0
  153. package/components/xplor-input-title.js +68 -0
  154. package/components/xplor-input-title.js.map +1 -0
  155. package/components/xplor-links.d.ts +11 -0
  156. package/components/xplor-links.js +38 -0
  157. package/components/xplor-links.js.map +1 -0
  158. package/components/xplor-modal-persistent.d.ts +11 -0
  159. package/components/xplor-modal-persistent.js +65 -0
  160. package/components/xplor-modal-persistent.js.map +1 -0
  161. package/components/xplor-modal.d.ts +11 -0
  162. package/components/xplor-modal.js +9 -0
  163. package/components/xplor-modal.js.map +1 -0
  164. package/components/xplor-nav-tabs.d.ts +11 -0
  165. package/components/xplor-nav-tabs.js +58 -0
  166. package/components/xplor-nav-tabs.js.map +1 -0
  167. package/components/xplor-section-card.d.ts +11 -0
  168. package/components/xplor-section-card.js +46 -0
  169. package/components/xplor-section-card.js.map +1 -0
  170. package/components/xplor-section-heading.d.ts +11 -0
  171. package/components/xplor-section-heading.js +43 -0
  172. package/components/xplor-section-heading.js.map +1 -0
  173. package/components/xplor-table.d.ts +11 -0
  174. package/components/xplor-table.js +275 -0
  175. package/components/xplor-table.js.map +1 -0
  176. package/components/xplor-text-bubble.d.ts +11 -0
  177. package/components/xplor-text-bubble.js +42 -0
  178. package/components/xplor-text-bubble.js.map +1 -0
  179. package/components/xplor-text-field.d.ts +11 -0
  180. package/components/xplor-text-field.js +190 -0
  181. package/components/xplor-text-field.js.map +1 -0
  182. package/components/xplor-time-picker.d.ts +11 -0
  183. package/components/xplor-time-picker.js +348 -0
  184. package/components/xplor-time-picker.js.map +1 -0
  185. package/components/xplor-tooltip.d.ts +11 -0
  186. package/components/xplor-tooltip.js +9 -0
  187. package/components/xplor-tooltip.js.map +1 -0
  188. package/dist/cjs/index-Bc5o_4vY.js +2594 -0
  189. package/dist/cjs/index-Bc5o_4vY.js.map +1 -0
  190. package/dist/cjs/index.cjs.js +5 -0
  191. package/dist/cjs/index.cjs.js.map +1 -0
  192. package/dist/cjs/loader.cjs.js +15 -0
  193. package/dist/cjs/loader.cjs.js.map +1 -0
  194. package/dist/cjs/xplor-alert-dialog_57.cjs.entry.js +4750 -0
  195. package/dist/cjs/xplor-alert-dialog_57.cjs.entry.js.map +1 -0
  196. package/dist/cjs/xplor-component-library.cjs.js +27 -0
  197. package/dist/cjs/xplor-component-library.cjs.js.map +1 -0
  198. package/dist/collection/collection-manifest.json +69 -0
  199. package/dist/collection/components/element-interface.js +2 -0
  200. package/dist/collection/components/element-interface.js.map +1 -0
  201. package/dist/collection/components/helpers.js +129 -0
  202. package/dist/collection/components/helpers.js.map +1 -0
  203. package/dist/collection/components/xplor-alert-dialog/xplor-alert-dialog.css +348 -0
  204. package/dist/collection/components/xplor-alert-dialog/xplor-alert-dialog.js +163 -0
  205. package/dist/collection/components/xplor-alert-dialog/xplor-alert-dialog.js.map +1 -0
  206. package/dist/collection/components/xplor-alert-message/xplor-alert-message.css +352 -0
  207. package/dist/collection/components/xplor-alert-message/xplor-alert-message.js +110 -0
  208. package/dist/collection/components/xplor-alert-message/xplor-alert-message.js.map +1 -0
  209. package/dist/collection/components/xplor-assistant/internal/AssistantInput.js +39 -0
  210. package/dist/collection/components/xplor-assistant/internal/AssistantInput.js.map +1 -0
  211. package/dist/collection/components/xplor-assistant/internal/AssistantMessage.js +35 -0
  212. package/dist/collection/components/xplor-assistant/internal/AssistantMessage.js.map +1 -0
  213. package/dist/collection/components/xplor-assistant/internal/QuickReplies.js +13 -0
  214. package/dist/collection/components/xplor-assistant/internal/QuickReplies.js.map +1 -0
  215. package/dist/collection/components/xplor-assistant/internal/TypingIndicator.js +9 -0
  216. package/dist/collection/components/xplor-assistant/internal/TypingIndicator.js.map +1 -0
  217. package/dist/collection/components/xplor-assistant/internal/types.js +2 -0
  218. package/dist/collection/components/xplor-assistant/internal/types.js.map +1 -0
  219. package/dist/collection/components/xplor-assistant/utils/api.js +138 -0
  220. package/dist/collection/components/xplor-assistant/utils/api.js.map +1 -0
  221. package/dist/collection/components/xplor-assistant/utils/icons.js +53 -0
  222. package/dist/collection/components/xplor-assistant/utils/icons.js.map +1 -0
  223. package/dist/collection/components/xplor-assistant/utils/speech.js +230 -0
  224. package/dist/collection/components/xplor-assistant/utils/speech.js.map +1 -0
  225. package/dist/collection/components/xplor-assistant/xplor-assistant.css +1384 -0
  226. package/dist/collection/components/xplor-assistant/xplor-assistant.js +675 -0
  227. package/dist/collection/components/xplor-assistant/xplor-assistant.js.map +1 -0
  228. package/dist/collection/components/xplor-autocomplete/xplor-autocomplete.css +458 -0
  229. package/dist/collection/components/xplor-autocomplete/xplor-autocomplete.js +613 -0
  230. package/dist/collection/components/xplor-autocomplete/xplor-autocomplete.js.map +1 -0
  231. package/dist/collection/components/xplor-avatar/avatar.stories.js +175 -0
  232. package/dist/collection/components/xplor-avatar/avatar.stories.js.map +1 -0
  233. package/dist/collection/components/xplor-avatar/xplor-avatar.css +271 -0
  234. package/dist/collection/components/xplor-avatar/xplor-avatar.js +186 -0
  235. package/dist/collection/components/xplor-avatar/xplor-avatar.js.map +1 -0
  236. package/dist/collection/components/xplor-avatar-and-name/xplor-avatar-and-name.css +284 -0
  237. package/dist/collection/components/xplor-avatar-and-name/xplor-avatar-and-name.js +122 -0
  238. package/dist/collection/components/xplor-avatar-and-name/xplor-avatar-and-name.js.map +1 -0
  239. package/dist/collection/components/xplor-badge/xplor-badge.css +1100 -0
  240. package/dist/collection/components/xplor-badge/xplor-badge.js +273 -0
  241. package/dist/collection/components/xplor-badge/xplor-badge.js.map +1 -0
  242. package/dist/collection/components/xplor-badge-active/xplor-badge-active.css +280 -0
  243. package/dist/collection/components/xplor-badge-active/xplor-badge-active.js +19 -0
  244. package/dist/collection/components/xplor-badge-active/xplor-badge-active.js.map +1 -0
  245. package/dist/collection/components/xplor-badge-archived/xplor-badge-archived.css +280 -0
  246. package/dist/collection/components/xplor-badge-archived/xplor-badge-archived.js +19 -0
  247. package/dist/collection/components/xplor-badge-archived/xplor-badge-archived.js.map +1 -0
  248. package/dist/collection/components/xplor-badge-deleted/xplor-badge-deleted.css +280 -0
  249. package/dist/collection/components/xplor-badge-deleted/xplor-badge-deleted.js +19 -0
  250. package/dist/collection/components/xplor-badge-deleted/xplor-badge-deleted.js.map +1 -0
  251. package/dist/collection/components/xplor-badge-expired/xplor-badge-expired.css +280 -0
  252. package/dist/collection/components/xplor-badge-expired/xplor-badge-expired.js +19 -0
  253. package/dist/collection/components/xplor-badge-expired/xplor-badge-expired.js.map +1 -0
  254. package/dist/collection/components/xplor-badge-inactive/xplor-badge-inactive.css +280 -0
  255. package/dist/collection/components/xplor-badge-inactive/xplor-badge-inactive.js +19 -0
  256. package/dist/collection/components/xplor-badge-inactive/xplor-badge-inactive.js.map +1 -0
  257. package/dist/collection/components/xplor-badge-recalled/xplor-badge-recalled.css +280 -0
  258. package/dist/collection/components/xplor-badge-recalled/xplor-badge-recalled.js +19 -0
  259. package/dist/collection/components/xplor-badge-recalled/xplor-badge-recalled.js.map +1 -0
  260. package/dist/collection/components/xplor-badge-session-booking/xplor-badge-session-booking.css +300 -0
  261. package/dist/collection/components/xplor-badge-session-booking/xplor-badge-session-booking.js +93 -0
  262. package/dist/collection/components/xplor-badge-session-booking/xplor-badge-session-booking.js.map +1 -0
  263. package/dist/collection/components/xplor-badge-upcoming/xplor-badge-upcoming.css +280 -0
  264. package/dist/collection/components/xplor-badge-upcoming/xplor-badge-upcoming.js +19 -0
  265. package/dist/collection/components/xplor-badge-upcoming/xplor-badge-upcoming.js.map +1 -0
  266. package/dist/collection/components/xplor-badge-waitlist/xplor-badge-waitlist.css +280 -0
  267. package/dist/collection/components/xplor-badge-waitlist/xplor-badge-waitlist.js +19 -0
  268. package/dist/collection/components/xplor-badge-waitlist/xplor-badge-waitlist.js.map +1 -0
  269. package/dist/collection/components/xplor-btn-back/xplor-btn-back.css +306 -0
  270. package/dist/collection/components/xplor-btn-back/xplor-btn-back.js +182 -0
  271. package/dist/collection/components/xplor-btn-back/xplor-btn-back.js.map +1 -0
  272. package/dist/collection/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.css +306 -0
  273. package/dist/collection/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.js +173 -0
  274. package/dist/collection/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.js.map +1 -0
  275. package/dist/collection/components/xplor-btn-icon/xplor-btn-icon.css +370 -0
  276. package/dist/collection/components/xplor-btn-icon/xplor-btn-icon.js +183 -0
  277. package/dist/collection/components/xplor-btn-icon/xplor-btn-icon.js.map +1 -0
  278. package/dist/collection/components/xplor-btn-menu/xplor-btn-menu.css +327 -0
  279. package/dist/collection/components/xplor-btn-menu/xplor-btn-menu.js +238 -0
  280. package/dist/collection/components/xplor-btn-menu/xplor-btn-menu.js.map +1 -0
  281. package/dist/collection/components/xplor-btn-toggle/xplor-btn-toggle.css +312 -0
  282. package/dist/collection/components/xplor-btn-toggle/xplor-btn-toggle.js +151 -0
  283. package/dist/collection/components/xplor-btn-toggle/xplor-btn-toggle.js.map +1 -0
  284. package/dist/collection/components/xplor-btn-toggle-group/xplor-btn-toggle-group.css +278 -0
  285. package/dist/collection/components/xplor-btn-toggle-group/xplor-btn-toggle-group.js +73 -0
  286. package/dist/collection/components/xplor-btn-toggle-group/xplor-btn-toggle-group.js.map +1 -0
  287. package/dist/collection/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.css +314 -0
  288. package/dist/collection/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.js +127 -0
  289. package/dist/collection/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.js.map +1 -0
  290. package/dist/collection/components/xplor-btn-tooltip/xplor-btn-tooltip.css +271 -0
  291. package/dist/collection/components/xplor-btn-tooltip/xplor-btn-tooltip.js +164 -0
  292. package/dist/collection/components/xplor-btn-tooltip/xplor-btn-tooltip.js.map +1 -0
  293. package/dist/collection/components/xplor-button/xplor-button.css +1253 -0
  294. package/dist/collection/components/xplor-button/xplor-button.js +212 -0
  295. package/dist/collection/components/xplor-button/xplor-button.js.map +1 -0
  296. package/dist/collection/components/xplor-button/xplor-buttons.stories.js +49 -0
  297. package/dist/collection/components/xplor-button/xplor-buttons.stories.js.map +1 -0
  298. package/dist/collection/components/xplor-chat-widget/xplor-chat-widget.css +276 -0
  299. package/dist/collection/components/xplor-chat-widget/xplor-chat-widget.js +139 -0
  300. package/dist/collection/components/xplor-chat-widget/xplor-chat-widget.js.map +1 -0
  301. package/dist/collection/components/xplor-chat-widget/xplor-chat.stories.js +31 -0
  302. package/dist/collection/components/xplor-chat-widget/xplor-chat.stories.js.map +1 -0
  303. package/dist/collection/components/xplor-checkbox/xplor-checkbox.css +453 -0
  304. package/dist/collection/components/xplor-checkbox/xplor-checkbox.js +230 -0
  305. package/dist/collection/components/xplor-checkbox/xplor-checkbox.js.map +1 -0
  306. package/dist/collection/components/xplor-combobox/xplor-combobox.css +473 -0
  307. package/dist/collection/components/xplor-combobox/xplor-combobox.js +553 -0
  308. package/dist/collection/components/xplor-combobox/xplor-combobox.js.map +1 -0
  309. package/dist/collection/components/xplor-datatable/xplor-datatable.css +580 -0
  310. package/dist/collection/components/xplor-datatable/xplor-datatable.js +536 -0
  311. package/dist/collection/components/xplor-datatable/xplor-datatable.js.map +1 -0
  312. package/dist/collection/components/xplor-datatable/xplor-datatable.stories.js +137 -0
  313. package/dist/collection/components/xplor-datatable/xplor-datatable.stories.js.map +1 -0
  314. package/dist/collection/components/xplor-date-picker/xplor-date-picker.css +415 -0
  315. package/dist/collection/components/xplor-date-picker/xplor-date-picker.js +694 -0
  316. package/dist/collection/components/xplor-date-picker/xplor-date-picker.js.map +1 -0
  317. package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.css +1149 -0
  318. package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js +256 -0
  319. package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js.map +1 -0
  320. package/dist/collection/components/xplor-dropdown/xplor-dropdown.css +286 -0
  321. package/dist/collection/components/xplor-dropdown/xplor-dropdown.js +83 -0
  322. package/dist/collection/components/xplor-dropdown/xplor-dropdown.js.map +1 -0
  323. package/dist/collection/components/xplor-expansion-panel/xplor-expansion-panel.css +334 -0
  324. package/dist/collection/components/xplor-expansion-panel/xplor-expansion-panel.js +122 -0
  325. package/dist/collection/components/xplor-expansion-panel/xplor-expansion-panel.js.map +1 -0
  326. package/dist/collection/components/xplor-expansion-panels/xplor-expansion-panels.css +277 -0
  327. package/dist/collection/components/xplor-expansion-panels/xplor-expansion-panels.js +129 -0
  328. package/dist/collection/components/xplor-expansion-panels/xplor-expansion-panels.js.map +1 -0
  329. package/dist/collection/components/xplor-file-upload/xplor-file-upload.css +433 -0
  330. package/dist/collection/components/xplor-file-upload/xplor-file-upload.js +347 -0
  331. package/dist/collection/components/xplor-file-upload/xplor-file-upload.js.map +1 -0
  332. package/dist/collection/components/xplor-inline-checkbox/xplor-inline-checkbox.css +300 -0
  333. package/dist/collection/components/xplor-inline-checkbox/xplor-inline-checkbox.js +194 -0
  334. package/dist/collection/components/xplor-inline-checkbox/xplor-inline-checkbox.js.map +1 -0
  335. package/dist/collection/components/xplor-inline-date-picker/xplor-inline-date-picker.css +410 -0
  336. package/dist/collection/components/xplor-inline-date-picker/xplor-inline-date-picker.js +325 -0
  337. package/dist/collection/components/xplor-inline-date-picker/xplor-inline-date-picker.js.map +1 -0
  338. package/dist/collection/components/xplor-inline-switch/xplor-inline-switch.css +343 -0
  339. package/dist/collection/components/xplor-inline-switch/xplor-inline-switch.js +168 -0
  340. package/dist/collection/components/xplor-inline-switch/xplor-inline-switch.js.map +1 -0
  341. package/dist/collection/components/xplor-input-file/xplor-input-file.css +392 -0
  342. package/dist/collection/components/xplor-input-file/xplor-input-file.js +340 -0
  343. package/dist/collection/components/xplor-input-file/xplor-input-file.js.map +1 -0
  344. package/dist/collection/components/xplor-input-search/xplor-input-search.css +371 -0
  345. package/dist/collection/components/xplor-input-search/xplor-input-search.js +213 -0
  346. package/dist/collection/components/xplor-input-search/xplor-input-search.js.map +1 -0
  347. package/dist/collection/components/xplor-input-select/xplor-input-select.css +397 -0
  348. package/dist/collection/components/xplor-input-select/xplor-input-select.js +430 -0
  349. package/dist/collection/components/xplor-input-select/xplor-input-select.js.map +1 -0
  350. package/dist/collection/components/xplor-input-send/xplor-input-send.css +312 -0
  351. package/dist/collection/components/xplor-input-send/xplor-input-send.js +218 -0
  352. package/dist/collection/components/xplor-input-send/xplor-input-send.js.map +1 -0
  353. package/dist/collection/components/xplor-input-text/xplor-input-text.css +334 -0
  354. package/dist/collection/components/xplor-input-text/xplor-input-text.js +419 -0
  355. package/dist/collection/components/xplor-input-text/xplor-input-text.js.map +1 -0
  356. package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.css +359 -0
  357. package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.js +416 -0
  358. package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.js.map +1 -0
  359. package/dist/collection/components/xplor-input-text-secondary/xplor-input-text-secondary.css +339 -0
  360. package/dist/collection/components/xplor-input-text-secondary/xplor-input-text-secondary.js +384 -0
  361. package/dist/collection/components/xplor-input-text-secondary/xplor-input-text-secondary.js.map +1 -0
  362. package/dist/collection/components/xplor-input-title/xplor-input-title.css +304 -0
  363. package/dist/collection/components/xplor-input-title/xplor-input-title.js +164 -0
  364. package/dist/collection/components/xplor-input-title/xplor-input-title.js.map +1 -0
  365. package/dist/collection/components/xplor-links/xplor-links.css +9 -0
  366. package/dist/collection/components/xplor-links/xplor-links.js +42 -0
  367. package/dist/collection/components/xplor-links/xplor-links.js.map +1 -0
  368. package/dist/collection/components/xplor-links/xplor-links.stories.js +18 -0
  369. package/dist/collection/components/xplor-links/xplor-links.stories.js.map +1 -0
  370. package/dist/collection/components/xplor-modal/xplor-modal.css +385 -0
  371. package/dist/collection/components/xplor-modal/xplor-modal.js +279 -0
  372. package/dist/collection/components/xplor-modal/xplor-modal.js.map +1 -0
  373. package/dist/collection/components/xplor-modal-persistent/xplor-modal-persistent.js +152 -0
  374. package/dist/collection/components/xplor-modal-persistent/xplor-modal-persistent.js.map +1 -0
  375. package/dist/collection/components/xplor-nav-tabs/xplor-nav-tabs.css +333 -0
  376. package/dist/collection/components/xplor-nav-tabs/xplor-nav-tabs.js +144 -0
  377. package/dist/collection/components/xplor-nav-tabs/xplor-nav-tabs.js.map +1 -0
  378. package/dist/collection/components/xplor-section-card/xplor-section-card.css +1076 -0
  379. package/dist/collection/components/xplor-section-card/xplor-section-card.js +92 -0
  380. package/dist/collection/components/xplor-section-card/xplor-section-card.js.map +1 -0
  381. package/dist/collection/components/xplor-section-heading/xplor-section-heading.css +285 -0
  382. package/dist/collection/components/xplor-section-heading/xplor-section-heading.js +69 -0
  383. package/dist/collection/components/xplor-section-heading/xplor-section-heading.js.map +1 -0
  384. package/dist/collection/components/xplor-table/xplor-table.js +695 -0
  385. package/dist/collection/components/xplor-table/xplor-table.js.map +1 -0
  386. package/dist/collection/components/xplor-table/xplor-table.stories.js +159 -0
  387. package/dist/collection/components/xplor-table/xplor-table.stories.js.map +1 -0
  388. package/dist/collection/components/xplor-text-bubble/xplor-text-bubble.css +285 -0
  389. package/dist/collection/components/xplor-text-bubble/xplor-text-bubble.js +50 -0
  390. package/dist/collection/components/xplor-text-bubble/xplor-text-bubble.js.map +1 -0
  391. package/dist/collection/components/xplor-text-field/xplor-text-field.css +1280 -0
  392. package/dist/collection/components/xplor-text-field/xplor-text-field.js +591 -0
  393. package/dist/collection/components/xplor-text-field/xplor-text-field.js.map +1 -0
  394. package/dist/collection/components/xplor-time-picker/xplor-time-picker.css +448 -0
  395. package/dist/collection/components/xplor-time-picker/xplor-time-picker.js +647 -0
  396. package/dist/collection/components/xplor-time-picker/xplor-time-picker.js.map +1 -0
  397. package/dist/collection/components/xplor-tooltip/xplor-tooltip.css +336 -0
  398. package/dist/collection/components/xplor-tooltip/xplor-tooltip.js +311 -0
  399. package/dist/collection/components/xplor-tooltip/xplor-tooltip.js.map +1 -0
  400. package/dist/collection/globals/globals.js +32 -0
  401. package/dist/collection/globals/globals.js.map +1 -0
  402. package/dist/collection/index.js +2 -0
  403. package/dist/collection/index.js.map +1 -0
  404. package/dist/collection/stories/Button.js +17 -0
  405. package/dist/collection/stories/Button.js.map +1 -0
  406. package/dist/collection/stories/Button.stories.js +50 -0
  407. package/dist/collection/stories/Button.stories.js.map +1 -0
  408. package/dist/collection/stories/Header.js +41 -0
  409. package/dist/collection/stories/Header.js.map +1 -0
  410. package/dist/collection/stories/Header.stories.js +28 -0
  411. package/dist/collection/stories/Header.stories.js.map +1 -0
  412. package/dist/collection/stories/Page.js +85 -0
  413. package/dist/collection/stories/Page.js.map +1 -0
  414. package/dist/collection/stories/Page.stories.js +25 -0
  415. package/dist/collection/stories/Page.stories.js.map +1 -0
  416. package/dist/collection/stories/assets/accessibility.svg +1 -0
  417. package/dist/collection/stories/assets/discord.svg +1 -0
  418. package/dist/collection/stories/assets/github.svg +1 -0
  419. package/dist/collection/stories/assets/tutorials.svg +1 -0
  420. package/dist/collection/stories/assets/youtube.svg +1 -0
  421. package/dist/collection/utils/helpers.js +25 -0
  422. package/dist/collection/utils/helpers.js.map +1 -0
  423. package/dist/components/index.d.ts +33 -0
  424. package/dist/components/index.js +2324 -0
  425. package/dist/components/index.js.map +1 -0
  426. package/dist/components/p-4l9DAhAo.js +182 -0
  427. package/dist/components/p-4l9DAhAo.js.map +1 -0
  428. package/dist/components/p-BHdeGt6k.js +51 -0
  429. package/dist/components/p-BHdeGt6k.js.map +1 -0
  430. package/dist/components/p-BIFlTsO8.js +185 -0
  431. package/dist/components/p-BIFlTsO8.js.map +1 -0
  432. package/dist/components/p-CJGP2_5k.js +38 -0
  433. package/dist/components/p-CJGP2_5k.js.map +1 -0
  434. package/dist/components/p-DIv_A5Gj.js +57 -0
  435. package/dist/components/p-DIv_A5Gj.js.map +1 -0
  436. package/dist/components/p-DKh6y3GY.js +118 -0
  437. package/dist/components/p-DKh6y3GY.js.map +1 -0
  438. package/dist/components/xplor-alert-dialog.d.ts +11 -0
  439. package/dist/components/xplor-alert-dialog.js +86 -0
  440. package/dist/components/xplor-alert-dialog.js.map +1 -0
  441. package/dist/components/xplor-alert-message.d.ts +11 -0
  442. package/dist/components/xplor-alert-message.js +49 -0
  443. package/dist/components/xplor-alert-message.js.map +1 -0
  444. package/dist/components/xplor-assistant.d.ts +11 -0
  445. package/dist/components/xplor-assistant.js +764 -0
  446. package/dist/components/xplor-assistant.js.map +1 -0
  447. package/dist/components/xplor-autocomplete.d.ts +11 -0
  448. package/dist/components/xplor-autocomplete.js +269 -0
  449. package/dist/components/xplor-autocomplete.js.map +1 -0
  450. package/dist/components/xplor-avatar-and-name.d.ts +11 -0
  451. package/dist/components/xplor-avatar-and-name.js +49 -0
  452. package/dist/components/xplor-avatar-and-name.js.map +1 -0
  453. package/dist/components/xplor-avatar.d.ts +11 -0
  454. package/dist/components/xplor-avatar.js +9 -0
  455. package/dist/components/xplor-avatar.js.map +1 -0
  456. package/dist/components/xplor-badge-active.d.ts +11 -0
  457. package/dist/components/xplor-badge-active.js +36 -0
  458. package/dist/components/xplor-badge-active.js.map +1 -0
  459. package/dist/components/xplor-badge-archived.d.ts +11 -0
  460. package/dist/components/xplor-badge-archived.js +36 -0
  461. package/dist/components/xplor-badge-archived.js.map +1 -0
  462. package/dist/components/xplor-badge-deleted.d.ts +11 -0
  463. package/dist/components/xplor-badge-deleted.js +36 -0
  464. package/dist/components/xplor-badge-deleted.js.map +1 -0
  465. package/dist/components/xplor-badge-expired.d.ts +11 -0
  466. package/dist/components/xplor-badge-expired.js +36 -0
  467. package/dist/components/xplor-badge-expired.js.map +1 -0
  468. package/dist/components/xplor-badge-inactive.d.ts +11 -0
  469. package/dist/components/xplor-badge-inactive.js +36 -0
  470. package/dist/components/xplor-badge-inactive.js.map +1 -0
  471. package/dist/components/xplor-badge-recalled.d.ts +11 -0
  472. package/dist/components/xplor-badge-recalled.js +36 -0
  473. package/dist/components/xplor-badge-recalled.js.map +1 -0
  474. package/dist/components/xplor-badge-session-booking.d.ts +11 -0
  475. package/dist/components/xplor-badge-session-booking.js +61 -0
  476. package/dist/components/xplor-badge-session-booking.js.map +1 -0
  477. package/dist/components/xplor-badge-upcoming.d.ts +11 -0
  478. package/dist/components/xplor-badge-upcoming.js +36 -0
  479. package/dist/components/xplor-badge-upcoming.js.map +1 -0
  480. package/dist/components/xplor-badge-waitlist.d.ts +11 -0
  481. package/dist/components/xplor-badge-waitlist.js +36 -0
  482. package/dist/components/xplor-badge-waitlist.js.map +1 -0
  483. package/dist/components/xplor-badge.d.ts +11 -0
  484. package/dist/components/xplor-badge.js +152 -0
  485. package/dist/components/xplor-badge.js.map +1 -0
  486. package/dist/components/xplor-btn-back-to-parent.d.ts +11 -0
  487. package/dist/components/xplor-btn-back-to-parent.js +73 -0
  488. package/dist/components/xplor-btn-back-to-parent.js.map +1 -0
  489. package/dist/components/xplor-btn-back.d.ts +11 -0
  490. package/dist/components/xplor-btn-back.js +77 -0
  491. package/dist/components/xplor-btn-back.js.map +1 -0
  492. package/dist/components/xplor-btn-icon.d.ts +11 -0
  493. package/dist/components/xplor-btn-icon.js +78 -0
  494. package/dist/components/xplor-btn-icon.js.map +1 -0
  495. package/dist/components/xplor-btn-menu.d.ts +11 -0
  496. package/dist/components/xplor-btn-menu.js +106 -0
  497. package/dist/components/xplor-btn-menu.js.map +1 -0
  498. package/dist/components/xplor-btn-toggle-group.d.ts +11 -0
  499. package/dist/components/xplor-btn-toggle-group.js +47 -0
  500. package/dist/components/xplor-btn-toggle-group.js.map +1 -0
  501. package/dist/components/xplor-btn-toggle-secondary.d.ts +11 -0
  502. package/dist/components/xplor-btn-toggle-secondary.js +65 -0
  503. package/dist/components/xplor-btn-toggle-secondary.js.map +1 -0
  504. package/dist/components/xplor-btn-toggle.d.ts +11 -0
  505. package/dist/components/xplor-btn-toggle.js +70 -0
  506. package/dist/components/xplor-btn-toggle.js.map +1 -0
  507. package/dist/components/xplor-btn-tooltip.d.ts +11 -0
  508. package/dist/components/xplor-btn-tooltip.js +59 -0
  509. package/dist/components/xplor-btn-tooltip.js.map +1 -0
  510. package/dist/components/xplor-button.d.ts +11 -0
  511. package/dist/components/xplor-button.js +9 -0
  512. package/dist/components/xplor-button.js.map +1 -0
  513. package/dist/components/xplor-chat-widget.d.ts +11 -0
  514. package/dist/components/xplor-chat-widget.js +105 -0
  515. package/dist/components/xplor-chat-widget.js.map +1 -0
  516. package/dist/components/xplor-checkbox.d.ts +11 -0
  517. package/dist/components/xplor-checkbox.js +125 -0
  518. package/dist/components/xplor-checkbox.js.map +1 -0
  519. package/dist/components/xplor-combobox.d.ts +11 -0
  520. package/dist/components/xplor-combobox.js +279 -0
  521. package/dist/components/xplor-combobox.js.map +1 -0
  522. package/dist/components/xplor-datatable.d.ts +11 -0
  523. package/dist/components/xplor-datatable.js +244 -0
  524. package/dist/components/xplor-datatable.js.map +1 -0
  525. package/dist/components/xplor-date-picker.d.ts +11 -0
  526. package/dist/components/xplor-date-picker.js +269 -0
  527. package/dist/components/xplor-date-picker.js.map +1 -0
  528. package/dist/components/xplor-drag-and-drop-input.d.ts +11 -0
  529. package/dist/components/xplor-drag-and-drop-input.js +138 -0
  530. package/dist/components/xplor-drag-and-drop-input.js.map +1 -0
  531. package/dist/components/xplor-dropdown.d.ts +11 -0
  532. package/dist/components/xplor-dropdown.js +9 -0
  533. package/dist/components/xplor-dropdown.js.map +1 -0
  534. package/dist/components/xplor-expansion-panel.d.ts +11 -0
  535. package/dist/components/xplor-expansion-panel.js +75 -0
  536. package/dist/components/xplor-expansion-panel.js.map +1 -0
  537. package/dist/components/xplor-expansion-panels.d.ts +11 -0
  538. package/dist/components/xplor-expansion-panels.js +71 -0
  539. package/dist/components/xplor-expansion-panels.js.map +1 -0
  540. package/dist/components/xplor-file-upload.d.ts +11 -0
  541. package/dist/components/xplor-file-upload.js +184 -0
  542. package/dist/components/xplor-file-upload.js.map +1 -0
  543. package/dist/components/xplor-inline-checkbox.d.ts +11 -0
  544. package/dist/components/xplor-inline-checkbox.js +76 -0
  545. package/dist/components/xplor-inline-checkbox.js.map +1 -0
  546. package/dist/components/xplor-inline-date-picker.d.ts +11 -0
  547. package/dist/components/xplor-inline-date-picker.js +9 -0
  548. package/dist/components/xplor-inline-date-picker.js.map +1 -0
  549. package/dist/components/xplor-inline-switch.d.ts +11 -0
  550. package/dist/components/xplor-inline-switch.js +69 -0
  551. package/dist/components/xplor-inline-switch.js.map +1 -0
  552. package/dist/components/xplor-input-file.d.ts +11 -0
  553. package/dist/components/xplor-input-file.js +122 -0
  554. package/dist/components/xplor-input-file.js.map +1 -0
  555. package/dist/components/xplor-input-search.d.ts +11 -0
  556. package/dist/components/xplor-input-search.js +90 -0
  557. package/dist/components/xplor-input-search.js.map +1 -0
  558. package/dist/components/xplor-input-select.d.ts +11 -0
  559. package/dist/components/xplor-input-select.js +169 -0
  560. package/dist/components/xplor-input-select.js.map +1 -0
  561. package/dist/components/xplor-input-send.d.ts +11 -0
  562. package/dist/components/xplor-input-send.js +88 -0
  563. package/dist/components/xplor-input-send.js.map +1 -0
  564. package/dist/components/xplor-input-text-area.d.ts +11 -0
  565. package/dist/components/xplor-input-text-area.js +132 -0
  566. package/dist/components/xplor-input-text-area.js.map +1 -0
  567. package/dist/components/xplor-input-text-secondary.d.ts +11 -0
  568. package/dist/components/xplor-input-text-secondary.js +95 -0
  569. package/dist/components/xplor-input-text-secondary.js.map +1 -0
  570. package/dist/components/xplor-input-text.d.ts +11 -0
  571. package/dist/components/xplor-input-text.js +130 -0
  572. package/dist/components/xplor-input-text.js.map +1 -0
  573. package/dist/components/xplor-input-title.d.ts +11 -0
  574. package/dist/components/xplor-input-title.js +69 -0
  575. package/dist/components/xplor-input-title.js.map +1 -0
  576. package/dist/components/xplor-links.d.ts +11 -0
  577. package/dist/components/xplor-links.js +39 -0
  578. package/dist/components/xplor-links.js.map +1 -0
  579. package/dist/components/xplor-modal-persistent.d.ts +11 -0
  580. package/dist/components/xplor-modal-persistent.js +66 -0
  581. package/dist/components/xplor-modal-persistent.js.map +1 -0
  582. package/dist/components/xplor-modal.d.ts +11 -0
  583. package/dist/components/xplor-modal.js +9 -0
  584. package/dist/components/xplor-modal.js.map +1 -0
  585. package/dist/components/xplor-nav-tabs.d.ts +11 -0
  586. package/dist/components/xplor-nav-tabs.js +59 -0
  587. package/dist/components/xplor-nav-tabs.js.map +1 -0
  588. package/dist/components/xplor-section-card.d.ts +11 -0
  589. package/dist/components/xplor-section-card.js +47 -0
  590. package/dist/components/xplor-section-card.js.map +1 -0
  591. package/dist/components/xplor-section-heading.d.ts +11 -0
  592. package/dist/components/xplor-section-heading.js +44 -0
  593. package/dist/components/xplor-section-heading.js.map +1 -0
  594. package/dist/components/xplor-table.d.ts +11 -0
  595. package/dist/components/xplor-table.js +276 -0
  596. package/dist/components/xplor-table.js.map +1 -0
  597. package/dist/components/xplor-text-bubble.d.ts +11 -0
  598. package/dist/components/xplor-text-bubble.js +43 -0
  599. package/dist/components/xplor-text-bubble.js.map +1 -0
  600. package/dist/components/xplor-text-field.d.ts +11 -0
  601. package/dist/components/xplor-text-field.js +191 -0
  602. package/dist/components/xplor-text-field.js.map +1 -0
  603. package/dist/components/xplor-time-picker.d.ts +11 -0
  604. package/dist/components/xplor-time-picker.js +349 -0
  605. package/dist/components/xplor-time-picker.js.map +1 -0
  606. package/dist/components/xplor-tooltip.d.ts +11 -0
  607. package/dist/components/xplor-tooltip.js +9 -0
  608. package/dist/components/xplor-tooltip.js.map +1 -0
  609. package/dist/esm/index-Zkk2NJif.js +2566 -0
  610. package/dist/esm/index-Zkk2NJif.js.map +1 -0
  611. package/dist/esm/index.js +4 -0
  612. package/dist/esm/index.js.map +1 -0
  613. package/dist/esm/loader.js +13 -0
  614. package/dist/esm/loader.js.map +1 -0
  615. package/dist/esm/xplor-alert-dialog_57.entry.js +4692 -0
  616. package/dist/esm/xplor-alert-dialog_57.entry.js.map +1 -0
  617. package/dist/esm/xplor-component-library.js +23 -0
  618. package/dist/esm/xplor-component-library.js.map +1 -0
  619. package/dist/hydrate/index.d.ts +273 -0
  620. package/dist/hydrate/index.js +25064 -0
  621. package/dist/hydrate/index.mjs +25056 -0
  622. package/dist/hydrate/package.json +12 -0
  623. package/dist/index.cjs.js +1 -0
  624. package/dist/index.js +1 -0
  625. package/dist/types/components/element-interface.d.ts +19 -0
  626. package/dist/types/components/helpers.d.ts +47 -0
  627. package/dist/types/components/xplor-alert-dialog/xplor-alert-dialog.d.ts +29 -0
  628. package/dist/types/components/xplor-alert-message/xplor-alert-message.d.ts +9 -0
  629. package/dist/types/components/xplor-assistant/internal/AssistantInput.d.ts +17 -0
  630. package/dist/types/components/xplor-assistant/internal/AssistantMessage.d.ts +6 -0
  631. package/dist/types/components/xplor-assistant/internal/QuickReplies.d.ts +6 -0
  632. package/dist/types/components/xplor-assistant/internal/TypingIndicator.d.ts +5 -0
  633. package/dist/types/components/xplor-assistant/internal/types.d.ts +106 -0
  634. package/dist/types/components/xplor-assistant/utils/api.d.ts +48 -0
  635. package/dist/types/components/xplor-assistant/utils/icons.d.ts +24 -0
  636. package/dist/types/components/xplor-assistant/utils/speech.d.ts +86 -0
  637. package/dist/types/components/xplor-assistant/xplor-assistant.d.ts +52 -0
  638. package/dist/types/components/xplor-autocomplete/xplor-autocomplete.d.ts +92 -0
  639. package/dist/types/components/xplor-avatar/avatar.stories.d.ts +75 -0
  640. package/dist/types/components/xplor-avatar/xplor-avatar.d.ts +21 -0
  641. package/dist/types/components/xplor-avatar-and-name/xplor-avatar-and-name.d.ts +8 -0
  642. package/dist/types/components/xplor-badge/xplor-badge.d.ts +52 -0
  643. package/dist/types/components/xplor-badge-active/xplor-badge-active.d.ts +3 -0
  644. package/dist/types/components/xplor-badge-archived/xplor-badge-archived.d.ts +3 -0
  645. package/dist/types/components/xplor-badge-deleted/xplor-badge-deleted.d.ts +3 -0
  646. package/dist/types/components/xplor-badge-expired/xplor-badge-expired.d.ts +3 -0
  647. package/dist/types/components/xplor-badge-inactive/xplor-badge-inactive.d.ts +3 -0
  648. package/dist/types/components/xplor-badge-recalled/xplor-badge-recalled.d.ts +3 -0
  649. package/dist/types/components/xplor-badge-session-booking/xplor-badge-session-booking.d.ts +20 -0
  650. package/dist/types/components/xplor-badge-upcoming/xplor-badge-upcoming.d.ts +3 -0
  651. package/dist/types/components/xplor-badge-waitlist/xplor-badge-waitlist.d.ts +3 -0
  652. package/dist/types/components/xplor-btn-back/xplor-btn-back.d.ts +29 -0
  653. package/dist/types/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.d.ts +29 -0
  654. package/dist/types/components/xplor-btn-icon/xplor-btn-icon.d.ts +29 -0
  655. package/dist/types/components/xplor-btn-menu/xplor-btn-menu.d.ts +49 -0
  656. package/dist/types/components/xplor-btn-toggle/xplor-btn-toggle.d.ts +25 -0
  657. package/dist/types/components/xplor-btn-toggle-group/xplor-btn-toggle-group.d.ts +11 -0
  658. package/dist/types/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.d.ts +21 -0
  659. package/dist/types/components/xplor-btn-tooltip/xplor-btn-tooltip.d.ts +10 -0
  660. package/dist/types/components/xplor-button/xplor-button.d.ts +19 -0
  661. package/dist/types/components/xplor-button/xplor-buttons.stories.d.ts +32 -0
  662. package/dist/types/components/xplor-chat-widget/xplor-chat-widget.d.ts +13 -0
  663. package/dist/types/components/xplor-chat-widget/xplor-chat.stories.d.ts +32 -0
  664. package/dist/types/components/xplor-checkbox/xplor-checkbox.d.ts +25 -0
  665. package/dist/types/components/xplor-combobox/xplor-combobox.d.ts +77 -0
  666. package/dist/types/components/xplor-datatable/xplor-datatable.d.ts +103 -0
  667. package/dist/types/components/xplor-datatable/xplor-datatable.stories.d.ts +18 -0
  668. package/dist/types/components/xplor-date-picker/xplor-date-picker.d.ts +53 -0
  669. package/dist/types/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.d.ts +42 -0
  670. package/dist/types/components/xplor-dropdown/xplor-dropdown.d.ts +6 -0
  671. package/dist/types/components/xplor-expansion-panel/xplor-expansion-panel.d.ts +18 -0
  672. package/dist/types/components/xplor-expansion-panels/xplor-expansion-panels.d.ts +12 -0
  673. package/dist/types/components/xplor-file-upload/xplor-file-upload.d.ts +51 -0
  674. package/dist/types/components/xplor-inline-checkbox/xplor-inline-checkbox.d.ts +33 -0
  675. package/dist/types/components/xplor-inline-date-picker/xplor-inline-date-picker.d.ts +57 -0
  676. package/dist/types/components/xplor-inline-switch/xplor-inline-switch.d.ts +29 -0
  677. package/dist/types/components/xplor-input-file/xplor-input-file.d.ts +60 -0
  678. package/dist/types/components/xplor-input-search/xplor-input-search.d.ts +36 -0
  679. package/dist/types/components/xplor-input-select/xplor-input-select.d.ts +76 -0
  680. package/dist/types/components/xplor-input-send/xplor-input-send.d.ts +18 -0
  681. package/dist/types/components/xplor-input-text/xplor-input-text.d.ts +73 -0
  682. package/dist/types/components/xplor-input-text-area/xplor-input-text-area.d.ts +72 -0
  683. package/dist/types/components/xplor-input-text-secondary/xplor-input-text-secondary.d.ts +25 -0
  684. package/dist/types/components/xplor-input-title/xplor-input-title.d.ts +30 -0
  685. package/dist/types/components/xplor-links/xplor-links.d.ts +4 -0
  686. package/dist/types/components/xplor-links/xplor-links.stories.d.ts +12 -0
  687. package/dist/types/components/xplor-modal/xplor-modal.d.ts +45 -0
  688. package/dist/types/components/xplor-modal-persistent/xplor-modal-persistent.d.ts +28 -0
  689. package/dist/types/components/xplor-nav-tabs/xplor-nav-tabs.d.ts +15 -0
  690. package/dist/types/components/xplor-section-card/xplor-section-card.d.ts +6 -0
  691. package/dist/types/components/xplor-section-heading/xplor-section-heading.d.ts +5 -0
  692. package/dist/types/components/xplor-table/xplor-table.d.ts +65 -0
  693. package/dist/types/components/xplor-table/xplor-table.stories.d.ts +77 -0
  694. package/dist/types/components/xplor-text-bubble/xplor-text-bubble.d.ts +4 -0
  695. package/dist/types/components/xplor-text-field/xplor-text-field.d.ts +111 -0
  696. package/dist/types/components/xplor-time-picker/xplor-time-picker.d.ts +55 -0
  697. package/dist/types/components/xplor-tooltip/xplor-tooltip.d.ts +28 -0
  698. package/dist/types/components.d.ts +4360 -0
  699. package/dist/types/globals/globals.d.ts +3 -0
  700. package/dist/types/index.d.ts +1 -0
  701. package/dist/types/interfaces.d.ts +104 -0
  702. package/dist/types/stencil-public-runtime.d.ts +1702 -0
  703. package/dist/types/stories/Button.d.ts +15 -0
  704. package/dist/types/stories/Header.d.ts +10 -0
  705. package/dist/types/stories/Page.d.ts +2 -0
  706. package/dist/types/stories/Page.stories.d.ts +11 -0
  707. package/dist/types/utils/helpers.d.ts +3 -0
  708. package/dist/xplor-component-library/index.esm.js +2 -0
  709. package/dist/xplor-component-library/index.esm.js.map +1 -0
  710. package/dist/xplor-component-library/loader.esm.js.map +1 -0
  711. package/dist/xplor-component-library/p-25fa8553.entry.js +2 -0
  712. package/dist/xplor-component-library/p-25fa8553.entry.js.map +1 -0
  713. package/dist/xplor-component-library/p-Zkk2NJif.js +3 -0
  714. package/dist/xplor-component-library/p-Zkk2NJif.js.map +1 -0
  715. package/dist/xplor-component-library/xplor-component-library.css +1 -0
  716. package/dist/xplor-component-library/xplor-component-library.esm.js +2 -0
  717. package/dist/xplor-component-library/xplor-component-library.esm.js.map +1 -0
  718. package/loader/cdn.js +1 -0
  719. package/loader/index.cjs.js +1 -0
  720. package/loader/index.d.ts +24 -0
  721. package/loader/index.es2017.js +1 -0
  722. package/loader/index.js +2 -0
  723. package/package.json +124 -0
  724. package/readme.md +315 -0
@@ -0,0 +1 @@
1
+ {"file":"xplor-alert-dialog.xplor-alert-message.xplor-assistant.xplor-autocomplete.xplor-avatar.xplor-avatar-and-name.xplor-badge.xplor-badge-active.xplor-badge-archived.xplor-badge-deleted.xplor-badge-expired.xplor-badge-inactive.xplor-badge-recalled.xplor-badge-session-booking.xplor-badge-upcoming.xplor-badge-waitlist.xplor-btn-back.xplor-btn-back-to-parent.xplor-btn-icon.xplor-btn-menu.xplor-btn-toggle.xplor-btn-toggle-group.xplor-btn-toggle-secondary.xplor-btn-tooltip.xplor-button.xplor-chat-widget.xplor-checkbox.xplor-combobox.xplor-datatable.xplor-date-picker.xplor-drag-and-drop-input.xplor-dropdown.xplor-expansion-panel.xplor-expansion-panels.xplor-file-upload.xplor-inline-checkbox.xplor-inline-date-picker.xplor-inline-switch.xplor-input-file.xplor-input-search.xplor-input-select.xplor-input-send.xplor-input-text.xplor-input-text-area.xplor-input-text-secondary.xplor-input-title.xplor-links.xplor-modal.xplor-modal-persistent.xplor-nav-tabs.xplor-section-card.xplor-section-heading.xplor-table.xplor-text-bubble.xplor-text-field.xplor-time-picker.xplor-tooltip.entry.cjs.js","mappings":"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","names":["h","Host","index","DEFAULT_ACCEPT_ALL"],"sources":["src/components/xplor-alert-dialog/xplor-alert-dialog.scss?tag=xplor-alert-dialog&encapsulation=scoped","src/components/xplor-alert-dialog/xplor-alert-dialog.tsx","src/components/xplor-alert-message/xplor-alert-message.scss?tag=xplor-alert-message&encapsulation=scoped","src/components/xplor-alert-message/xplor-alert-message.tsx","src/components/xplor-assistant/utils/api.ts","src/components/xplor-assistant/utils/speech.ts","src/components/xplor-assistant/utils/icons.ts","src/components/xplor-assistant/internal/AssistantMessage.tsx","src/components/xplor-assistant/internal/AssistantInput.tsx","src/components/xplor-assistant/internal/QuickReplies.tsx","src/components/xplor-assistant/internal/TypingIndicator.tsx","src/components/xplor-assistant/xplor-assistant.scss?tag=xplor-assistant&encapsulation=scoped","src/components/xplor-assistant/xplor-assistant.tsx","src/components/xplor-autocomplete/xplor-autocomplete.scss?tag=xplor-autocomplete&encapsulation=scoped","src/components/xplor-autocomplete/xplor-autocomplete.tsx","src/components/xplor-avatar/xplor-avatar.scss?tag=xplor-avatar&encapsulation=shadow","src/components/xplor-avatar/xplor-avatar.tsx","src/components/xplor-avatar-and-name/xplor-avatar-and-name.scss?tag=xplor-avatar-and-name&encapsulation=scoped","src/components/xplor-avatar-and-name/xplor-avatar-and-name.tsx","src/components/xplor-badge/xplor-badge.scss?tag=xplor-badge&encapsulation=scoped","src/components/xplor-badge/xplor-badge.tsx","src/components/xplor-badge-active/xplor-badge-active.scss?tag=xplor-badge-active&encapsulation=scoped","src/components/xplor-badge-active/xplor-badge-active.tsx","src/components/xplor-badge-archived/xplor-badge-archived.scss?tag=xplor-badge-archived&encapsulation=scoped","src/components/xplor-badge-archived/xplor-badge-archived.tsx","src/components/xplor-badge-deleted/xplor-badge-deleted.scss?tag=xplor-badge-deleted&encapsulation=scoped","src/components/xplor-badge-deleted/xplor-badge-deleted.tsx","src/components/xplor-badge-expired/xplor-badge-expired.scss?tag=xplor-badge-expired&encapsulation=scoped","src/components/xplor-badge-expired/xplor-badge-expired.tsx","src/components/xplor-badge-inactive/xplor-badge-inactive.scss?tag=xplor-badge-inactive&encapsulation=scoped","src/components/xplor-badge-inactive/xplor-badge-inactive.tsx","src/components/xplor-badge-recalled/xplor-badge-recalled.scss?tag=xplor-badge-recalled&encapsulation=scoped","src/components/xplor-badge-recalled/xplor-badge-recalled.tsx","src/components/xplor-badge-session-booking/xplor-badge-session-booking.scss?tag=xplor-badge-session-booking&encapsulation=scoped","src/components/xplor-badge-session-booking/xplor-badge-session-booking.tsx","src/components/xplor-badge-upcoming/xplor-badge-upcoming.scss?tag=xplor-badge-upcoming&encapsulation=scoped","src/components/xplor-badge-upcoming/xplor-badge-upcoming.tsx","src/components/xplor-badge-waitlist/xplor-badge-waitlist.scss?tag=xplor-badge-waitlist&encapsulation=scoped","src/components/xplor-badge-waitlist/xplor-badge-waitlist.tsx","src/components/xplor-btn-back/xplor-btn-back.scss?tag=xplor-btn-back&encapsulation=scoped","src/components/xplor-btn-back/xplor-btn-back.tsx","src/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.scss?tag=xplor-btn-back-to-parent&encapsulation=scoped","src/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.tsx","src/components/xplor-btn-icon/xplor-btn-icon.scss?tag=xplor-btn-icon&encapsulation=scoped","src/components/xplor-btn-icon/xplor-btn-icon.tsx","src/components/xplor-btn-menu/xplor-btn-menu.scss?tag=xplor-btn-menu&encapsulation=scoped","src/components/xplor-btn-menu/xplor-btn-menu.tsx","src/components/xplor-btn-toggle/xplor-btn-toggle.scss?tag=xplor-btn-toggle&encapsulation=scoped","src/components/xplor-btn-toggle/xplor-btn-toggle.tsx","src/components/xplor-btn-toggle-group/xplor-btn-toggle-group.scss?tag=xplor-btn-toggle-group&encapsulation=scoped","src/components/xplor-btn-toggle-group/xplor-btn-toggle-group.tsx","src/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.scss?tag=xplor-btn-toggle-secondary&encapsulation=scoped","src/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.tsx","src/components/xplor-btn-tooltip/xplor-btn-tooltip.scss?tag=xplor-btn-tooltip&encapsulation=scoped","src/components/xplor-btn-tooltip/xplor-btn-tooltip.tsx","src/components/xplor-button/xplor-button.scss?tag=xplor-button&encapsulation=scoped","src/components/xplor-button/xplor-button.tsx","src/components/xplor-chat-widget/xplor-chat-widget.scss?tag=xplor-chat-widget&encapsulation=shadow","src/components/xplor-chat-widget/xplor-chat-widget.tsx","src/components/xplor-checkbox/xplor-checkbox.scss?tag=xplor-checkbox&encapsulation=shadow","src/components/xplor-checkbox/xplor-checkbox.tsx","src/components/xplor-combobox/xplor-combobox.scss?tag=xplor-combobox&encapsulation=scoped","src/components/xplor-combobox/xplor-combobox.tsx","src/components/xplor-datatable/xplor-datatable.scss?tag=xplor-datatable&encapsulation=shadow","src/components/xplor-datatable/xplor-datatable.tsx","src/components/xplor-date-picker/xplor-date-picker.scss?tag=xplor-date-picker&encapsulation=scoped","src/components/xplor-date-picker/xplor-date-picker.tsx","src/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.scss?tag=xplor-drag-and-drop-input&encapsulation=scoped","src/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.tsx","src/components/xplor-dropdown/xplor-dropdown.scss?tag=xplor-dropdown&encapsulation=shadow","src/components/xplor-dropdown/xplor-dropdown.tsx","src/components/xplor-expansion-panel/xplor-expansion-panel.scss?tag=xplor-expansion-panel&encapsulation=scoped","src/components/xplor-expansion-panel/xplor-expansion-panel.tsx","src/components/xplor-expansion-panels/xplor-expansion-panels.scss?tag=xplor-expansion-panels&encapsulation=scoped","src/components/xplor-expansion-panels/xplor-expansion-panels.tsx","src/components/xplor-file-upload/xplor-file-upload.scss?tag=xplor-file-upload&encapsulation=scoped","src/components/xplor-file-upload/xplor-file-upload.tsx","src/components/xplor-inline-checkbox/xplor-inline-checkbox.scss?tag=xplor-inline-checkbox&encapsulation=scoped","src/components/xplor-inline-checkbox/xplor-inline-checkbox.tsx","src/components/xplor-inline-date-picker/xplor-inline-date-picker.scss?tag=xplor-inline-date-picker&encapsulation=scoped","src/components/xplor-inline-date-picker/xplor-inline-date-picker.tsx","src/components/xplor-inline-switch/xplor-inline-switch.scss?tag=xplor-inline-switch&encapsulation=scoped","src/components/xplor-inline-switch/xplor-inline-switch.tsx","src/components/xplor-input-file/xplor-input-file.scss?tag=xplor-input-file&encapsulation=scoped","src/components/xplor-input-file/xplor-input-file.tsx","src/components/xplor-input-search/xplor-input-search.scss?tag=xplor-input-search&encapsulation=scoped","src/components/xplor-input-search/xplor-input-search.tsx","src/components/xplor-input-select/xplor-input-select.scss?tag=xplor-input-select&encapsulation=scoped","src/components/xplor-input-select/xplor-input-select.tsx","src/components/xplor-input-send/xplor-input-send.scss?tag=xplor-input-send&encapsulation=scoped","src/components/xplor-input-send/xplor-input-send.tsx","src/components/xplor-input-text/xplor-input-text.scss?tag=xplor-input-text&encapsulation=scoped","src/components/xplor-input-text/xplor-input-text.tsx","src/components/xplor-input-text-area/xplor-input-text-area.scss?tag=xplor-input-text-area&encapsulation=scoped","src/components/xplor-input-text-area/xplor-input-text-area.tsx","src/components/xplor-input-text-secondary/xplor-input-text-secondary.scss?tag=xplor-input-text-secondary&encapsulation=scoped","src/components/xplor-input-text-secondary/xplor-input-text-secondary.tsx","src/components/xplor-input-title/xplor-input-title.scss?tag=xplor-input-title&encapsulation=scoped","src/components/xplor-input-title/xplor-input-title.tsx","src/components/xplor-links/xplor-links.css?tag=xplor-links&encapsulation=shadow","src/components/xplor-links/xplor-links.tsx","src/components/xplor-modal/xplor-modal.scss?tag=xplor-modal&encapsulation=scoped","src/components/xplor-modal/xplor-modal.tsx","src/components/xplor-modal-persistent/xplor-modal-persistent.tsx","src/components/xplor-nav-tabs/xplor-nav-tabs.scss?tag=xplor-nav-tabs&encapsulation=scoped","src/components/xplor-nav-tabs/xplor-nav-tabs.tsx","src/components/xplor-section-card/xplor-section-card.scss?tag=xplor-section-card&encapsulation=scoped","src/components/xplor-section-card/xplor-section-card.tsx","src/components/xplor-section-heading/xplor-section-heading.scss?tag=xplor-section-heading&encapsulation=scoped","src/components/xplor-section-heading/xplor-section-heading.tsx","src/components/xplor-table/xplor-table.tsx","src/components/xplor-text-bubble/xplor-text-bubble.scss?tag=xplor-text-bubble&encapsulation=scoped","src/components/xplor-text-bubble/xplor-text-bubble.tsx","src/components/xplor-text-field/xplor-text-field.scss?tag=xplor-text-field&encapsulation=scoped","src/components/xplor-text-field/xplor-text-field.tsx","src/components/xplor-time-picker/xplor-time-picker.scss?tag=xplor-time-picker&encapsulation=scoped","src/components/xplor-time-picker/xplor-time-picker.tsx","src/components/xplor-tooltip/xplor-tooltip.scss?tag=xplor-tooltip&encapsulation=scoped","src/components/xplor-tooltip/xplor-tooltip.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n.xplor-alert-dialog {\n &__backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2000;\n padding: 1rem;\n }\n\n &__card {\n position: relative;\n background-color: white;\n border-radius: 0.5rem;\n padding: 3.75rem 1.25rem;\n min-height: 320px;\n max-width: 90vw;\n max-height: 90vh;\n overflow: auto;\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n animation: xplor-dialog-fade-in 0.2s ease-out;\n }\n\n &__close-btn {\n position: absolute;\n top: 1rem;\n right: 1rem;\n width: 2rem;\n height: 2rem;\n border: none;\n background: transparent;\n color: rgba(0, 0, 0, 0.54);\n font-size: 1.5rem;\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n z-index: 1;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:active {\n background-color: rgba(0, 0, 0, 0.08);\n }\n }\n\n &__title {\n padding-top: 0;\n margin-bottom: 1rem;\n font-size: 1.25rem;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.87);\n }\n\n &__text {\n margin-bottom: 1.5rem;\n color: rgba(0, 0, 0, 0.87);\n }\n\n &__actions {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n }\n}\n\n@keyframes xplor-dialog-fade-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, Watch } from '@stencil/core';\n\n@Component({\n tag: 'xplor-alert-dialog',\n styleUrl: 'xplor-alert-dialog.scss',\n scoped: true,\n})\nexport class XplorAlertDialog {\n /**\n * Whether the dialog is open\n */\n @Prop({ mutable: true }) open: boolean = false;\n\n /**\n * Dialog width (can be pixel value or percentage)\n */\n @Prop() width: string = '408px';\n\n /**\n * Persistent mode - prevents closing on backdrop click\n */\n @Prop() persistent: boolean = true;\n\n /**\n * Close event\n */\n @Event() xplorClose: EventEmitter<void>;\n\n /**\n * Dialog state change event\n */\n @Event() xplorDialogChange: EventEmitter<boolean>;\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n }\n\n disconnectedCallback() {\n document.body.style.overflow = '';\n }\n\n private handleBackdropClick = () => {\n if (!this.persistent) {\n this.closeDialog();\n }\n };\n\n private handleCardClick = (event: Event) => {\n event.stopPropagation();\n };\n\n private closeDialog = () => {\n this.open = false;\n this.xplorClose.emit();\n this.xplorDialogChange.emit(false);\n };\n\n render() {\n if (!this.open) {\n return null;\n }\n\n return (\n <Host>\n <div class=\"xplor-alert-dialog__backdrop\" onClick={this.handleBackdropClick}>\n <div\n class=\"xplor-alert-dialog__card\"\n style={{ width: this.width }}\n onClick={this.handleCardClick}\n >\n <button\n type=\"button\"\n class=\"xplor-alert-dialog__close-btn\"\n onClick={this.closeDialog}\n aria-label=\"Close dialog\"\n >\n ✕\n </button>\n\n <div class=\"xplor-alert-dialog__title\">\n <slot name=\"title\" />\n </div>\n\n <div class=\"xplor-alert-dialog__text\">\n <slot name=\"text\" />\n </div>\n\n <div class=\"xplor-alert-dialog__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.alert-message {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n border-radius: 4px;\n border-left: 4px solid;\n gap: 1rem;\n\n &--info {\n background-color: #ede7f6;\n border-left-color: #673ab7;\n color: #4a148c;\n }\n\n &--warning {\n background-color: #fff3e0;\n border-left-color: #ff9800;\n color: #e65100;\n }\n\n &--success {\n background-color: #e8f5e9;\n border-left-color: #4caf50;\n color: #1b5e20;\n }\n\n &--error {\n background-color: #ffebee;\n border-left-color: #f44336;\n color: #b71c1c;\n }\n}\n\n.alert-message__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.alert-message__title {\n font-weight: 600;\n font-size: 1rem;\n line-height: 1.5;\n}\n\n.alert-message__body {\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.alert-message__actions {\n margin-top: 0.5rem;\n\n &:empty {\n display: none;\n }\n}\n\n.alert-message__dismiss {\n background: none;\n border: none;\n font-size: 1.5rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: currentColor;\n opacity: 0.7;\n transition: opacity 0.2s;\n flex-shrink: 0;\n\n &:hover {\n opacity: 1;\n }\n\n &:focus {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n border-radius: 2px;\n }\n}","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-alert-message',\n styleUrl: 'xplor-alert-message.scss',\n scoped: true,\n})\nexport class XplorAlertMessage {\n @Prop() type: 'info' | 'warning' | 'success' | 'error' = 'info';\n @Prop() alertTitle: string;\n @Prop() dismissible: boolean = false;\n\n @Event() xplorDismiss: EventEmitter<void>;\n\n private handleDismiss = () => {\n this.xplorDismiss.emit();\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'alert-message': true,\n [`alert-message--${this.type}`]: true,\n }}\n role=\"alert\"\n >\n <div class=\"alert-message__content\">\n {this.alertTitle && (\n <div class=\"alert-message__title\">\n <slot name=\"title\">{this.alertTitle}</slot>\n </div>\n )}\n <div class=\"alert-message__body\">\n <slot />\n </div>\n <div class=\"alert-message__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n {this.dismissible && (\n <button\n class=\"alert-message__dismiss\"\n onClick={this.handleDismiss}\n aria-label=\"Dismiss alert\"\n type=\"button\"\n >\n ×\n </button>\n )}\n </div>\n </Host>\n );\n }\n}\n","/**\n * API integration utilities for the xplor-assistant component\n */\n\nimport { AssistantAPIRequest, AssistantAPIResponse } from '../internal/types';\n\n/**\n * Generates a unique session ID\n * Format: session_${timestamp}_${random}\n */\nexport function generateSessionId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).substring(2, 11);\n return `session_${timestamp}_${random}`;\n}\n\n/**\n * Formats the current date as YYYY-MM-DD\n */\nexport function getCurrentDate(): string {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const day = String(now.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\n/**\n * Formats the current time as HH:MM:SS\n */\nexport function getCurrentTime(): string {\n const now = new Date();\n const hours = String(now.getHours()).padStart(2, '0');\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n return `${hours}:${minutes}:${seconds}`;\n}\n\n/**\n * Sends a message to the assistant API\n *\n * @param endpoint - The API endpoint URL\n * @param message - The user's message\n * @param sessionId - The current session ID\n * @param userId - The user's ID\n * @param userEmail - The user's email\n * @param userName - The user's name\n * @returns Promise with the API response\n * @throws Error if the API call fails\n */\nexport async function sendMessageToAPI(\n endpoint: string,\n message: string,\n sessionId: string,\n userId: string,\n userEmail: string,\n userName: string\n): Promise<AssistantAPIResponse> {\n if (!endpoint) {\n throw new Error('API endpoint is required');\n }\n\n if (!message || !message.trim()) {\n throw new Error('Message cannot be empty');\n }\n\n const payload: AssistantAPIRequest = {\n message: message.trim(),\n sessionId,\n userId,\n userEmail,\n userName,\n currentDate: getCurrentDate(),\n currentTime: getCurrentTime(),\n };\n\n try {\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => response.statusText);\n throw new Error(`API error: ${response.status} - ${errorText}`);\n }\n\n const data: AssistantAPIResponse = await response.json();\n\n // Validate response structure\n if (!data.message || !data.sessionId) {\n throw new Error('Invalid API response: missing required fields');\n }\n\n return data;\n } catch (error) {\n if (error instanceof Error) {\n // Re-throw with more context if it's a fetch error\n if (error.name === 'TypeError' && error.message.includes('fetch')) {\n throw new Error('Network error: Unable to reach the API. Please check your connection.');\n }\n throw error;\n }\n throw new Error('Unknown error occurred while calling the API');\n }\n}\n\n/**\n * Creates an AbortController for cancelling requests\n * Useful for cleanup when component unmounts\n */\nexport function createRequestController(): AbortController {\n return new AbortController();\n}\n\n/**\n * Sends a message to the API with abort support\n *\n * @param endpoint - The API endpoint URL\n * @param message - The user's message\n * @param sessionId - The current session ID\n * @param userId - The user's ID\n * @param userEmail - The user's email\n * @param userName - The user's name\n * @param signal - AbortSignal for cancelling the request\n * @returns Promise with the API response\n */\nexport async function sendMessageWithAbort(\n endpoint: string,\n message: string,\n sessionId: string,\n userId: string,\n userEmail: string,\n userName: string,\n signal?: AbortSignal\n): Promise<AssistantAPIResponse> {\n const payload: AssistantAPIRequest = {\n message: message.trim(),\n sessionId,\n userId,\n userEmail,\n userName,\n currentDate: getCurrentDate(),\n currentTime: getCurrentTime(),\n };\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => response.statusText);\n throw new Error(`API error: ${response.status} - ${errorText}`);\n }\n\n const data: AssistantAPIResponse = await response.json();\n\n if (!data.message || !data.sessionId) {\n throw new Error('Invalid API response: missing required fields');\n }\n\n return data;\n}\n","/**\n * Web Speech API helpers for the xplor-assistant component\n * Handles both Speech Recognition (voice input) and Speech Synthesis (text-to-speech)\n */\n\nimport { BrowserCapabilities } from '../internal/types';\n\n/**\n * Detects browser capabilities for speech features\n */\nexport function detectBrowserCapabilities(): BrowserCapabilities {\n if (typeof window === 'undefined') {\n return {\n voiceInput: false,\n textToSpeech: false,\n };\n }\n\n const hasVoiceInput =\n 'SpeechRecognition' in window ||\n 'webkitSpeechRecognition' in window;\n\n const hasTTS = 'speechSynthesis' in window;\n\n return {\n voiceInput: hasVoiceInput,\n textToSpeech: hasTTS,\n };\n}\n\n/**\n * Speech Recognition Manager\n * Handles voice-to-text functionality\n */\nexport class SpeechRecognitionManager {\n private recognition: any = null;\n private onResultCallback: ((transcript: string) => void) | null = null;\n private onErrorCallback: ((error: string) => void) | null = null;\n private onStartCallback: (() => void) | null = null;\n private onEndCallback: (() => void) | null = null;\n\n constructor() {\n if (typeof window === 'undefined') return;\n\n const SpeechRecognition =\n (window as any).SpeechRecognition ||\n (window as any).webkitSpeechRecognition;\n\n if (SpeechRecognition) {\n this.recognition = new SpeechRecognition();\n this.recognition.continuous = false;\n this.recognition.interimResults = false;\n this.recognition.lang = 'en-US';\n this.recognition.maxAlternatives = 1;\n\n this.recognition.onstart = () => {\n if (this.onStartCallback) {\n this.onStartCallback();\n }\n };\n\n this.recognition.onresult = (event: any) => {\n const transcript = event.results[0][0].transcript;\n if (this.onResultCallback) {\n this.onResultCallback(transcript);\n }\n };\n\n this.recognition.onerror = (event: any) => {\n const errorMessage = this.getErrorMessage(event.error);\n if (this.onErrorCallback) {\n this.onErrorCallback(errorMessage);\n }\n };\n\n this.recognition.onend = () => {\n if (this.onEndCallback) {\n this.onEndCallback();\n }\n };\n }\n }\n\n /**\n * Converts speech recognition error codes to user-friendly messages\n */\n private getErrorMessage(error: string): string {\n switch (error) {\n case 'no-speech':\n return 'No speech detected. Please try again.';\n case 'audio-capture':\n return 'No microphone found. Please ensure a microphone is connected.';\n case 'not-allowed':\n return 'Microphone permission denied. Please allow microphone access.';\n case 'network':\n return 'Network error. Please check your connection.';\n default:\n return `Speech recognition error: ${error}`;\n }\n }\n\n /**\n * Starts listening for voice input\n */\n start(): void {\n if (!this.recognition) {\n console.error('Speech recognition not supported');\n return;\n }\n\n try {\n this.recognition.start();\n } catch (error) {\n console.error('Failed to start speech recognition:', error);\n if (this.onErrorCallback) {\n this.onErrorCallback('Failed to start voice recognition');\n }\n }\n }\n\n /**\n * Stops listening for voice input\n */\n stop(): void {\n if (this.recognition) {\n this.recognition.stop();\n }\n }\n\n /**\n * Sets the callback for when a result is received\n */\n onResult(callback: (transcript: string) => void): void {\n this.onResultCallback = callback;\n }\n\n /**\n * Sets the callback for when an error occurs\n */\n onError(callback: (error: string) => void): void {\n this.onErrorCallback = callback;\n }\n\n /**\n * Sets the callback for when recognition starts\n */\n onStart(callback: () => void): void {\n this.onStartCallback = callback;\n }\n\n /**\n * Sets the callback for when recognition ends\n */\n onEnd(callback: () => void): void {\n this.onEndCallback = callback;\n }\n\n /**\n * Checks if speech recognition is available\n */\n isAvailable(): boolean {\n return this.recognition !== null;\n }\n}\n\n/**\n * Speech Synthesis Manager\n * Handles text-to-speech functionality\n */\nexport class SpeechSynthesisManager {\n private currentUtterance: SpeechSynthesisUtterance | null = null;\n private onStartCallback: (() => void) | null = null;\n private onEndCallback: (() => void) | null = null;\n\n /**\n * Speaks the given text\n */\n speak(text: string): void {\n if (typeof window === 'undefined' || !('speechSynthesis' in window)) {\n console.error('Speech synthesis not supported');\n return;\n }\n\n // Stop any ongoing speech first\n this.stop();\n\n this.currentUtterance = new SpeechSynthesisUtterance(text);\n this.currentUtterance.lang = 'en-US';\n this.currentUtterance.rate = 1.0;\n this.currentUtterance.pitch = 1.0;\n this.currentUtterance.volume = 1.0;\n\n this.currentUtterance.onstart = () => {\n if (this.onStartCallback) {\n this.onStartCallback();\n }\n };\n\n this.currentUtterance.onend = () => {\n if (this.onEndCallback) {\n this.onEndCallback();\n }\n this.currentUtterance = null;\n };\n\n this.currentUtterance.onerror = (event) => {\n console.error('Speech synthesis error:', event);\n if (this.onEndCallback) {\n this.onEndCallback();\n }\n this.currentUtterance = null;\n };\n\n window.speechSynthesis.speak(this.currentUtterance);\n }\n\n /**\n * Stops any ongoing speech\n */\n stop(): void {\n if (typeof window === 'undefined' || !('speechSynthesis' in window)) {\n return;\n }\n\n if (window.speechSynthesis.speaking) {\n window.speechSynthesis.cancel();\n if (this.onEndCallback) {\n this.onEndCallback();\n }\n }\n this.currentUtterance = null;\n }\n\n /**\n * Checks if currently speaking\n */\n isSpeaking(): boolean {\n if (typeof window === 'undefined' || !('speechSynthesis' in window)) {\n return false;\n }\n return window.speechSynthesis.speaking;\n }\n\n /**\n * Sets the callback for when speech starts\n */\n onStart(callback: () => void): void {\n this.onStartCallback = callback;\n }\n\n /**\n * Sets the callback for when speech ends\n */\n onEnd(callback: () => void): void {\n this.onEndCallback = callback;\n }\n\n /**\n * Checks if speech synthesis is available\n */\n isAvailable(): boolean {\n return typeof window !== 'undefined' && 'speechSynthesis' in window;\n }\n}\n","/**\n * SVG icon definitions for the xplor-assistant component\n * Following the pattern used in xplor-button component\n */\n\n/**\n * Microphone icon for voice input button\n */\nexport const microphoneIcon = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\n <line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>\n</svg>\n`;\n\n/**\n * Send arrow icon for send message button\n */\nexport const sendIcon = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line>\n <polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\n</svg>\n`;\n\n/**\n * Speaker icon for text-to-speech button\n */\nexport const speakerIcon = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon>\n <path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path>\n <path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path>\n</svg>\n`;\n\n/**\n * Stop square icon for stopping speech\n */\nexport const stopIcon = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"none\">\n <rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"></rect>\n</svg>\n`;\n\n/**\n * Muted speaker icon for when TTS is disabled\n */\nexport const speakerMutedIcon = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon>\n <line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line>\n <line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line>\n</svg>\n`;\n","/**\n * AssistantMessage - Internal component\n * Renders a single message bubble with optional text-to-speech functionality\n */\n\nimport { h } from '@stencil/core';\nimport { AssistantMessageProps } from './types';\nimport { speakerIcon, stopIcon } from '../utils/icons';\n\nexport const AssistantMessage = (props: AssistantMessageProps) => {\n const { message, enableTextToSpeech, isSpeaking, onSpeak, onStopSpeaking } = props;\n\n const messageClasses = {\n 'xplor-assistant__message': true,\n 'xplor-assistant__message--user': message.role === 'user',\n 'xplor-assistant__message--assistant': message.role === 'assistant',\n };\n\n const handleSpeakClick = () => {\n if (isSpeaking) {\n onStopSpeaking?.();\n } else {\n onSpeak?.(message.content);\n }\n };\n\n const formatTime = (timestamp: Date) => {\n const hours = timestamp.getHours();\n const minutes = timestamp.getMinutes();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n const displayHours = hours % 12 || 12;\n const displayMinutes = minutes < 10 ? `0${minutes}` : minutes;\n return `${displayHours}:${displayMinutes} ${ampm}`;\n };\n\n return (\n <div class={messageClasses}>\n <div class=\"xplor-assistant__message-content\">\n {message.content}\n </div>\n <div class=\"xplor-assistant__message-footer\">\n <span class=\"xplor-assistant__message-timestamp\">\n {formatTime(message.timestamp)}\n </span>\n {message.role === 'assistant' && enableTextToSpeech && (\n <button\n class={{\n 'xplor-assistant__speak-button': true,\n 'xplor-assistant__speak-button--active': isSpeaking,\n }}\n onClick={handleSpeakClick}\n title={isSpeaking ? 'Stop speaking' : 'Listen to message'}\n type=\"button\"\n >\n <span\n class=\"xplor-assistant__speak-icon\"\n innerHTML={isSpeaking ? stopIcon : speakerIcon}\n ></span>\n </button>\n )}\n </div>\n </div>\n );\n};\n","/**\n * AssistantInput - Internal component\n * Renders the input field with voice and send buttons\n */\n\nimport { h } from '@stencil/core';\nimport { microphoneIcon, sendIcon } from '../utils/icons';\n\nexport interface AssistantInputInternalProps {\n placeholder: string;\n disabled: boolean;\n isLoading: boolean;\n enableVoiceInput: boolean;\n isListening: boolean;\n inputValue: string;\n onSendMessage: (message: string) => void;\n onStartListening: () => void;\n onStopListening: () => void;\n setInputValue: (value: string) => void;\n}\n\nexport const AssistantInput = (props: AssistantInputInternalProps) => {\n const {\n placeholder,\n disabled,\n isLoading,\n enableVoiceInput,\n isListening,\n inputValue,\n onSendMessage,\n onStartListening,\n onStopListening,\n setInputValue,\n } = props;\n\n const handleSubmit = (e: Event) => {\n e.preventDefault();\n console.log('[AssistantInput] Submit triggered, inputValue:', inputValue);\n if (inputValue.trim() && !disabled && !isLoading) {\n console.log('[AssistantInput] Calling onSendMessage with:', inputValue);\n onSendMessage(inputValue);\n setInputValue('');\n } else {\n console.log('[AssistantInput] Submit blocked - disabled:', disabled, 'isLoading:', isLoading, 'hasValue:', !!inputValue.trim());\n }\n };\n\n const handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement;\n setInputValue(target.value);\n };\n\n const handleVoiceClick = () => {\n if (isListening) {\n onStopListening();\n } else {\n onStartListening();\n }\n };\n\n const isSendDisabled = !inputValue.trim() || disabled || isLoading;\n\n return (\n <div class=\"xplor-assistant__input-container\">\n <form onSubmit={handleSubmit} class=\"xplor-assistant__input-form\">\n {enableVoiceInput && (\n <button\n type=\"button\"\n class={{\n 'xplor-assistant__voice-button': true,\n 'xplor-assistant__voice-button--listening': isListening,\n }}\n onClick={handleVoiceClick}\n disabled={disabled || isLoading}\n title={isListening ? 'Stop listening' : 'Start voice input'}\n >\n <span class=\"xplor-assistant__voice-icon\" innerHTML={microphoneIcon}></span>\n </button>\n )}\n\n <input\n type=\"text\"\n class=\"xplor-assistant__input\"\n placeholder={placeholder}\n value={inputValue}\n onInput={handleInputChange}\n disabled={disabled || isLoading}\n />\n\n <button\n type=\"submit\"\n class=\"xplor-assistant__send-button\"\n disabled={isSendDisabled}\n title=\"Send message\"\n >\n <span class=\"xplor-assistant__send-icon\" innerHTML={sendIcon}></span>\n </button>\n </form>\n </div>\n );\n};\n","/**\n * QuickReplies - Internal component\n * Renders quick reply suggestion buttons\n */\n\nimport { h } from '@stencil/core';\nimport { QuickRepliesProps } from './types';\n\nexport const QuickReplies = (props: QuickRepliesProps) => {\n const { replies, disabled, onReplyClick } = props;\n\n if (!replies || replies.length === 0) {\n return null;\n }\n\n return (\n <div class=\"xplor-assistant__quick-replies\">\n {replies.map((reply) => (\n <button\n class=\"xplor-assistant__quick-reply\"\n onClick={() => onReplyClick(reply)}\n disabled={disabled}\n type=\"button\"\n >\n {reply}\n </button>\n ))}\n </div>\n );\n};\n","/**\n * TypingIndicator - Internal component\n * Displays animated dots to indicate the assistant is processing/typing\n */\n\nimport { h } from '@stencil/core';\n\nexport const TypingIndicator = () => {\n return (\n <div class=\"xplor-assistant__typing-indicator\">\n <span class=\"xplor-assistant__typing-dot\"></span>\n <span class=\"xplor-assistant__typing-dot\"></span>\n <span class=\"xplor-assistant__typing-dot\"></span>\n </div>\n );\n};\n","@use '../../styles/colours.scss' as colours;\n@use '../../styles/spacing.scss' as spacing;\n@use '../../styles/mixins.scss' as mixins;\n\n:host {\n display: block;\n\n // CSS custom properties for theming\n --assistant-bot-bg: #{colours.$secondary}; // Purple for bot messages\n --assistant-user-bg: #{colours.$gray-200}; // Light gray for user messages\n --assistant-accent: #{colours.$warning}; // Orange accents\n --assistant-border: #{colours.$gray-300};\n --assistant-text: #{colours.$gray-900};\n --assistant-text-light: #{colours.$gray-600};\n}\n\n.xplor-assistant {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: colours.$white;\n border-radius: 0.75rem;\n border: 1px solid var(--assistant-border);\n overflow: hidden;\n\n &--disabled {\n opacity: 0.6;\n pointer-events: none;\n }\n\n &--error {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: spacing.$spacing-24;\n }\n}\n\n// Messages Area\n.xplor-assistant__messages {\n flex: 1;\n overflow-y: auto;\n padding: spacing.$spacing-16;\n display: flex;\n flex-direction: column;\n gap: spacing.$spacing-12;\n scroll-behavior: smooth;\n\n // Scrollbar styling\n &::-webkit-scrollbar {\n width: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: colours.$gray-100;\n border-radius: 3px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: colours.$gray-400;\n border-radius: 3px;\n\n &:hover {\n background: colours.$gray-500;\n }\n }\n}\n\n// Individual Message\n.xplor-assistant__message {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n animation: slideIn 0.3s ease-out;\n\n &--bot {\n align-self: flex-start;\n\n .xplor-assistant__message-content {\n background-color: var(--assistant-bot-bg);\n color: colours.$white;\n border-radius: 1rem 1rem 1rem 0.25rem;\n }\n }\n\n &--user {\n align-self: flex-end;\n\n .xplor-assistant__message-content {\n background-color: var(--assistant-user-bg);\n color: var(--assistant-text);\n border-radius: 1rem 1rem 0.25rem 1rem;\n }\n }\n}\n\n.xplor-assistant__message-content {\n padding: spacing.$spacing-12 spacing.$spacing-16;\n font-size: 0.9375rem;\n line-height: 1.5;\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.xplor-assistant__message-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: spacing.$spacing-4;\n padding: 0 spacing.$spacing-8;\n}\n\n.xplor-assistant__message-timestamp {\n font-size: 0.75rem;\n color: var(--assistant-text-light);\n}\n\n.xplor-assistant__speak-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: spacing.$spacing-4;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: colours.$gray-200;\n }\n\n &--active {\n background-color: colours.$gray-300;\n }\n}\n\n.xplor-assistant__speak-icon {\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 16px;\n height: 16px;\n stroke: var(--assistant-text-light);\n }\n}\n\n// Typing Indicator\n.xplor-assistant__typing-indicator {\n display: flex;\n gap: spacing.$spacing-4;\n padding: spacing.$spacing-12 spacing.$spacing-16;\n}\n\n.xplor-assistant__typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: colours.$gray-400;\n animation: typingBounce 1.4s infinite ease-in-out;\n\n &:nth-child(1) {\n animation-delay: 0s;\n }\n\n &:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n &:nth-child(3) {\n animation-delay: 0.4s;\n }\n}\n\n// Error Banner\n.xplor-assistant__error-banner {\n background-color: colours.$error-50;\n color: colours.$error-700;\n padding: spacing.$spacing-12 spacing.$spacing-16;\n border-radius: 0.5rem;\n font-size: 0.875rem;\n margin: spacing.$spacing-8 0;\n}\n\n.xplor-assistant__error-message {\n color: colours.$error-700;\n font-size: 0.9375rem;\n text-align: center;\n}\n\n// Quick Replies\n.xplor-assistant__quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: spacing.$spacing-8;\n padding: spacing.$spacing-12 spacing.$spacing-16;\n border-top: 1px solid var(--assistant-border);\n background-color: colours.$gray-50;\n}\n\n.xplor-assistant__quick-reply {\n padding: spacing.$spacing-8 spacing.$spacing-16;\n background-color: colours.$white;\n border: 2px solid var(--assistant-accent);\n color: var(--assistant-accent);\n border-radius: 1rem;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n\n &:hover:not(:disabled) {\n background-color: var(--assistant-accent);\n color: colours.$white;\n transform: translateY(-1px);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n// Input Container\n.xplor-assistant__input-container {\n border-top: 1px solid var(--assistant-border);\n padding: spacing.$spacing-12;\n background-color: colours.$white;\n}\n\n.xplor-assistant__input-form {\n display: flex;\n gap: spacing.$spacing-8;\n align-items: center;\n}\n\n.xplor-assistant__input {\n flex: 1;\n padding: spacing.$spacing-12 spacing.$spacing-16;\n border: 1px solid var(--assistant-border);\n border-radius: 1.5rem;\n font-size: 0.9375rem;\n outline: none;\n transition: border-color 0.2s;\n\n &:focus {\n border-color: var(--assistant-bot-bg);\n }\n\n &:disabled {\n background-color: colours.$gray-100;\n cursor: not-allowed;\n }\n\n &::placeholder {\n color: colours.$gray-500;\n }\n}\n\n.xplor-assistant__voice-button {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: colours.$gray-200;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n flex-shrink: 0;\n\n &:hover:not(:disabled) {\n background-color: colours.$gray-300;\n transform: scale(1.05);\n }\n\n &--listening {\n background-color: colours.$error;\n animation: pulse 1.5s ease-in-out infinite;\n\n .xplor-assistant__voice-icon svg {\n stroke: colours.$white;\n }\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.xplor-assistant__voice-icon {\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 20px;\n height: 20px;\n stroke: var(--assistant-text);\n }\n}\n\n.xplor-assistant__send-button {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: none;\n background-color: var(--assistant-bot-bg);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n flex-shrink: 0;\n\n &:hover:not(:disabled) {\n background-color: colours.$secondary-700;\n transform: scale(1.05);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.xplor-assistant__send-icon {\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 20px;\n height: 20px;\n stroke: colours.$white;\n }\n}\n\n// Animations\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes typingBounce {\n 0%, 60%, 100% {\n transform: translateY(0);\n }\n 30% {\n transform: translateY(-8px);\n }\n}\n\n@keyframes pulse {\n 0%, 100% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.05);\n opacity: 0.9;\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Method, Element, Watch } from '@stencil/core';\nimport {\n AssistantMessage as MessageType,\n AssistantMessageSentEvent,\n AssistantMessageReceivedEvent,\n AssistantErrorEvent,\n AssistantSessionEvent,\n} from './internal/types';\nimport { sendMessageToAPI, generateSessionId } from './utils/api';\nimport { SpeechRecognitionManager, SpeechSynthesisManager, detectBrowserCapabilities } from './utils/speech';\nimport { AssistantMessage } from './internal/AssistantMessage';\nimport { AssistantInput } from './internal/AssistantInput';\nimport { QuickReplies } from './internal/QuickReplies';\nimport { TypingIndicator } from './internal/TypingIndicator';\n\n@Component({\n tag: 'xplor-assistant',\n styleUrl: 'xplor-assistant.scss',\n scoped: true,\n})\nexport class XplorAssistant {\n @Element() el: HTMLElement;\n\n // Required Props\n @Prop() apiEndpoint!: string;\n @Prop() userId!: string;\n @Prop() userEmail!: string;\n @Prop() userName!: string;\n\n // Optional Props\n @Prop() sessionId?: string;\n @Prop() quickReplies?: string[];\n @Prop() placeholder: string = 'Type your message...';\n @Prop() enableVoiceInput: boolean = true;\n @Prop() enableTextToSpeech: boolean = true;\n @Prop() autoSpeak: boolean = false;\n @Prop() maxHeight: string = '600px';\n @Prop() disabled: boolean = false;\n\n // State\n @State() messages: MessageType[] = [];\n @State() internalSessionId: string = '';\n @State() isLoading: boolean = false;\n @State() isListening: boolean = false;\n @State() isSpeaking: boolean = false;\n @State() error: string = '';\n @State() inputValue: string = '';\n @State() hasVoiceSupport: boolean = false;\n @State() hasTTSSupport: boolean = false;\n\n // Events\n @Event() assistantMessageSent: EventEmitter<AssistantMessageSentEvent>;\n @Event() assistantMessageReceived: EventEmitter<AssistantMessageReceivedEvent>;\n @Event() assistantError: EventEmitter<AssistantErrorEvent>;\n @Event() assistantSessionCreated: EventEmitter<AssistantSessionEvent>;\n\n // Private members\n private speechRecognition: SpeechRecognitionManager;\n private speechSynthesis: SpeechSynthesisManager;\n private messagesContainerRef: HTMLDivElement;\n\n componentWillLoad() {\n // Validate required props\n if (!this.apiEndpoint) {\n console.error('xplor-assistant: apiEndpoint prop is required');\n this.error = 'Configuration error: API endpoint not provided';\n return;\n }\n\n if (!this.userId || !this.userEmail || !this.userName) {\n console.error('xplor-assistant: userId, userEmail, and userName props are required');\n this.error = 'Configuration error: User information not provided';\n return;\n }\n\n // Initialize session\n if (this.sessionId) {\n this.internalSessionId = this.sessionId;\n } else {\n this.internalSessionId = generateSessionId();\n this.assistantSessionCreated.emit({\n sessionId: this.internalSessionId,\n timestamp: new Date(),\n });\n }\n\n // Detect browser capabilities\n const capabilities = detectBrowserCapabilities();\n this.hasVoiceSupport = capabilities.voiceInput;\n this.hasTTSSupport = capabilities.textToSpeech;\n\n // Disable features if not supported\n if (!this.hasVoiceSupport) {\n this.enableVoiceInput = false;\n }\n if (!this.hasTTSSupport) {\n this.enableTextToSpeech = false;\n }\n\n // Initialize speech managers\n this.speechRecognition = new SpeechRecognitionManager();\n this.speechSynthesis = new SpeechSynthesisManager();\n\n // Setup speech recognition callbacks\n this.speechRecognition.onStart(() => {\n this.isListening = true;\n });\n\n this.speechRecognition.onEnd(() => {\n this.isListening = false;\n });\n\n this.speechRecognition.onResult((transcript) => {\n this.handleVoiceInput(transcript);\n });\n\n this.speechRecognition.onError((error) => {\n this.isListening = false;\n this.handleError(error, 'voice');\n });\n\n // Setup speech synthesis callbacks\n this.speechSynthesis.onStart(() => {\n this.isSpeaking = true;\n });\n\n this.speechSynthesis.onEnd(() => {\n this.isSpeaking = false;\n });\n }\n\n @Watch('sessionId')\n handleSessionIdChange(newSessionId: string) {\n if (newSessionId && newSessionId !== this.internalSessionId) {\n this.internalSessionId = newSessionId;\n }\n }\n\n componentDidUpdate() {\n // Auto-scroll to bottom when new messages arrive\n this.scrollToBottom();\n }\n\n disconnectedCallback() {\n // Cleanup speech synthesis\n if (this.speechSynthesis) {\n this.speechSynthesis.stop();\n }\n }\n\n // Public Methods\n\n @Method()\n async sendMessage(message: string): Promise<void> {\n if (!message || !message.trim()) {\n return;\n }\n await this.handleSendMessage(message);\n }\n\n @Method()\n async clearHistory(): Promise<void> {\n this.messages = [];\n this.error = '';\n }\n\n @Method()\n async speak(text: string): Promise<void> {\n if (this.enableTextToSpeech && this.speechSynthesis) {\n this.speechSynthesis.speak(text);\n }\n }\n\n @Method()\n async stopSpeaking(): Promise<void> {\n if (this.speechSynthesis) {\n this.speechSynthesis.stop();\n }\n }\n\n // Private Methods\n\n private scrollToBottom() {\n if (this.messagesContainerRef) {\n setTimeout(() => {\n this.messagesContainerRef.scrollTop = this.messagesContainerRef.scrollHeight;\n }, 100);\n }\n }\n\n private handleSendMessage = async (messageText: string) => {\n console.log('[XplorAssistant] handleSendMessage called with:', messageText);\n\n if (this.disabled || this.isLoading || !messageText.trim()) {\n console.log('[XplorAssistant] Message blocked - disabled:', this.disabled, 'isLoading:', this.isLoading, 'hasValue:', !!messageText.trim());\n return;\n }\n\n // Clear the input immediately\n this.inputValue = '';\n console.log('[XplorAssistant] Input cleared, proceeding with message');\n\n const userMessage: MessageType = {\n id: `user-${Date.now()}`,\n role: 'user',\n content: messageText.trim(),\n timestamp: new Date(),\n };\n\n // Add user message to the conversation\n this.messages = [...this.messages, userMessage];\n this.error = '';\n this.isLoading = true;\n\n // Emit message sent event\n this.assistantMessageSent.emit({\n message: userMessage.content,\n sessionId: this.internalSessionId,\n timestamp: userMessage.timestamp,\n });\n\n try {\n // Call the API\n const response = await sendMessageToAPI(\n this.apiEndpoint,\n userMessage.content,\n this.internalSessionId,\n this.userId,\n this.userEmail,\n this.userName\n );\n\n // Update session ID if changed\n if (response.sessionId && response.sessionId !== this.internalSessionId) {\n this.internalSessionId = response.sessionId;\n }\n\n // Add assistant response to conversation\n const assistantMessage: MessageType = {\n id: `assistant-${Date.now()}`,\n role: 'assistant',\n content: response.message,\n timestamp: new Date(),\n };\n\n this.messages = [...this.messages, assistantMessage];\n\n // Emit message received event\n this.assistantMessageReceived.emit({\n message: assistantMessage.content,\n sessionId: this.internalSessionId,\n timestamp: assistantMessage.timestamp,\n });\n\n // Auto-speak if enabled\n if (this.autoSpeak && this.enableTextToSpeech) {\n this.speechSynthesis.speak(assistantMessage.content);\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to send message';\n this.handleError(errorMessage, 'api');\n } finally {\n this.isLoading = false;\n }\n };\n\n private handleVoiceInput = (transcript: string) => {\n if (transcript && transcript.trim()) {\n this.handleSendMessage(transcript);\n }\n };\n\n private handleError = (error: string, type: 'api' | 'voice' | 'tts' | 'network' | 'validation') => {\n this.error = error;\n this.assistantError.emit({\n error,\n type,\n timestamp: new Date(),\n });\n };\n\n private handleStartListening = () => {\n if (this.speechRecognition && this.enableVoiceInput && !this.disabled && !this.isLoading) {\n this.speechRecognition.start();\n }\n };\n\n private handleStopListening = () => {\n if (this.speechRecognition) {\n this.speechRecognition.stop();\n }\n };\n\n private handleSpeak = (text: string) => {\n if (this.speechSynthesis && this.enableTextToSpeech) {\n this.speechSynthesis.speak(text);\n }\n };\n\n private handleStopSpeaking = () => {\n if (this.speechSynthesis) {\n this.speechSynthesis.stop();\n }\n };\n\n private handleQuickReply = (reply: string) => {\n this.handleSendMessage(reply);\n };\n\n private setInputValue = (value: string) => {\n this.inputValue = value;\n };\n\n render() {\n // Show error state if critical error\n if (this.error && !this.apiEndpoint) {\n return (\n <Host>\n <div class=\"xplor-assistant xplor-assistant--error\">\n <div class=\"xplor-assistant__error-message\">\n {this.error}\n </div>\n </div>\n </Host>\n );\n }\n\n return (\n <Host>\n <div\n class={{\n 'xplor-assistant': true,\n 'xplor-assistant--disabled': this.disabled,\n }}\n style={{ maxHeight: this.maxHeight }}\n >\n {/* Messages Area */}\n <div\n class=\"xplor-assistant__messages\"\n ref={(el) => (this.messagesContainerRef = el)}\n >\n {this.messages.map((message) => (\n <AssistantMessage\n message={message}\n enableTextToSpeech={this.enableTextToSpeech}\n autoSpeak={false}\n isSpeaking={this.isSpeaking}\n onSpeak={this.handleSpeak}\n onStopSpeaking={this.handleStopSpeaking}\n />\n ))}\n\n {/* Loading Indicator */}\n {this.isLoading && (\n <div class=\"xplor-assistant__message xplor-assistant__message--assistant\">\n <TypingIndicator />\n </div>\n )}\n\n {/* Error Message */}\n {this.error && this.apiEndpoint && (\n <div class=\"xplor-assistant__error-banner\">\n {this.error}\n </div>\n )}\n </div>\n\n {/* Quick Replies */}\n {this.quickReplies && this.quickReplies.length > 0 && (\n <QuickReplies\n replies={this.quickReplies}\n disabled={this.disabled || this.isLoading}\n onReplyClick={this.handleQuickReply}\n />\n )}\n\n {/* Input Area */}\n <AssistantInput\n placeholder={this.placeholder}\n disabled={this.disabled}\n isLoading={this.isLoading}\n enableVoiceInput={this.enableVoiceInput && this.hasVoiceSupport}\n isListening={this.isListening}\n onSendMessage={this.handleSendMessage}\n onStartListening={this.handleStartListening}\n onStopListening={this.handleStopListening}\n inputValue={this.inputValue}\n setInputValue={this.setInputValue}\n />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n width: 100%;\n}\n\n.autocomplete {\n position: relative;\n width: 100%;\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &--readonly {\n .autocomplete__input {\n background-color: #f5f5f5;\n }\n }\n}\n\n.autocomplete__label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #424242;\n margin-bottom: 0.5rem;\n}\n\n.autocomplete__input-wrapper {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n border: 1px solid #bdbdbd;\n border-radius: 4px;\n padding: 0.5rem;\n background-color: #fff;\n transition: border-color 0.2s, box-shadow 0.2s;\n\n &:focus-within {\n border-color: #1976d2;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n }\n}\n\n.autocomplete__chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.autocomplete__chip {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background-color: #e3f2fd;\n border-radius: 16px;\n font-size: 0.875rem;\n color: #1976d2;\n}\n\n.autocomplete__chip-label {\n line-height: 1;\n}\n\n.autocomplete__chip-remove {\n background: none;\n border: none;\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #1976d2;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover:not(:disabled) {\n background-color: rgba(25, 118, 210, 0.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.autocomplete__input {\n flex: 1;\n min-width: 120px;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: 1rem;\n padding: 0.25rem;\n background: transparent;\n color: #212121;\n\n &::placeholder {\n color: #9e9e9e;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &[readonly] {\n cursor: default;\n }\n}\n\n.autocomplete__actions {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n flex-shrink: 0;\n}\n\n.autocomplete__clear {\n background: none;\n border: none;\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n color: #212121;\n }\n}\n\n.autocomplete__icon {\n font-size: 0.75rem;\n color: #757575;\n pointer-events: none;\n transition: transform 0.2s;\n\n .autocomplete--open & {\n transform: rotate(180deg);\n }\n}\n\n.autocomplete__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n max-height: 300px;\n overflow-y: auto;\n background-color: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n}\n\n.autocomplete__item {\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background-color 0.2s;\n color: #212121;\n\n &:hover:not(&--disabled) {\n background-color: #f5f5f5;\n }\n\n &--highlighted {\n background-color: #e3f2fd;\n }\n\n &--selected {\n background-color: #1976d2;\n color: #fff;\n\n &:hover {\n background-color: #1565c0;\n }\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.autocomplete__no-results {\n padding: 1rem;\n text-align: center;\n color: #757575;\n font-size: 0.875rem;\n}","import { Component, Host, h, Prop, State, Event, EventEmitter, Element, Listen } from '@stencil/core';\n\nexport interface AutocompleteItem {\n label: string;\n value: any;\n disabled?: boolean;\n [key: string]: any;\n}\n\n@Component({\n tag: 'xplor-autocomplete',\n styleUrl: 'xplor-autocomplete.scss',\n scoped: true,\n})\nexport class XplorAutocomplete {\n @Element() el: HTMLElement;\n\n /**\n * Array of items to display in the dropdown\n */\n @Prop() items: AutocompleteItem[] = [];\n\n /**\n * Selected value\n */\n @Prop({ mutable: true }) value: any = null;\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string = 'Search...';\n\n /**\n * Label for the input\n */\n @Prop() label: string;\n\n /**\n * Disable the autocomplete\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Make the autocomplete readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Clear button\n */\n @Prop() clearable: boolean = false;\n\n /**\n * Allow multiple selection\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Minimum characters to trigger search\n */\n @Prop() minSearchLength: number = 0;\n\n /**\n * Key to extract value from item objects\n */\n @Prop() itemValue: string = 'value';\n\n /**\n * Key to extract display text from item objects\n */\n @Prop() itemText: string = 'label';\n\n /**\n * Max width of the dropdown menu\n */\n @Prop() menuMaxWidth: string = '100%';\n\n /**\n * Custom render function for dropdown items\n */\n @Prop() renderItem: (item: AutocompleteItem) => any;\n\n /**\n * Custom render function for selected items (chips)\n */\n @Prop() renderSelection: (item: AutocompleteItem) => any;\n\n @State() isOpen: boolean = false;\n @State() searchQuery: string = '';\n @State() filteredItems: AutocompleteItem[] = [];\n @State() selectedItems: any[] = [];\n @State() highlightedIndex: number = -1;\n\n @Event() xplorChange: EventEmitter<any>;\n @Event() xplorSelect: EventEmitter<AutocompleteItem>;\n @Event() xplorClear: EventEmitter<void>;\n @Event() xplorSearch: EventEmitter<string>;\n\n private inputEl: HTMLInputElement;\n private dropdownEl: HTMLDivElement;\n\n private getItemValue(item: AutocompleteItem): any {\n return item[this.itemValue] !== undefined ? item[this.itemValue] : item.value;\n }\n\n private getItemText(item: AutocompleteItem): string {\n return item[this.itemText] !== undefined ? String(item[this.itemText]) : String(item.label);\n }\n\n componentWillLoad() {\n this.filterItems();\n if (this.value !== null) {\n if (this.multiple && Array.isArray(this.value)) {\n this.selectedItems = this.value;\n } else if (!this.multiple) {\n const selectedItem = this.items.find(item => this.getItemValue(item) === this.value);\n if (selectedItem) {\n this.searchQuery = this.getItemText(selectedItem);\n }\n }\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n const target = event.target as Node;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n }\n\n private filterItems() {\n if (this.searchQuery.length < this.minSearchLength) {\n this.filteredItems = this.items;\n return;\n }\n\n const query = this.searchQuery.toLowerCase();\n this.filteredItems = this.items.filter(item =>\n this.getItemText(item).toLowerCase().includes(query)\n );\n }\n\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) return;\n this.isOpen = true;\n this.highlightedIndex = -1;\n };\n\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.searchQuery = input.value;\n this.filterItems();\n this.isOpen = true;\n this.highlightedIndex = -1;\n this.xplorSearch.emit(this.searchQuery);\n\n if (!this.multiple && this.searchQuery === '') {\n this.value = null;\n this.xplorChange.emit(null);\n }\n };\n\n private handleInputKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.isOpen = true;\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredItems.length - 1);\n this.scrollToHighlighted();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, -1);\n this.scrollToHighlighted();\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.highlightedIndex >= 0 && this.highlightedIndex < this.filteredItems.length) {\n this.selectItem(this.filteredItems[this.highlightedIndex]);\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.inputEl?.blur();\n break;\n\n case 'Backspace':\n if (this.multiple && this.searchQuery === '' && this.selectedItems.length > 0) {\n event.preventDefault();\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\n }\n break;\n }\n };\n\n private scrollToHighlighted() {\n if (this.dropdownEl && this.highlightedIndex >= 0) {\n const highlightedEl = this.dropdownEl.querySelector(`[data-index=\"${this.highlightedIndex}\"]`) as HTMLElement;\n if (highlightedEl) {\n highlightedEl.scrollIntoView({ block: 'nearest' });\n }\n }\n }\n\n private selectItem(item: AutocompleteItem) {\n if (item.disabled) return;\n\n const itemVal = this.getItemValue(item);\n\n if (this.multiple) {\n if (!this.selectedItems.includes(itemVal)) {\n this.selectedItems = [...this.selectedItems, itemVal];\n this.value = this.selectedItems;\n this.xplorChange.emit(this.value);\n }\n this.searchQuery = '';\n this.filterItems();\n } else {\n this.value = itemVal;\n this.searchQuery = this.getItemText(item);\n this.isOpen = false;\n this.xplorChange.emit(this.value);\n }\n\n this.xplorSelect.emit(item);\n this.inputEl?.focus();\n }\n\n private removeItem(value: any) {\n this.selectedItems = this.selectedItems.filter(v => v !== value);\n this.value = this.selectedItems;\n this.xplorChange.emit(this.value);\n }\n\n private handleClear = () => {\n this.value = this.multiple ? [] : null;\n this.selectedItems = [];\n this.searchQuery = '';\n this.filterItems();\n this.xplorChange.emit(this.value);\n this.xplorClear.emit();\n this.inputEl?.focus();\n };\n\n private getSelectedItemLabel(value: any): string {\n const item = this.items.find(i => this.getItemValue(i) === value);\n return item ? this.getItemText(item) : value;\n }\n\n private findItemByValue(value: any): AutocompleteItem | undefined {\n return this.items.find(i => this.getItemValue(i) === value);\n }\n\n render() {\n const hasValue = this.multiple ? this.selectedItems.length > 0 : this.value !== null && this.searchQuery !== '';\n\n return (\n <Host>\n <div\n class={{\n 'autocomplete': true,\n 'autocomplete--disabled': this.disabled,\n 'autocomplete--readonly': this.readonly,\n 'autocomplete--open': this.isOpen,\n }}\n >\n {this.label && (\n <label class=\"autocomplete__label\">{this.label}</label>\n )}\n\n <div class=\"autocomplete__input-wrapper\">\n {this.multiple && this.selectedItems.length > 0 && (\n <div class=\"autocomplete__chips\">\n {this.selectedItems.map(value => {\n const item = this.findItemByValue(value);\n return (\n <div class=\"autocomplete__chip\">\n <span class=\"autocomplete__chip-label\">\n {this.renderSelection && item ? this.renderSelection(item) : this.getSelectedItemLabel(value)}\n </span>\n <button\n type=\"button\"\n class=\"autocomplete__chip-remove\"\n onClick={() => this.removeItem(value)}\n disabled={this.disabled || this.readonly}\n >\n ×\n </button>\n </div>\n );\n })}\n </div>\n )}\n\n <input\n ref={(el) => (this.inputEl = el)}\n type=\"text\"\n class=\"autocomplete__input\"\n placeholder={this.placeholder}\n value={this.searchQuery}\n onFocus={this.handleInputFocus}\n onInput={this.handleInputChange}\n onKeyDown={this.handleInputKeyDown}\n disabled={this.disabled}\n readonly={this.readonly}\n autocomplete=\"off\"\n />\n\n <div class=\"autocomplete__actions\">\n {this.clearable && hasValue && !this.disabled && !this.readonly && (\n <button\n type=\"button\"\n class=\"autocomplete__clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n >\n ×\n </button>\n )}\n <span class=\"autocomplete__icon\">▼</span>\n </div>\n </div>\n\n {this.isOpen && this.filteredItems.length > 0 && (\n <div class=\"autocomplete__dropdown\" ref={(el) => (this.dropdownEl = el)} style={{ maxWidth: this.menuMaxWidth }}>\n {this.filteredItems.map((item, index) => {\n const itemVal = this.getItemValue(item);\n return (\n <div\n key={itemVal}\n data-index={index}\n class={{\n 'autocomplete__item': true,\n 'autocomplete__item--highlighted': index === this.highlightedIndex,\n 'autocomplete__item--selected': this.multiple\n ? this.selectedItems.includes(itemVal)\n : this.value === itemVal,\n 'autocomplete__item--disabled': item.disabled,\n }}\n onClick={() => this.selectItem(item)}\n >\n {this.renderItem ? this.renderItem(item) : this.getItemText(item)}\n </div>\n );\n })}\n </div>\n )}\n\n {this.isOpen && this.filteredItems.length === 0 && (\n <div class=\"autocomplete__dropdown\" style={{ maxWidth: this.menuMaxWidth }}>\n <div class=\"autocomplete__no-results\">No results found</div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-avatar',\n styleUrl: 'xplor-avatar.scss',\n shadow: true,\n})\nexport class XplorAvatar {\n /** Background color when there is no image src */\n @Prop() color?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';\n // eslint-disable-next-line @stencil/required-jsdoc\n @Prop() disabled?: boolean = false;\n /** The URL if the avatar should be hyperlinked */\n @Prop() href?: string;\n /** Alt text for the image if there is an image src */\n @Prop() name?: string;\n /** Size of the avatar */\n @Prop() size?: 'md' | 'sm';\n /** The image URL */\n @Prop() src?: string;\n /** Color styles for the dot indicator to indicate varied states */\n @Prop() status?: 'active' | 'warning' | 'inactive';\n /**\n * Where to open the URL chosen for the `href` prop:\n * `_self` (default), `_blank`, `_parent`, or `_top`\n */\n @Prop() target?: string;\n\n render() {\n let className = 'xpl-avatar';\n if (this.size) className += ` xpl-avatar--${this.size}`;\n if (this.color) className += ` xpl-avatar--${this.color}`;\n\n const inner = (\n <div>\n {this.src ? (\n <img alt={this.name} src={this.src} />\n ) : (\n <div class=\"xpl-avatar__placeholder\">\n <slot></slot>\n </div>\n )}\n {this.status && <div class={`xpl-avatar__dot--${this.status}`}></div>}\n </div>\n );\n\n return (\n <Host>\n {this.href && !this.disabled ? (\n <a href={this.href} class={className} target={this.target}>\n {inner}\n </a>\n ) : this.href && this.disabled ? (\n <div class={className + ' xpl-avatar--disabled'}>{inner}</div>\n ) : (\n <div class={className}>{inner}</div>\n )}\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.avatar-and-name {\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n}\n\n.avatar-and-name__text {\n font-size: 0.875rem;\n font-weight: 500;\n color: #212121;\n line-height: 1.5;\n}","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-avatar-and-name',\n styleUrl: 'xplor-avatar-and-name.scss',\n scoped: true,\n})\nexport class XplorAvatarAndName {\n @Prop() name: string;\n @Prop() src: string;\n @Prop() size: 'sm' | 'md' = 'md';\n @Prop() color?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';\n @Prop() status?: 'active' | 'warning' | 'inactive';\n\n render() {\n return (\n <Host>\n <div class=\"avatar-and-name\">\n <xplor-avatar\n name={this.name}\n src={this.src}\n size={this.size}\n color={this.color}\n status={this.status}\n >\n {!this.src && this.name && this.name.charAt(0).toUpperCase()}\n </xplor-avatar>\n <span class=\"avatar-and-name__text\">\n <slot>{this.name}</slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n","@use '../../styles/colours.scss' as colours;\n@use '../../styles/spacing.scss' as spacing;\n@use '../../styles/mixins.scss' as mixins;\n\n:host {\n display: inline-block;\n}\n\n.xplor-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 4px 12px;\n border-radius: 16px;\n background-color: var(--xplor-badge-bg, colours.$primary-50);\n color: var(--xplor-badge-color, colours.$primary);\n transition: all 0.2s ease;\n white-space: nowrap;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n\n // Size variants\n &--small {\n font-size: 0.75rem;\n padding: 2px 8px;\n border-radius: 12px;\n }\n\n &--medium {\n font-size: 0.875rem;\n padding: 4px 12px;\n border-radius: 16px;\n }\n\n &--large {\n font-size: 1rem;\n padding: 6px 16px;\n border-radius: 20px;\n }\n\n // Style variants\n &--flat {\n border: none;\n }\n\n &--outlined {\n background-color: transparent;\n border: 1px solid var(--xplor-badge-bg, colours.$primary);\n color: var(--xplor-badge-bg, colours.$primary);\n }\n\n &--tonal {\n background-color: var(--xplor-badge-bg, colours.$primary-50);\n color: var(--xplor-badge-color, colours.$primary);\n }\n\n // Datatable variant (slightly larger padding)\n &--datatable {\n padding: 8px 12px;\n border-radius: 14px;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge',\n styleUrl: 'xplor-badge.scss',\n scoped: true,\n})\nexport class XplorBadge {\n /**\n * Background color (can be CSS color or theme color name)\n */\n @Prop() backgroundColor: string = '#e3f2fd';\n\n /**\n * Text color - 'auto' will calculate contrasting color\n */\n @Prop() color: string = 'auto';\n\n /**\n * Luminance threshold for auto contrast calculation (0-255)\n */\n @Prop() threshold: number = 130;\n\n /**\n * Visual variant\n */\n @Prop() variant: 'flat' | 'outlined' | 'tonal' = 'flat';\n\n /**\n * Size variant\n */\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to use datatable styling (slightly larger padding)\n */\n @Prop() datatable: boolean = false;\n\n /**\n * Optional text content (can also use slot)\n */\n @Prop() text: string = '';\n\n /**\n * Calculates relative luminance of a color\n * Based on WCAG 2.0 formula\n */\n private calculateLuminance(r: number, g: number, b: number): number {\n const [rs, gs, bs] = [r, g, b].map(c => {\n c = c / 255;\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;\n }\n\n /**\n * Parses hex/rgb/rgba color to RGB values\n */\n private parseColor(color: string): { r: number; g: number; b: number } | null {\n // Handle hex colors\n if (color.startsWith('#')) {\n const hex = color.replace('#', '');\n if (hex.length === 3) {\n const r = parseInt(hex[0] + hex[0], 16);\n const g = parseInt(hex[1] + hex[1], 16);\n const b = parseInt(hex[2] + hex[2], 16);\n return { r, g, b };\n } else if (hex.length === 6) {\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return { r, g, b };\n }\n }\n\n // Handle rgb/rgba\n const rgbMatch = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (rgbMatch) {\n return {\n r: parseInt(rgbMatch[1]),\n g: parseInt(rgbMatch[2]),\n b: parseInt(rgbMatch[3]),\n };\n }\n\n return null;\n }\n\n /**\n * Calculates contrasting color (black or white) based on background\n */\n private calculateContrastingColor(bgColor: string): string {\n const rgb = this.parseColor(bgColor);\n if (!rgb) return '#000000';\n\n const luminance = this.calculateLuminance(rgb.r, rgb.g, rgb.b);\n // Using threshold to determine light vs dark background\n return luminance > 0.5 ? '#000000' : '#ffffff';\n }\n\n /**\n * Gets the computed CSS variables for the badge\n */\n private get cssVars(): { [key: string]: string } {\n const vars: { [key: string]: string } = {};\n\n // Set background color\n vars['--xplor-badge-bg'] = this.backgroundColor;\n\n // Set text color (auto-calculate if needed)\n if (this.color === 'auto') {\n vars['--xplor-badge-color'] = this.calculateContrastingColor(this.backgroundColor);\n } else {\n vars['--xplor-badge-color'] = this.color;\n }\n\n return vars;\n }\n\n /**\n * Gets the computed CSS classes\n */\n private get computedClasses(): { [key: string]: boolean } {\n return {\n 'xplor-badge': true,\n [`xplor-badge--${this.variant}`]: true,\n [`xplor-badge--${this.size}`]: true,\n 'xplor-badge--datatable': this.datatable,\n };\n }\n\n render() {\n return (\n <Host>\n <span class={this.computedClasses} style={this.cssVars}>\n <slot>{this.text}</slot>\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-active {\n background-color: #E6F7F7;\n color: #00605C;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-active',\n styleUrl: 'xplor-badge-active.scss',\n scoped: true,\n})\nexport class XplorBadgeActive {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-active\">\n Active\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-archived {\n background-color: #E8E0F0;\n color: #60479A;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-archived',\n styleUrl: 'xplor-badge-archived.scss',\n scoped: true,\n})\nexport class XplorBadgeArchived {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-archived\">\n Archived\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-deleted {\n background-color: #FFF3E6;\n color: #B35A00;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-deleted',\n styleUrl: 'xplor-badge-deleted.scss',\n scoped: true,\n})\nexport class XplorBadgeDeleted {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-deleted\">\n Deleted\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-expired {\n background-color: #FEE;\n color: #C62828;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-expired',\n styleUrl: 'xplor-badge-expired.scss',\n scoped: true,\n})\nexport class XplorBadgeExpired {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-expired\">\n Expired\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-inactive {\n background-color: #FAFAFA;\n color: #424242;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-inactive',\n styleUrl: 'xplor-badge-inactive.scss',\n scoped: true,\n})\nexport class XplorBadgeInactive {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-inactive\">\n Inactive\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-recalled {\n background-color: #FFF9E6;\n color: #F9A825;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-recalled',\n styleUrl: 'xplor-badge-recalled.scss',\n scoped: true,\n})\nexport class XplorBadgeRecalled {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-recalled\">\n Recalled\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-session-booking {\n border-radius: 0.25rem;\n color: #000;\n width: 200px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n padding: 4px 12px;\n\n &--default {\n background-color: #fef2e0;\n border: solid 2px #f69202;\n }\n\n &--absent {\n background-color: #f0f0f0;\n border: solid 2px #7b7b7b;\n }\n\n &--attend {\n background-color: #dff6f6;\n border: solid 2px #00b2a8;\n }\n\n &--holiday {\n background-color: #f0f0f0;\n border: solid 2px #7b7b7b;\n }\n\n &--waived {\n opacity: 0.5;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\nexport interface Booking {\n type: 'absence' | 'attendance' | 'holiday' | string;\n [key: string]: any;\n}\n\nexport interface BookingItem {\n ccs_gap_fee_is_waived?: boolean;\n [key: string]: any;\n}\n\n@Component({\n tag: 'xplor-badge-session-booking',\n styleUrl: 'xplor-badge-session-booking.scss',\n scoped: true,\n})\nexport class XplorBadgeSessionBooking {\n /**\n * Booking object\n */\n @Prop() booking!: Booking;\n\n /**\n * Item object\n */\n @Prop() item!: BookingItem;\n\n private getBookingTypeClass(): string {\n const classes = ['xplor-badge-session-booking'];\n\n switch (this.booking?.type) {\n case 'absence':\n classes.push('xplor-badge-session-booking--absent');\n break;\n case 'attendance':\n classes.push('xplor-badge-session-booking--attend');\n break;\n case 'holiday':\n classes.push('xplor-badge-session-booking--holiday');\n break;\n default:\n classes.push('xplor-badge-session-booking--default');\n break;\n }\n\n if (this.item?.ccs_gap_fee_is_waived) {\n classes.push('xplor-badge-session-booking--waived');\n }\n\n return classes.join(' ');\n }\n\n render() {\n return (\n <Host>\n <span class={this.getBookingTypeClass()}>\n <slot />\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-upcoming {\n background-color: #E3F2FD;\n color: #1976D2;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-upcoming',\n styleUrl: 'xplor-badge-upcoming.scss',\n scoped: true,\n})\nexport class XplorBadgeUpcoming {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-upcoming\">\n Upcoming\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-badge-waitlist {\n background-color: #FFF3E6;\n color: #B35A00;\n font-weight: 400;\n padding: 4px 12px;\n border-radius: 16px;\n display: inline-block;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'xplor-badge-waitlist',\n styleUrl: 'xplor-badge-waitlist.scss',\n scoped: true,\n})\nexport class XplorBadgeWaitlist {\n render() {\n return (\n <Host>\n <span class=\"xplor-badge-waitlist\">\n Waitlist\n </span>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-back {\n display: inline-flex;\n align-items: center;\n gap: var(--gap, 0.625rem);\n min-width: var(--min-width, 6.375rem);\n min-height: var(--min-height, 3rem);\n padding-left: 0;\n padding-right: 1rem;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n transition: opacity 0.2s ease;\n\n &__icon {\n font-size: 1.5rem;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &__text {\n line-height: 1;\n }\n\n &:hover:not(.xplor-btn-back--disabled) {\n opacity: 0.8;\n }\n\n &--disabled {\n opacity: 0.38;\n cursor: not-allowed;\n pointer-events: none;\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-back',\n styleUrl: 'xplor-btn-back.scss',\n scoped: true,\n})\nexport class XplorBtnBack {\n /**\n * Button color\n */\n @Prop() color: string = 'secondary';\n\n /**\n * Minimum width\n */\n @Prop() minWidth: string = '6.375rem';\n\n /**\n * Minimum height\n */\n @Prop() minHeight: string = '3rem';\n\n /**\n * Gap between icon and text\n */\n @Prop() gap: string = '0.625rem';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Click event\n */\n @Event() xplorClick: EventEmitter<MouseEvent>;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.disabled) {\n this.xplorClick.emit(event);\n }\n };\n\n render() {\n const buttonClasses = {\n 'xplor-btn-back': true,\n 'xplor-btn-back--disabled': this.disabled,\n };\n\n const buttonStyles = {\n '--min-width': this.minWidth,\n '--min-height': this.minHeight,\n '--gap': this.gap,\n };\n\n return (\n <Host>\n <button\n class={buttonClasses}\n style={buttonStyles}\n disabled={this.disabled}\n onClick={this.handleClick}\n >\n <span class=\"xplor-btn-back__icon\">‹</span>\n <span class=\"xplor-btn-back__text\">\n <slot>Back</slot>\n </span>\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-back-to-parent {\n position: absolute;\n right: 1rem;\n top: 1rem;\n font-size: 1rem;\n z-index: 1;\n padding: 0;\n width: var(--btn-size, 2.25rem);\n height: var(--btn-size, 2.25rem);\n border: none;\n border-radius: 4px;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: white;\n color: #008480;\n transition: background-color 0.2s ease;\n\n &__icon {\n font-size: 1rem;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &:hover {\n background-color: #E6F7F7;\n }\n\n &--inline {\n position: relative;\n top: 0;\n right: 0;\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-back-to-parent',\n styleUrl: 'xplor-btn-back-to-parent.scss',\n scoped: true,\n})\nexport class XplorBtnBackToParent {\n /**\n * Button size\n */\n @Prop() size: string = '2.25rem';\n\n /**\n * Whether to use inline (relative) positioning instead of absolute\n */\n @Prop() inline: boolean = false;\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Text/icon color\n */\n @Prop() color: string = 'secondary';\n\n /**\n * Visual variant\n */\n @Prop() variant: 'text' | 'outlined' | 'elevated' | 'tonal' = 'tonal';\n\n /**\n * Back event (emitted on click)\n */\n @Event() back: EventEmitter<void>;\n\n private handleClick = () => {\n this.back.emit();\n };\n\n render() {\n const buttonClasses = {\n 'xplor-btn-back-to-parent': true,\n 'xplor-btn-back-to-parent--inline': this.inline,\n };\n\n const buttonStyles = {\n '--btn-size': this.size,\n };\n\n return (\n <Host>\n <button\n class={buttonClasses}\n style={buttonStyles}\n onClick={this.handleClick}\n >\n <span class=\"xplor-btn-back-to-parent__icon\">✕</span>\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-icon {\n min-width: 0;\n min-height: 0;\n width: var(--btn-size, 32px);\n height: var(--btn-size, 32px);\n padding: 0;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n position: relative;\n\n &__content {\n font-size: var(--icon-size, 18px);\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n // Elevated variant (default)\n &--elevated {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2),\n 0px 2px 2px 0px rgba(0, 0, 0, 0.14),\n 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n }\n\n // Text variant\n &--text {\n box-shadow: none;\n }\n\n // Outlined variant\n &--outlined {\n border: 1px solid currentColor;\n box-shadow: none;\n }\n\n // Tonal variant\n &--tonal {\n box-shadow: none;\n }\n\n // Color variants\n &--primary {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #EC7702;\n color: white;\n }\n\n &.xplor-btn-icon--outlined {\n background-color: transparent;\n color: #EC7702;\n border-color: #EC7702;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #FFF3E6;\n color: #EC7702;\n }\n\n &:hover:not(.xplor-btn-icon--disabled) {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #D66A02;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #FFE7CC;\n }\n }\n }\n\n &--secondary {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #008480;\n color: white;\n }\n\n &.xplor-btn-icon--outlined {\n background-color: transparent;\n color: #008480;\n border-color: #008480;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #E6F7F7;\n color: #008480;\n }\n\n &:hover:not(.xplor-btn-icon--disabled) {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #006D6A;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #008480;\n color: white;\n }\n }\n }\n\n &--success {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #489951;\n color: white;\n }\n\n &.xplor-btn-icon--outlined {\n background-color: transparent;\n color: #489951;\n border-color: #489951;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #E8F5E9;\n color: #489951;\n }\n\n &:hover:not(.xplor-btn-icon--disabled) {\n &.xplor-btn-icon--elevated,\n &.xplor-btn-icon--text {\n background-color: #3D8044;\n }\n\n &.xplor-btn-icon--tonal {\n background-color: #D0EBD2;\n }\n }\n }\n\n &--disabled {\n opacity: 0.38;\n cursor: not-allowed;\n pointer-events: none;\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-icon',\n styleUrl: 'xplor-btn-icon.scss',\n scoped: true,\n})\nexport class XplorBtnIcon {\n /**\n * Button color variant\n */\n @Prop() color: 'primary' | 'secondary' | 'success' | string = 'secondary';\n\n /**\n * Button size (can be pixel value like '32' or '48')\n */\n @Prop() size: string | number = '32';\n\n /**\n * Icon size\n */\n @Prop() iconSize: string | number = '18';\n\n /**\n * Visual variant\n */\n @Prop() variant: 'text' | 'outlined' | 'elevated' | 'tonal' = 'elevated';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Click event\n */\n @Event() xplorClick: EventEmitter<MouseEvent>;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.disabled) {\n this.xplorClick.emit(event);\n }\n };\n\n render() {\n const buttonClasses = {\n 'xplor-btn-icon': true,\n [`xplor-btn-icon--${this.color}`]: true,\n [`xplor-btn-icon--${this.variant}`]: true,\n 'xplor-btn-icon--disabled': this.disabled,\n };\n\n const buttonStyles = {\n '--btn-size': typeof this.size === 'number' ? `${this.size}px` : this.size,\n '--icon-size': typeof this.iconSize === 'number' ? `${this.iconSize}px` : this.iconSize,\n };\n\n return (\n <Host>\n <button\n class={buttonClasses}\n style={buttonStyles}\n disabled={this.disabled}\n onClick={this.handleClick}\n >\n <span class=\"xplor-btn-icon__content\">\n <slot />\n </span>\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n position: relative;\n}\n\n.xplor-btn-menu {\n position: relative;\n display: inline-block;\n\n &__button {\n display: inline-flex;\n align-items: center;\n gap: 0.625rem;\n padding: 0.5rem 1rem;\n border: 1px solid #008480;\n border-radius: 4px;\n background-color: transparent;\n color: #008480;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: rgba(0, 132, 128, 0.04);\n }\n }\n\n &__icon {\n font-size: 0.75rem;\n line-height: 1;\n }\n\n &__list {\n position: absolute;\n top: calc(100% + 0.25rem);\n left: 0;\n min-width: 200px;\n background: white;\n border-radius: 4px;\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),\n 0px 8px 10px 1px rgba(0, 0, 0, 0.14),\n 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n overflow: hidden;\n }\n\n &__item {\n padding: 0.75rem 1rem;\n border-bottom: 1px solid #e0e0e0;\n text-align: center;\n cursor: pointer;\n transition: background-color 0.2s ease;\n\n &:hover:not(&--disabled) {\n background-color: #f5f5f5;\n }\n\n &:last-child {\n border-bottom: none;\n }\n\n &--disabled {\n opacity: 0.38;\n cursor: not-allowed;\n pointer-events: none;\n }\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\nexport interface MenuOption {\n key?: string;\n label: string;\n [key: string]: any;\n}\n\n@Component({\n tag: 'xplor-btn-menu',\n styleUrl: 'xplor-btn-menu.scss',\n scoped: true,\n})\nexport class XplorBtnMenu {\n /**\n * Button label\n */\n @Prop() label: string = '';\n\n /**\n * Menu options\n */\n @Prop() options: MenuOption[] = [];\n\n /**\n * Hidden option keys\n */\n @Prop() hiddenKeys: string[] = [];\n\n /**\n * Disabled option keys\n */\n @Prop() disabledKeys: string[] = [];\n\n /**\n * Button color\n */\n @Prop() color: string = 'secondary';\n\n /**\n * Button density (compact, default, comfortable)\n */\n @Prop() density: string = 'default';\n\n /**\n * Whether the menu is open\n */\n @State() show: boolean = false;\n\n /**\n * Click event - emits the clicked option\n */\n @Event() xplorClick: EventEmitter<MenuOption>;\n\n private menuRef: HTMLDivElement;\n\n componentDidLoad() {\n document.addEventListener('click', this.handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n\n private handleOutsideClick = (event: MouseEvent) => {\n if (this.menuRef && !this.menuRef.contains(event.target as Node)) {\n this.show = false;\n }\n };\n\n private toggleMenu = () => {\n this.show = !this.show;\n };\n\n private handleClickOption = (option: MenuOption) => {\n this.xplorClick.emit(option);\n this.show = false;\n };\n\n private isHidden = (key: string | null): boolean => {\n return key !== null && this.hiddenKeys.includes(key);\n };\n\n private isDisabled = (key: string | null): boolean => {\n return key !== null && this.disabledKeys.includes(key);\n };\n\n render() {\n return (\n <Host>\n <div class=\"xplor-btn-menu\" ref={(el) => (this.menuRef = el)}>\n <slot name=\"activator\">\n <button\n class=\"xplor-btn-menu__button\"\n onClick={this.toggleMenu}\n >\n <span>{this.label}</span>\n <span class=\"xplor-btn-menu__icon\">▼</span>\n </button>\n </slot>\n\n {this.show && (\n <div class=\"xplor-btn-menu__list\">\n {this.options.map((option, index) => {\n const key = option.key || String(index);\n if (this.isHidden(key)) {\n return null;\n }\n\n return (\n <div\n key={key}\n class={{\n 'xplor-btn-menu__item': true,\n 'xplor-btn-menu__item--disabled': this.isDisabled(key),\n }}\n onClick={() => !this.isDisabled(key) && this.handleClickOption(option)}\n >\n <slot name={key}>{option.label || ''}</slot>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-toggle {\n border: 1px solid #E0E0E0;\n border-radius: 1rem;\n min-width: 4rem;\n padding: 0.5rem 1rem;\n background-color: white;\n color: #757575;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n transition: all 0.2s ease;\n margin-right: 0.5rem;\n\n &:first-of-type {\n margin-left: 0;\n }\n\n &--active {\n background-color: #E6F7F7;\n color: #008480;\n border-color: #008480;\n }\n\n &--disabled {\n background-color: #FAFAFA;\n color: rgba(0, 0, 0, 0.38);\n border-color: rgba(0, 0, 0, 0.12);\n cursor: not-allowed;\n pointer-events: none;\n\n &.xplor-btn-toggle--active {\n background-color: rgba(0, 0, 0, 0.05);\n }\n }\n\n &--inactive-outlined {\n border-color: #757575;\n }\n\n &:hover:not(.xplor-btn-toggle--disabled) {\n background-color: #F5F5F5;\n\n &.xplor-btn-toggle--active {\n background-color: #D0EBD2;\n }\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-toggle',\n styleUrl: 'xplor-btn-toggle.scss',\n scoped: true,\n})\nexport class XplorBtnToggle {\n /**\n * Whether the button is active/selected\n */\n @Prop({ mutable: true }) active: boolean = false;\n\n /**\n * Button color when active\n */\n @Prop() color: string = 'secondary';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether to show outline when inactive\n */\n @Prop() inactiveOutlined: boolean = false;\n\n /**\n * Toggle event\n */\n @Event() xplorToggle: EventEmitter<boolean>;\n\n private handleClick = () => {\n if (!this.disabled) {\n this.active = !this.active;\n this.xplorToggle.emit(this.active);\n }\n };\n\n render() {\n const buttonClasses = {\n 'xplor-btn-toggle': true,\n 'xplor-btn-toggle--active': this.active,\n 'xplor-btn-toggle--disabled': this.disabled,\n 'xplor-btn-toggle--inactive-outlined': this.inactiveOutlined && !this.active,\n };\n\n return (\n <Host>\n <button\n class={buttonClasses}\n disabled={this.disabled}\n onClick={this.handleClick}\n aria-pressed={this.active ? 'true' : 'false'}\n >\n <slot />\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-toggle-group {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n height: auto;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-toggle-group',\n styleUrl: 'xplor-btn-toggle-group.scss',\n scoped: true,\n})\nexport class XplorBtnToggleGroup {\n /**\n * Whether multiple buttons can be active at once\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Density variant\n */\n @Prop() density: 'compact' | 'default' | 'comfortable' = 'default';\n\n render() {\n return (\n <Host>\n <div class=\"xplor-btn-toggle-group\" role=\"group\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-btn-toggle-secondary {\n border: 1px solid #E0E0E0;\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n border-radius: 1rem;\n color: #757575;\n min-width: 70px;\n padding: 0.5rem 1rem;\n background-color: white;\n cursor: pointer;\n font-size: inherit;\n font-family: inherit;\n transition: all 0.2s ease;\n\n &:first-of-type {\n margin-left: 0;\n }\n\n &--active {\n background-color: #E6F7F7;\n color: #008480;\n border-color: #008480;\n }\n\n &--disabled {\n background-color: #FAFAFA;\n color: rgba(0, 0, 0, 0.38);\n border-color: rgba(0, 0, 0, 0.12);\n cursor: not-allowed;\n pointer-events: none;\n\n &.xplor-btn-toggle-secondary--active {\n background-color: rgba(0, 0, 0, 0.05);\n }\n }\n\n &--inactive-outlined {\n border-color: #757575;\n }\n\n &:hover:not(.xplor-btn-toggle-secondary--disabled) {\n background-color: #F5F5F5;\n\n &.xplor-btn-toggle-secondary--active {\n background-color: #D0EBD2;\n }\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-toggle-secondary',\n styleUrl: 'xplor-btn-toggle-secondary.scss',\n scoped: true,\n})\nexport class XplorBtnToggleSecondary {\n /**\n * Whether the button is active/selected\n */\n @Prop({ mutable: true }) active: boolean = false;\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether to show outline when inactive\n */\n @Prop() inactiveOutlined: boolean = false;\n\n /**\n * Toggle event\n */\n @Event() xplorToggle: EventEmitter<boolean>;\n\n private handleClick = () => {\n if (!this.disabled) {\n this.active = !this.active;\n this.xplorToggle.emit(this.active);\n }\n };\n\n render() {\n const buttonClasses = {\n 'xplor-btn-toggle-secondary': true,\n 'xplor-btn-toggle-secondary--active': this.active,\n 'xplor-btn-toggle-secondary--disabled': this.disabled,\n 'xplor-btn-toggle-secondary--inactive-outlined': this.inactiveOutlined && !this.active,\n };\n\n return (\n <Host>\n <button\n class={buttonClasses}\n disabled={this.disabled}\n onClick={this.handleClick}\n aria-pressed={this.active ? 'true' : 'false'}\n >\n <slot />\n </button>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-btn-tooltip',\n styleUrl: 'xplor-btn-tooltip.scss',\n scoped: true,\n})\nexport class XplorBtnTooltip {\n @Prop() text: string;\n @Prop() tooltipText: string;\n @Prop() tooltipPosition: 'top' | 'bottom' | 'left' | 'right' = 'top';\n @Prop() type: 'primary' | 'secondary' | 'ghost' | 'disabled' = 'primary';\n @Prop() mode: 'office' | 'pg';\n @Prop() iconPosition: 'start' | 'end';\n @Prop() disabled: boolean = false;\n\n render() {\n return (\n <Host>\n <xplor-tooltip\n position={this.tooltipPosition}\n content={this.tooltipText}\n trigger=\"hover\"\n arrow={true}\n disabled={this.disabled}\n >\n <xplor-button\n slot=\"trigger\"\n text={this.text}\n type={this.type}\n mode={this.mode}\n icon-position={this.iconPosition}\n >\n <slot />\n </xplor-button>\n </xplor-tooltip>\n </Host>\n );\n }\n}\n","@use '../../styles/colours.scss' as colours-pg;\n@use '../../styles/spacing.scss' as spacing;\n\n:host {\n display: block;\n}\n\n.x-button {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n -ms-flex-pack: center;\n justify-content: center;\n position: relative;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n border: 1px solid;\n border-radius: 1rem;\n cursor: pointer;\n display: block;\n -webkit-flex-direction: row;\n -ms-flex-direction: row;\n flex-direction: row;\n font-size: 1rem;\n font-weight: 500;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-letter-spacing: 0.75px;\n -moz-letter-spacing: 0.75px;\n -ms-letter-spacing: 0.75px;\n padding: spacing.$spacing-12 spacing.$spacing-24;\n letter-spacing: 0.75px;\n overflow: hidden;\n position: relative;\n -webkit-transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n\n // Icon Only Button (Circular)\n &.x-button--icon-only {\n width: 48px;\n height: 48px;\n padding: 0;\n border-radius: 50%;\n min-width: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .button-icon {\n font-size: 20px;\n font-weight: 300;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.button-icon--svg {\n svg {\n width: spacing.$spacing-16;\n height: spacing.$spacing-16;\n display: block;\n }\n }\n }\n }\n\n // Regular Button with Icon\n &.x-button--with-icon {\n .button-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n line-height: 1;\n }\n\n // SVG icon styles\n &.x-button--icon-start {\n .button-icon--svg {\n margin-right: spacing.$spacing-8 ;\n }\n }\n\n &.x-button--icon-end {\n .button-icon--svg {\n margin-left: spacing.$spacing-8 ;\n }\n }\n\n .button-icon--svg {\n\n\n svg {\n display: block;\n width: 14px;\n height: 14px;\n\n\n path {\n fill: currentColor;\n }\n }\n }\n\n .button-text {\n line-height: 1;\n }\n }\n\n // Icon positioning\n &.x-button--icon-start {\n flex-direction: row;\n }\n\n &.x-button--icon-end {\n flex-direction: row;\n }\n\n &.shadow {\n box-shadow:\n 0px 2.30969px 4.25707px rgba(20, 20, 21, 0.28),\n 0px 6.38599px 11.7703px rgba(20, 20, 21, 0.0521271),\n 0px 15.375px 28.3382px rgba(20, 20, 21, 0.04),\n 0px 32px 94px rgba(20, 20, 21, 0.0278729);\n }\n\n &.primary {\n background-color: colours-pg.$primary;\n border-color: colours-pg.$primary;\n color: white;\n\n &:hover {\n background-color: colours-pg.$primary-50;\n border-color: colours-pg.$primary-50;\n color: white;\n }\n }\n\n &.secondary {\n background-color: colours-pg.$secondary;\n border-color: colours-pg.$secondary;\n color: white;\n\n &:hover {\n background-color: colours-pg.$secondary-50;\n border-color: colours-pg.$secondary-50;\n color: white;\n ;\n }\n }\n\n &.ghost {\n background-color: #fff;\n border-color: colours-pg.$secondary;\n color: colours-pg.$secondary;\n\n &:hover {\n background-color: #DFF2F1;\n border-color: colours-pg.$secondary;\n color: colours-pg.$secondary;\n\n }\n\n &:active {\n background-color: #BEE6E4;\n border-color: colours-pg.$secondary;\n color: colours-pg.$secondary;\n\n }\n }\n\n &.minimal {\n background-color: transparent;\n border-color: transparent;\n color: colours-pg.$primary;\n }\n\n &.success {\n background-color: transparent;\n border-color: colours-pg.$success;\n color: colours-pg.$success;\n\n &:hover {\n background-color: colours-pg.$success-50;\n border-color: colours-pg.$success;\n color: colours-pg.$success;\n }\n\n &:active {\n background-color: colours-pg.$success-100;\n }\n }\n\n &.text {\n background-color: transparent;\n border-color: transparent;\n color: colours-pg.$secondary;\n\n &:hover {\n background-color: colours-pg.$secondary-50;\n }\n\n &:active {\n background-color: colours-pg.$secondary-100;\n }\n }\n\n &.disabled {\n background-color: #f6f6f6;\n border-color: #a0a0a0;\n color: #a0a0a0;\n }\n}\n\n.icon {\n background-color: #ffffff;\n bottom: 0px;\n left: 0px;\n opacity: 0;\n position: absolute;\n right: 0px;\n top: 0px;\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n}\n\n// Size variations for icon-only buttons\n.x-button--icon-only {\n &.small {\n width: 36px;\n height: 36px;\n padding: spacing.$spacing-4;\n\n .button-icon {\n font-size: 16px;\n }\n }\n\n &.button-icon--svg {\n padding: spacing.$spacing-4;\n\n svg {\n width: 16px;\n height: 16px;\n\n }\n }\n\n &.large {\n width: 56px;\n height: 56px;\n\n .button-icon {\n font-size: 24px;\n }\n }\n}\n\n// Ensure disabled state works with icon buttons\n.x-button.disabled {\n\n &.x-button--icon-only,\n &.x-button--with-icon {\n cursor: not-allowed;\n opacity: 0.6;\n }\n}","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-button',\n styleUrl: 'xplor-button.scss',\n // we cant use multiple styleUrls because the mode property is not reactive only in stencilJS and once the component is rendered it wont change the css file\n // so we are using only one styleUrl and changing the styles based on the mode property in the class\n // styleUrls: {\n // default: 'xplor-button.scss',\n // dark: 'xplor-button-pg.scss',\n // pg: 'xplor-button-pg.scss',\n // office: 'xplor-button-office.scss',\n // },\n scoped: true,\n})\nexport class XplorButton {\n @Prop() text: string;\n @Prop() type: 'minimal' | 'primary' | 'secondary' | 'ghost' | 'disabled' | 'success' | 'text' = 'secondary';\n @Prop() mode?: 'dark' | 'pg' | 'office' = 'pg'; // 'dark', 'pg', 'office' (default: 'dark')\n @Prop() size?: string; // 'small', 'medium', 'large' (default:'medium')\n @Prop() styles?: string;\n @Prop() clickAction: () => void;\n\n /**\n * Icon position: 'start' | 'end' | null\n */\n @Prop() iconPosition: 'start' | 'end' | null;\n\n /**\n * Icon to display (defaults to plus sign)\n */\n @Prop() icon: string = '+';\n @Prop() iconSvg?: string;\n\n private renderIcon() {\n if (this.icon === 'svg' && this.iconSvg) {\n return (\n <span class=\"button-icon button-icon--svg \" innerHTML={this.iconSvg}></span>\n );\n }\n return (\n <span class=\"button-icon\">\n {this.icon}\n </span>\n );\n }\n\n render() {\n const isIconOnly = !this.text && this.iconPosition !== null;\n const hasIcon = this.iconPosition !== null;\n\n return (\n <Host>\n <slot>\n <button\n role=\"button\"\n class={{\n 'x-button': true,\n [this.type]: true,\n 'shadow': this.type !== 'minimal' && this.type !== 'text',\n 'x-button--icon-only': isIconOnly,\n 'x-button--with-icon': hasIcon && !isIconOnly,\n 'x-button--icon-start': this.iconPosition === 'start' && !isIconOnly,\n 'x-button--icon-end': this.iconPosition === 'end' && !isIconOnly,\n ...(this.styles ? { [this.styles]: true } : {}),\n }}\n onClick={() => this.clickAction && this.clickAction()}\n >\n {hasIcon && this.iconPosition === 'start' && this.renderIcon()}\n {this.text && <span class=\"button-text\">{this.text}</span>}\n {hasIcon && this.iconPosition === 'end' && this.renderIcon()}\n </button>\n </slot>\n </Host>\n );\n }\n}",":host {\n display: block;\n}\n\n.container {\n display: flex;\n margin-top: 20px;\n}","import { Component, Element, Host, h, State, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-chat-widget',\n styleUrl: 'xplor-chat-widget.scss',\n shadow: true,\n})\nexport class XplorChatWidget {\n @Prop() languageOptions: string[] = ['English', 'Spanish', 'French', 'German', 'Italian'];\n @Prop() textId: string = 'text';\n @Prop() apiKey: string; // TODO: add api key to the component\n @Element() host: HTMLElement;\n @State() selectedLanguage: string = 'English';\n @State() textValue: string;\n 'Hoy, nos divertimos mucho explorando el mundo de la arcilla. Estaban totalmente absortos en el proceso, formando cuidadosamente la arcilla en diseños y patrones únicos. Desde animales coloridos hasta formas extravagantes, la imaginación de tu hijo no tuvo límites durante este día lleno de diversión.';\n\n componentDidLoad() {\n const element = this.host.shadowRoot?.getElementById('text');\n // we need to change this to a class so we can maniplulate multipule different spots with text.\n if (element) {\n this.textValue = element.textContent || '';\n console.log('textValue:', this.textValue);\n }\n }\n\n handleClick = () => {\n // const ai = document.getElementsByClassName('ai-translate');\n // Array loop throught ai html items and remap it and update\n // each class should be seperated\n debugger;\n fetch('https://nnvy1fqqcb.execute-api.ap-southeast-2.amazonaws.com/ai_dev/ai/prompt-generation', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey, // Replace with your actual API key\n },\n body: JSON.stringify({\n service: null,\n action: 'translate',\n language: this.selectedLanguage,\n content: this.textValue || '',\n }),\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n return response.json();\n })\n .then((data) => {\n console.log('Success:', data);\n this.textValue = data.response;\n })\n .catch((error) => {\n console.error('Error:', error);\n });\n };\n\n handleChange = (event: Event) => {\n const selectElement = event.target as HTMLSelectElement;\n this.selectedLanguage = selectElement.value;\n console.log('Selected language:', this.selectedLanguage);\n };\n\n render() {\n return (\n <Host>\n <div id=\"ai-text\">{this.textValue}</div>\n <div class=\"container\">\n <xplor-dropdown\n options={this.languageOptions}\n selected={this.selectedLanguage}\n handleChange={this.handleChange}\n />\n <xplor-button text=\"translate\" mode=\"pg\" type=\"primary\" onClick={this.handleClick}></xplor-button>\n </div>\n </Host>\n );\n }\n}\n","/* custom-checkbox.scss */\n$color-gray-400: #d1d5db;\n$color-gray-600: #6b7280;\n$color-gray-700: #374151;\n$color-green-100: #d1fae5;\n$color-green-200: #a7f3d0;\n$color-green-300: #6ee7b7;\n$color-green-600: #059669;\n$color-red-100: #fee2e2;\n$color-red-200: #fecaca;\n$color-red-300: #fca5a5;\n$color-red-500: #ef4444;\n$color-white: white;\n\n$checkbox-size: 20px;\n$checkbox-radius: 4px;\n$border-width: 2px;\n$icon-size: 16px;\n$transition-speed: 0.15s;\n$focus-ring-opacity: 0.1;\n$disabled-opacity: 0.4;\n\n:host {\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n.checkbox-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.checkbox {\n width: $checkbox-size;\n height: $checkbox-size;\n border-radius: $checkbox-radius;\n border: $border-width solid $color-gray-600;\n background: $color-white;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all $transition-speed ease;\n outline: none;\n position: relative;\n\n // Hover state (unselected)\n &.hover {\n background: $color-green-100;\n border-color: $color-green-600;\n }\n\n // Focus state (unselected)\n &.focus {\n background: $color-green-200;\n border-color: $color-green-600;\n box-shadow: 0 0 0 3px rgba($color-green-600, $focus-ring-opacity);\n }\n\n // Pressed state (unselected)\n &.pressed {\n background: $color-green-300;\n border-color: $color-green-600;\n }\n\n // Selected (checked) state\n &.checked {\n background: $color-green-600;\n border-color: $color-green-600;\n\n &.hover {\n background: $color-green-100;\n border-color: $color-green-600;\n\n .check-icon {\n color: $color-green-600;\n }\n }\n\n &.focus {\n background: $color-green-200;\n border-color: $color-green-600;\n box-shadow: 0 0 0 3px rgba($color-green-600, $focus-ring-opacity);\n\n .check-icon {\n color: $color-green-600;\n }\n }\n\n &.pressed {\n background: $color-green-300;\n border-color: $color-green-600;\n\n .check-icon {\n color: $color-green-600;\n }\n }\n }\n\n // Indeterminate state\n &.indeterminate {\n background: $color-green-600;\n border-color: $color-green-600;\n\n &.hover {\n background: $color-green-100;\n border-color: $color-green-600;\n\n .indeterminate-icon {\n color: $color-green-600;\n }\n }\n\n &.focus {\n background: $color-green-200;\n border-color: $color-green-600;\n box-shadow: 0 0 0 3px rgba($color-green-600, $focus-ring-opacity);\n\n .indeterminate-icon {\n color: $color-green-600;\n }\n }\n\n &.pressed {\n background: $color-green-300;\n border-color: $color-green-600;\n\n .indeterminate-icon {\n color: $color-green-600;\n }\n }\n }\n\n // Error state (unselected)\n &.error {\n border-color: $color-red-500;\n\n &.hover {\n background: $color-red-100;\n border-color: $color-red-500;\n }\n\n &.focus {\n background: $color-red-200;\n border-color: $color-red-500;\n box-shadow: 0 0 0 3px rgba($color-red-500, $focus-ring-opacity);\n }\n\n &.pressed {\n background: $color-red-300;\n border-color: $color-red-500;\n }\n\n // Error + checked\n &.checked {\n background: $color-red-500;\n border-color: $color-red-500;\n\n &.hover {\n background: $color-red-100;\n border-color: $color-red-500;\n\n .check-icon {\n color: $color-red-500;\n }\n }\n\n &.focus {\n background: $color-red-200;\n border-color: $color-red-500;\n box-shadow: 0 0 0 3px rgba($color-red-500, $focus-ring-opacity);\n\n .check-icon {\n color: $color-red-500;\n }\n }\n\n &.pressed {\n background: $color-red-300;\n border-color: $color-red-500;\n\n .check-icon {\n color: $color-red-500;\n }\n }\n }\n\n // Error + indeterminate\n &.indeterminate {\n background: $color-red-500;\n border-color: $color-red-500;\n\n &.hover {\n background: $color-red-100;\n border-color: $color-red-500;\n\n .indeterminate-icon {\n color: $color-red-500;\n }\n }\n\n &.focus {\n background: $color-red-200;\n border-color: $color-red-500;\n box-shadow: 0 0 0 3px rgba($color-red-500, $focus-ring-opacity);\n\n .indeterminate-icon {\n color: $color-red-500;\n }\n }\n\n &.pressed {\n background: $color-red-300;\n border-color: $color-red-500;\n\n .indeterminate-icon {\n color: $color-red-500;\n }\n }\n }\n }\n\n // Disabled state\n &.disabled {\n opacity: $disabled-opacity;\n cursor: not-allowed;\n border-color: $color-gray-400;\n background: $color-white;\n\n &.checked,\n &.indeterminate {\n background: $color-gray-400;\n border-color: $color-gray-400;\n }\n }\n}\n\n.check-icon,\n.indeterminate-icon {\n width: $icon-size;\n height: $icon-size;\n color: $color-white;\n}\n\n.label {\n font-size: 14px;\n color: $color-gray-700;\n user-select: none;\n\n .checkbox.disabled~& {\n opacity: $disabled-opacity;\n }\n}","import { Component, Prop, State, Event, EventEmitter, h, Watch } from '@stencil/core';\n\n@Component({\n tag: 'xplor-checkbox',\n styleUrl: 'xplor-checkbox.scss',\n shadow: true,\n})\nexport class XplorCheckbox {\n @Prop() initialChecked: boolean = false;\n @Prop() initialIndeterminate: boolean = false;\n\n @Prop() disabled: boolean = false;\n @Prop() error: boolean = false;\n @Prop() label: string = '';\n\n @State() checked: boolean = false;\n @State() indeterminate: boolean = false;\n @State() isHovered: boolean = false;\n @State() isFocused: boolean = false;\n @State() isPressed: boolean = false;\n\n @Event() checkboxChange: EventEmitter<{ checked: boolean; indeterminate: boolean }>;\n\n @Watch('initialChecked')\n watchCheckedProp(newValue: boolean) {\n this.checked = newValue;\n }\n\n @Watch('initialIndeterminate')\n watchIndeterminateProp(newValue: boolean) {\n this.indeterminate = newValue;\n }\n\n componentWillLoad() {\n this.checked = this.initialChecked;\n this.indeterminate = this.initialIndeterminate;\n } private handleClick = () => {\n if (this.disabled) return;\n\n if (this.indeterminate) {\n // If indeterminate, go to checked state\n this.indeterminate = false;\n this.checked = true;\n } else {\n // Toggle between checked and unchecked\n this.checked = !this.checked;\n }\n\n this.checkboxChange.emit({\n checked: this.checked,\n indeterminate: this.indeterminate\n });\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.disabled) return;\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n this.isPressed = true;\n this.handleClick();\n }\n };\n\n private handleKeyUp = (e: KeyboardEvent) => {\n if (e.key === ' ' || e.key === 'Enter') {\n this.isPressed = false;\n }\n };\n\n private getCheckboxClass = () => {\n const classes = ['checkbox'];\n\n if (this.checked) classes.push('checked');\n if (this.indeterminate) classes.push('indeterminate');\n if (this.disabled) classes.push('disabled');\n if (this.error) classes.push('error');\n if (this.isHovered && !this.disabled) classes.push('hover');\n if (this.isFocused && !this.disabled) classes.push('focus');\n if (this.isPressed && !this.disabled) classes.push('pressed');\n\n return classes.join(' ');\n };\n\n render() {\n return (\n <div class=\"checkbox-wrapper\">\n <div\n class={this.getCheckboxClass()}\n onClick={this.handleClick}\n onMouseEnter={() => this.isHovered = true}\n onMouseLeave={() => this.isHovered = false}\n onMouseDown={() => this.isPressed = true}\n onMouseUp={() => this.isPressed = false}\n onFocus={() => this.isFocused = true}\n onBlur={() => this.isFocused = false}\n onKeyDown={this.handleKeyDown}\n onKeyUp={this.handleKeyUp}\n tabIndex={this.disabled ? -1 : 0}\n role=\"checkbox\"\n aria-checked={this.indeterminate ? 'mixed' : this.checked.toString()}\n aria-disabled={this.disabled.toString()}\n >\n {this.checked && (\n <svg class=\"check-icon\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M13.3334 4L6.00002 11.3333L2.66669 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n {this.indeterminate && (\n <svg class=\"indeterminate-icon\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3.33331 8H12.6666\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n )}\n </div>\n {this.label && <span class=\"label\">{this.label}</span>}\n </div>\n );\n }\n}",":host {\n display: block;\n width: 100%;\n}\n\n.combobox {\n position: relative;\n width: 100%;\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &--readonly {\n .combobox__input {\n background-color: #f5f5f5;\n }\n }\n}\n\n.combobox__label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #424242;\n margin-bottom: 0.5rem;\n}\n\n.combobox__input-wrapper {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.5rem;\n border: 1px solid #bdbdbd;\n border-radius: 4px;\n padding: 0.5rem;\n background-color: #fff;\n transition: border-color 0.2s, box-shadow 0.2s;\n\n &:focus-within {\n border-color: #1976d2;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n }\n}\n\n.combobox__chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n\n.combobox__chip {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background-color: #e8f5e9;\n border-radius: 16px;\n font-size: 0.875rem;\n color: #2e7d32;\n}\n\n.combobox__chip-label {\n line-height: 1;\n}\n\n.combobox__chip-remove {\n background: none;\n border: none;\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2e7d32;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover:not(:disabled) {\n background-color: rgba(46, 125, 50, 0.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.combobox__input {\n flex: 1;\n min-width: 120px;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: 1rem;\n padding: 0.25rem;\n background: transparent;\n color: #212121;\n\n &::placeholder {\n color: #9e9e9e;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n &[readonly] {\n cursor: default;\n }\n}\n\n.combobox__actions {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n flex-shrink: 0;\n}\n\n.combobox__clear {\n background: none;\n border: none;\n font-size: 1.25rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n color: #212121;\n }\n}\n\n.combobox__icon {\n font-size: 0.75rem;\n color: #757575;\n pointer-events: none;\n transition: transform 0.2s;\n\n .combobox--open & {\n transform: rotate(180deg);\n }\n}\n\n.combobox__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n right: 0;\n max-height: 300px;\n overflow-y: auto;\n background-color: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n z-index: 1000;\n}\n\n.combobox__item {\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: background-color 0.2s;\n color: #212121;\n\n &:hover:not(&--disabled) {\n background-color: #f5f5f5;\n }\n\n &--highlighted {\n background-color: #e3f2fd;\n }\n\n &--selected {\n background-color: #1976d2;\n color: #fff;\n\n &:hover {\n background-color: #1565c0;\n }\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &--create {\n background-color: #fff9c4;\n border-top: 1px solid #e0e0e0;\n\n &:hover {\n background-color: #fff59d;\n }\n\n &.combobox__item--highlighted {\n background-color: #fff176;\n }\n }\n}\n\n.combobox__create-label {\n color: #757575;\n font-size: 0.875rem;\n}\n\n.combobox__no-results {\n padding: 1rem;\n text-align: center;\n color: #757575;\n font-size: 0.875rem;\n}","import { Component, Host, h, Prop, State, Event, EventEmitter, Element, Listen } from '@stencil/core';\n\nexport interface ComboboxItem {\n label: string;\n value: any;\n disabled?: boolean;\n [key: string]: any;\n}\n\n@Component({\n tag: 'xplor-combobox',\n styleUrl: 'xplor-combobox.scss',\n scoped: true,\n})\nexport class XplorCombobox {\n @Element() el: HTMLElement;\n\n /**\n * Array of items to display in the dropdown\n */\n @Prop() items: ComboboxItem[] = [];\n\n /**\n * Selected value(s)\n */\n @Prop({ mutable: true }) value: any = null;\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string = 'Type to search or add...';\n\n /**\n * Label for the input\n */\n @Prop() label: string;\n\n /**\n * Disable the combobox\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Make the combobox readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Clear button\n */\n @Prop() clearable: boolean = false;\n\n /**\n * Allow multiple selection\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Allow creating new items\n */\n @Prop() allowCustom: boolean = true;\n\n /**\n * Message to display when creating new item\n */\n @Prop() createMessage: string = 'Create';\n\n @State() isOpen: boolean = false;\n @State() searchQuery: string = '';\n @State() filteredItems: ComboboxItem[] = [];\n @State() selectedItems: any[] = [];\n @State() highlightedIndex: number = -1;\n @State() customItems: ComboboxItem[] = [];\n\n @Event() xplorChange: EventEmitter<any>;\n @Event() xplorSelect: EventEmitter<ComboboxItem>;\n @Event() xplorCreate: EventEmitter<string>;\n @Event() xplorClear: EventEmitter<void>;\n @Event() xplorSearch: EventEmitter<string>;\n\n private inputEl: HTMLInputElement;\n private dropdownEl: HTMLDivElement;\n\n componentWillLoad() {\n this.filterItems();\n if (this.value !== null) {\n if (this.multiple && Array.isArray(this.value)) {\n this.selectedItems = this.value;\n } else if (!this.multiple) {\n const allItems = [...this.items, ...this.customItems];\n const selectedItem = allItems.find(item => item.value === this.value);\n if (selectedItem) {\n this.searchQuery = selectedItem.label;\n }\n }\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n const target = event.target as Node;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n }\n\n private filterItems() {\n const query = this.searchQuery.toLowerCase();\n const allItems = [...this.items, ...this.customItems];\n\n if (query === '') {\n this.filteredItems = allItems;\n return;\n }\n\n this.filteredItems = allItems.filter(item =>\n item.label.toLowerCase().includes(query)\n );\n }\n\n private canCreateNew(): boolean {\n if (!this.allowCustom || this.searchQuery.trim() === '') {\n return false;\n }\n\n const allItems = [...this.items, ...this.customItems];\n const exactMatch = allItems.some(\n item => item.label.toLowerCase() === this.searchQuery.toLowerCase()\n );\n\n return !exactMatch;\n }\n\n private handleInputFocus = () => {\n if (this.disabled || this.readonly) return;\n this.isOpen = true;\n this.highlightedIndex = -1;\n };\n\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.searchQuery = input.value;\n this.filterItems();\n this.isOpen = true;\n this.highlightedIndex = -1;\n this.xplorSearch.emit(this.searchQuery);\n\n if (!this.multiple && this.searchQuery === '') {\n this.value = null;\n this.xplorChange.emit(null);\n }\n };\n\n private handleInputKeyDown = (event: KeyboardEvent) => {\n if (this.disabled || this.readonly) return;\n\n const totalItems = this.filteredItems.length + (this.canCreateNew() ? 1 : 0);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.isOpen = true;\n this.highlightedIndex = Math.min(this.highlightedIndex + 1, totalItems - 1);\n this.scrollToHighlighted();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex = Math.max(this.highlightedIndex - 1, -1);\n this.scrollToHighlighted();\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.highlightedIndex >= 0) {\n if (this.highlightedIndex < this.filteredItems.length) {\n this.selectItem(this.filteredItems[this.highlightedIndex]);\n } else if (this.canCreateNew()) {\n this.createNewItem();\n }\n } else if (this.canCreateNew() && this.searchQuery.trim() !== '') {\n this.createNewItem();\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.inputEl?.blur();\n break;\n\n case 'Backspace':\n if (this.multiple && this.searchQuery === '' && this.selectedItems.length > 0) {\n event.preventDefault();\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\n }\n break;\n }\n };\n\n private scrollToHighlighted() {\n if (this.dropdownEl && this.highlightedIndex >= 0) {\n const highlightedEl = this.dropdownEl.querySelector(`[data-index=\"${this.highlightedIndex}\"]`) as HTMLElement;\n if (highlightedEl) {\n highlightedEl.scrollIntoView({ block: 'nearest' });\n }\n }\n }\n\n private selectItem(item: ComboboxItem) {\n if (item.disabled) return;\n\n if (this.multiple) {\n if (!this.selectedItems.includes(item.value)) {\n this.selectedItems = [...this.selectedItems, item.value];\n this.value = this.selectedItems;\n this.xplorChange.emit(this.value);\n }\n this.searchQuery = '';\n this.filterItems();\n } else {\n this.value = item.value;\n this.searchQuery = item.label;\n this.isOpen = false;\n this.xplorChange.emit(this.value);\n }\n\n this.xplorSelect.emit(item);\n this.inputEl?.focus();\n }\n\n private createNewItem() {\n const newValue = this.searchQuery.trim();\n const newItem: ComboboxItem = {\n label: newValue,\n value: newValue,\n };\n\n this.customItems = [...this.customItems, newItem];\n this.selectItem(newItem);\n this.xplorCreate.emit(newValue);\n }\n\n private removeItem(value: any) {\n this.selectedItems = this.selectedItems.filter(v => v !== value);\n this.value = this.selectedItems;\n this.xplorChange.emit(this.value);\n }\n\n private handleClear = () => {\n this.value = this.multiple ? [] : null;\n this.selectedItems = [];\n this.searchQuery = '';\n this.filterItems();\n this.xplorChange.emit(this.value);\n this.xplorClear.emit();\n this.inputEl?.focus();\n };\n\n private getSelectedItemLabel(value: any): string {\n const allItems = [...this.items, ...this.customItems];\n const item = allItems.find(i => i.value === value);\n return item ? item.label : value;\n }\n\n render() {\n const hasValue = this.multiple ? this.selectedItems.length > 0 : this.value !== null && this.searchQuery !== '';\n const showCreateOption = this.canCreateNew();\n\n return (\n <Host>\n <div\n class={{\n 'combobox': true,\n 'combobox--disabled': this.disabled,\n 'combobox--readonly': this.readonly,\n 'combobox--open': this.isOpen,\n }}\n >\n {this.label && (\n <label class=\"combobox__label\">{this.label}</label>\n )}\n\n <div class=\"combobox__input-wrapper\">\n {this.multiple && this.selectedItems.length > 0 && (\n <div class=\"combobox__chips\">\n {this.selectedItems.map(value => (\n <div class=\"combobox__chip\">\n <span class=\"combobox__chip-label\">\n {this.getSelectedItemLabel(value)}\n </span>\n <button\n type=\"button\"\n class=\"combobox__chip-remove\"\n onClick={() => this.removeItem(value)}\n disabled={this.disabled || this.readonly}\n >\n ×\n </button>\n </div>\n ))}\n </div>\n )}\n\n <input\n ref={(el) => (this.inputEl = el)}\n type=\"text\"\n class=\"combobox__input\"\n placeholder={this.placeholder}\n value={this.searchQuery}\n onFocus={this.handleInputFocus}\n onInput={this.handleInputChange}\n onKeyDown={this.handleInputKeyDown}\n disabled={this.disabled}\n readonly={this.readonly}\n autocomplete=\"off\"\n />\n\n <div class=\"combobox__actions\">\n {this.clearable && hasValue && !this.disabled && !this.readonly && (\n <button\n type=\"button\"\n class=\"combobox__clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n >\n ×\n </button>\n )}\n <span class=\"combobox__icon\">▼</span>\n </div>\n </div>\n\n {this.isOpen && (this.filteredItems.length > 0 || showCreateOption) && (\n <div class=\"combobox__dropdown\" ref={(el) => (this.dropdownEl = el)}>\n {this.filteredItems.map((item, index) => (\n <div\n key={item.value}\n data-index={index}\n class={{\n 'combobox__item': true,\n 'combobox__item--highlighted': index === this.highlightedIndex,\n 'combobox__item--selected': this.multiple\n ? this.selectedItems.includes(item.value)\n : this.value === item.value,\n 'combobox__item--disabled': item.disabled,\n }}\n onClick={() => this.selectItem(item)}\n >\n {item.label}\n </div>\n ))}\n\n {showCreateOption && (\n <div\n data-index={this.filteredItems.length}\n class={{\n 'combobox__item': true,\n 'combobox__item--create': true,\n 'combobox__item--highlighted': this.highlightedIndex === this.filteredItems.length,\n }}\n onClick={() => this.createNewItem()}\n >\n <span class=\"combobox__create-label\">{this.createMessage}:</span>{' '}\n <strong>\"{this.searchQuery}\"</strong>\n </div>\n )}\n </div>\n )}\n\n {this.isOpen && this.filteredItems.length === 0 && !showCreateOption && (\n <div class=\"combobox__dropdown\">\n <div class=\"combobox__no-results\">No results found</div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n width: 100%;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n}\n\n.datatable-container {\n background: white;\n border: 1px solid #e3e4e5;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.table-wrapper {\n width: 100%;\n overflow: auto;\n position: relative;\n\n &.has-height {\n max-height: 100%;\n }\n\n &.is-empty {\n min-height: 200px;\n }\n}\n\ntable {\n width: 100%;\n border-collapse: collapse;\n background: white;\n\n thead {\n background: #f7f8f9;\n position: sticky;\n top: 0;\n z-index: 10;\n\n tr {\n border-bottom: 1px solid #e3e4e5;\n }\n\n th {\n padding: 12px 16px;\n text-align: left;\n font-size: 0.75rem;\n font-weight: 600;\n color: #1a1a1a;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n border-right: 1px solid #e3e4e5;\n white-space: nowrap;\n user-select: none;\n\n &:last-child {\n border-right: none;\n }\n\n &.sortable {\n cursor: pointer;\n transition: background-color 0.2s;\n\n &:hover {\n background: #eef0f1;\n }\n }\n\n &.sorted {\n background: #e5e7e9;\n }\n\n &.fixed {\n position: sticky;\n left: 0;\n z-index: 11;\n background: #f7f8f9;\n }\n\n &.align-left {\n text-align: left;\n }\n\n &.align-center {\n text-align: center;\n }\n\n &.align-right {\n text-align: right;\n }\n\n .header-content {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: space-between;\n }\n\n .sort-icon {\n flex-shrink: 0;\n color: #999;\n transition: color 0.2s;\n\n &.active {\n color: #008480;\n }\n }\n }\n }\n\n tbody {\n tr {\n border-bottom: 1px solid #f0f0f0;\n transition: background-color 0.15s;\n\n &:last-child {\n border-bottom: 1px solid #e3e4e5;\n }\n\n &.clickable {\n cursor: pointer;\n }\n\n &.selected {\n background-color: rgba(0, 132, 128, 0.08);\n\n &:hover {\n background-color: rgba(0, 132, 128, 0.12);\n }\n }\n\n &.empty-row {\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n }\n }\n\n td {\n padding: 12px 16px;\n font-size: 0.875rem;\n color: #333;\n border-right: 1px solid #f0f0f0;\n\n &:last-child {\n border-right: none;\n }\n\n &.align-left {\n text-align: left;\n }\n\n &.align-center {\n text-align: center;\n }\n\n &.align-right {\n text-align: right;\n }\n }\n\n .select-column {\n width: 50px;\n text-align: center;\n position: sticky;\n left: 0;\n background: inherit;\n z-index: 1;\n }\n }\n\n // Horizontal lines variant\n .horizontal-lines & {\n thead th {\n border-right: none;\n }\n\n tbody td {\n border-right: none;\n }\n\n tbody tr {\n border-bottom: 1px solid #e3e4e5;\n }\n }\n\n // Striped variant\n .striped & {\n tbody tr:nth-child(even) {\n background-color: #fafafa;\n\n &.selected {\n background-color: rgba(0, 132, 128, 0.08);\n }\n }\n }\n\n // Hover effect\n &.hover tbody tr:not(.empty-row):hover {\n background-color: #f5f5f5;\n\n &.selected {\n background-color: rgba(0, 132, 128, 0.12);\n }\n }\n}\n\n// Checkbox styling\n.checkbox-label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n cursor: pointer;\n\n input[type='checkbox'] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #008480;\n margin: 0;\n }\n}\n\n// Empty state\n.empty-state {\n text-align: center;\n padding: 40px 20px;\n color: #999;\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n}\n\n// Skeleton loader\n.skeleton-loader {\n tr {\n cursor: default !important;\n\n &:hover {\n background: transparent !important;\n }\n }\n\n .skeleton {\n background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n background-size: 200% 100%;\n animation: skeleton-loading 1.5s ease-in-out infinite;\n border-radius: 4px;\n\n &-text {\n height: 16px;\n width: 80%;\n }\n\n &-checkbox {\n height: 18px;\n width: 18px;\n margin: 0 auto;\n }\n }\n}\n\n@keyframes skeleton-loading {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n}\n\n// Footer\n.datatable-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-top: 1px solid #e3e4e5;\n background: #fafafa;\n flex-wrap: wrap;\n gap: 16px;\n\n .footer-info {\n font-size: 0.875rem;\n color: #666;\n }\n\n .footer-controls {\n display: flex;\n align-items: center;\n gap: 24px;\n flex-wrap: wrap;\n }\n\n .per-page-selector {\n label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n color: #666;\n }\n\n select {\n padding: 4px 8px;\n border: 1px solid #d0d0d0;\n border-radius: 4px;\n background: white;\n font-size: 0.875rem;\n cursor: pointer;\n transition: border-color 0.2s;\n\n &:hover {\n border-color: #008480;\n }\n\n &:focus {\n outline: none;\n border-color: #008480;\n box-shadow: 0 0 0 2px rgba(0, 132, 128, 0.1);\n }\n }\n }\n\n .pagination-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n\n .page-info {\n font-size: 0.875rem;\n color: #333;\n padding: 0 8px;\n }\n\n .pagination-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 1px solid #d0d0d0;\n border-radius: 4px;\n background: white;\n color: #333;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover:not(:disabled) {\n border-color: #008480;\n background: #f0fffe;\n color: #008480;\n }\n\n &:active:not(:disabled) {\n background: #e0f9f8;\n }\n\n &:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n svg {\n width: 16px;\n height: 16px;\n }\n }\n }\n}\n\n// Responsive adjustments\n@media (max-width: 768px) {\n .datatable-footer {\n flex-direction: column;\n align-items: stretch;\n\n .footer-controls {\n justify-content: space-between;\n }\n }\n}","import {\n Component,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n h,\n Watch,\n Host,\n} from '@stencil/core';\n\nexport interface DatatableColumn {\n text: string;\n value: string;\n sortable?: boolean;\n width?: string | number;\n align?: 'left' | 'center' | 'right';\n fixed?: boolean;\n}\n\nexport interface DatatablePagination {\n page: number;\n perpage: number;\n total: number;\n pages?: number;\n}\n\n@Component({\n tag: 'xplor-datatable',\n styleUrl: 'xplor-datatable.scss',\n shadow: true,\n})\nexport class XplorDatatable {\n @Element() el: HTMLXplorDatatableElement;\n\n /**\n * Array of column definitions for the table headers\n */\n @Prop() headers: DatatableColumn[] = [];\n\n /**\n * Array of data items to display in the table\n */\n @Prop() items: any[] = [];\n\n /**\n * Whether the table is in a loading state\n */\n @Prop() loading: boolean = false;\n\n /**\n * Pagination configuration object\n */\n @Prop() pagination: DatatablePagination = {\n page: 1,\n perpage: 10,\n total: 0,\n };\n\n /**\n * Array of selected items (for multiselect)\n */\n @Prop() selected: any[] = [];\n\n /**\n * Enable row selection with checkboxes\n */\n @Prop() canSelect: boolean = false;\n\n /**\n * Enable horizontal lines between rows\n */\n @Prop() horizontalLines: boolean = true;\n\n /**\n * Enable striped row styling\n */\n @Prop() striped: boolean = false;\n\n /**\n * Fixed header height (e.g., \"400px\" or 400)\n */\n @Prop() height?: string | number;\n\n /**\n * Show skeleton loader when loading\n */\n @Prop() skeletonLoader: boolean = true;\n\n /**\n * Enable hover effect on rows\n */\n @Prop() hover: boolean = true;\n\n /**\n * Per page options for pagination\n */\n @Prop() perPageOptions: number[] = [10, 25, 50, 100];\n\n /**\n * Emitted when a row is clicked\n */\n @Event() rowClick: EventEmitter<any>;\n\n /**\n * Emitted when row selection changes\n */\n @Event() xplorSelectionChange: EventEmitter<any[]>;\n\n /**\n * Emitted when pagination changes\n */\n @Event() paginationChange: EventEmitter<DatatablePagination>;\n\n /**\n * Emitted when sorting changes\n */\n @Event() sortChange: EventEmitter<{ column: string; direction: 'asc' | 'desc' | null }>;\n\n @State() sortBy: string | null = null;\n @State() sortDirection: 'asc' | 'desc' | null = null;\n @State() internalSelected: Set<any> = new Set();\n @State() allSelected: boolean = false;\n\n componentWillLoad() {\n this.internalSelected = new Set(this.selected);\n }\n\n @Watch('selected')\n watchSelected(newSelected: any[]) {\n this.internalSelected = new Set(newSelected);\n this.updateAllSelectedState();\n }\n\n @Watch('items')\n watchItems() {\n this.updateAllSelectedState();\n }\n\n private updateAllSelectedState() {\n if (this.items.length === 0) {\n this.allSelected = false;\n return;\n }\n this.allSelected = this.items.every(item => this.internalSelected.has(item));\n }\n\n private handleSort = (column: DatatableColumn) => {\n if (column.sortable === false) return;\n\n if (this.sortBy === column.value) {\n // Cycle through: asc -> desc -> null\n if (this.sortDirection === 'asc') {\n this.sortDirection = 'desc';\n } else if (this.sortDirection === 'desc') {\n this.sortDirection = null;\n this.sortBy = null;\n }\n } else {\n this.sortBy = column.value;\n this.sortDirection = 'asc';\n }\n\n this.sortChange.emit({\n column: this.sortBy,\n direction: this.sortDirection,\n });\n };\n\n private handleSelectAll = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const checked = target.checked;\n\n if (checked) {\n this.items.forEach(item => this.internalSelected.add(item));\n } else {\n this.internalSelected.clear();\n }\n\n this.allSelected = checked;\n this.internalSelected = new Set(this.internalSelected);\n this.xplorSelectionChange.emit(Array.from(this.internalSelected));\n };\n\n private handleSelectOne = (e: Event, item: any) => {\n const target = e.target as HTMLInputElement;\n const checked = target.checked;\n\n if (checked) {\n this.internalSelected.add(item);\n } else {\n this.internalSelected.delete(item);\n }\n\n this.internalSelected = new Set(this.internalSelected);\n this.updateAllSelectedState();\n this.xplorSelectionChange.emit(Array.from(this.internalSelected));\n };\n\n private handleRowClick = (item: any, e: MouseEvent) => {\n // Don't trigger row click if clicking on checkbox or interactive elements\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.closest('input')) {\n return;\n }\n\n this.rowClick.emit(item);\n };\n\n private handlePageChange = (newPage: number) => {\n const updatedPagination = {\n ...this.pagination,\n page: newPage,\n };\n this.paginationChange.emit(updatedPagination);\n };\n\n private handlePerPageChange = (e: Event) => {\n const target = e.target as HTMLSelectElement;\n const perpage = parseInt(target.value, 10);\n if (!isNaN(perpage)) {\n const updatedPagination = {\n ...this.pagination,\n page: 1, // Reset to first page\n perpage,\n };\n this.paginationChange.emit(updatedPagination);\n }\n };\n\n private getSortIcon(column: DatatableColumn) {\n if (this.sortBy !== column.value) {\n return (\n <svg class=\"sort-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8 3L11 6H5L8 3Z\" fill=\"currentColor\" opacity=\"0.3\" />\n <path d=\"M8 13L5 10H11L8 13Z\" fill=\"currentColor\" opacity=\"0.3\" />\n </svg>\n );\n }\n\n if (this.sortDirection === 'asc') {\n return (\n <svg class=\"sort-icon active\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8 3L11 6H5L8 3Z\" fill=\"currentColor\" />\n <path d=\"M8 13L5 10H11L8 13Z\" fill=\"currentColor\" opacity=\"0.3\" />\n </svg>\n );\n }\n\n return (\n <svg class=\"sort-icon active\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8 3L11 6H5L8 3Z\" fill=\"currentColor\" opacity=\"0.3\" />\n <path d=\"M8 13L5 10H11L8 13Z\" fill=\"currentColor\" />\n </svg>\n );\n };\n\n private renderSkeletonLoader() {\n return (\n <tbody class=\"skeleton-loader\">\n {Array.from({ length: this.pagination.perpage }).map(() => (\n <tr>\n {this.canSelect && (\n <td>\n <div class=\"skeleton skeleton-checkbox\"></div>\n </td>\n )}\n {this.headers.map(() => (\n <td>\n <div class=\"skeleton skeleton-text\"></div>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n }\n\n private renderPagination() {\n const totalPages = Math.ceil(this.pagination.total / this.pagination.perpage);\n const currentPage = this.pagination.page;\n const start = (currentPage - 1) * this.pagination.perpage + 1;\n const end = Math.min(currentPage * this.pagination.perpage, this.pagination.total);\n\n return (\n <div class=\"datatable-footer\">\n <div class=\"footer-info\">\n {this.pagination.total > 0 ? (\n <span>\n Showing {start} to {end} of {this.pagination.total} entries\n </span>\n ) : (\n <span>No entries</span>\n )}\n </div>\n\n <div class=\"footer-controls\">\n <div class=\"per-page-selector\">\n <label>\n Rows per page:\n <select onInput={this.handlePerPageChange}>\n {this.perPageOptions.map(option => (\n <option value={option} selected={option === this.pagination.perpage}>{option}</option>\n ))}\n </select>\n </label>\n </div>\n\n <div class=\"pagination-controls\">\n <button\n class=\"pagination-btn\"\n disabled={currentPage === 1}\n onClick={() => this.handlePageChange(1)}\n aria-label=\"First page\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M11 12L7 8L11 4M5 4V12\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </button>\n\n <button\n class=\"pagination-btn\"\n disabled={currentPage === 1}\n onClick={() => this.handlePageChange(currentPage - 1)}\n aria-label=\"Previous page\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M10 12L6 8L10 4\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </button>\n\n <span class=\"page-info\">\n Page {currentPage} of {totalPages || 1}\n </span>\n\n <button\n class=\"pagination-btn\"\n disabled={currentPage >= totalPages}\n onClick={() => this.handlePageChange(currentPage + 1)}\n aria-label=\"Next page\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M6 4L10 8L6 12\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </button>\n\n <button\n class=\"pagination-btn\"\n disabled={currentPage >= totalPages}\n onClick={() => this.handlePageChange(totalPages)}\n aria-label=\"Last page\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M5 4L9 8L5 12M11 4V12\" stroke=\"currentColor\" stroke-width=\"1.5\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n render() {\n const tableHeight = typeof this.height === 'number' ? `${this.height}px` : this.height;\n const hasHeight = !!this.height;\n\n return (\n <Host class=\"xplor-datatable\">\n <div class=\"datatable-container\">\n <div\n class={{\n 'table-wrapper': true,\n 'has-height': hasHeight,\n 'horizontal-lines': this.horizontalLines,\n 'striped': this.striped,\n 'is-empty': this.items.length === 0,\n }}\n style={hasHeight ? { height: tableHeight } : {}}\n >\n <table class={{ 'hover': this.hover }}>\n <thead>\n <tr>\n {this.canSelect && (\n <th class=\"select-column\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n checked={this.allSelected}\n indeterminate={\n this.internalSelected.size > 0 &&\n this.internalSelected.size < this.items.length\n }\n onChange={this.handleSelectAll}\n />\n </label>\n </th>\n )}\n {this.headers.map(header => (\n <th\n class={{\n sortable: header.sortable !== false,\n sorted: this.sortBy === header.value,\n fixed: header.fixed,\n [`align-${header.align || 'left'}`]: true,\n }}\n style={header.width ? { width: typeof header.width === 'number' ? `${header.width}px` : header.width } : {}}\n onClick={() => header.sortable !== false && this.handleSort(header)}\n >\n <div class=\"header-content\">\n <span>{header.text}</span>\n {header.sortable !== false && this.getSortIcon(header)}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n\n {this.loading && this.skeletonLoader ? (\n this.renderSkeletonLoader()\n ) : (\n <tbody>\n {this.items.length === 0 ? (\n <tr class=\"empty-row\">\n <td colSpan={this.headers.length + (this.canSelect ? 1 : 0)}>\n <div class=\"empty-state\">\n <p>No data available</p>\n </div>\n </td>\n </tr>\n ) : (\n this.items.map(item => {\n const isSelected = this.internalSelected.has(item);\n return (\n <tr\n class={{\n selected: isSelected,\n clickable: true,\n }}\n onClick={(e) => this.handleRowClick(item, e)}\n >\n {this.canSelect && (\n <td class=\"select-column\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => this.handleSelectOne(e, item)}\n />\n </label>\n </td>\n )}\n {this.headers.map(header => (\n <td class={`align-${header.align || 'left'}`}>\n <slot name={`item.${header.value}`}>\n {item[header.value]}\n </slot>\n </td>\n ))}\n </tr>\n );\n })\n )}\n </tbody>\n )}\n </table>\n </div>\n\n {this.pagination && this.pagination.total > 0 && this.renderPagination()}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n width: 100%;\n}\n\n.date-picker {\n position: relative;\n width: 100%;\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &__label {\n display: block;\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n transition: border-color 0.2s ease;\n background: white;\n\n &:focus-within {\n border-color: #008480;\n border-width: 2px;\n\n .date-picker__input {\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n }\n }\n\n &--error &__field {\n border-color: #d32f2f;\n }\n\n &__input {\n flex: 1;\n width: 100%;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: none;\n border-radius: 1rem;\n outline: none;\n background: transparent;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n &__actions {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding-right: 0.5rem;\n flex-shrink: 0;\n }\n\n &__clear {\n background: none;\n border: none;\n font-size: 1.25rem;\n cursor: pointer;\n padding: 0;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n color: #212121;\n }\n }\n\n &__icon-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover:not(:disabled) {\n background-color: #f5f5f5;\n color: #212121;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__icon-svg {\n display: block;\n }\n\n &__text-display {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n padding: 0.5rem;\n border-radius: 4px;\n color: #008480;\n font-size: 1rem;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: rgba(0, 132, 128, 0.08);\n }\n }\n\n &__text-value {\n text-decoration: underline;\n }\n\n &__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background-color: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n &--top {\n top: auto;\n bottom: calc(100% + 4px);\n }\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Element, Listen } from '@stencil/core';\n\n@Component({\n tag: 'xplor-date-picker',\n styleUrl: 'xplor-date-picker.scss',\n scoped: true,\n})\nexport class XplorDatePicker {\n @Element() el: HTMLElement;\n\n /** Selected date in YYYY-MM-DD format */\n @Prop({ mutable: true }) value: string = '';\n\n @Prop() label: string = '';\n @Prop() placeholder: string = 'Select date';\n\n /** 'date' or 'month' */\n @Prop() type: 'date' | 'month' = 'date';\n\n /** For month type: select start or end of month */\n @Prop() monthType: 'start' | 'end' = 'start';\n\n /** 'input' shows text input, 'text' shows clickable text */\n @Prop() display: 'input' | 'text' = 'input';\n\n /** Date display format: 'short' (DD/MM/YYYY), 'long' (1 Jan 2025), 'iso' (YYYY-MM-DD) */\n @Prop() dateFormat: 'short' | 'long' | 'iso' = 'short';\n\n @Prop() min: string = '';\n @Prop() max: string = '';\n @Prop() readonly: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() clearable: boolean = false;\n @Prop() closeOnSelect: boolean = true;\n @Prop() bgColor: string = 'white';\n @Prop() color: string = '#008480';\n @Prop() startWeekOnSunday: boolean = true;\n @Prop() error: string = '';\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n @Prop() required: boolean = false;\n\n @State() isOpen: boolean = false;\n @State() inputText: string = '';\n @State() dropdownPosition: 'bottom' | 'top' = 'bottom';\n\n @Event() dateChange: EventEmitter<string>;\n @Event() xplorFocus: EventEmitter<FocusEvent>;\n @Event() xplorBlur: EventEmitter<FocusEvent>;\n @Event() xplorClear: EventEmitter<void>;\n\n componentWillLoad() {\n if (this.value) {\n this.inputText = this.formatDateForDisplay(this.value);\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n const target = event.target as Node;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n }\n\n /** Parse YYYY-MM-DD safely without UTC shift */\n private parseISODate(iso: string): Date | null {\n if (!iso) return null;\n const d = new Date(iso + 'T00:00:00');\n return isNaN(d.getTime()) ? null : d;\n }\n\n private formatDateForDisplay(iso: string): string {\n const date = this.parseISODate(iso);\n if (!date) return iso;\n\n if (this.type === 'month') {\n return new Intl.DateTimeFormat('en-AU', { month: 'long', year: 'numeric' }).format(date);\n }\n\n switch (this.dateFormat) {\n case 'long':\n return new Intl.DateTimeFormat('en-AU', { day: 'numeric', month: 'short', year: 'numeric' }).format(date);\n case 'iso':\n return iso;\n case 'short':\n default:\n return new Intl.DateTimeFormat('en-AU', { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date);\n }\n }\n\n private toISO(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n\n /** Parse user-typed text into YYYY-MM-DD */\n private parseInputText(text: string): string | null {\n const trimmed = text.trim();\n if (!trimmed) return null;\n\n // Try DD/MM/YYYY\n const slashMatch = trimmed.match(/^(\\d{1,2})[/\\-.](\\d{1,2})[/\\-.](\\d{4})$/);\n if (slashMatch) {\n const day = parseInt(slashMatch[1], 10);\n const month = parseInt(slashMatch[2], 10);\n const year = parseInt(slashMatch[3], 10);\n const d = new Date(year, month - 1, day);\n if (d.getFullYear() === year && d.getMonth() === month - 1 && d.getDate() === day) {\n return this.toISO(d);\n }\n }\n\n // Try YYYY-MM-DD\n const isoMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (isoMatch) {\n const year = parseInt(isoMatch[1], 10);\n const month = parseInt(isoMatch[2], 10);\n const day = parseInt(isoMatch[3], 10);\n const d = new Date(year, month - 1, day);\n if (d.getFullYear() === year && d.getMonth() === month - 1 && d.getDate() === day) {\n return this.toISO(d);\n }\n }\n\n // Try natural string via Date.parse\n const d = new Date(trimmed);\n if (!isNaN(d.getTime())) {\n return this.toISO(d);\n }\n\n return null;\n }\n\n private isDateInRange(iso: string): boolean {\n if (!iso) return true;\n if (this.min && iso < this.min) return false;\n if (this.max && iso > this.max) return false;\n return true;\n }\n\n private updateDropdownPosition() {\n const rect = this.el.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n this.dropdownPosition = spaceBelow < 350 ? 'top' : 'bottom';\n }\n\n private toggleDropdown = () => {\n if (this.disabled || this.readonly) return;\n this.updateDropdownPosition();\n this.isOpen = !this.isOpen;\n };\n\n private handleInputFocus = (event: FocusEvent) => {\n this.xplorFocus.emit(event);\n };\n\n private handleInputBlur = (event: FocusEvent) => {\n this.xplorBlur.emit(event);\n // Try to parse typed text\n const parsed = this.parseInputText(this.inputText);\n if (parsed && this.isDateInRange(parsed)) {\n this.value = parsed;\n this.inputText = this.formatDateForDisplay(parsed);\n this.dateChange.emit(parsed);\n } else if (this.value) {\n // Revert to current value display\n this.inputText = this.formatDateForDisplay(this.value);\n } else {\n this.inputText = '';\n }\n };\n\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.inputText = input.value;\n };\n\n private handleDateSelected = (event: CustomEvent<string>) => {\n event.stopPropagation();\n const iso = event.detail;\n if (!this.isDateInRange(iso)) return;\n\n if (this.type === 'month') {\n const d = this.parseISODate(iso);\n if (d) {\n let finalDate: Date;\n if (this.monthType === 'end') {\n finalDate = new Date(d.getFullYear(), d.getMonth() + 1, 0);\n } else {\n finalDate = new Date(d.getFullYear(), d.getMonth(), 1);\n }\n const finalIso = this.toISO(finalDate);\n this.value = finalIso;\n this.inputText = this.formatDateForDisplay(finalIso);\n this.dateChange.emit(finalIso);\n }\n } else {\n this.value = iso;\n this.inputText = this.formatDateForDisplay(iso);\n this.dateChange.emit(iso);\n }\n\n if (this.closeOnSelect) {\n this.isOpen = false;\n }\n };\n\n private handleClear = (event: Event) => {\n event.stopPropagation();\n this.value = '';\n this.inputText = '';\n this.dateChange.emit('');\n this.xplorClear.emit();\n };\n\n private handleTextClick = () => {\n if (this.disabled || this.readonly) return;\n this.updateDropdownPosition();\n this.isOpen = !this.isOpen;\n };\n\n render() {\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && this.error);\n\n const calendarIcon = (\n <svg class=\"date-picker__icon-svg\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n </svg>\n );\n\n return (\n <Host>\n <div class={{\n 'date-picker': true,\n 'date-picker--disabled': this.disabled,\n 'date-picker--error': !!this.error,\n 'date-picker--open': this.isOpen,\n }}>\n {this.label && (\n <label class=\"date-picker__label\">\n {this.label}\n {this.required && <span class=\"date-picker__required\">*</span>}\n </label>\n )}\n\n {this.display === 'text' ? (\n <div class=\"date-picker__text-display\" onClick={this.handleTextClick}>\n <span class=\"date-picker__text-value\">\n {this.value ? this.formatDateForDisplay(this.value) : this.placeholder}\n </span>\n {calendarIcon}\n </div>\n ) : (\n <div class=\"date-picker__field\">\n <input\n type=\"text\"\n class=\"date-picker__input\"\n value={this.inputText}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onInput={this.handleInputChange}\n style={{ backgroundColor: this.bgColor }}\n />\n <div class=\"date-picker__actions\">\n {this.clearable && this.value && !this.disabled && !this.readonly && (\n <button type=\"button\" class=\"date-picker__clear\" onClick={this.handleClear} aria-label=\"Clear\">\n ×\n </button>\n )}\n <button type=\"button\" class=\"date-picker__icon-btn\" onClick={this.toggleDropdown} disabled={this.disabled} aria-label=\"Open calendar\">\n {calendarIcon}\n </button>\n </div>\n </div>\n )}\n\n {showDetails && (\n <div class=\"date-picker__details\">\n {this.error && <div class=\"date-picker__error-message\">{this.error}</div>}\n </div>\n )}\n\n {this.isOpen && (\n <div class={{\n 'date-picker__dropdown': true,\n 'date-picker__dropdown--top': this.dropdownPosition === 'top',\n }}>\n <xplor-inline-date-picker\n selectedDate={this.value}\n min={this.min}\n max={this.max}\n readonly={this.readonly}\n color={this.color}\n startWeekOnSunday={this.startWeekOnSunday}\n onDateSelected={this.handleDateSelected}\n ></xplor-inline-date-picker>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@use '../../styles/colours.scss' as colours;\n@use '../../styles/spacing.scss' as spacing;\n\n:host {\n display: block;\n}\n\n.drag-drop-wrapper {\n position: relative;\n padding-bottom: spacing.$spacing-40;\n}\n\n.drag-drop-input-hidden {\n display: none;\n}\n\n.drag-drop-card {\n background-color: colours.$secondary-50;\n border-radius: 8px;\n border: 3px dashed colours.$gray-300;\n min-height: 240px;\n padding: spacing.$spacing-16 spacing.$spacing-24 spacing.$spacing-40;\n text-align: center;\n transition: all 0.2s ease;\n cursor: default;\n\n &:hover:not(&--disabled) {\n border-color: colours.$secondary;\n }\n\n &--dragover {\n border: 3px dashed colours.$secondary;\n background-color: colours.$secondary-100;\n }\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n}\n\n.drag-drop-card__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: spacing.$spacing-16;\n padding: spacing.$spacing-8 0 0;\n}\n\n.drag-drop-card__icon {\n color: colours.$secondary;\n width: 68px;\n height: 68px;\n}\n\n.drag-drop-card__title {\n color: colours.$black;\n font-family: Inter, sans-serif;\n font-size: 24px;\n font-weight: 700;\n line-height: 32px;\n letter-spacing: 0;\n margin: 0;\n}\n\n.drag-drop-card__accepts,\n.drag-drop-card__divider {\n color: colours.$black;\n font-family: Inter, sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n margin: 0;\n}\n\n.drag-drop-card__action {\n position: absolute;\n left: 50%;\n bottom: 0;\n transform: translateX(-50%);\n}\n\n.drag-drop-card__file-info {\n margin-top: spacing.$spacing-16;\n color: colours.$gray-700;\n font-family: Inter, sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n padding: spacing.$spacing-4;\n text-align: center;\n}\n\n@media (max-width: 768px) {\n .drag-drop-card {\n min-height: 200px;\n }\n\n .drag-drop-card__title {\n font-size: 20px;\n line-height: 28px;\n }\n\n .drag-drop-card__accepts,\n .drag-drop-card__divider {\n font-size: 13px;\n line-height: 18px;\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Method } from '@stencil/core';\n\nconst DEFAULT_ACCEPT_ALL = '*' + '/' + '*';\n\n@Component({\n tag: 'xplor-drag-and-drop-input',\n styleUrl: 'xplor-drag-and-drop-input.scss',\n scoped: true,\n})\nexport class XplorDragAndDropInput {\n /**\n * Disable the file upload\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Accepted file types (e.g., 'image/png,.pdf')\n */\n @Prop() accepts: string = DEFAULT_ACCEPT_ALL;\n\n /**\n * Instruction text displayed in the drop zone\n */\n @Prop() label: string = 'Drag and drop your file here';\n\n /**\n * Browse button label text\n */\n @Prop() browseLabel: string = 'Browse Files';\n\n @State() dragover: boolean = false;\n @State() currentFile: File | null = null;\n\n /**\n * Emitted when a file is selected via drop or click\n */\n @Event() fileSelect: EventEmitter<File>;\n\n /**\n * Emitted when the current file is cleared\n */\n @Event() fileClear: EventEmitter<void>;\n\n private fileInputEl: HTMLInputElement;\n\n /**\n * Clears the currently selected file\n */\n @Method()\n async clearCurrentFile() {\n this.currentFile = null;\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n this.fileClear.emit();\n }\n\n private onDrop = (e: DragEvent) => {\n e.preventDefault();\n this.dragover = false;\n\n if (this.disabled) return;\n\n const file = e.dataTransfer?.files?.[0];\n if (file) {\n this.currentFile = file;\n this.fileSelect.emit(this.currentFile);\n }\n };\n\n private onDragOver = (e: DragEvent) => {\n e.preventDefault();\n if (!this.disabled) {\n this.dragover = true;\n }\n };\n\n private onDragEnter = (e: DragEvent) => {\n e.preventDefault();\n if (!this.disabled) {\n this.dragover = true;\n }\n };\n\n private onDragLeave = (e: DragEvent) => {\n e.preventDefault();\n this.dragover = false;\n };\n\n private onFileSelect = (e: Event) => {\n const input = e.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file) {\n this.currentFile = file;\n this.fileSelect.emit(this.currentFile);\n }\n input.value = '';\n };\n\n private openFileDialog = () => {\n if (this.disabled) {\n return;\n }\n\n this.fileInputEl?.click();\n };\n\n private getAcceptsLabel = () => {\n const accepts = this.accepts?.trim();\n if (!accepts || accepts === DEFAULT_ACCEPT_ALL) {\n return '*';\n }\n\n return accepts;\n };\n\n render() {\n return (\n <Host>\n <div class=\"drag-drop-wrapper\">\n <div\n class={{\n 'drag-drop-card': true,\n 'drag-drop-card--dragover': this.dragover,\n 'drag-drop-card--disabled': this.disabled,\n }}\n onDrop={this.onDrop}\n onDragOver={this.onDragOver}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n >\n <div class=\"drag-drop-card__content\">\n <svg\n class=\"drag-drop-card__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"60\"\n height=\"60\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04Z\"\n fill=\"currentColor\"\n opacity=\"0.3\"\n />\n <path\n d=\"M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04ZM14 13V17H10V13H7L12 8L17 13H14Z\"\n fill=\"currentColor\"\n />\n </svg>\n <h3 class=\"drag-drop-card__title\">{this.label}</h3>\n <p class=\"drag-drop-card__accepts\">Accepted file types: {this.getAcceptsLabel()}</p>\n <p class=\"drag-drop-card__divider\">or</p>\n </div>\n </div>\n\n <div class=\"drag-drop-card__action\">\n <xplor-button\n text={this.browseLabel}\n type={this.disabled ? 'disabled' : 'secondary'}\n clickAction={this.openFileDialog}\n ></xplor-button>\n </div>\n\n {this.currentFile && (\n <div class=\"drag-drop-card__file-info\">\n File Selected: {this.currentFile.name}\n </div>\n )}\n </div>\n\n <input\n id=\"drag-drop-file-select\"\n type=\"file\"\n disabled={this.disabled}\n accept={this.accepts}\n class=\"drag-drop-input-hidden\"\n ref={(el) => (this.fileInputEl = el)}\n onChange={this.onFileSelect}\n />\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-dropdown {\n display: block;\n cursor: pointer;\n margin-right: 10px;\n border: 1px solid;\n border-radius: 1rem;\n font-size: 14px;\n font-weight: 500;\n -webkit-box-pack: center;\n letter-spacing: 0.75px;\n height: 45px;\n text-align: center;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-dropdown',\n styleUrl: 'xplor-dropdown.scss',\n shadow: true,\n})\nexport class XplorDropdown {\n @Prop() options: string[];\n @Prop() selected: string;\n @Prop() handleChange: (event: Event) => void;\n\n render() {\n return (\n <Host>\n <select class=\"xplor-dropdown\" onChange={this.handleChange}>\n {this.options.map((option) => (\n <option value={option} selected={this.selected === option}>\n {option}\n </option>\n ))}\n </select>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.expansion-panel {\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n overflow: hidden;\n\n &+& {\n margin-top: -1px;\n }\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n}\n\n.expansion-panel__header {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n background-color: #f5f5f5;\n border: none;\n cursor: pointer;\n text-align: left;\n transition: background-color 0.2s;\n font-family: inherit;\n font-size: inherit;\n\n &:hover:not(:disabled) {\n background-color: #eeeeee;\n }\n\n &:focus {\n outline: 2px solid #1976d2;\n outline-offset: -2px;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.expansion-panel__header-content {\n flex: 1;\n font-weight: 500;\n}\n\n.expansion-panel__icon {\n display: inline-block;\n transition: transform 0.3s ease;\n font-size: 0.75rem;\n margin-left: 0.5rem;\n\n &--open {\n transform: rotate(180deg);\n }\n}\n\n.expansion-panel__content {\n overflow: hidden;\n transition: max-height 0.3s ease;\n background-color: #fff;\n}\n\n.expansion-panel__content-inner {\n padding: 1rem 1.5rem;\n}","import { Component, Host, h, Prop, State, Event, EventEmitter, Element } from '@stencil/core';\n\nlet nextId = 0;\n\n@Component({\n tag: 'xplor-expansion-panel',\n styleUrl: 'xplor-expansion-panel.scss',\n scoped: true,\n})\nexport class XplorExpansionPanel {\n @Element() el: HTMLElement;\n\n @Prop() disabled: boolean = false;\n @Prop({ mutable: true }) open: boolean = false;\n\n @State() panelId: string;\n @State() contentHeight: number = 0;\n\n @Event() xplorPanelToggle: EventEmitter<{ id: string; isOpen: boolean }>;\n\n private contentEl: HTMLDivElement;\n\n componentWillLoad() {\n this.panelId = `panel-${nextId++}`;\n }\n\n componentDidLoad() {\n this.updateContentHeight();\n }\n\n private updateContentHeight() {\n if (this.contentEl) {\n this.contentHeight = this.contentEl.scrollHeight;\n }\n }\n\n private handleToggle = () => {\n if (this.disabled) return;\n\n this.open = !this.open;\n this.xplorPanelToggle.emit({ id: this.panelId, isOpen: this.open });\n\n // Update height after toggle\n setTimeout(() => this.updateContentHeight(), 0);\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'expansion-panel': true,\n 'expansion-panel--open': this.open,\n 'expansion-panel--disabled': this.disabled,\n }}\n >\n <button\n class=\"expansion-panel__header\"\n onClick={this.handleToggle}\n disabled={this.disabled}\n aria-expanded={this.open ? 'true' : 'false'}\n type=\"button\"\n >\n <div class=\"expansion-panel__header-content\">\n <slot name=\"header\" />\n </div>\n <span\n class={{\n 'expansion-panel__icon': true,\n 'expansion-panel__icon--open': this.open,\n }}\n >\n ▼\n </span>\n </button>\n <div\n class=\"expansion-panel__content\"\n style={{\n maxHeight: this.open ? `${this.contentHeight}px` : '0',\n }}\n >\n <div\n class=\"expansion-panel__content-inner\"\n ref={(el) => (this.contentEl = el)}\n >\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.expansion-panels {\n display: flex;\n flex-direction: column;\n gap: 0;\n}","import { Component, Host, h, Prop, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'xplor-expansion-panels',\n styleUrl: 'xplor-expansion-panels.scss',\n scoped: true,\n})\nexport class XplorExpansionPanels {\n @Prop({ mutable: true }) value: string | string[] = [];\n @Prop() multiple: boolean = false;\n @Prop() accordion: boolean = true; // accordion mode (only one open at a time when not multiple)\n\n @State() openPanels: Set<string> = new Set();\n\n componentWillLoad() {\n if (Array.isArray(this.value)) {\n this.openPanels = new Set(this.value);\n } else if (this.value) {\n this.openPanels = new Set([this.value]);\n }\n }\n\n @Listen('xplorPanelToggle')\n handlePanelToggle(event: CustomEvent<{ id: string; isOpen: boolean }>) {\n event.stopPropagation();\n const { id, isOpen } = event.detail;\n\n if (isOpen) {\n if (this.multiple) {\n this.openPanels = new Set([...this.openPanels, id]);\n } else {\n this.openPanels = new Set([id]);\n }\n } else {\n const newPanels = new Set(this.openPanels);\n newPanels.delete(id);\n this.openPanels = newPanels;\n }\n\n this.value = this.multiple ? Array.from(this.openPanels) : Array.from(this.openPanels)[0] || '';\n }\n\n render() {\n return (\n <Host>\n <div class=\"expansion-panels\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.file-upload {\n width: 100%;\n}\n\n.file-upload__dropzone {\n border: 2px dashed #bdbdbd;\n border-radius: 8px;\n padding: 2rem;\n text-align: center;\n transition: all 0.2s ease;\n background-color: #fafafa;\n cursor: pointer;\n position: relative;\n\n &:hover:not(&--disabled) {\n border-color: #1976d2;\n background-color: #f0f7ff;\n }\n\n &--dragging {\n border-color: #1976d2;\n background-color: #e3f2fd;\n transform: scale(1.02);\n }\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background-color: #f5f5f5;\n }\n}\n\n.file-upload__input {\n position: absolute;\n width: 1px;\n height: 1px;\n opacity: 0;\n pointer-events: none;\n}\n\n.file-upload__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n}\n\n.file-upload__icon {\n color: #757575;\n}\n\n.file-upload__text {\n font-size: 1rem;\n color: #424242;\n margin: 0;\n}\n\n.file-upload__button {\n background: none;\n border: none;\n color: #1976d2;\n text-decoration: underline;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n padding: 0;\n transition: color 0.2s;\n\n &:hover:not(:disabled) {\n color: #1565c0;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n}\n\n.file-upload__hint {\n font-size: 0.875rem;\n color: #757575;\n margin: 0;\n}\n\n.file-upload__error {\n margin-top: 0.5rem;\n padding: 0.75rem;\n background-color: #ffebee;\n color: #c62828;\n border-radius: 4px;\n font-size: 0.875rem;\n border-left: 4px solid #f44336;\n}\n\n.file-upload__files {\n margin-top: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.file-upload__file {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 0.75rem;\n background-color: #f5f5f5;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n}\n\n.file-upload__preview {\n width: 48px;\n height: 48px;\n object-fit: cover;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.file-upload__file-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n min-width: 0;\n}\n\n.file-upload__file-name {\n font-size: 0.875rem;\n font-weight: 500;\n color: #212121;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.file-upload__file-size {\n font-size: 0.75rem;\n color: #757575;\n}\n\n.file-upload__remove {\n background: none;\n border: none;\n font-size: 1.5rem;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 4px;\n transition: all 0.2s;\n flex-shrink: 0;\n\n &:hover {\n background-color: #ffebee;\n color: #f44336;\n }\n\n &:focus {\n outline: 2px solid #1976d2;\n outline-offset: 2px;\n }\n}","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\nconst DEFAULT_ACCEPT_ALL = '*' + '/' + '*';\n\nexport interface UploadedFile {\n file: File;\n id: string;\n name: string;\n size: number;\n type: string;\n dataUrl?: string;\n}\n\n@Component({\n tag: 'xplor-file-upload',\n styleUrl: 'xplor-file-upload.scss',\n scoped: true,\n})\nexport class XplorFileUpload {\n /**\n * Accepted file types (e.g., 'image/png', '.pdf', 'image/star'). Default accepts all types.\n */\n @Prop() accepts: string = DEFAULT_ACCEPT_ALL;\n\n /**\n * Maximum file size in bytes\n */\n @Prop() maxSize: number = 10 * 1024 * 1024; // 10MB default\n\n /**\n * Allow multiple file selection\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Disable the file upload\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Show image preview for uploaded images\n */\n @Prop() showPreview: boolean = true;\n\n /**\n * Label text for the upload button\n */\n @Prop() label: string = 'Upload Files';\n\n @State() files: UploadedFile[] = [];\n @State() isDragging: boolean = false;\n @State() error: string = '';\n\n @Event() xplorFileAdd: EventEmitter<UploadedFile[]>;\n @Event() xplorFileRemove: EventEmitter<UploadedFile>;\n @Event() xplorError: EventEmitter<string>;\n\n private fileInputEl: HTMLInputElement;\n\n private handleFileSelect = (event: Event) => {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n this.processFiles(Array.from(input.files));\n }\n };\n\n private handleDragOver = (event: DragEvent) => {\n event.preventDefault();\n if (!this.disabled) {\n this.isDragging = true;\n }\n };\n\n private handleDragLeave = (event: DragEvent) => {\n event.preventDefault();\n this.isDragging = false;\n };\n\n private handleDrop = (event: DragEvent) => {\n event.preventDefault();\n this.isDragging = false;\n\n if (this.disabled) return;\n\n if (event.dataTransfer?.files) {\n this.processFiles(Array.from(event.dataTransfer.files));\n }\n };\n\n private processFiles(fileList: File[]) {\n this.error = '';\n const validFiles: UploadedFile[] = [];\n\n for (const file of fileList) {\n // Validate file size\n if (file.size > this.maxSize) {\n const maxSizeMB = (this.maxSize / (1024 * 1024)).toFixed(2);\n this.error = `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB`;\n this.xplorError.emit(this.error);\n continue;\n }\n\n // Validate file type if specified\n if (this.accepts !== '*/*') {\n const acceptedTypes = this.accepts.split(',').map(t => t.trim());\n const fileExtension = `.${file.name.split('.').pop()}`;\n const isAccepted = acceptedTypes.some(type => {\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.replace('/*', ''));\n }\n return type === file.type || type === fileExtension;\n });\n\n if (!isAccepted) {\n this.error = `File type \"${file.type}\" is not accepted`;\n this.xplorError.emit(this.error);\n continue;\n }\n }\n\n const uploadedFile: UploadedFile = {\n file,\n id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n name: file.name,\n size: file.size,\n type: file.type,\n };\n\n // Generate preview for images\n if (this.showPreview && file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = (e) => {\n uploadedFile.dataUrl = e.target?.result as string;\n this.files = [...this.files];\n };\n reader.readAsDataURL(file);\n }\n\n validFiles.push(uploadedFile);\n }\n\n if (validFiles.length > 0) {\n if (this.multiple) {\n this.files = [...this.files, ...validFiles];\n } else {\n this.files = [validFiles[0]];\n }\n this.xplorFileAdd.emit(validFiles);\n }\n\n // Reset input\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n }\n\n private handleRemoveFile = (fileToRemove: UploadedFile) => {\n this.files = this.files.filter(f => f.id !== fileToRemove.id);\n this.xplorFileRemove.emit(fileToRemove);\n };\n\n private handleButtonClick = () => {\n if (!this.disabled && this.fileInputEl) {\n this.fileInputEl.click();\n }\n };\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];\n }\n\n render() {\n return (\n <Host>\n <div class=\"file-upload\">\n <div\n class={{\n 'file-upload__dropzone': true,\n 'file-upload__dropzone--dragging': this.isDragging,\n 'file-upload__dropzone--disabled': this.disabled,\n }}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDrop={this.handleDrop}\n >\n <input\n ref={(el) => (this.fileInputEl = el)}\n type=\"file\"\n accept={this.accepts}\n multiple={this.multiple}\n disabled={this.disabled}\n onChange={this.handleFileSelect}\n class=\"file-upload__input\"\n />\n\n <div class=\"file-upload__content\">\n <svg class=\"file-upload__icon\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 15V3M12 3L8 7M12 3L16 7\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M2 17L2 19C2 20.1046 2.89543 21 4 21L20 21C21.1046 21 22 20.1046 22 19L22 17\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n <p class=\"file-upload__text\">\n Drag & drop files here or{' '}\n <button\n type=\"button\"\n class=\"file-upload__button\"\n onClick={this.handleButtonClick}\n disabled={this.disabled}\n >\n {this.label}\n </button>\n </p>\n <p class=\"file-upload__hint\">\n Max size: {this.formatFileSize(this.maxSize)}\n {this.accepts !== '*/*' && ` • Accepts: ${this.accepts}`}\n </p>\n </div>\n </div>\n\n {this.error && (\n <div class=\"file-upload__error\" role=\"alert\">\n {this.error}\n </div>\n )}\n\n {this.files.length > 0 && (\n <div class=\"file-upload__files\">\n {this.files.map((file) => (\n <div key={file.id} class=\"file-upload__file\">\n {file.dataUrl && (\n <img src={file.dataUrl} alt={file.name} class=\"file-upload__preview\" />\n )}\n <div class=\"file-upload__file-info\">\n <span class=\"file-upload__file-name\" title={file.name}>\n {file.name}\n </span>\n <span class=\"file-upload__file-size\">\n {this.formatFileSize(file.size)}\n </span>\n </div>\n <button\n type=\"button\"\n class=\"file-upload__remove\"\n onClick={() => this.handleRemoveFile(file)}\n aria-label={`Remove ${file.name}`}\n >\n ×\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-inline-checkbox {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n user-select: none;\n\n &__input {\n width: 1.125rem;\n height: 1.125rem;\n cursor: pointer;\n margin: 0;\n flex-shrink: 0;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.38;\n }\n }\n\n &__label {\n font-size: 1rem;\n color: rgba(0, 0, 0, 0.87);\n }\n\n &--disabled {\n cursor: not-allowed;\n\n .xplor-inline-checkbox__label {\n color: rgba(0, 0, 0, 0.38);\n }\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-inline-checkbox',\n styleUrl: 'xplor-inline-checkbox.scss',\n scoped: true,\n})\nexport class XplorInlineCheckbox {\n /**\n * Checked state\n */\n @Prop({ mutable: true }) checked: boolean = false;\n\n /**\n * Value (for use in forms)\n */\n @Prop() value: any;\n\n /**\n * Checkbox color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the checkbox is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the checkbox is indeterminate\n */\n @Prop() indeterminate: boolean = false;\n\n /**\n * Label text\n */\n @Prop() label: string = '';\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<boolean>;\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n this.xplorChange.emit(this.checked);\n };\n\n render() {\n const containerClasses = {\n 'xplor-inline-checkbox': true,\n 'xplor-inline-checkbox--disabled': this.disabled,\n 'xplor-inline-checkbox--checked': this.checked,\n };\n\n return (\n <Host>\n <label class={containerClasses}>\n <input\n type=\"checkbox\"\n class=\"xplor-inline-checkbox__input\"\n checked={this.checked}\n value={this.value}\n disabled={this.disabled}\n indeterminate={this.indeterminate}\n onChange={this.handleChange}\n style={{\n accentColor: this.color,\n }}\n />\n {this.label && <span class=\"xplor-inline-checkbox__label\">{this.label}</span>}\n <slot />\n </label>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-inline-date-picker {\n --picker-color: #008480;\n display: flex;\n border-radius: 1rem;\n background-color: white;\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),\n 0 8px 10px 1px rgba(0, 0, 0, 0.14),\n 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n overflow: hidden;\n\n &__sidebar {\n background-color: var(--picker-color);\n color: white;\n padding: 1rem;\n min-width: 180px;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n &__sidebar-year {\n font-size: 0.875rem;\n font-weight: 700;\n }\n\n &__sidebar-day {\n font-size: 1.75rem;\n font-weight: 700;\n }\n\n &__sidebar-date {\n font-size: 1.75rem;\n font-weight: 700;\n }\n\n &__calendar {\n display: flex;\n flex-direction: column;\n width: 320px;\n padding: 1rem;\n }\n\n &__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n padding: 0.5rem 0;\n }\n\n &__title {\n font-size: 1rem;\n font-weight: 700;\n color: rgba(0, 0, 0, 0.87);\n }\n\n &__arrow {\n width: 2rem;\n height: 2rem;\n border: none;\n background: transparent;\n font-size: 1.5rem;\n color: rgba(0, 0, 0, 0.54);\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:active {\n background-color: rgba(0, 0, 0, 0.08);\n }\n }\n\n &__weekdays {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.25rem;\n margin-bottom: 0.5rem;\n }\n\n &__weekday {\n text-align: center;\n font-size: 0.75rem;\n font-weight: 700;\n color: rgba(0, 0, 0, 0.6);\n padding: 0.5rem 0;\n }\n\n &__days {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0.25rem;\n }\n\n &__day {\n aspect-ratio: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.875rem;\n font-weight: 500;\n border-radius: 50%;\n cursor: pointer;\n transition: background-color 0.2s ease;\n position: relative;\n\n &:not(&--empty):not(&--disabled):hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &--empty {\n cursor: default;\n }\n\n &--today {\n color: var(--picker-color);\n font-weight: 700;\n\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n border: 2px solid var(--picker-color);\n border-radius: 50%;\n }\n }\n\n &--selected {\n background-color: var(--picker-color);\n color: white;\n font-weight: 700;\n\n &:hover {\n background-color: var(--picker-color);\n opacity: 0.9;\n }\n\n &::before {\n display: none;\n }\n }\n\n &--disabled {\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n pointer-events: none;\n }\n }\n}\n\n// Compact variant (no sidebar)\n:host([compact]) {\n .xplor-inline-date-picker {\n &__sidebar {\n display: none;\n }\n\n &__calendar {\n width: 280px;\n }\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-inline-date-picker',\n styleUrl: 'xplor-inline-date-picker.scss',\n scoped: true,\n})\nexport class XplorInlineDatePicker {\n /**\n * Selected date (YYYY-MM-DD format)\n */\n @Prop({ mutable: true }) selectedDate: string = '';\n\n /**\n * Minimum selectable date (YYYY-MM-DD format)\n */\n @Prop() min: string = '';\n\n /**\n * Maximum selectable date (YYYY-MM-DD format)\n */\n @Prop() max: string = '';\n\n /**\n * Whether the date picker is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Primary color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether to start week on Sunday (default: true)\n */\n @Prop() startWeekOnSunday: boolean = true;\n\n /**\n * Date selection event\n */\n @Event() dateSelected: EventEmitter<string>;\n\n /**\n * Month change event\n */\n @Event() monthChanged: EventEmitter<{ year: number; month: number }>;\n\n @State() currentYear: number;\n @State() currentMonth: number;\n @State() viewDate: Date;\n\n private monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n private dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n private dayNamesStartMonday = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\n componentWillLoad() {\n const date = this.selectedDate ? new Date(this.selectedDate) : new Date();\n this.currentYear = date.getFullYear();\n this.currentMonth = date.getMonth();\n this.viewDate = new Date(this.currentYear, this.currentMonth, 1);\n }\n\n private previousMonth = () => {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n this.viewDate = new Date(this.currentYear, this.currentMonth, 1);\n this.monthChanged.emit({ year: this.currentYear, month: this.currentMonth });\n };\n\n private nextMonth = () => {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n this.viewDate = new Date(this.currentYear, this.currentMonth, 1);\n this.monthChanged.emit({ year: this.currentYear, month: this.currentMonth });\n };\n\n private selectDate = (day: number) => {\n if (this.readonly) return;\n\n const date = new Date(this.currentYear, this.currentMonth, day);\n const dateString = this.formatDate(date);\n\n if (this.isDateDisabled(date)) return;\n\n this.selectedDate = dateString;\n this.dateSelected.emit(dateString);\n };\n\n private formatDate = (date: Date): string => {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n };\n\n private isDateDisabled = (date: Date): boolean => {\n if (this.min) {\n const minDate = new Date(this.min);\n if (date < minDate) return true;\n }\n if (this.max) {\n const maxDate = new Date(this.max);\n if (date > maxDate) return true;\n }\n return false;\n };\n\n private isToday = (day: number): boolean => {\n const today = new Date();\n return (\n day === today.getDate() &&\n this.currentMonth === today.getMonth() &&\n this.currentYear === today.getFullYear()\n );\n };\n\n private isSelected = (day: number): boolean => {\n if (!this.selectedDate) return false;\n const selected = new Date(this.selectedDate);\n return (\n day === selected.getDate() &&\n this.currentMonth === selected.getMonth() &&\n this.currentYear === selected.getFullYear()\n );\n };\n\n private getDaysInMonth = (): number => {\n return new Date(this.currentYear, this.currentMonth + 1, 0).getDate();\n };\n\n private getFirstDayOfMonth = (): number => {\n const firstDay = new Date(this.currentYear, this.currentMonth, 1).getDay();\n return this.startWeekOnSunday ? firstDay : (firstDay === 0 ? 6 : firstDay - 1);\n };\n\n private renderCalendarDays = () => {\n const daysInMonth = this.getDaysInMonth();\n const firstDay = this.getFirstDayOfMonth();\n const days = [];\n\n // Empty cells for days before the first of the month\n for (let i = 0; i < firstDay; i++) {\n days.push(<div class=\"xplor-inline-date-picker__day xplor-inline-date-picker__day--empty\"></div>);\n }\n\n // Days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(this.currentYear, this.currentMonth, day);\n const isDisabled = this.isDateDisabled(date);\n const isToday = this.isToday(day);\n const isSelected = this.isSelected(day);\n\n days.push(\n <div\n class={{\n 'xplor-inline-date-picker__day': true,\n 'xplor-inline-date-picker__day--today': isToday,\n 'xplor-inline-date-picker__day--selected': isSelected,\n 'xplor-inline-date-picker__day--disabled': isDisabled,\n }}\n onClick={() => !isDisabled && this.selectDate(day)}\n >\n {day}\n </div>\n );\n }\n\n return days;\n };\n\n private getSidebarDate = () => {\n const date = this.selectedDate ? new Date(this.selectedDate) : new Date();\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n return {\n year: date.getFullYear(),\n day: dayNames[date.getDay()],\n date: `${monthNames[date.getMonth()]} ${date.getDate()}`,\n };\n };\n\n render() {\n const sidebarDate = this.getSidebarDate();\n const dayHeaders = this.startWeekOnSunday ? this.dayNames : this.dayNamesStartMonday;\n\n return (\n <Host>\n <div class=\"xplor-inline-date-picker\" style={{ '--picker-color': this.color }}>\n <div class=\"xplor-inline-date-picker__sidebar\">\n <div class=\"xplor-inline-date-picker__sidebar-year\">{sidebarDate.year}</div>\n <div class=\"xplor-inline-date-picker__sidebar-day\">{sidebarDate.day},</div>\n <div class=\"xplor-inline-date-picker__sidebar-date\">{sidebarDate.date}</div>\n </div>\n\n <div class=\"xplor-inline-date-picker__calendar\">\n <div class=\"xplor-inline-date-picker__header\">\n <button\n type=\"button\"\n class=\"xplor-inline-date-picker__arrow\"\n onClick={this.previousMonth}\n aria-label=\"Previous month\"\n >\n ‹\n </button>\n <div class=\"xplor-inline-date-picker__title\">\n {this.monthNames[this.currentMonth]} {this.currentYear}\n </div>\n <button\n type=\"button\"\n class=\"xplor-inline-date-picker__arrow\"\n onClick={this.nextMonth}\n aria-label=\"Next month\"\n >\n ›\n </button>\n </div>\n\n <div class=\"xplor-inline-date-picker__weekdays\">\n {dayHeaders.map((day) => (\n <div class=\"xplor-inline-date-picker__weekday\">{day}</div>\n ))}\n </div>\n\n <div class=\"xplor-inline-date-picker__days\">{this.renderCalendarDays()}</div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n}\n\n.xplor-inline-switch {\n --switch-color: #008480;\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n user-select: none;\n\n &__input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n &__track {\n position: relative;\n width: 2.25rem;\n height: 1.25rem;\n background-color: rgba(0, 0, 0, 0.38);\n border-radius: 0.625rem;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n }\n\n &__thumb {\n position: absolute;\n top: 0.125rem;\n left: 0.125rem;\n width: 1rem;\n height: 1rem;\n background-color: white;\n border-radius: 50%;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n }\n\n &__label {\n font-size: 1rem;\n color: rgba(0, 0, 0, 0.87);\n }\n\n // Checked state\n &--checked {\n .xplor-inline-switch__track {\n background-color: var(--switch-color);\n }\n\n .xplor-inline-switch__thumb {\n transform: translateX(1rem);\n }\n }\n\n // Disabled state\n &--disabled {\n cursor: not-allowed;\n opacity: 0.6;\n\n .xplor-inline-switch__track {\n background-color: rgba(0, 0, 0, 0.12);\n }\n\n .xplor-inline-switch__label {\n color: rgba(0, 0, 0, 0.38);\n }\n\n // Keep color when disabled but checked\n &.xplor-inline-switch--checked {\n .xplor-inline-switch__track {\n background-color: var(--switch-color);\n opacity: 0.5;\n }\n\n .xplor-inline-switch__thumb {\n background-color: white;\n }\n }\n }\n\n // Hover effect\n &:not(&--disabled):hover {\n .xplor-inline-switch__thumb {\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\n }\n }\n\n // Focus effect\n &__input:focus + &__track {\n outline: 2px solid var(--switch-color);\n outline-offset: 2px;\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-inline-switch',\n styleUrl: 'xplor-inline-switch.scss',\n scoped: true,\n})\nexport class XplorInlineSwitch {\n /**\n * Checked state\n */\n @Prop({ mutable: true }) checked: boolean = false;\n\n /**\n * Value (for use in forms)\n */\n @Prop() value: any;\n\n /**\n * Switch color (applies when checked)\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the switch is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Label text\n */\n @Prop() label: string = '';\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<boolean>;\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n this.xplorChange.emit(this.checked);\n };\n\n render() {\n const containerClasses = {\n 'xplor-inline-switch': true,\n 'xplor-inline-switch--disabled': this.disabled,\n 'xplor-inline-switch--checked': this.checked,\n };\n\n return (\n <Host>\n <label class={containerClasses} style={{ '--switch-color': this.color }}>\n <input\n type=\"checkbox\"\n class=\"xplor-inline-switch__input\"\n checked={this.checked}\n value={this.value}\n disabled={this.disabled}\n onChange={this.handleChange}\n />\n <span class=\"xplor-inline-switch__track\">\n <span class=\"xplor-inline-switch__thumb\"></span>\n </span>\n {this.label && <span class=\"xplor-inline-switch__label\">{this.label}</span>}\n <slot />\n </label>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-file {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n &__label {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n padding: 0.875rem 1rem;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n background-color: white;\n cursor: pointer;\n transition: border-color 0.2s ease;\n gap: 0.75rem;\n\n &:hover:not(.xplor-input-file--disabled &) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n\n &:focus-within {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n }\n\n &--disabled {\n .xplor-input-file__field {\n background-color: rgba(0, 0, 0, 0.04);\n cursor: not-allowed;\n }\n\n .xplor-input-file__placeholder,\n .xplor-input-file__icon {\n color: rgba(0, 0, 0, 0.38);\n }\n }\n\n &__icon {\n font-size: 1.25rem;\n color: rgba(0, 0, 0, 0.54);\n flex-shrink: 0;\n }\n\n &__content {\n flex: 1;\n min-width: 0;\n }\n\n &__placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &__chips {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n }\n\n &__chip {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.75rem;\n background-color: #673AB7;\n color: white;\n border-radius: 1rem;\n font-size: 0.875rem;\n max-width: 100%;\n }\n\n &__chip-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &__chip-size {\n font-size: 0.75rem;\n opacity: 0.8;\n white-space: nowrap;\n }\n\n &__additional {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-left: 0.5rem;\n }\n\n &__clear {\n position: relative;\n width: 1.5rem;\n height: 1.5rem;\n border: none;\n background: transparent;\n color: rgba(0, 0, 0, 0.54);\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:active {\n background-color: rgba(0, 0, 0, 0.08);\n }\n }\n\n &__input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n &__counter {\n font-size: 0.75rem;\n color: rgba(0, 0, 0, 0.6);\n padding: 0 1rem;\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-file',\n styleUrl: 'xplor-input-file.scss',\n scoped: true,\n})\nexport class XplorInputFile {\n private fileInputRef: HTMLInputElement;\n\n /**\n * Input label\n */\n @Prop() label: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = 'Choose file(s)';\n\n /**\n * Border/focus color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether multiple files can be selected\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Accepted file types\n */\n @Prop() accept: string = '';\n\n /**\n * Maximum number of chips to show\n */\n @Prop() maxChips: number = 1;\n\n /**\n * Whether to show file counter\n */\n @Prop() counter: boolean = true;\n\n /**\n * Whether to show file size\n */\n @Prop() showSize: number = 1000;\n\n /**\n * Prepend inner icon (default: paperclip)\n */\n @Prop() prependInnerIcon: string = '📎';\n\n /**\n * Files selected\n */\n @State() selectedFiles: File[] = [];\n\n /**\n * Attach/change event\n */\n @Event() attach: EventEmitter<File[]>;\n\n /**\n * Clear event\n */\n @Event() xplorClear: EventEmitter<void>;\n\n private handleFileChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n if (target.files) {\n this.selectedFiles = Array.from(target.files);\n this.attach.emit(this.selectedFiles);\n }\n };\n\n private handleClear = () => {\n this.selectedFiles = [];\n if (this.fileInputRef) {\n this.fileInputRef.value = '';\n }\n this.xplorClear.emit();\n };\n\n private formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];\n };\n\n render() {\n const containerClasses = {\n 'xplor-input-file': true,\n 'xplor-input-file--disabled': this.disabled,\n };\n\n const visibleFiles = this.selectedFiles.slice(0, this.maxChips);\n const additionalCount = this.selectedFiles.length - this.maxChips;\n\n return (\n <Host>\n <div class={containerClasses}>\n {this.label && (\n <label class=\"xplor-input-file__label\">{this.label}</label>\n )}\n\n <div class=\"xplor-input-file__field\">\n <span class=\"xplor-input-file__icon\">{this.prependInnerIcon}</span>\n\n <div class=\"xplor-input-file__content\">\n {this.selectedFiles.length === 0 ? (\n <span class=\"xplor-input-file__placeholder\">{this.placeholder}</span>\n ) : (\n <div class=\"xplor-input-file__chips\">\n {visibleFiles.map((file) => (\n <div class=\"xplor-input-file__chip\" key={file.name}>\n <span class=\"xplor-input-file__chip-text\">{file.name}</span>\n {this.showSize && file.size && (\n <span class=\"xplor-input-file__chip-size\">\n ({this.formatFileSize(file.size)})\n </span>\n )}\n </div>\n ))}\n {additionalCount > 0 && (\n <span class=\"xplor-input-file__additional\">\n +{additionalCount} additional file{additionalCount > 1 ? 's' : ''}\n </span>\n )}\n </div>\n )}\n </div>\n\n {this.selectedFiles.length > 0 && !this.disabled && (\n <button\n type=\"button\"\n class=\"xplor-input-file__clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n >\n ✕\n </button>\n )}\n\n <input\n ref={(el) => (this.fileInputRef = el)}\n type=\"file\"\n class=\"xplor-input-file__input\"\n multiple={this.multiple}\n accept={this.accept}\n disabled={this.disabled}\n onChange={this.handleFileChange}\n />\n </div>\n\n {this.counter && this.selectedFiles.length > 0 && (\n <div class=\"xplor-input-file__counter\">\n {this.selectedFiles.length} file{this.selectedFiles.length > 1 ? 's' : ''} selected\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-search {\n display: flex;\n flex-direction: column;\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n background-color: white;\n transition: border-color 0.2s ease;\n padding-right: 0.375rem;\n\n &:hover:not(.xplor-input-search--disabled &) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n }\n\n &--focused {\n .xplor-input-search__field {\n border-color: #008480;\n border-width: 2px;\n padding-right: calc(0.375rem - 1px);\n }\n\n .xplor-input-search__input {\n padding-left: calc(1rem - 1px);\n }\n }\n\n &__input {\n flex: 1;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: none;\n outline: none;\n background: transparent;\n min-width: 0;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:disabled {\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n }\n }\n\n &__button {\n min-height: 0;\n min-width: 0;\n height: 2.5rem;\n width: 2.5rem;\n padding: 0;\n border: none;\n border-radius: 4px;\n background-color: #008480;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n flex-shrink: 0;\n\n &:hover:not(:disabled) {\n background-color: #006D6A;\n }\n\n &:active:not(:disabled) {\n background-color: #005755;\n }\n\n &:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n }\n }\n\n &__icon {\n width: 1.25rem;\n height: 1.25rem;\n fill: currentColor;\n }\n\n // Density variants\n &--compact {\n .xplor-input-search__input {\n padding: 0.625rem 1rem;\n }\n\n .xplor-input-search__button {\n height: 2rem;\n width: 2rem;\n }\n\n .xplor-input-search__icon {\n width: 1rem;\n height: 1rem;\n }\n }\n\n &--comfortable {\n .xplor-input-search__input {\n padding: 1rem 1rem;\n }\n\n .xplor-input-search__button {\n height: 2.75rem;\n width: 2.75rem;\n }\n\n .xplor-input-search__icon {\n width: 1.375rem;\n height: 1.375rem;\n }\n }\n\n &--disabled {\n .xplor-input-search__field {\n background-color: rgba(0, 0, 0, 0.04);\n }\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-search',\n styleUrl: 'xplor-input-search.scss',\n scoped: true,\n})\nexport class XplorInputSearch {\n /**\n * Search value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = 'Search...';\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Button/focus color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Density (compact, default, comfortable)\n */\n @Prop() density: 'compact' | 'default' | 'comfortable' = 'default';\n\n /**\n * Search event (triggered on button click or Enter key)\n */\n @Event() search: EventEmitter<string>;\n\n @State() isFocused: boolean = false;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n };\n\n private handleSearch = () => {\n this.search.emit(this.value);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n this.handleSearch();\n }\n };\n\n render() {\n const containerClasses = {\n 'xplor-input-search': true,\n [`xplor-input-search--${this.density}`]: true,\n 'xplor-input-search--focused': this.isFocused,\n 'xplor-input-search--disabled': this.disabled,\n };\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"xplor-input-search__field\">\n <input\n type=\"text\"\n class=\"xplor-input-search__input\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n onKeyDown={this.handleKeyDown}\n onFocus={() => (this.isFocused = true)}\n onBlur={() => (this.isFocused = false)}\n style={{\n backgroundColor: this.bgColor,\n }}\n />\n\n <slot name=\"append-inner\">\n <button\n type=\"button\"\n class=\"xplor-input-search__button\"\n onClick={this.handleSearch}\n disabled={this.disabled}\n data-testid=\"input-search-button\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"xplor-input-search__icon\">\n <path d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" />\n </svg>\n </button>\n </slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-select {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n &__label {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.875rem 1rem;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n background-color: white;\n cursor: pointer;\n transition: border-color 0.2s ease;\n gap: 0.5rem;\n\n &:hover:not(.xplor-input-select--disabled &) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n }\n\n &--open {\n .xplor-input-select__field {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n }\n\n &--error {\n .xplor-input-select__field {\n border-color: #d32f2f;\n }\n }\n\n &--disabled {\n .xplor-input-select__field {\n background-color: rgba(0, 0, 0, 0.04);\n cursor: not-allowed;\n }\n\n .xplor-input-select__value {\n color: rgba(0, 0, 0, 0.38);\n }\n }\n\n &__value {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: rgba(0, 0, 0, 0.87);\n }\n\n &__arrow {\n font-size: 0.75rem;\n color: rgba(0, 0, 0, 0.54);\n transition: transform 0.2s ease;\n flex-shrink: 0;\n }\n\n &__menu {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: 0.25rem;\n max-height: 300px;\n overflow-y: auto;\n background-color: white;\n border-radius: 0.5rem;\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),\n 0px 8px 10px 1px rgba(0, 0, 0, 0.14),\n 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n }\n\n &__empty {\n padding: 1rem;\n text-align: center;\n color: rgba(0, 0, 0, 0.6);\n }\n\n &__option {\n display: flex;\n align-items: center;\n padding: 0.875rem 1.25rem;\n cursor: pointer;\n transition: background-color 0.2s ease;\n gap: 0.75rem;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &--selected {\n background-color: rgba(0, 132, 128, 0.08);\n }\n }\n\n &__checkbox {\n flex-shrink: 0;\n width: 1.125rem;\n height: 1.125rem;\n cursor: pointer;\n }\n\n &__option-content {\n flex: 1;\n min-width: 0;\n }\n\n &__option-title {\n font-size: 1rem;\n color: rgba(0, 0, 0, 0.87);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &__option-subtitle {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n\n &__helper-text {\n color: rgba(0, 0, 0, 0.6);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\nexport interface SelectOption {\n value: any;\n title: string;\n subtitle?: string;\n [key: string]: any;\n}\n\n@Component({\n tag: 'xplor-input-select',\n styleUrl: 'xplor-input-select.scss',\n scoped: true,\n})\nexport class XplorInputSelect {\n private selectRef: HTMLDivElement;\n\n /**\n * Selected value(s)\n */\n @Prop({ mutable: true }) value: any | any[] = null;\n\n /**\n * Input label\n */\n @Prop() label: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = 'Select...';\n\n /**\n * Options array\n */\n @Prop() options: SelectOption[] = [];\n\n /**\n * Whether multiple selection is allowed\n */\n @Prop() multiple: boolean = false;\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Border/focus color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the select is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the select is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Whether to hide validation details\n */\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n\n /**\n * Error message\n */\n @Prop() error: string = '';\n\n /**\n * Helper text\n */\n @Prop() helperText: string = '';\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<any>;\n\n @State() isOpen: boolean = false;\n @State() isFocused: boolean = false;\n\n componentDidLoad() {\n document.addEventListener('click', this.handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n\n private handleOutsideClick = (event: MouseEvent) => {\n if (this.selectRef && !this.selectRef.contains(event.target as Node)) {\n this.isOpen = false;\n }\n };\n\n private toggleDropdown = () => {\n if (!this.disabled && !this.readonly) {\n this.isOpen = !this.isOpen;\n }\n };\n\n private handleOptionClick = (option: SelectOption) => {\n if (this.multiple) {\n const currentValue = Array.isArray(this.value) ? this.value : [];\n const index = currentValue.findIndex((v) => v === option.value);\n\n if (index > -1) {\n this.value = currentValue.filter((_, i) => i !== index);\n } else {\n this.value = [...currentValue, option.value];\n }\n } else {\n this.value = option.value;\n this.isOpen = false;\n }\n\n this.xplorChange.emit(this.value);\n };\n\n private isSelected = (option: SelectOption): boolean => {\n if (this.multiple) {\n const currentValue = Array.isArray(this.value) ? this.value : [];\n return currentValue.includes(option.value);\n }\n return this.value === option.value;\n };\n\n private getDisplayValue = (): string => {\n if (this.multiple) {\n const currentValue = Array.isArray(this.value) ? this.value : [];\n if (currentValue.length === 0) return this.placeholder;\n\n const selectedOptions = this.options.filter((opt) =>\n currentValue.includes(opt.value)\n );\n return `${selectedOptions.length} selected`;\n }\n\n const selectedOption = this.options.find((opt) => opt.value === this.value);\n return selectedOption ? selectedOption.title : this.placeholder;\n };\n\n render() {\n const containerClasses = {\n 'xplor-input-select': true,\n 'xplor-input-select--open': this.isOpen,\n 'xplor-input-select--focused': this.isFocused,\n 'xplor-input-select--disabled': this.disabled,\n 'xplor-input-select--error': !!this.error,\n };\n\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && (this.error || this.helperText));\n\n return (\n <Host>\n <div class={containerClasses} ref={(el) => (this.selectRef = el)}>\n {this.label && (\n <label class=\"xplor-input-select__label\">\n {this.label}\n {this.required && <span class=\"xplor-input-select__required\">*</span>}\n </label>\n )}\n\n <div class=\"xplor-input-select__field\" onClick={this.toggleDropdown}>\n <div class=\"xplor-input-select__value\">\n {this.getDisplayValue()}\n </div>\n <span class=\"xplor-input-select__arrow\">{this.isOpen ? '▲' : '▼'}</span>\n </div>\n\n {this.isOpen && (\n <div class=\"xplor-input-select__menu\">\n {this.options.length === 0 ? (\n <div class=\"xplor-input-select__empty\">No options available</div>\n ) : (\n this.options.map((option) => (\n <div\n key={option.value}\n class={{\n 'xplor-input-select__option': true,\n 'xplor-input-select__option--selected': this.isSelected(option),\n }}\n onClick={() => this.handleOptionClick(option)}\n >\n {this.multiple && (\n <input\n type=\"checkbox\"\n class=\"xplor-input-select__checkbox\"\n checked={this.isSelected(option)}\n readOnly\n />\n )}\n <div class=\"xplor-input-select__option-content\">\n <div class=\"xplor-input-select__option-title\">{option.title}</div>\n {option.subtitle && (\n <div class=\"xplor-input-select__option-subtitle\">{option.subtitle}</div>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n\n {showDetails && (\n <div class=\"xplor-input-select__details\">\n {this.error && <div class=\"xplor-input-select__error-message\">{this.error}</div>}\n {!this.error && this.helperText && <div class=\"xplor-input-select__helper-text\">{this.helperText}</div>}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n width: 100%;\n}\n\n.input-send {\n display: flex;\n gap: 0.5rem;\n align-items: stretch;\n width: 100%;\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n}\n\n.input-send__input {\n flex: 1;\n padding: 0.75rem 1rem;\n border: 1px solid #bdbdbd;\n border-radius: 4px;\n font-family: inherit;\n font-size: 1rem;\n line-height: 1.5;\n color: #212121;\n background-color: #fff;\n transition: border-color 0.2s, box-shadow 0.2s;\n\n &:focus {\n outline: none;\n border-color: #1976d2;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n }\n\n &::placeholder {\n color: #9e9e9e;\n }\n\n &:disabled {\n background-color: #f5f5f5;\n cursor: not-allowed;\n }\n}\n\n.input-send__button {\n flex-shrink: 0;\n}","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-send',\n styleUrl: 'xplor-input-send.scss',\n scoped: true,\n})\nexport class XplorInputSend {\n @Prop() placeholder: string = 'Type a message...';\n @Prop() disabled: boolean = false;\n @Prop() maxLength: number;\n @Prop({ mutable: true }) value: string = '';\n @Prop() buttonText: string = 'Send';\n @Prop() buttonType: 'primary' | 'secondary' | 'ghost' = 'primary';\n\n @State() internalValue: string = '';\n\n @Event() xplorSend: EventEmitter<string>;\n @Event() xplorValueChange: EventEmitter<string>;\n\n private inputEl: HTMLInputElement;\n\n componentWillLoad() {\n this.internalValue = this.value;\n }\n\n private handleInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.internalValue = input.value;\n this.value = input.value;\n this.xplorValueChange.emit(input.value);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.handleSend();\n }\n };\n\n private handleSend = () => {\n if (this.disabled || !this.internalValue.trim()) {\n return;\n }\n\n this.xplorSend.emit(this.internalValue.trim());\n this.internalValue = '';\n this.value = '';\n\n // Focus back on input after sending\n if (this.inputEl) {\n this.inputEl.focus();\n }\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'input-send': true,\n 'input-send--disabled': this.disabled,\n }}\n >\n <input\n ref={(el) => (this.inputEl = el)}\n type=\"text\"\n class=\"input-send__input\"\n placeholder={this.placeholder}\n value={this.internalValue}\n onInput={this.handleInput}\n onKeyDown={this.handleKeyDown}\n disabled={this.disabled}\n maxLength={this.maxLength}\n />\n <xplor-button\n class=\"input-send__button\"\n text={this.buttonText}\n type={this.disabled || !this.internalValue.trim() ? 'disabled' : this.buttonType}\n onClick={this.handleSend}\n />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-text {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n &__label {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n &__input {\n width: 100%;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n outline: none;\n transition: border-color 0.2s ease;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:hover:not(:disabled) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n\n &:focus {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n\n &:disabled {\n background-color: rgba(0, 0, 0, 0.04);\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n }\n\n &:read-only {\n background-color: rgba(0, 0, 0, 0.04);\n }\n }\n\n &--error {\n .xplor-input-text__input {\n border-color: #d32f2f;\n }\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n\n &__helper-text {\n color: rgba(0, 0, 0, 0.6);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-text',\n styleUrl: 'xplor-input-text.scss',\n scoped: true,\n})\nexport class XplorInputText {\n /**\n * Input value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Input label\n */\n @Prop() label: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = '';\n\n /**\n * Input type (text, email, password, number, etc.)\n */\n @Prop() type: string = 'text';\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Border/focus color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Whether to hide validation details\n */\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n\n /**\n * Error message\n */\n @Prop() error: string = '';\n\n /**\n * Helper text\n */\n @Prop() helperText: string = '';\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Input event\n */\n @Event() xplorInput: EventEmitter<string>;\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<string>;\n\n /**\n * Focus event\n */\n @Event() xplorFocus: EventEmitter<FocusEvent>;\n\n /**\n * Blur event\n */\n @Event() xplorBlur: EventEmitter<FocusEvent>;\n\n @State() isFocused: boolean = false;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorInput.emit(this.value);\n };\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorChange.emit(this.value);\n };\n\n private handleFocus = (event: FocusEvent) => {\n this.isFocused = true;\n this.xplorFocus.emit(event);\n };\n\n private handleBlur = (event: FocusEvent) => {\n this.isFocused = false;\n this.xplorBlur.emit(event);\n };\n\n render() {\n const containerClasses = {\n 'xplor-input-text': true,\n 'xplor-input-text--focused': this.isFocused,\n 'xplor-input-text--disabled': this.disabled,\n 'xplor-input-text--error': !!this.error,\n };\n\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && (this.error || this.helperText));\n\n return (\n <Host>\n <div class={containerClasses}>\n {this.label && (\n <label class=\"xplor-input-text__label\">\n {this.label}\n {this.required && <span class=\"xplor-input-text__required\">*</span>}\n </label>\n )}\n\n <div class=\"xplor-input-text__field\">\n <input\n type={this.type}\n class=\"xplor-input-text__input\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n style={{\n backgroundColor: this.bgColor,\n }}\n />\n <slot name=\"append-inner\" />\n </div>\n\n {showDetails && (\n <div class=\"xplor-input-text__details\">\n {this.error && <div class=\"xplor-input-text__error-message\">{this.error}</div>}\n {!this.error && this.helperText && <div class=\"xplor-input-text__helper-text\">{this.helperText}</div>}\n </div>\n )}\n\n <slot name=\"append\" />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-text-area {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n &__label {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: flex-start;\n }\n\n &__input {\n width: 100%;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n outline: none;\n resize: vertical;\n min-height: 56px;\n transition: border-color 0.2s ease;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:hover:not(:disabled) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n\n &:focus {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n\n &:disabled {\n background-color: rgba(0, 0, 0, 0.04);\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n resize: none;\n }\n\n &:read-only {\n background-color: rgba(0, 0, 0, 0.04);\n }\n }\n\n &__clear {\n position: absolute;\n right: 0.75rem;\n top: 0.75rem;\n width: 1.5rem;\n height: 1.5rem;\n border: none;\n background: transparent;\n color: rgba(0, 0, 0, 0.54);\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:active {\n background-color: rgba(0, 0, 0, 0.08);\n }\n }\n\n &--error {\n .xplor-input-text-area__input {\n border-color: #d32f2f;\n }\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n\n &__helper-text {\n color: rgba(0, 0, 0, 0.6);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-text-area',\n styleUrl: 'xplor-input-text-area.scss',\n scoped: true,\n})\nexport class XplorInputTextArea {\n /**\n * Input value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Input label\n */\n @Prop() label: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = '';\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Border/focus color\n */\n @Prop() color: string = '#008480';\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Whether to show clear button\n */\n @Prop() clearable: boolean = true;\n\n /**\n * Number of rows\n */\n @Prop() rows: number = 3;\n\n /**\n * Whether to hide validation details\n */\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n\n /**\n * Error message\n */\n @Prop() error: string = '';\n\n /**\n * Helper text\n */\n @Prop() helperText: string = '';\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Input event\n */\n @Event() xplorInput: EventEmitter<string>;\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<string>;\n\n /**\n * Clear event\n */\n @Event() xplorClear: EventEmitter<void>;\n\n @State() isFocused: boolean = false;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.xplorInput.emit(this.value);\n };\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.xplorChange.emit(this.value);\n };\n\n private handleClear = () => {\n this.value = '';\n this.xplorClear.emit();\n this.xplorChange.emit(this.value);\n };\n\n render() {\n const containerClasses = {\n 'xplor-input-text-area': true,\n 'xplor-input-text-area--focused': this.isFocused,\n 'xplor-input-text-area--disabled': this.disabled,\n 'xplor-input-text-area--error': !!this.error,\n };\n\n const showClearButton = this.clearable && this.value && !this.readonly && !this.disabled;\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && (this.error || this.helperText));\n\n return (\n <Host>\n <div class={containerClasses}>\n {this.label && (\n <label class=\"xplor-input-text-area__label\">\n {this.label}\n {this.required && <span class=\"xplor-input-text-area__required\">*</span>}\n </label>\n )}\n\n <div class=\"xplor-input-text-area__field\">\n <textarea\n class=\"xplor-input-text-area__input\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n rows={this.rows}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={() => (this.isFocused = true)}\n onBlur={() => (this.isFocused = false)}\n style={{\n backgroundColor: this.bgColor,\n }}\n />\n {showClearButton && (\n <button\n type=\"button\"\n class=\"xplor-input-text-area__clear\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n >\n ✕\n </button>\n )}\n </div>\n\n {showDetails && (\n <div class=\"xplor-input-text-area__details\">\n {this.error && <div class=\"xplor-input-text-area__error-message\">{this.error}</div>}\n {!this.error && this.helperText && <div class=\"xplor-input-text-area__helper-text\">{this.helperText}</div>}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.input-secondary {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n &__label {\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n &__input {\n width: 100%;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 16px;\n outline: none;\n transition: border-color 0.2s ease, border-width 0.2s ease;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:hover:not(:disabled) {\n border-color: rgba(0, 0, 0, 0.6);\n }\n\n &:focus {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n\n &:disabled {\n background-color: rgba(0, 0, 0, 0.04);\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n }\n\n &:read-only {\n background-color: rgba(0, 0, 0, 0.04);\n }\n }\n\n &--dirty {\n .input-secondary__input {\n border-color: #008480;\n border-width: 2px;\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n }\n\n &--error {\n .input-secondary__input {\n border-color: #d32f2f;\n }\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n\n &__helper-text {\n color: rgba(0, 0, 0, 0.6);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-text-secondary',\n styleUrl: 'xplor-input-text-secondary.scss',\n scoped: true,\n})\nexport class XplorInputTextSecondary {\n @Prop({ mutable: true }) value: string = '';\n @Prop() label: string = '';\n @Prop() placeholder: string = '';\n @Prop() type: string = 'text';\n @Prop() bgColor: string = 'white';\n @Prop() disabled: boolean = false;\n @Prop() readonly: boolean = false;\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n @Prop() error: string = '';\n @Prop() helperText: string = '';\n @Prop() required: boolean = false;\n @Prop() isDirty: boolean = false;\n\n @Event() xplorInput: EventEmitter<string>;\n @Event() xplorChange: EventEmitter<string>;\n @Event() xplorFocus: EventEmitter<FocusEvent>;\n @Event() xplorBlur: EventEmitter<FocusEvent>;\n\n @State() isFocused: boolean = false;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorInput.emit(this.value);\n };\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorChange.emit(this.value);\n };\n\n private handleFocus = (event: FocusEvent) => {\n this.isFocused = true;\n this.xplorFocus.emit(event);\n };\n\n private handleBlur = (event: FocusEvent) => {\n this.isFocused = false;\n this.xplorBlur.emit(event);\n };\n\n render() {\n const containerClasses = {\n 'input-secondary': true,\n 'input-secondary--focused': this.isFocused,\n 'input-secondary--disabled': this.disabled,\n 'input-secondary--error': !!this.error,\n 'input-secondary--dirty': this.isDirty,\n };\n\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && (this.error || this.helperText));\n\n return (\n <Host>\n <div class={containerClasses}>\n {this.label && (\n <label class=\"input-secondary__label\">\n {this.label}\n {this.required && <span class=\"input-secondary__required\">*</span>}\n </label>\n )}\n\n <div class=\"input-secondary__field\">\n <input\n type={this.type}\n class=\"input-secondary__input\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n style={{\n backgroundColor: this.bgColor,\n }}\n />\n <slot name=\"append-inner\" />\n </div>\n\n {showDetails && (\n <div class=\"input-secondary__details\">\n {this.error && <div class=\"input-secondary__error-message\">{this.error}</div>}\n {!this.error && this.helperText && <div class=\"input-secondary__helper-text\">{this.helperText}</div>}\n </div>\n )}\n\n <slot name=\"append\" />\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.xplor-input-title {\n width: 100%;\n height: 39px;\n font-size: 28px;\n font-family: inherit;\n font-weight: 400;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.42);\n outline: none;\n padding: 0 0 4px 0;\n background: transparent;\n transition: border-color 0.2s ease;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:hover:not(:disabled) {\n border-bottom-color: rgba(0, 0, 0, 0.87);\n }\n\n &:focus {\n border-bottom-width: 2px;\n border-bottom-color: #008480;\n padding-bottom: 3px;\n }\n\n &:disabled {\n color: rgba(0, 0, 0, 0.38);\n border-bottom-color: rgba(0, 0, 0, 0.26);\n cursor: not-allowed;\n }\n\n &:read-only {\n color: rgba(0, 0, 0, 0.6);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-input-title',\n styleUrl: 'xplor-input-title.scss',\n scoped: true,\n})\nexport class XplorInputTitle {\n /**\n * Input value\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Input placeholder\n */\n @Prop() placeholder: string = '';\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Input event\n */\n @Event() xplorInput: EventEmitter<string>;\n\n /**\n * Change event\n */\n @Event() xplorChange: EventEmitter<string>;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorInput.emit(this.value);\n };\n\n private handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.xplorChange.emit(this.value);\n };\n\n render() {\n return (\n <Host>\n <input\n type=\"text\"\n class=\"xplor-input-title\"\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n onInput={this.handleInput}\n onChange={this.handleChange}\n />\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n.x-link {\n display: block;\n padding: 0.5rem 0;\n text-decoration: none;\n color: var(--xplor-link-color);\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n@Component({\n tag: 'xplor-links',\n styleUrl: 'xplor-links.css',\n shadow: true,\n})\nexport class XplorLinks {\n @Prop() brand: string;\n render() {\n return (\n <Host class={`theme-${this.brand}`}>\n <a class=\"x-link\" href=\"https://google.com\">\n {' '}\n googole this is a link{' '}\n </a>\n <div class=\"bg-black p-2 rounded-md flex justify-center\">\n <h1 class=\"text-primary font-sans\">This is a Stencil component using Tailwind</h1>\n </div>\n <div class=\"bg-white py-24 sm:py-32\">\n <div class=\"mx-auto grid max-w-7xl gap-20 px-6 lg:px-8 xl:grid-cols-3\">\n <div class=\"max-w-xl\">\n <h2 class=\"text-pretty text-3xl font-semibold tracking-tight text-gray-900 sm:text-4xl\">\n Meet our leadership\n </h2>\n <p class=\"mt-6 text-lg/8 text-gray-600\">\n We’re a dynamic group of individuals who are passionate about what we do and dedicated to delivering the\n best results for our clients.\n </p>\n </div>\n <ul role=\"list\" class=\"grid gap-x-8 gap-y-12 sm:grid-cols-2 sm:gap-y-16 xl:col-span-2\">\n <li>\n <div class=\"flex items-center gap-x-6\">\n <img\n class=\"size-16 rounded-full\"\n src=\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80\"\n alt=\"\"\n />\n <div>\n <h3 class=\"text-base/7 font-semibold tracking-tight text-gray-900\">Leslie Alexander</h3>\n <p class=\"text-sm/6 font-semibold text-indigo-600\">Co-Founder / CEO</p>\n </div>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: contents;\n}\n\n.xplor-modal {\n &__backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2000;\n padding: 1rem;\n }\n\n &__card {\n position: relative;\n background-color: white;\n border-radius: 1rem;\n padding: 1rem;\n max-width: 90vw;\n display: flex;\n flex-direction: column;\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),\n 0px 24px 38px 3px rgba(0, 0, 0, 0.14),\n 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n animation: xplor-modal-fade-in 0.2s ease-out;\n\n &--scrollable {\n overflow: hidden;\n }\n }\n\n &__close-btn {\n position: absolute;\n top: 1rem;\n right: 1rem;\n width: 2.25rem;\n height: 2.25rem;\n border: none;\n background-color: white;\n color: #008480;\n font-size: 1rem;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease;\n z-index: 1;\n\n &:hover {\n background-color: #E6F7F7;\n }\n\n &:active {\n background-color: #D0EBD2;\n }\n }\n\n &__title {\n padding-right: 3rem;\n margin-bottom: 0.5rem;\n font-size: 1.5rem;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.87);\n white-space: normal;\n word-wrap: break-word;\n }\n\n &__subtitle {\n margin: 0.5rem;\n margin-bottom: 1rem;\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n }\n\n &__body {\n flex: 1;\n overflow-y: auto;\n margin-bottom: 1rem;\n\n &--no-title {\n margin-top: 3.5rem;\n }\n }\n\n &__actions {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin: 1rem 0;\n }\n\n &__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 3rem;\n }\n\n &__spinner {\n width: 3rem;\n height: 3rem;\n border: 4px solid rgba(0, 0, 0, 0.1);\n border-top-color: #008480;\n border-radius: 50%;\n animation: xplor-spinner-rotate 0.8s linear infinite;\n }\n}\n\n@keyframes xplor-modal-fade-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes xplor-spinner-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, Watch } from '@stencil/core';\n\n@Component({\n tag: 'xplor-modal',\n styleUrl: 'xplor-modal.scss',\n scoped: true,\n})\nexport class XplorModal {\n /**\n * Whether the modal is open\n */\n @Prop({ mutable: true }) open: boolean = false;\n\n /**\n * Modal width\n */\n @Prop() width: string = '600px';\n\n /**\n * Maximum width\n */\n @Prop() maxWidth: string = '90%';\n\n /**\n * Maximum height\n */\n @Prop() maxHeight: string = '90%';\n\n /**\n * Whether the modal content is scrollable\n */\n @Prop() scrollable: boolean = true;\n\n /**\n * Persistent mode - prevents closing on backdrop click\n */\n @Prop() persistent: boolean = false;\n\n /**\n * Loading state\n */\n @Prop() loading: boolean = false;\n\n /**\n * Whether to show the title area (for spacing)\n */\n @Prop() showTitle: boolean = true;\n\n /**\n * Close event\n */\n @Event() xplorClose: EventEmitter<void>;\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n }\n\n disconnectedCallback() {\n document.body.style.overflow = '';\n }\n\n private handleBackdropClick = () => {\n if (!this.persistent) {\n this.closeModal();\n }\n };\n\n private handleCardClick = (event: Event) => {\n event.stopPropagation();\n };\n\n private closeModal = () => {\n this.open = false;\n this.xplorClose.emit();\n };\n\n render() {\n if (!this.open) {\n return null;\n }\n\n const cardClasses = {\n 'xplor-modal__card': true,\n 'xplor-modal__card--scrollable': this.scrollable,\n };\n\n const bodyClasses = {\n 'xplor-modal__body': true,\n 'xplor-modal__body--no-title': !this.showTitle,\n };\n\n return (\n <Host>\n <div class=\"xplor-modal__backdrop\" onClick={this.handleBackdropClick}>\n <div\n class={cardClasses}\n style={{\n width: this.width,\n maxWidth: this.maxWidth,\n maxHeight: this.maxHeight,\n }}\n onClick={this.handleCardClick}\n >\n <button\n type=\"button\"\n class=\"xplor-modal__close-btn\"\n onClick={this.closeModal}\n aria-label=\"Close modal\"\n data-testid=\"common-modal-close-button\"\n >\n ✕\n </button>\n\n <div class=\"xplor-modal__title\">\n <slot name=\"title\" />\n </div>\n\n <div class=\"xplor-modal__subtitle\">\n <slot name=\"subtitle\" />\n </div>\n\n <div class={bodyClasses}>\n {this.loading ? (\n <div class=\"xplor-modal__loading\">\n <div class=\"xplor-modal__spinner\"></div>\n </div>\n ) : (\n <slot name=\"body\" />\n )}\n </div>\n\n <div class=\"xplor-modal__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'xplor-modal-persistent',\n shadow: false,\n})\nexport class XplorModalPersistent {\n /**\n * Whether the modal is open\n */\n @Prop() open: boolean = false;\n\n /**\n * Modal width\n */\n @Prop() width: string = '600px';\n\n /**\n * Maximum width\n */\n @Prop() maxWidth: string = '90%';\n\n /**\n * Maximum height\n */\n @Prop() maxHeight: string = '90%';\n\n /**\n * Loading state\n */\n @Prop() loading: boolean = false;\n\n /**\n * Close event\n */\n @Event() xplorClose: EventEmitter<void>;\n\n render() {\n return (\n <Host>\n <xplor-modal\n open={this.open}\n width={this.width}\n maxWidth={this.maxWidth}\n maxHeight={this.maxHeight}\n loading={this.loading}\n persistent={true}\n onXplorClose={() => this.xplorClose.emit()}\n >\n <slot name=\"title\" slot=\"title\" />\n <slot name=\"subtitle\" slot=\"subtitle\" />\n <slot name=\"body\" slot=\"body\" />\n <slot name=\"actions\" slot=\"actions\" />\n </xplor-modal>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.nav-tabs {\n display: flex;\n border-bottom: 2px solid #e0e0e0;\n gap: 0;\n\n &--grow {\n .nav-tabs__tab {\n flex: 1;\n }\n }\n}\n\n.nav-tabs__tab {\n background: none;\n border: none;\n padding: 0.75rem 1.5rem;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n color: #757575;\n position: relative;\n transition: color 0.2s;\n white-space: nowrap;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n &::after {\n content: '';\n position: absolute;\n bottom: -2px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: transparent;\n transition: background-color 0.2s;\n }\n\n &:hover:not(&--disabled) {\n color: #424242;\n }\n\n &:focus {\n outline: 2px solid #1976d2;\n outline-offset: -2px;\n }\n\n &--active {\n color: #1976d2;\n\n &::after {\n background-color: #1976d2;\n }\n\n .nav-tabs--secondary & {\n color: #9c27b0;\n\n &::after {\n background-color: #9c27b0;\n }\n }\n }\n\n &--disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n}\n\n.nav-tabs--secondary {\n .nav-tabs__tab {\n &:hover:not(.nav-tabs__tab--disabled) {\n color: #7b1fa2;\n }\n }\n}","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\nexport interface NavTabItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n tag: 'xplor-nav-tabs',\n styleUrl: 'xplor-nav-tabs.scss',\n scoped: true,\n})\nexport class XplorNavTabs {\n @Prop({ mutable: true }) value: string;\n @Prop() items: NavTabItem[] = [];\n @Prop() color: 'primary' | 'secondary' = 'primary';\n @Prop() grow: boolean = false;\n\n @Event() xplorChange: EventEmitter<string>;\n\n private handleTabClick = (item: NavTabItem) => {\n if (item.disabled) return;\n\n this.value = item.value;\n this.xplorChange.emit(item.value);\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'nav-tabs': true,\n 'nav-tabs--grow': this.grow,\n [`nav-tabs--${this.color}`]: true,\n }}\n role=\"tablist\"\n >\n {this.items.map((item) => (\n <button\n key={item.value}\n class={{\n 'nav-tabs__tab': true,\n 'nav-tabs__tab--active': this.value === item.value,\n 'nav-tabs__tab--disabled': item.disabled,\n }}\n onClick={() => this.handleTabClick(item)}\n disabled={item.disabled}\n role=\"tab\"\n aria-selected={this.value === item.value ? 'true' : 'false'}\n type=\"button\"\n >\n {item.label}\n </button>\n ))}\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use '../../styles/colours.scss' as colours;\n@use '../../styles/spacing.scss' as spacing;\n\n:host {\n display: block;\n}\n\n.section-card {\n background: white;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n\n &--outlined {\n border: 2px solid #D0C7E5;\n }\n\n &--rounded {\n border-radius: 1rem;\n }\n\n &__body {\n flex: 1;\n }\n\n &__actions {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.5rem;\n\n &:empty {\n display: none;\n }\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-section-card',\n styleUrl: 'xplor-section-card.scss',\n scoped: true,\n})\nexport class XplorSectionCard {\n @Prop() outlined: boolean = true;\n @Prop() rounded: boolean = true;\n @Prop() padding: string = '1.5rem';\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'section-card': true,\n 'section-card--outlined': this.outlined,\n 'section-card--rounded': this.rounded,\n }}\n style={{ padding: this.padding }}\n >\n <slot name=\"title\" />\n <slot name=\"subtitle\" />\n <div class=\"section-card__body\">\n <slot name=\"body\" />\n </div>\n <div class=\"section-card__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n font-size: 1rem;\n}\n\n.section-heading {\n line-height: 1.33;\n letter-spacing: 3.2px;\n text-transform: uppercase;\n font-weight: 500;\n\n &--small {\n font-size: 0.9em;\n }\n\n &--large {\n font-size: 1.1em;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-section-heading',\n styleUrl: 'xplor-section-heading.scss',\n scoped: true,\n})\nexport class XplorSectionHeading {\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n @Prop() text: string;\n\n render() {\n return (\n <Host>\n <span\n class={{\n 'section-heading': true,\n 'section-heading--small': this.size === 'small',\n 'section-heading--large': this.size === 'large',\n }}\n >\n <slot>{this.text}</slot>\n </span>\n </Host>\n );\n }\n}\n","import {\n Component,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n h,\n Watch,\n Host,\n} from '@stencil/core';\nconst getIconType = (sortType) => {\n switch (sortType) {\n case 'asc':\n return 'arrow-up';\n case 'desc':\n return 'arrow-down';\n default:\n return 'dash';\n }\n};\n\n@Component({\n tag: 'xplor-table',\n // styleUrl: 'xplor-table.scss',\n shadow: true,\n})\n\nexport class XplorTable {\n @Element() el: HTMLXplorTableElement;\n\n /**\n * The header values for each column.\n */\n @Prop() columns?: string[];\n\n /**\n * The data for the body of the table.\n */\n @Prop() data?: string[][];\n\n /**\n * When true, the first column of the table is sticky and will cover the leftmost rows in a horizontally scrollable container.\n */\n @Prop() freeze?: boolean;\n\n /**\n * Toggles a selectable checkbox for each row in the table\n */\n @Prop() multiselect?: boolean;\n\n /**\n * Toggles an optional styling of the background of each even row of the table body.\n */\n @Prop() striped?: boolean;\n\n /**\n * The values for the input for each row when multiselect is activated.\n */\n @Prop() selectedValues?: string[] = [];\n\n /**\n * Toggles to show the sort button on each table head\n */\n @Prop() isSortable?: boolean = true;\n\n /**\n * Manually determined if the column is sortable\n */\n @Prop() sortableColumns?: boolean[] = [];\n\n @State() areAllSelected = false;\n\n @State() rowData: string[][];\n\n @State() hasScrolled = false;\n\n @State() selected: (string | boolean)[];\n\n @State() sortTypeArray: ('asc' | 'desc' | null)[] = [];\n @State() selectedDateRange: string = 'All';\n /**\n * Callback function that is called when the checkbox for a row of a\n * `multiselect` table is checked\n */\n @State() currentPage: number = 1;\n @State() totalPages: number = 3;\n @Event() tableSelect: EventEmitter;\n private handlePagination = (direction: 'first' | 'prev' | 'next' | 'last') => {\n switch (direction) {\n case 'first':\n this.currentPage = 1;\n break;\n case 'prev':\n if (this.currentPage > 1) this.currentPage--;\n break;\n case 'next':\n if (this.currentPage < this.totalPages) this.currentPage++;\n break;\n case 'last':\n this.currentPage = this.totalPages;\n break;\n }\n };\n \n private handleDateRangeChange = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n this.selectedDateRange = target.value;\n };\n\n private handleFilterReports = () => {\n console.log('Filter reports clicked');\n };\n\n private handleDownloadAll = () => {\n console.log('Download all clicked');\n };\n\n // private handleDownloadReport = (index: number) => {\n // console.log(`Download report ${index} clicked`);\n // };\n private selectAllValue = Math.random().toString(36).slice(2);\n\n private container!: HTMLDivElement;\n\n private selectAll = (e: Event) => {\n const { target } = e;\n\n if (!(target instanceof HTMLInputElement)) return;\n\n const { checked } = target;\n\n this.areAllSelected = checked;\n\n this.selected =\n this.selectedValues.length > 0\n ? // gets all checkboxes in body\n Array.from(\n this.el.querySelectorAll('tbody td:first-child input'),\n ).map((input: HTMLInputElement) =>\n // if the select all checkbox is checked, return\n // the value from the current input. If false, set all to false.\n checked ? input?.value : checked,\n )\n : this.selected.map(() => checked);\n this.onChange();\n };\n\n private selectOne = (e: Event, checkboxIdx: number) => {\n const { target } = e;\n if (!(target instanceof HTMLInputElement)) return;\n\n const { checked, value } = target;\n\n this.areAllSelected = false;\n this.selected = this.selected.map((v, selectedIdx) => {\n // if the checkbox that fired the event is not the current idx\n // return the current value\n if (selectedIdx !== checkboxIdx) return v;\n\n /**\n * If there are values in this.selectedValues, either return the value\n * for that checkbox or false, dependent on if the checkbox is checked or not.\n * If there are no values in this.selectedValues, return the value\n * to either true or false, dependent on if the checkbox is checked or not.\n *\n */\n return this.selectedValues.length > 0\n ? checked\n ? value\n : checked\n : checked;\n });\n this.onChange();\n };\n\n private onChange = () => {\n this.tableSelect.emit({\n selected: this.selected,\n areAllSelected: this.areAllSelected,\n });\n };\n\n private onScroll = () => {\n this.hasScrolled = this.container.scrollLeft > 0;\n };\n\n private sortBy = (col: number) => {\n this.sortTypeArray = this.sortTypeArray.map((val, idx) => {\n if (idx !== col) return null;\n\n switch (val) {\n case 'asc':\n return 'desc';\n case 'desc':\n return null;\n default:\n return 'asc';\n }\n });\n\n const handleSort = (a, b) => {\n if (a[col].toLocaleLowerCase() < b[col].toLocaleLowerCase()) {\n return -1;\n }\n if (a[col].toLocaleLowerCase() > b[col].toLocaleLowerCase()) {\n return 1;\n }\n return 0;\n };\n\n if (this.sortTypeArray[col] === 'asc') {\n this.rowData.sort((a, b) => handleSort(a, b));\n } else if (this.sortTypeArray[col] === 'desc') {\n this.rowData.sort((a, b) => handleSort(b, a));\n } else {\n this.rowData = this.data;\n this.sortTypeArray[col] = null;\n }\n\n this.rowData = Array.from(this.rowData);\n this.render();\n };\n\n private setData = () => {\n this.rowData = this.data !== undefined ? Array.from(this.data) : [];\n };\n\n // Add this method to paginate rowData\nprivate getPaginatedData(): string[][] {\n const startIndex = (this.currentPage - 1) * 10;\n const endIndex = startIndex + 10;\n return this.rowData.slice(startIndex, endIndex);\n}\n\n @Watch('data')\n watchData() {\n this.setData();\n }\n\n componentWillLoad() {\n this.areAllSelected = false;\n this.setData();\n this.selected = new Array(this.rowData.length).fill(false);\n // Fill the Sort Type Array to default null depends on number of columns\n this.sortTypeArray = this.columns && this.columns.map(() => null);\n }\n\n render() {\n let className = 'xpl-table';\n if (this.striped) className += ' xpl-table--striped';\n if (this.freeze) className += ' xpl-table--freeze';\n if (this.hasScrolled) className += ' xpl-table--has-scrolled';\n\n const paginatedData = this.getPaginatedData();\n\n return (\n <Host class=\"xplor-table\">\n <div class=\"bg-white rounded-lg shadow-sm border border-gray-200 p-6 max-w-6xl mx-auto\">\n <div\n class=\"xpl-table-container\"\n onScroll={this.onScroll}\n ref={(el) => {\n this.container = el;\n }}\n >\n {/* Header */}\n <div class=\"mb-6\">\n <h1 class=\"text-xl font-semibold text-gray-900 mb-4\">Head Counts Report</h1>\n \n {/* Filter Controls */}\n <div class=\"flex flex-wrap items-center gap-4 mb-6\">\n <div class=\"flex items-center gap-2\">\n <label class=\"text-sm text-gray-600 font-medium\">Date Range</label>\n <select \n class=\"border border-gray-300 rounded px-3 py-1.5 text-sm bg-white focus:outline-none focus:ring-2 focus:ring-teal-500 focus:border-teal-500\"\n // value={this.selectedDateRange}\n onInput={this.handleDateRangeChange}\n >\n <option value=\"All\">All</option>\n <option value=\"Today\">Today</option>\n <option value=\"This Week\">This Week</option>\n <option value=\"This Month\">This Month</option>\n <option value=\"Custom\">Custom Range</option>\n </select>\n <button class=\"p-1.5 border border-gray-300 rounded hover:bg-gray-50\">\n <svg class=\"w-4 h-4 text-gray-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"/>\n </svg>\n </button>\n </div>\n \n <button \n onClick={this.handleFilterReports}\n class=\"bg-teal-600 hover:bg-teal-700 text-white px-4 py-1.5 rounded text-sm font-medium transition-colors\"\n >\n Filter Reports\n </button>\n \n <button \n onClick={this.handleDownloadAll}\n class=\"flex items-center gap-2 text-gray-600 hover:text-gray-800 text-sm\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"/>\n </svg>\n Download All\n </button>\n </div>\n </div>\n\n <table class={`w-full ${className}`}>\n {this.columns && (\n <thead>\n {this.columns.map((column, i) => {\n const iconType = getIconType(\n this.sortTypeArray[i],\n );\n const isColumnSortable = !!(\n this.isSortable &&\n this.sortableColumns[i]\n );\n return (\n <th class=\"text-left py-3 px-4 text-sm font-medium text-gray-600\">\n {this.multiselect && i === 0 ? (\n <label\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n debugger\n if (isColumnSortable) {\n this.sortBy(i);\n }\n }}\n class={\n isColumnSortable\n ? 'cursor-pointer'\n : ''\n }\n >\n <input\n checked={\n this.areAllSelected\n }\n id=\"__xpl-table-th\"\n // appear indeterminate when at least one but not all\n // are selected\n\n indeterminate={\n !this\n .areAllSelected &&\n this.selected.some(\n (a) => a,\n )\n }\n onClick={(e) => {\n e.stopPropagation();\n this.selectAll(e);\n }}\n type=\"checkbox\"\n value={`select-all-${this.selectAllValue}`}\n />\n {column}\n {isColumnSortable &&\n !!this.sortTypeArray[\n i\n ] && (\n <xpl-icon\n icon={iconType}\n size={16}\n ></xpl-icon>\n )}\n </label>\n ) : (\n <label\n onClick={() =>\n isColumnSortable &&\n this.sortBy(i)\n }\n class={\n isColumnSortable\n ? 'cursor-pointer'\n : ''\n }\n >\n {column}\n {isColumnSortable &&\n !!this.sortTypeArray[\n i\n ] && (\n <svg width=\"11\" height=\"6\" viewBox=\"0 0 11 6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.5 5.5L5.5 0.5L0.5 5.5L10.5 5.5Z\" fill=\"currentColor\"></path></svg>\n // <xpl-icon\n // icon={iconType}\n // size={16}\n // id=\"__xpl-icon-sort\"\n // ></xpl-icon>\n )}\n </label>\n )}\n </th>\n );\n })}\n </thead>\n )}\n <tbody>\n {paginatedData.map((row, rowNum) => (\n <tr\n class={`border-b border-gray-100 hover:bg-gray-50`}\n >\n {row.map((cell, i) => (\n <td class=\"py-3 px-4 text-sm text-gray-900\">\n {this.multiselect && i === 0 ? (\n <label\n class=\"flex items-center gap-2\"\n htmlFor={`__xpl-table-row-${\n rowNum\n }`}\n >\n <input\n id={`__xpl-table-row-${\n rowNum\n }`}\n checked={\n !!this.selected[\n rowNum\n ]\n }\n type=\"checkbox\"\n onChange={(e) =>\n this.selectOne(\n e,\n rowNum,\n )\n }\n value={\n this.selectedValues\n .length > 0\n ? this\n .selectedValues[\n rowNum\n ]\n : `xpl-table-checkbox-${rowNum}`\n }\n />\n <div innerHTML={cell} />\n </label>\n ) : (\n <div innerHTML={cell} />\n )}\n </td>\n ))}\n </tr>\n ))}\n \n </tbody>\n </table>\n {/* Pagination */}\n <div id=\"pagination\" class=\"w-full flex items-center justify-between mt-6 text-sm\">\n <div class=\"flex items-center gap-2\">\n <button \n onClick={() => this.handlePagination('first')}\n class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n disabled={this.currentPage === 1}\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11 19l-7-7 7-7m8 14l-7-7 7-7\"/>\n </svg>\n </button>\n <button \n onClick={() => this.handlePagination('prev')}\n class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n disabled={this.currentPage === 1}\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\"/>\n </svg>\n </button>\n </div>\n\n <span class=\"text-gray-600\">\n Page {this.currentPage} of {this.totalPages}\n </span>\n\n <div class=\"flex items-center gap-2\">\n <button \n onClick={() => this.handlePagination('next')}\n class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n disabled={this.currentPage === this.totalPages}\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"/>\n </svg>\n </button>\n <button \n onClick={() => this.handlePagination('last')}\n class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n disabled={this.currentPage === this.totalPages}\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 5l7 7-7 7M5 5l7 7-7 7\"/>\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n </Host>\n\n );\n }\n}\n\n\n\n\n////////////// ######################## ///////////////////////////////// This code is commented out as it is not currently in use.\n\n\n\n\n// import { Component, Prop, State, h } from '@stencil/core';\n// import { StyledHost } from '../x-styles/x-styles';\n\n// interface ReportData {\n// submitDate: string;\n// time: string;\n// educatorName: string;\n// room: string;\n// }\n\n\n// @Component({\n// tag: 'xplor-table',\n// styleUrl: 'xplor-table.scss',\n// shadow: true,\n// })\n\n\n// export class XplorTable {\n// @State() selectedDateRange: string = 'All';\n// @State() currentPage: number = 1;\n// @State() totalPages: number = 1;\n// @State() sortBy: string = '';\n// @State() sortDirection: 'asc' | 'desc' = 'asc';\n// @Prop() tablecContent: ReportData[]\n// private reportData: ReportData[] = [\n// {\n// submitDate: '14/01/2025',\n// time: '10:01:21',\n// educatorName: 'Andi Kelman',\n// room: '2025 Holiday Programme'\n// },\n// {\n// submitDate: '10/10/2023',\n// time: '10:44:46',\n// educatorName: 'Andi Kelman',\n// room: '3 Kinder 3 - 23'\n// },\n// {\n// submitDate: '10/10/2023',\n// time: '10:36:15',\n// educatorName: 'Andi Kelman',\n// room: '3 Kinder 3 - 23'\n// },\n// {\n// submitDate: '28/03/2023',\n// time: '15:51:51',\n// educatorName: 'Cara Bierenkrant',\n// room: '8 KINDER 8 - CRECHE Kinder 8 2023'\n// }\n// ];\n\n// private handleDateRangeChange = (event: Event) => {\n// const target = event.target as HTMLSelectElement;\n// this.selectedDateRange = target.value;\n// };\n\n// private handleFilterReports = () => {\n// console.log('Filter reports clicked');\n// };\n\n// private handleDownloadAll = () => {\n// console.log('Download all clicked');\n// };\n\n// private handleDownloadReport = (index: number) => {\n// console.log(`Download report ${index} clicked`);\n// };\n\n// private handleSort = (column: string) => {\n// if (this.sortBy === column) {\n// this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n// } else {\n// this.sortBy = column;\n// this.sortDirection = 'asc';\n// }\n// };\n\n// private handlePagination = (direction: 'first' | 'prev' | 'next' | 'last') => {\n// switch (direction) {\n// case 'first':\n// this.currentPage = 1;\n// break;\n// case 'prev':\n// if (this.currentPage > 1) this.currentPage--;\n// break;\n// case 'next':\n// if (this.currentPage < this.totalPages) this.currentPage++;\n// break;\n// case 'last':\n// this.currentPage = this.totalPages;\n// break;\n// }\n// };\n\n// private getSortIcon(column: string) {\n// if (this.sortBy !== column) {\n// // Unsorted\n// return (\n// <svg class=\"w-3 h-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\"/>\n// </svg>\n// );\n// }\n// if (this.sortDirection === 'asc') {\n// // Ascending\n// return (\n// <svg class=\"w-3 h-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 15l4-4 4 4\"/>\n// </svg>\n// );\n// }\n// // Descending\n// return (\n// <svg class=\"w-3 h-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M16 9l-4 4-4-4\"/>\n// </svg>\n// );\n// }\n\n// render() {\n// return (\n// <StyledHost class=\"xplor-table\">\n// <div class=\"bg-white rounded-lg shadow-sm border border-gray-200 p-6 max-w-6xl mx-auto\">\n// {/* Header */}\n// <div class=\"mb-6\">\n// <h1 class=\"text-xl font-semibold text-gray-900 mb-4\">Head Counts Report</h1>\n \n// {/* Filter Controls */}\n// <div class=\"flex flex-wrap items-center gap-4 mb-6\">\n// <div class=\"flex items-center gap-2\">\n// <label class=\"text-sm text-gray-600 font-medium\">Date Range</label>\n// <select \n// class=\"border border-gray-300 rounded px-3 py-1.5 text-sm bg-white focus:outline-none focus:ring-2 focus:ring-teal-500 focus:border-teal-500\"\n// // value={this.selectedDateRange}\n// onInput={this.handleDateRangeChange}\n// >\n// <option value=\"All\">All</option>\n// <option value=\"Today\">Today</option>\n// <option value=\"This Week\">This Week</option>\n// <option value=\"This Month\">This Month</option>\n// <option value=\"Custom\">Custom Range</option>\n// </select>\n// <button class=\"p-1.5 border border-gray-300 rounded hover:bg-gray-50\">\n// <svg class=\"w-4 h-4 text-gray-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"/>\n// </svg>\n// </button>\n// </div>\n \n// <button \n// onClick={this.handleFilterReports}\n// class=\"bg-teal-600 hover:bg-teal-700 text-white px-4 py-1.5 rounded text-sm font-medium transition-colors\"\n// >\n// Filter Reports\n// </button>\n \n// <button \n// onClick={this.handleDownloadAll}\n// class=\"flex items-center gap-2 text-gray-600 hover:text-gray-800 text-sm\"\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"/>\n// </svg>\n// Download All\n// </button>\n// </div>\n// </div>\n\n// {/* Table */}\n// <div class=\"overflow-x-auto\">\n// <table class=\"w-full\">\n// <thead>\n// <tr class=\"border-b border-gray-200\">\n// <th class=\"text-left py-3 px-4 text-sm font-medium text-gray-600\">\n// <button \n// onClick={() => this.handleSort('submitDate')}\n// class=\"flex items-center gap-1 hover:text-gray-900\"\n// >\n// Submit Date\n// {this.getSortIcon('submitDate')}\n// </button>\n// </th>\n// <th class=\"text-left py-3 px-4 text-sm font-medium text-gray-600\">\n// <button \n// onClick={() => this.handleSort('time')}\n// class=\"flex items-center gap-1 hover:text-gray-900\"\n// >\n// Time\n// {this.getSortIcon('time')}\n// </button>\n// </th>\n// <th class=\"text-left py-3 px-4 text-sm font-medium text-gray-600\">\n// <button \n// onClick={() => this.handleSort('educatorName')}\n// class=\"flex items-center gap-1 hover:text-gray-900\"\n// >\n// Educator Name\n// {this.getSortIcon('educatorName')}\n// </button>\n// </th>\n// <th class=\"text-left py-3 px-4 text-sm font-medium text-gray-600\">\n// <button \n// onClick={() => this.handleSort('room')}\n// class=\"flex items-center gap-1 hover:text-gray-900\"\n// >\n// Room(s)\n// {this.getSortIcon('room')}\n// </button>\n// </th>\n// <th class=\"text-center py-3 px-4 text-sm font-medium text-gray-600\">\n// Download Report\n// </th>\n// </tr>\n// </thead>\n// <tbody>\n// {this.reportData.map((row, index) => (\n// <tr key={index} class=\"border-b border-gray-100 hover:bg-gray-50\">\n// <td class=\"py-3 px-4 text-sm text-gray-900\">{row.submitDate}</td>\n// <td class=\"py-3 px-4 text-sm text-gray-900\">{row.time}</td>\n// <td class=\"py-3 px-4 text-sm text-gray-900\">{row.educatorName}</td>\n// <td class=\"py-3 px-4 text-sm text-gray-900\">{row.room}</td>\n// <td class=\"py-3 px-4 text-center\">\n// <div class=\"flex items-center justify-center gap-2\">\n// <span class=\"bg-gray-100 text-gray-700 px-2 py-1 rounded text-xs\">\n// Toggle SortBy\n// </span>\n// <button \n// onClick={() => this.handleDownloadReport(index)}\n// class=\"p-1.5 text-teal-600 hover:text-teal-800 hover:bg-teal-50 rounded\"\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"/>\n// </svg>\n// </button>\n// </div>\n// </td>\n// </tr>\n// ))}\n// </tbody>\n// </table>\n// </div>\n\n// {/* Pagination */}\n// <div class=\"flex items-center justify-between mt-6 text-sm\">\n// <div class=\"flex items-center gap-2\">\n// <button \n// onClick={() => this.handlePagination('first')}\n// class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n// disabled={this.currentPage === 1}\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11 19l-7-7 7-7m8 14l-7-7 7-7\"/>\n// </button>\n// <button \n// onClick={() => this.handlePagination('prev')}\n// class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n// disabled={this.currentPage === 1}\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\"/>\n// </button>\n// </div>\n\n// <span class=\"text-gray-600\">\n// Page {this.currentPage} of {this.totalPages}\n// </span>\n\n// <div class=\"flex items-center gap-2\">\n// <button \n// onClick={() => this.handlePagination('next')}\n// class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n// disabled={this.currentPage === this.totalPages}\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"/>\n// </button>\n// <button \n// onClick={() => this.handlePagination('last')}\n// class=\"p-1.5 text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n// disabled={this.currentPage === this.totalPages}\n// >\n// <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n// <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 5l7 7-7 7M5 5l7 7-7 7\"/>\n// </svg>\n// </button>\n// </div>\n// </div>\n// </div>\n// </StyledHost>\n// );\n// }\n// }",":host {\n display: block;\n}\n\n.text-bubble {\n border-radius: 16px;\n padding: 12px;\n color: #000;\n\n &--green {\n border: 1px solid #00B2A8;\n background: #DFF2F1;\n }\n\n &--orange {\n border: 1px solid #F28602;\n background: #FEF2E0;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'xplor-text-bubble',\n styleUrl: 'xplor-text-bubble.scss',\n scoped: true,\n})\nexport class XplorTextBubble {\n @Prop() color: 'green' | 'orange' = 'orange';\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'text-bubble': true,\n 'text-bubble--green': this.color === 'green',\n 'text-bubble--orange': this.color === 'orange',\n }}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n","@use '../../styles/colours.scss' as colours;\n@use '../../styles/spacing.scss' as spacing;\n@use '../../styles/mixins.scss' as mixins;\n\n:host {\n display: block;\n}\n\n.xplor-text-field {\n position: relative;\n width: 100%;\n\n &__wrapper {\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 16px;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n &__input-wrapper {\n position: relative;\n flex: 1;\n display: flex;\n align-items: center;\n min-height: 56px;\n padding: 0 12px;\n }\n\n &__input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-size: 1rem;\n line-height: 1.5;\n padding: 8px 0;\n color: rgba(0, 0, 0, 0.87);\n margin-top: 8px;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:disabled {\n color: rgba(0, 0, 0, 0.38);\n cursor: not-allowed;\n }\n }\n\n &__label {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n font-size: 1rem;\n color: rgba(0, 0, 0, 0.6);\n background-color: transparent;\n padding: 0 4px;\n max-width: calc(100% - 24px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &--floating {\n top: 0;\n transform: translateY(0);\n font-size: 0.75rem;\n background-color: inherit;\n }\n }\n\n &__required {\n color: colours.$error;\n margin-left: 2px;\n }\n\n &__append-inner {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: 8px;\n }\n\n &__append {\n display: flex;\n align-items: center;\n padding-right: 8px;\n }\n\n &__clear-btn {\n @include mixins.reset-button;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n color: rgba(0, 0, 0, 0.54);\n transition: all 0.2s ease;\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n color: rgba(0, 0, 0, 0.87);\n }\n\n &:focus-visible {\n @include mixins.focus-ring;\n }\n }\n\n // Outlined variant (fieldset border)\n &__outline {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n padding: 0;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 16px;\n pointer-events: none;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n &__outline-legend {\n padding: 0 4px;\n font-size: 0.75rem;\n visibility: hidden;\n max-width: 0.01px;\n transition: max-width 0.05s cubic-bezier(0, 0, 0.2, 1);\n white-space: nowrap;\n\n &--floating {\n max-width: 100%;\n transition: max-width 0.1s cubic-bezier(0.4, 0, 0.2, 1) 0.05s;\n }\n\n span {\n padding: 0 4px;\n display: inline-block;\n }\n }\n\n &__details {\n padding: 4px 12px 0;\n min-height: 22px;\n }\n\n &__error-messages {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n &__error {\n font-size: 0.75rem;\n line-height: 1.5;\n color: colours.$error;\n }\n\n // Focused state\n &--focused {\n .xplor-text-field__outline {\n border-width: 2px;\n }\n\n .xplor-text-field__label {\n color: colours.$secondary;\n }\n }\n\n // Dirty state (field has been modified)\n &--dirty {\n .xplor-text-field__outline {\n border-color: #008480;\n border-width: 2px;\n }\n\n .xplor-text-field__label {\n color: #008480;\n }\n }\n\n // Error state\n &--error {\n .xplor-text-field__outline {\n border-color: colours.$error;\n }\n\n .xplor-text-field__label {\n color: colours.$error;\n }\n }\n\n // Disabled state\n &--disabled {\n opacity: 0.6;\n\n .xplor-text-field__outline {\n border-style: dashed;\n }\n\n .xplor-text-field__input {\n cursor: not-allowed;\n }\n }\n\n // Readonly state\n &--readonly {\n .xplor-text-field__input {\n cursor: default;\n }\n }\n\n // Color variants\n &--primary {\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-color: colours.$primary;\n }\n\n .xplor-text-field__label {\n color: colours.$primary;\n }\n }\n }\n\n &--secondary {\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-color: colours.$secondary;\n }\n\n .xplor-text-field__label {\n color: colours.$secondary;\n }\n }\n }\n\n &--success {\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-color: colours.$success;\n }\n\n .xplor-text-field__label {\n color: colours.$success;\n }\n }\n }\n\n &--warning {\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-color: colours.$warning;\n }\n\n .xplor-text-field__label {\n color: colours.$warning;\n }\n }\n }\n\n &--info {\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-color: colours.$info;\n }\n\n .xplor-text-field__label {\n color: colours.$info;\n }\n }\n }\n\n // Filled variant\n &--filled {\n .xplor-text-field__wrapper {\n background-color: rgba(0, 0, 0, 0.06);\n border-radius: 4px 4px 0 0;\n }\n\n .xplor-text-field__outline {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.42);\n border-radius: 0;\n }\n\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-bottom-width: 2px;\n }\n }\n }\n\n // Underlined variant\n &--underlined {\n .xplor-text-field__wrapper {\n background-color: transparent;\n }\n\n .xplor-text-field__outline {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.42);\n border-radius: 0;\n }\n\n &.xplor-text-field--focused {\n .xplor-text-field__outline {\n border-bottom-width: 2px;\n }\n }\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Watch, Element } from '@stencil/core';\n\n@Component({\n tag: 'xplor-text-field',\n styleUrl: 'xplor-text-field.scss',\n scoped: true,\n})\nexport class XplorTextField {\n @Element() el: HTMLElement;\n\n /**\n * The current value of the text field\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * The label text for the input\n */\n @Prop() label: string = '';\n\n /**\n * Placeholder text when input is empty\n */\n @Prop() placeholder: string = '';\n\n /**\n * Input type (text, email, password, number, etc.)\n */\n @Prop() type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' = 'text';\n\n /**\n * Color variant (primary, secondary, success, error, warning, info)\n */\n @Prop() color: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' = 'secondary';\n\n /**\n * Visual variant style\n */\n @Prop() variant: 'outlined' | 'filled' | 'underlined' = 'outlined';\n\n /**\n * Background color\n */\n @Prop() bgColor: string = 'white';\n\n /**\n * Error messages to display\n */\n @Prop() errorMessages: string[] = [];\n\n /**\n * When to show details: true (always), false (never), 'auto' (only when error)\n */\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n\n /**\n * Whether the field is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the field is readonly\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Whether the field is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the field has been modified (dirty state)\n */\n @Prop() isDirty: boolean = false;\n\n /**\n * Whether the field should be clearable\n */\n @Prop() clearable: boolean = false;\n\n /**\n * Custom CSS classes to apply\n */\n @Prop() customClass: string = '';\n\n /**\n * Maximum length of input\n */\n @Prop() maxlength: number;\n\n /**\n * Minimum value (for number type)\n */\n @Prop() min: number;\n\n /**\n * Maximum value (for number type)\n */\n @Prop() max: number;\n\n /**\n * Internal focused state\n */\n @State() isFocused: boolean = false;\n\n /**\n * Internal hasValue state\n */\n @State() hasValue: boolean = false;\n\n /**\n * Emitted when value changes\n */\n @Event() valueChange: EventEmitter<string>;\n\n /**\n * Emitted when input loses focus\n */\n @Event() inputBlur: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when input gains focus\n */\n @Event() inputFocus: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when clear button is clicked\n */\n @Event() clearClick: EventEmitter<void>;\n\n private inputElement?: HTMLInputElement;\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.hasValue = !!newValue;\n }\n\n componentWillLoad() {\n this.hasValue = !!this.value;\n }\n\n private handleInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this.valueChange.emit(target.value);\n };\n\n private handleFocus = (e: FocusEvent) => {\n this.isFocused = true;\n this.inputFocus.emit(e);\n };\n\n private handleBlur = (e: FocusEvent) => {\n this.isFocused = false;\n this.inputBlur.emit(e);\n };\n\n private handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n this.value = '';\n this.valueChange.emit('');\n this.clearClick.emit();\n if (this.inputElement) {\n this.inputElement.focus();\n }\n };\n\n private get hasError(): boolean {\n return this.errorMessages && this.errorMessages.length > 0;\n }\n\n private get showDetails(): boolean {\n if (typeof this.hideDetails === 'boolean') {\n return !this.hideDetails;\n }\n // hideDetails === 'auto'\n return this.hasError;\n }\n\n private get computedClasses(): { [key: string]: boolean } {\n return {\n 'xplor-text-field': true,\n [`xplor-text-field--${this.variant}`]: true,\n [`xplor-text-field--${this.color}`]: true,\n 'xplor-text-field--focused': this.isFocused,\n 'xplor-text-field--error': this.hasError,\n 'xplor-text-field--disabled': this.disabled,\n 'xplor-text-field--readonly': this.readonly,\n 'xplor-text-field--dirty': this.isDirty,\n 'xplor-text-field--has-value': this.hasValue || this.isFocused,\n [this.customClass]: !!this.customClass,\n };\n }\n\n render() {\n const labelFloating = this.isFocused || this.hasValue;\n\n return (\n <Host>\n <div class={this.computedClasses}>\n <div class=\"xplor-text-field__wrapper\" style={{ backgroundColor: this.bgColor }}>\n <div class=\"xplor-text-field__input-wrapper\">\n {/* Label */}\n {this.label && (\n <label\n class={{\n 'xplor-text-field__label': true,\n 'xplor-text-field__label--floating': labelFloating,\n }}\n >\n <slot name=\"label\">{this.label}</slot>\n {this.required && <span class=\"xplor-text-field__required\">*</span>}\n </label>\n )}\n\n {/* Input */}\n <input\n ref={(el) => (this.inputElement = el)}\n class=\"xplor-text-field__input\"\n type={this.type}\n value={this.value}\n placeholder={this.isFocused ? this.placeholder : ''}\n disabled={this.disabled}\n readonly={this.readonly}\n required={this.required}\n maxlength={this.maxlength}\n min={this.min}\n max={this.max}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n aria-invalid={this.hasError ? 'true' : 'false'}\n aria-describedby={this.hasError ? 'error-messages' : undefined}\n />\n\n {/* Append Inner Slot */}\n <div class=\"xplor-text-field__append-inner\">\n {this.clearable && this.hasValue && !this.disabled && !this.readonly && (\n <button\n type=\"button\"\n class=\"xplor-text-field__clear-btn\"\n onClick={this.handleClear}\n aria-label=\"Clear\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" />\n </svg>\n </button>\n )}\n <slot name=\"append-inner\" />\n </div>\n\n {/* Field Outline */}\n <fieldset class=\"xplor-text-field__outline\">\n <legend class={{ 'xplor-text-field__outline-legend': true, 'xplor-text-field__outline-legend--floating': labelFloating }}>\n {labelFloating && this.label ? <span>{this.label}{this.required && '*'}</span> : <span>​</span>}\n </legend>\n </fieldset>\n </div>\n\n {/* Append Slot (outside input wrapper) */}\n <div class=\"xplor-text-field__append\">\n <slot name=\"append\" />\n </div>\n </div>\n\n {/* Details (error messages) */}\n {this.showDetails && (\n <div class=\"xplor-text-field__details\">\n {this.hasError && (\n <div id=\"error-messages\" class=\"xplor-text-field__error-messages\">\n {this.errorMessages.map((error) => (\n <div class=\"xplor-text-field__error\">{error}</div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n width: 100%;\n}\n\n.time-picker {\n position: relative;\n width: 100%;\n\n &--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n &__label {\n display: block;\n font-size: 0.875rem;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 0.25rem;\n }\n\n &__required {\n color: #d32f2f;\n margin-left: 0.25rem;\n }\n\n &__field {\n position: relative;\n display: flex;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0.23);\n border-radius: 1rem;\n transition: border-color 0.2s ease;\n background: white;\n\n &:focus-within {\n border-color: #008480;\n border-width: 2px;\n\n .time-picker__input {\n padding: calc(0.875rem - 1px) calc(1rem - 1px);\n }\n }\n }\n\n &--error &__field {\n border-color: #d32f2f;\n }\n\n &__input {\n flex: 1;\n width: 100%;\n padding: 0.875rem 1rem;\n font-size: 1rem;\n font-family: inherit;\n border: none;\n border-radius: 1rem;\n outline: none;\n background: transparent;\n\n &::placeholder {\n color: rgba(0, 0, 0, 0.38);\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n }\n\n &__actions {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding-right: 0.5rem;\n flex-shrink: 0;\n }\n\n &__clear {\n background: none;\n border: none;\n font-size: 1.25rem;\n cursor: pointer;\n padding: 0;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n color: #212121;\n }\n }\n\n &__icon-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n border-radius: 50%;\n transition: background-color 0.2s;\n\n &:hover:not(:disabled) {\n background-color: #f5f5f5;\n color: #212121;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &__icon-svg {\n display: block;\n }\n\n &__dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 1000;\n background-color: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 1rem;\n }\n\n &__columns {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n &__column {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 48px;\n\n &--period {\n margin-left: 0.5rem;\n }\n }\n\n &__separator {\n font-size: 1.25rem;\n font-weight: 600;\n color: #424242;\n padding: 0 0.125rem;\n align-self: center;\n }\n\n &__spinner-btn {\n background: none;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #757575;\n transition: background-color 0.2s, border-color 0.2s;\n width: 100%;\n\n &:hover {\n background-color: #f5f5f5;\n border-color: #bdbdbd;\n color: #212121;\n }\n }\n\n &__value {\n font-size: 1.5rem;\n font-weight: 600;\n color: #212121;\n padding: 0.5rem 0;\n text-align: center;\n min-width: 48px;\n font-variant-numeric: tabular-nums;\n\n &--period {\n font-size: 1rem;\n font-weight: 500;\n color: #008480;\n }\n }\n\n &__details {\n min-height: 1.25rem;\n padding: 0 1rem;\n font-size: 0.75rem;\n }\n\n &__error-message {\n color: #d32f2f;\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Element, Listen } from '@stencil/core';\n\n@Component({\n tag: 'xplor-time-picker',\n styleUrl: 'xplor-time-picker.scss',\n scoped: true,\n})\nexport class XplorTimePicker {\n @Element() el: HTMLElement;\n\n /** Time value in HH:mm:ss 24-hour format */\n @Prop({ mutable: true }) value: string = '';\n\n @Prop() label: string = '';\n @Prop() placeholder: string = 'Select time';\n @Prop() clearable: boolean = false;\n\n /** Auto-fill current time on focus if value is empty */\n @Prop() prefill: boolean = false;\n\n @Prop() bgColor: string = 'white';\n @Prop() showSeconds: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() readonly: boolean = false;\n @Prop() error: string = '';\n @Prop() hideDetails: boolean | 'auto' = 'auto';\n @Prop() required: boolean = false;\n\n @State() isOpen: boolean = false;\n @State() inputText: string = '';\n @State() hours: number = 12;\n @State() minutes: number = 0;\n @State() seconds: number = 0;\n @State() period: 'AM' | 'PM' = 'AM';\n @State() lastGoodValue: string = '';\n\n @Event() timeChange: EventEmitter<string>;\n @Event() xplorFocus: EventEmitter<FocusEvent>;\n @Event() xplorBlur: EventEmitter<FocusEvent>;\n @Event() xplorClear: EventEmitter<void>;\n\n componentWillLoad() {\n if (this.value) {\n this.parseValueToState(this.value);\n this.inputText = this.formatDisplayTime();\n this.lastGoodValue = this.inputText;\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n const target = event.target as Node;\n if (!this.el.contains(target)) {\n this.isOpen = false;\n }\n }\n\n /** Parse HH:mm:ss (24h) into component state */\n private parseValueToState(val: string) {\n if (!val) return;\n const parts = val.split(':');\n let h = parseInt(parts[0], 10) || 0;\n const m = parseInt(parts[1], 10) || 0;\n const s = parseInt(parts[2], 10) || 0;\n\n this.period = h >= 12 ? 'PM' : 'AM';\n if (h === 0) {\n h = 12;\n } else if (h > 12) {\n h -= 12;\n }\n\n this.hours = h;\n this.minutes = m;\n this.seconds = s;\n }\n\n /** Convert current state to HH:mm:ss (24h) */\n private stateToValue(): string {\n let h = this.hours;\n if (this.period === 'AM' && h === 12) h = 0;\n else if (this.period === 'PM' && h !== 12) h += 12;\n\n const hStr = String(h).padStart(2, '0');\n const mStr = String(this.minutes).padStart(2, '0');\n const sStr = String(this.seconds).padStart(2, '0');\n return `${hStr}:${mStr}:${sStr}`;\n }\n\n /** Format for display: \"12:00 PM\" or \"12:00:00 PM\" */\n private formatDisplayTime(): string {\n const h = this.hours;\n const m = String(this.minutes).padStart(2, '0');\n if (this.showSeconds) {\n const s = String(this.seconds).padStart(2, '0');\n return `${h}:${m}:${s} ${this.period}`;\n }\n return `${h}:${m} ${this.period}`;\n }\n\n /** Port of Vue handleOnBlur time parsing logic */\n private parseInputText(text: string): boolean {\n const raw = text.trim();\n if (!raw) return false;\n\n // Handle bare am/pm\n if (raw.toLowerCase() === 'am' || raw.toLowerCase() === 'pm') {\n this.hours = 12;\n this.minutes = 0;\n this.seconds = 0;\n this.period = raw.toLowerCase() === 'pm' ? 'PM' : 'AM';\n return true;\n }\n\n // Detect AM/PM suffix\n let suffix: 'am' | 'pm' = 'am';\n if (raw.toLowerCase().indexOf('p') !== -1) {\n suffix = 'pm';\n }\n\n // Strip am/pm text\n const sanitised = raw.replace(/(\\s*)(pm|am|p|a)/gi, '').trim();\n const withColons = sanitised.replace(/\\./g, ':');\n const splits = withColons.split(':');\n\n let hour: number;\n let minute = 0;\n let second = 0;\n\n if (splits.length === 1) {\n // No colons: interpret based on length\n const num = sanitised.trim();\n if (num.length === 3) {\n hour = parseInt(num.substring(0, 1), 10);\n minute = parseInt(num.substring(1, 3), 10);\n } else if (num.length === 4) {\n hour = parseInt(num.substring(0, 2), 10);\n minute = parseInt(num.substring(2, 4), 10);\n } else if (num.length === 6) {\n hour = parseInt(num.substring(0, 2), 10);\n minute = parseInt(num.substring(2, 4), 10);\n second = parseInt(num.substring(4, 6), 10);\n } else {\n hour = parseInt(num, 10);\n }\n } else if (splits.length === 2) {\n hour = parseInt(splits[0].trim(), 10);\n minute = parseInt(splits[1].trim(), 10);\n } else if (splits.length === 3) {\n hour = parseInt(splits[0].trim(), 10);\n minute = parseInt(splits[1].trim(), 10);\n second = parseInt(splits[2].trim(), 10);\n } else {\n return false;\n }\n\n if (isNaN(hour) || hour < 0) return false;\n if (isNaN(minute)) minute = 0;\n if (isNaN(second)) second = 0;\n\n // Handle minute overflow\n if (minute >= 60) {\n hour += Math.floor(minute / 60);\n minute = minute % 60;\n }\n\n // Normalize hour and determine AM/PM\n if (hour >= 12) {\n suffix = 'pm';\n if (hour >= 24) {\n hour = hour % 24;\n suffix = hour >= 12 ? 'pm' : 'am';\n }\n if (hour > 12) {\n hour -= 12;\n }\n }\n\n if (hour === 0) {\n hour = 12;\n suffix = 'am';\n }\n\n // Clamp seconds\n if (second >= 60) second = 59;\n\n this.hours = hour;\n this.minutes = minute;\n this.seconds = second;\n this.period = suffix === 'pm' ? 'PM' : 'AM';\n return true;\n }\n\n private emitChange() {\n const val = this.stateToValue();\n this.value = val;\n this.inputText = this.formatDisplayTime();\n this.lastGoodValue = this.inputText;\n this.timeChange.emit(val);\n }\n\n private toggleDropdown = () => {\n if (this.disabled || this.readonly) return;\n this.isOpen = !this.isOpen;\n };\n\n private handleInputFocus = (event: FocusEvent) => {\n this.xplorFocus.emit(event);\n if (this.prefill && !this.value) {\n const now = new Date();\n this.hours = now.getHours() % 12 || 12;\n this.minutes = now.getMinutes();\n this.seconds = now.getSeconds();\n this.period = now.getHours() >= 12 ? 'PM' : 'AM';\n this.emitChange();\n }\n };\n\n private handleInputBlur = (event: FocusEvent) => {\n this.xplorBlur.emit(event);\n if (this.inputText.trim() === '') {\n return;\n }\n const ok = this.parseInputText(this.inputText);\n if (ok) {\n this.emitChange();\n } else {\n // Revert to last good value\n this.inputText = this.lastGoodValue;\n }\n };\n\n private handleInputChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n this.inputText = input.value;\n };\n\n private handleClear = (event: Event) => {\n event.stopPropagation();\n this.value = '';\n this.inputText = '';\n this.lastGoodValue = '';\n this.hours = 12;\n this.minutes = 0;\n this.seconds = 0;\n this.period = 'AM';\n this.timeChange.emit('');\n this.xplorClear.emit();\n };\n\n private incrementHours = () => {\n this.hours = this.hours >= 12 ? 1 : this.hours + 1;\n this.emitChange();\n };\n\n private decrementHours = () => {\n this.hours = this.hours <= 1 ? 12 : this.hours - 1;\n this.emitChange();\n };\n\n private incrementMinutes = () => {\n if (this.minutes >= 59) {\n this.minutes = 0;\n this.incrementHours();\n } else {\n this.minutes++;\n this.emitChange();\n }\n };\n\n private decrementMinutes = () => {\n if (this.minutes <= 0) {\n this.minutes = 59;\n this.decrementHours();\n } else {\n this.minutes--;\n this.emitChange();\n }\n };\n\n private incrementSeconds = () => {\n if (this.seconds >= 59) {\n this.seconds = 0;\n this.incrementMinutes();\n } else {\n this.seconds++;\n this.emitChange();\n }\n };\n\n private decrementSeconds = () => {\n if (this.seconds <= 0) {\n this.seconds = 59;\n this.decrementMinutes();\n } else {\n this.seconds--;\n this.emitChange();\n }\n };\n\n private togglePeriod = () => {\n this.period = this.period === 'AM' ? 'PM' : 'AM';\n this.emitChange();\n };\n\n private renderChevronUp() {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"18 15 12 9 6 15\"></polyline>\n </svg>\n );\n }\n\n private renderChevronDown() {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n );\n }\n\n render() {\n const showDetails = this.hideDetails === false || (this.hideDetails === 'auto' && this.error);\n\n const clockIcon = (\n <svg class=\"time-picker__icon-svg\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <polyline points=\"12 6 12 12 16 14\"></polyline>\n </svg>\n );\n\n return (\n <Host>\n <div class={{\n 'time-picker': true,\n 'time-picker--disabled': this.disabled,\n 'time-picker--error': !!this.error,\n 'time-picker--open': this.isOpen,\n }}>\n {this.label && (\n <label class=\"time-picker__label\">\n {this.label}\n {this.required && <span class=\"time-picker__required\">*</span>}\n </label>\n )}\n\n <div class=\"time-picker__field\">\n <input\n type=\"text\"\n class=\"time-picker__input\"\n value={this.inputText}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readonly={this.readonly}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onInput={this.handleInputChange}\n style={{ backgroundColor: this.bgColor }}\n />\n <div class=\"time-picker__actions\">\n {this.clearable && this.value && !this.disabled && !this.readonly && (\n <button type=\"button\" class=\"time-picker__clear\" onClick={this.handleClear} aria-label=\"Clear\">\n ×\n </button>\n )}\n <button type=\"button\" class=\"time-picker__icon-btn\" onClick={this.toggleDropdown} disabled={this.disabled} aria-label=\"Open time picker\">\n {clockIcon}\n </button>\n </div>\n </div>\n\n {showDetails && (\n <div class=\"time-picker__details\">\n {this.error && <div class=\"time-picker__error-message\">{this.error}</div>}\n </div>\n )}\n\n {this.isOpen && (\n <div class=\"time-picker__dropdown\">\n <div class=\"time-picker__columns\">\n {/* Hours column */}\n <div class=\"time-picker__column\">\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.incrementHours} aria-label=\"Increase hours\">\n {this.renderChevronUp()}\n </button>\n <div class=\"time-picker__value\">{String(this.hours).padStart(2, '0')}</div>\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.decrementHours} aria-label=\"Decrease hours\">\n {this.renderChevronDown()}\n </button>\n </div>\n\n <div class=\"time-picker__separator\">:</div>\n\n {/* Minutes column */}\n <div class=\"time-picker__column\">\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.incrementMinutes} aria-label=\"Increase minutes\">\n {this.renderChevronUp()}\n </button>\n <div class=\"time-picker__value\">{String(this.minutes).padStart(2, '0')}</div>\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.decrementMinutes} aria-label=\"Decrease minutes\">\n {this.renderChevronDown()}\n </button>\n </div>\n\n {this.showSeconds && [\n <div class=\"time-picker__separator\">:</div>,\n <div class=\"time-picker__column\">\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.incrementSeconds} aria-label=\"Increase seconds\">\n {this.renderChevronUp()}\n </button>\n <div class=\"time-picker__value\">{String(this.seconds).padStart(2, '0')}</div>\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.decrementSeconds} aria-label=\"Decrease seconds\">\n {this.renderChevronDown()}\n </button>\n </div>\n ]}\n\n {/* AM/PM column */}\n <div class=\"time-picker__column time-picker__column--period\">\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.togglePeriod} aria-label=\"Toggle AM/PM\">\n {this.renderChevronUp()}\n </button>\n <div class=\"time-picker__value time-picker__value--period\">{this.period}</div>\n <button type=\"button\" class=\"time-picker__spinner-btn\" onClick={this.togglePeriod} aria-label=\"Toggle AM/PM\">\n {this.renderChevronDown()}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n position: relative;\n}\n\n.tooltip-trigger {\n display: inline-flex;\n cursor: pointer;\n}\n\n.tooltip {\n position: fixed;\n z-index: 9999;\n background-color: #424242;\n color: #fff;\n border-radius: 4px;\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n line-height: 1.4;\n max-width: 300px;\n word-wrap: break-word;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n pointer-events: none;\n opacity: 0;\n animation: tooltipFadeIn 0.2s ease forwards;\n}\n\n@keyframes tooltipFadeIn {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.tooltip__content {\n position: relative;\n z-index: 1;\n}\n\n.tooltip__arrow {\n position: absolute;\n width: 12px;\n height: 12px;\n background-color: #424242;\n z-index: 0;\n}\n\n.tooltip--top .tooltip__arrow {\n margin-top: -6px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.tooltip--bottom .tooltip__arrow {\n box-shadow: -2px -2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.tooltip--left .tooltip__arrow {\n margin-left: -6px;\n display: block;\n box-shadow: 2px -2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.tooltip--right .tooltip__arrow {\n box-shadow: -2px 2px 4px rgba(0, 0, 0, 0.1);\n}","import { Component, Host, h, Prop, State, Element, Listen } from '@stencil/core';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipTrigger = 'hover' | 'click' | 'manual';\n\n@Component({\n tag: 'xplor-tooltip',\n styleUrl: 'xplor-tooltip.scss',\n scoped: true,\n})\nexport class XplorTooltip {\n @Element() el: HTMLElement;\n\n @Prop() position: TooltipPosition = 'top';\n @Prop() trigger: TooltipTrigger = 'hover';\n @Prop() arrow: boolean = true;\n @Prop({ mutable: true }) open: boolean = false;\n @Prop() content: string;\n @Prop() disabled: boolean = false;\n\n @State() tooltipStyle: any = {};\n @State() arrowStyle: any = {};\n\n private triggerEl: HTMLDivElement;\n private tooltipEl: HTMLDivElement;\n private hideTimeout: any;\n\n componentDidLoad() {\n if (this.trigger === 'hover') {\n this.setupHoverListeners();\n }\n }\n\n disconnectedCallback() {\n this.cleanupListeners();\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n }\n }\n\n private setupHoverListeners() {\n if (this.triggerEl) {\n this.triggerEl.addEventListener('mouseenter', this.handleMouseEnter);\n this.triggerEl.addEventListener('mouseleave', this.handleMouseLeave);\n }\n }\n\n private cleanupListeners() {\n if (this.triggerEl) {\n this.triggerEl.removeEventListener('mouseenter', this.handleMouseEnter);\n this.triggerEl.removeEventListener('mouseleave', this.handleMouseLeave);\n }\n }\n\n private handleMouseEnter = () => {\n if (this.disabled) return;\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n }\n this.showTooltip();\n };\n\n private handleMouseLeave = () => {\n if (this.disabled) return;\n this.hideTimeout = setTimeout(() => {\n this.hideTooltip();\n }, 100);\n };\n\n private handleClick = () => {\n if (this.disabled) return;\n if (this.trigger === 'click') {\n this.open = !this.open;\n if (this.open) {\n requestAnimationFrame(() => this.updatePosition());\n }\n }\n };\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n if (this.trigger === 'click' && this.open) {\n const target = event.target as Node;\n if (!this.el.contains(target)) {\n this.open = false;\n }\n }\n }\n\n private showTooltip() {\n this.open = true;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n private hideTooltip() {\n this.open = false;\n }\n\n private updatePosition() {\n if (!this.triggerEl || !this.tooltipEl) return;\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const tooltipRect = this.tooltipEl.getBoundingClientRect();\n const gap = 8; // Space between trigger and tooltip\n const arrowSize = this.arrow ? 6 : 0;\n\n let top = 0;\n let left = 0;\n let arrowTop = '';\n let arrowLeft = '';\n let arrowTransform = '';\n\n switch (this.position) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n arrowTop = '100%';\n arrowLeft = '50%';\n arrowTransform = 'translateX(-50%) rotate(45deg)';\n break;\n\n case 'bottom':\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n arrowTop = '-6px';\n arrowLeft = '50%';\n arrowTransform = 'translateX(-50%) rotate(45deg)';\n break;\n\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - gap - arrowSize;\n arrowTop = '50%';\n arrowLeft = '100%';\n arrowTransform = 'translateY(-50%) rotate(45deg)';\n break;\n\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.right + gap + arrowSize;\n arrowTop = '50%';\n arrowLeft = '-6px';\n arrowTransform = 'translateY(-50%) rotate(45deg)';\n break;\n }\n\n // Keep tooltip within viewport\n const viewportPadding = 8;\n if (left < viewportPadding) {\n left = viewportPadding;\n } else if (left + tooltipRect.width > window.innerWidth - viewportPadding) {\n left = window.innerWidth - tooltipRect.width - viewportPadding;\n }\n\n if (top < viewportPadding) {\n top = viewportPadding;\n } else if (top + tooltipRect.height > window.innerHeight - viewportPadding) {\n top = window.innerHeight - tooltipRect.height - viewportPadding;\n }\n\n this.tooltipStyle = {\n top: `${top}px`,\n left: `${left}px`,\n };\n\n this.arrowStyle = {\n top: arrowTop,\n left: arrowLeft,\n transform: arrowTransform,\n };\n }\n\n render() {\n return (\n <Host>\n <div\n class=\"tooltip-trigger\"\n ref={(el) => (this.triggerEl = el)}\n onClick={this.handleClick}\n >\n <slot name=\"trigger\" />\n </div>\n\n {this.open && (\n <div\n class={{\n 'tooltip': true,\n [`tooltip--${this.position}`]: true,\n }}\n style={this.tooltipStyle}\n ref={(el) => (this.tooltipEl = el)}\n role=\"tooltip\"\n >\n <div class=\"tooltip__content\">\n <slot>{this.content}</slot>\n </div>\n {this.arrow && (\n <div\n class=\"tooltip__arrow\"\n style={this.arrowStyle}\n />\n )}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"version":3}