@luzmo/lucero 1.0.1-alpha.9 → 1.0.2

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 (487) hide show
  1. package/README.md +74 -9
  2. package/components/accordion/index.cjs +1 -26
  3. package/components/accordion/index.js +8 -164
  4. package/components/accordion-BHBIfsLU.cjs +43 -0
  5. package/components/accordion-DC7cjb1c.js +152 -0
  6. package/components/action-bar/index.cjs +1 -22
  7. package/components/action-bar/index.js +8 -90
  8. package/components/action-bar-BMHZ4e_p.cjs +39 -0
  9. package/components/action-bar-CmLjsljR.js +92 -0
  10. package/components/action-button/index.cjs +1 -7
  11. package/components/action-button/index.js +8 -144
  12. package/components/action-button-B4_UEJle.js +121 -0
  13. package/components/action-button-G0PWSrZo.cjs +24 -0
  14. package/components/action-group/index.cjs +1 -1
  15. package/components/action-group/index.js +11 -12
  16. package/components/action-group-CH8FTW0i.cjs +20 -0
  17. package/components/action-group-DYKpp-mz.js +211 -0
  18. package/components/action-menu/index.cjs +1 -39
  19. package/components/action-menu/index.js +8 -109
  20. package/components/action-menu-CJyB0mmO.cjs +56 -0
  21. package/components/action-menu-FiS1vhW7.js +105 -0
  22. package/components/avatar/avatar.d.ts +5 -0
  23. package/components/avatar/index.cjs +1 -7
  24. package/components/avatar/index.js +8 -64
  25. package/components/avatar-CyY_ZSD0.js +65 -0
  26. package/components/avatar-PulwjkMI.cjs +24 -0
  27. package/components/badge/badge.d.ts +35 -0
  28. package/components/{random-id-CqvckpWe.cjs → badge/index.cjs} +1 -1
  29. package/components/badge/index.d.ts +8 -0
  30. package/components/badge/index.js +25 -0
  31. package/components/badge-D1Ry32wi.cjs +23 -0
  32. package/components/badge-D6p2hPj8.js +94 -0
  33. package/components/button/button-base.d.ts +16 -0
  34. package/components/button/button.d.ts +38 -2
  35. package/components/button/index.cjs +1 -3
  36. package/components/button/index.js +9 -110
  37. package/components/button-CRNRP8P0.js +115 -0
  38. package/components/button-D3ZTogni.cjs +20 -0
  39. package/components/button-base-BYV3Lp3P.cjs +25 -0
  40. package/components/button-base-SHgEJgk2.js +123 -0
  41. package/components/button-group/index.cjs +1 -1
  42. package/components/button-group/index.js +8 -42
  43. package/components/button-group-CJVpgiLq.js +46 -0
  44. package/components/button-group-rEK_YaF3.cjs +18 -0
  45. package/components/calendar/calendar.d.ts +67 -0
  46. package/components/calendar/index.cjs +1 -1
  47. package/components/calendar/index.d.ts +1 -0
  48. package/components/calendar/index.js +8 -11
  49. package/components/calendar-CKr5T_zV.js +619 -0
  50. package/components/calendar-WRhzTEyZ.cjs +142 -0
  51. package/components/chat-message/chat-message.d.ts +139 -0
  52. package/components/{random-id-ByCz1xaq.js → chat-message/index.cjs} +1 -9
  53. package/components/chat-message/index.d.ts +8 -0
  54. package/components/chat-message/index.js +25 -0
  55. package/components/chat-message-CNE-mGuP.cjs +149 -0
  56. package/components/chat-message-DJgocVNj.js +2295 -0
  57. package/components/chat-message-group/chat-message-group.d.ts +50 -0
  58. package/components/{when-CDZyJPvd.cjs → chat-message-group/index.cjs} +1 -5
  59. package/components/chat-message-group/index.d.ts +7 -0
  60. package/components/chat-message-group/index.js +25 -0
  61. package/components/chat-message-group-B4U2MzHx.js +100 -0
  62. package/components/chat-message-group-COmhCN-R.cjs +24 -0
  63. package/components/checkbox/checkbox.d.ts +7 -0
  64. package/components/checkbox/index.cjs +1 -8
  65. package/components/checkbox/index.js +8 -79
  66. package/components/checkbox-CPS-tR_i.js +89 -0
  67. package/components/checkbox-DFwDrIdY.cjs +25 -0
  68. package/components/checkbox-mixin-C5sLMo5L.js +67 -0
  69. package/components/{checkbox-mixin-BDN0dBtS.cjs → checkbox-mixin-D4HeLrMj.cjs} +3 -3
  70. package/components/chunk-D-qHiVGv.cjs +18 -0
  71. package/components/close-button-BeXYep8K.js +42 -0
  72. package/components/close-button-BzapEpcF.cjs +18 -0
  73. package/components/color-area/index.cjs +1 -63
  74. package/components/color-area/index.js +8 -364
  75. package/components/color-area-DA3ps2-c.cjs +80 -0
  76. package/components/color-area-DViRjuKo.js +300 -0
  77. package/components/color-controller-DueaXfnX.cjs +18 -0
  78. package/components/color-controller-G2_v2xSl.js +247 -0
  79. package/components/color-field/color-field.d.ts +1 -0
  80. package/components/color-field/index.cjs +1 -6
  81. package/components/color-field/index.js +8 -68
  82. package/components/color-field-CxdIoSq6.js +75 -0
  83. package/components/color-field-D7_7z2A2.cjs +23 -0
  84. package/components/color-handle/index.cjs +1 -7
  85. package/components/color-handle/index.js +8 -56
  86. package/components/color-handle-BOusOFFx.js +62 -0
  87. package/components/color-handle-Cka48yPY.cjs +24 -0
  88. package/components/color-loupe/index.cjs +1 -1
  89. package/components/color-loupe/index.js +11 -12
  90. package/components/color-loupe-DMk8uWZW.cjs +56 -0
  91. package/components/color-loupe-bEzi2P0y.js +76 -0
  92. package/components/color-menu/index.cjs +1 -69
  93. package/components/color-menu/index.js +8 -189
  94. package/components/color-menu-DwbTxeqv.cjs +89 -0
  95. package/components/color-menu-Lxc9PTzl.js +183 -0
  96. package/components/color-palette/index.cjs +1 -1
  97. package/components/color-palette/index.js +8 -71
  98. package/components/color-palette-349EkPMg.cjs +18 -0
  99. package/components/color-palette-BAdaNySC.js +80 -0
  100. package/components/color-palette-group/index.cjs +1 -11
  101. package/components/color-palette-group/index.js +8 -188
  102. package/components/color-palette-group-BvP09zmT.cjs +28 -0
  103. package/components/color-palette-group-D8Mavsd2.js +163 -0
  104. package/components/color-picker/color-picker.d.ts +3 -3
  105. package/components/color-picker/index.cjs +1 -31
  106. package/components/color-picker/index.js +8 -128
  107. package/components/color-picker-CSWiU-X5.cjs +48 -0
  108. package/components/color-picker-DqjfTvYf.js +126 -0
  109. package/components/color-slider/index.cjs +1 -1
  110. package/components/color-slider/index.js +8 -11
  111. package/components/color-slider-DxjJ72ue.cjs +57 -0
  112. package/components/color-slider-ihAIFt5p.js +421 -0
  113. package/components/{condition-attribute-with-id-Dv4lSRbe.js → condition-attribute-with-id-DauPaLSS.cjs} +1 -14
  114. package/components/{query-assigned-nodes-C76XVPWY.js → condition-attribute-with-id-Duo51HZ7.js} +10 -18
  115. package/components/date-range-picker/date-range-picker.d.ts +184 -0
  116. package/components/{if-defined-C9YGdo33.cjs → date-range-picker/index.cjs} +1 -5
  117. package/components/date-range-picker/index.d.ts +8 -0
  118. package/components/date-range-picker/index.js +25 -0
  119. package/components/date-range-picker/types.d.ts +16 -0
  120. package/components/date-range-picker-BdRQep--.js +626 -0
  121. package/components/date-range-picker-CgitOe0i.cjs +187 -0
  122. package/components/date-time-picker/date-time-picker.d.ts +3 -3
  123. package/components/date-time-picker/index.cjs +1 -88
  124. package/components/date-time-picker/index.d.ts +1 -0
  125. package/components/date-time-picker/index.js +8 -1109
  126. package/components/date-time-picker/{types.d.ts → shared/types.d.ts} +1 -1
  127. package/components/date-time-picker-Bz8XwSOR.cjs +105 -0
  128. package/components/date-time-picker-Ct_ln8Ot.js +470 -0
  129. package/components/decorate-B2wePfNm.cjs +18 -0
  130. package/components/decorate-aGxJUVxg.js +91 -0
  131. package/components/{condition-attribute-with-id-DrQYZzFS.cjs → dependency-manger-CHy9t__e.cjs} +1 -1
  132. package/components/dependency-manger-DMrulWcJ.js +40 -0
  133. package/components/divider/index.cjs +1 -1
  134. package/components/divider/index.js +8 -44
  135. package/components/divider-Dn8XqbB6.cjs +18 -0
  136. package/components/divider-cU0lVwOp.js +59 -0
  137. package/components/divider.module-C65RfSUa.js +21 -0
  138. package/components/divider.module-CL60P_z8.cjs +18 -0
  139. package/components/element-resolution-Bs1x89vU.js +80 -0
  140. package/components/element-resolution-C0aiOB0Y.cjs +18 -0
  141. package/components/field-group/index.cjs +1 -1
  142. package/components/field-group/index.js +11 -12
  143. package/components/field-group-C7ROsWq3.js +57 -0
  144. package/components/field-group-OcI5Lgu7.cjs +23 -0
  145. package/components/field-label/index.cjs +1 -1
  146. package/components/field-label/index.js +11 -12
  147. package/components/field-label-BCl6R1uO.cjs +25 -0
  148. package/components/field-label-CtGCEmdp.js +87 -0
  149. package/components/focus-group-BshI1RpM.js +164 -0
  150. package/components/focus-group-SF8Kj7iB.cjs +18 -0
  151. package/components/focus-visible-B0NNezGc.cjs +18 -0
  152. package/components/focus-visible-CrooVCUu.js +58 -0
  153. package/components/focusable-BmS8IzhH.js +117 -0
  154. package/components/focusable-CupEoHmn.cjs +18 -0
  155. package/components/{base-BjTwmyRF.cjs → focusable-selectors-5n5liBn0.cjs} +1 -5
  156. package/components/{focusable-selectors-BgFlyFcY.cjs → focusable-selectors-Bg60_Kra.js} +13 -1
  157. package/components/{state-Deh-vKYE.js → get-label-from-slot-5vVnfSgN.js} +7 -11
  158. package/components/get-label-from-slot-LO_DZP60.cjs +18 -0
  159. package/components/icon/index.cjs +1 -1
  160. package/components/icon/index.js +8 -71
  161. package/components/icon-B7hKwn_q.cjs +18 -0
  162. package/components/icon-CwBAE1eU.js +59 -0
  163. package/components/index.cjs +1 -1
  164. package/components/index.js +78 -176
  165. package/components/infield-button/index.cjs +1 -5
  166. package/components/infield-button/index.js +8 -47
  167. package/components/infield-button-B2z0dLzq.js +54 -0
  168. package/components/infield-button-BVKotWqr.cjs +22 -0
  169. package/components/label/index.cjs +1 -1
  170. package/components/label/index.js +8 -34
  171. package/components/label-ClJE2esm.js +41 -0
  172. package/components/label-CqolZbJo.cjs +18 -0
  173. package/components/language-resolution-BYemISJC.cjs +18 -0
  174. package/components/language-resolution-BpfGTC29.js +43 -0
  175. package/components/like-anchor-BZJXts_H.cjs +32 -0
  176. package/components/like-anchor-DeOXX-MX.js +46 -0
  177. package/components/manage-help-text-CF0xBh0F.js +81 -0
  178. package/components/manage-help-text-D9VbYRf_.cjs +30 -0
  179. package/components/menu/index.cjs +1 -66
  180. package/components/menu/index.js +8 -879
  181. package/components/menu/menu-item.d.ts +8 -1
  182. package/components/menu/menu.d.ts +1 -0
  183. package/components/menu--ukVtSq7.js +749 -0
  184. package/components/menu-DAA51y45.cjs +108 -0
  185. package/components/multi-language-field/index.cjs +1 -22
  186. package/components/multi-language-field/index.js +8 -131
  187. package/components/multi-language-field/multi-language-field.d.ts +1 -0
  188. package/components/multi-language-field-BzY75rOY.js +122 -0
  189. package/components/multi-language-field-DmoMyCBH.cjs +40 -0
  190. package/components/number-field/index.cjs +1 -40
  191. package/components/number-field/index.js +8 -453
  192. package/components/number-field/number-field.d.ts +145 -0
  193. package/components/number-field-B4RSFeTR.cjs +57 -0
  194. package/components/number-field-C66dTUMM.js +402 -0
  195. package/components/observe-slot-presence-BCqd3VSd.js +55 -0
  196. package/components/observe-slot-presence-Dx8hzNzK.cjs +18 -0
  197. package/components/observe-slot-text-BhTcGuHY.cjs +18 -0
  198. package/components/observe-slot-text-Ddf1OC6F.js +71 -0
  199. package/components/options/index.cjs +1 -84
  200. package/components/options/index.js +8 -1160
  201. package/components/options/option.d.ts +16 -0
  202. package/components/options/options.d.ts +44 -4
  203. package/components/options-BPNAm4MW.cjs +101 -0
  204. package/components/options-Dz-ejkxF.js +484 -0
  205. package/components/overlay/index.cjs +1 -56
  206. package/components/overlay/index.js +10 -329
  207. package/components/overlay/overlay.d.ts +12 -1
  208. package/components/overlay/virtual-trigger.d.ts +3 -2
  209. package/components/overlay-8tN0KPbR.js +1115 -0
  210. package/components/overlay-CMd2Dnpv.cjs +73 -0
  211. package/components/overlay-CwR_36OV.js +227 -0
  212. package/components/overlay-DdrfkOry.cjs +47 -0
  213. package/components/pending-state-DFcNf5rd.js +50 -0
  214. package/components/{pending-state-CaH1si5b.cjs → pending-state-DIeF18qg.cjs} +4 -3
  215. package/components/picker/index.cjs +1 -1
  216. package/components/picker/index.js +11 -15
  217. package/components/picker/picker.d.ts +1 -0
  218. package/components/picker-C4RVOxLq.cjs +123 -0
  219. package/components/picker-agQW7YNo.js +394 -0
  220. package/components/picker-button/index.cjs +1 -20
  221. package/components/picker-button/index.js +8 -70
  222. package/components/picker-button-BLbeT3Yu.js +72 -0
  223. package/components/picker-button-D34YXyXp.cjs +37 -0
  224. package/components/platform-B7Sk7Qon.cjs +18 -0
  225. package/components/{platform-BM-uMWpX.js → platform-D4V_cOJF.js} +29 -38
  226. package/components/popover/index.cjs +1 -1
  227. package/components/popover/index.js +11 -12
  228. package/components/popover-DyC9xGhX.js +58 -0
  229. package/components/popover-dgL04x6P.cjs +30 -0
  230. package/components/progress-bar/index.cjs +18 -0
  231. package/components/progress-bar/index.d.ts +7 -0
  232. package/components/progress-bar/index.js +25 -0
  233. package/components/progress-bar/progress-bar.d.ts +34 -0
  234. package/components/progress-bar-BR28tISC.cjs +31 -0
  235. package/components/progress-bar-DHgFRml1.js +119 -0
  236. package/components/progress-circle/index.cjs +1 -1
  237. package/components/progress-circle/index.js +11 -12
  238. package/components/progress-circle-Cg_ua9Ff.js +78 -0
  239. package/components/progress-circle-DuzwUiGN.cjs +33 -0
  240. package/components/progress-steps/index.cjs +18 -0
  241. package/components/progress-steps/index.d.ts +8 -0
  242. package/components/progress-steps/index.js +25 -0
  243. package/components/progress-steps/progress-steps.d.ts +148 -0
  244. package/components/progress-steps/types.d.ts +32 -0
  245. package/components/progress-steps-Da8aZWx3.js +262 -0
  246. package/components/progress-steps-WriXaZpE.cjs +96 -0
  247. package/components/prompt-box/controllers/attachments-controller.d.ts +35 -0
  248. package/components/prompt-box/controllers/recording-controller.d.ts +23 -0
  249. package/components/prompt-box/controllers/rich-input-controller.d.ts +89 -0
  250. package/components/prompt-box/controllers/trigger-menu-controller.d.ts +107 -0
  251. package/components/prompt-box/index.cjs +18 -0
  252. package/components/prompt-box/index.d.ts +9 -0
  253. package/components/prompt-box/index.js +25 -0
  254. package/components/prompt-box/keyboard-focus-tracker.d.ts +3 -0
  255. package/components/prompt-box/prompt-box-templates.d.ts +10 -0
  256. package/components/prompt-box/prompt-box.d.ts +194 -0
  257. package/components/prompt-box/range-from-point.d.ts +21 -0
  258. package/components/prompt-box/selection-utils.d.ts +39 -0
  259. package/components/prompt-box/slot-state-sync.d.ts +10 -0
  260. package/components/prompt-box/types.d.ts +112 -0
  261. package/components/prompt-box-BEloQP-R.js +1506 -0
  262. package/components/prompt-box-DV8Smf3Q.cjs +282 -0
  263. package/components/radio/index.cjs +1 -5
  264. package/components/radio/index.js +8 -174
  265. package/components/radio-BzEPGUmQ.js +141 -0
  266. package/components/radio-d-2GUbYE.cjs +22 -0
  267. package/components/{if-defined-DOaE2coe.js → random-id-B51lUxUB.cjs} +1 -10
  268. package/components/{when-CDK1Tt5Y.js → random-id-Dd4boCPV.js} +5 -10
  269. package/components/{focusable-selectors-B4YgbghQ.js → rolldown-runtime-CAFD8bLK.js} +10 -13
  270. package/components/roving-tabindex-B7x5ePUB.cjs +18 -0
  271. package/components/roving-tabindex-BP6mQbXf.js +62 -0
  272. package/components/{directive-oAbCiebi.js → scaled-indicator-BcO2BOsf.js} +24 -26
  273. package/components/scaled-indicator-p8-3k2cJ.cjs +26 -0
  274. package/components/search/index.cjs +1 -28
  275. package/components/search/index.js +8 -114
  276. package/components/search-CmLfd2dF.js +94 -0
  277. package/components/search-DRTD4xsE.cjs +45 -0
  278. package/components/segments-factory-CHo9oQw7.cjs +18 -0
  279. package/components/segments-factory-D0IveW-q.js +417 -0
  280. package/components/select/index.cjs +1 -140
  281. package/components/select/index.js +8 -602
  282. package/components/select/select.d.ts +26 -17
  283. package/components/select--vrG59GQ.cjs +158 -0
  284. package/components/select-DPeI0jP9.js +518 -0
  285. package/components/{language-resolution-8yZa5r_P.js → sized-mixin-DaBoZkVS.js} +38 -35
  286. package/components/sized-mixin-StFA4y0J.cjs +18 -0
  287. package/components/skeleton-loader/index.cjs +18 -0
  288. package/components/skeleton-loader/index.d.ts +7 -0
  289. package/components/skeleton-loader/index.js +25 -0
  290. package/components/skeleton-loader/skeleton-loader.d.ts +22 -0
  291. package/components/skeleton-loader-B8NgELvX.cjs +18 -0
  292. package/components/skeleton-loader-C1XG3m_u.js +46 -0
  293. package/components/slider/index.cjs +1 -1
  294. package/components/slider/index.js +8 -1141
  295. package/components/slider/slider.d.ts +2 -0
  296. package/components/slider-3QBnq0S8.js +96 -0
  297. package/components/slider-uXRKcOz5.cjs +18 -0
  298. package/components/slottable-request-event-DZ2Z_BLk.js +29 -0
  299. package/components/{base-D76d76ww.js → slottable-request-event-gAcEQan2.cjs} +1 -9
  300. package/components/status-light/index.cjs +18 -0
  301. package/components/status-light/index.d.ts +8 -0
  302. package/components/status-light/index.js +25 -0
  303. package/components/status-light/status-light.d.ts +26 -0
  304. package/components/status-light-Bf8jGu4G.js +85 -0
  305. package/components/status-light-CBaAFRUc.cjs +21 -0
  306. package/components/strategies-DhxJGIZT.js +137 -0
  307. package/components/strategies-kuvLVIKO.cjs +18 -0
  308. package/components/streaming-listener-2NcP7ys7.js +77 -0
  309. package/components/streaming-listener-BnDW38lt.cjs +18 -0
  310. package/components/suggestion/index.cjs +18 -0
  311. package/components/suggestion/index.d.ts +8 -0
  312. package/components/suggestion/index.js +25 -0
  313. package/components/suggestion/suggestion.d.ts +45 -0
  314. package/components/suggestion-CEJiW_7y.cjs +23 -0
  315. package/components/suggestion-DK5gxxDI.js +76 -0
  316. package/components/swatch/index.cjs +1 -32
  317. package/components/swatch/index.js +8 -325
  318. package/components/swatch-BLuV-hlF.js +271 -0
  319. package/components/swatch-G70JUe6I.cjs +49 -0
  320. package/components/switch/index.cjs +1 -5
  321. package/components/switch/index.js +8 -56
  322. package/components/switch-BdE-hI69.js +60 -0
  323. package/components/switch-KzkrF-ob.cjs +22 -0
  324. package/components/tabs/index.cjs +1 -76
  325. package/components/tabs/index.js +8 -619
  326. package/components/tabs/tabs.d.ts +3 -9
  327. package/components/tabs-BfTgzdid.cjs +76 -0
  328. package/components/tabs-BthdwrmW.js +434 -0
  329. package/components/tags/index.cjs +1 -15
  330. package/components/tags/index.d.ts +1 -0
  331. package/components/tags/index.js +8 -156
  332. package/components/tags/tag.d.ts +28 -0
  333. package/components/tags/tags.d.ts +3 -1
  334. package/components/tags-B89eYzsB.js +203 -0
  335. package/components/tags-OBPAvjdV.cjs +47 -0
  336. package/components/text-field/index.cjs +1 -4
  337. package/components/text-field/index.js +9 -45
  338. package/components/text-field/text-field.d.ts +27 -0
  339. package/components/text-field-A4Obzs4l.cjs +21 -0
  340. package/components/text-field-BoGAvXvh.js +44 -0
  341. package/components/text-field-Cs8HYRYL.js +256 -0
  342. package/components/text-field-FJr8ZUhI.cjs +81 -0
  343. package/components/text-field.module-Btsve-VN.js +21 -0
  344. package/components/text-field.module-D5oDP7MB.cjs +18 -0
  345. package/components/toast/index.cjs +1 -34
  346. package/components/toast/index.js +8 -136
  347. package/components/toast-CJSQUzoW.cjs +51 -0
  348. package/components/toast-DKwphMrp.js +133 -0
  349. package/components/tooltip/index.cjs +1 -28
  350. package/components/tooltip/index.js +8 -205
  351. package/components/tooltip/tooltip.d.ts +12 -1
  352. package/components/tooltip-C3O4AQ1l.js +192 -0
  353. package/components/tooltip-DY1trLtg.cjs +45 -0
  354. package/components/top-nav/index.cjs +18 -0
  355. package/components/top-nav/index.d.ts +10 -0
  356. package/components/top-nav/index.js +25 -0
  357. package/components/top-nav/top-nav-item.d.ts +26 -0
  358. package/components/top-nav/top-nav.d.ts +45 -0
  359. package/components/top-nav-DVQ5ASMa.js +203 -0
  360. package/components/top-nav-DlTojz8S.cjs +45 -0
  361. package/components/utils.cjs +1 -1
  362. package/components/utils.js +8 -25
  363. package/components/voice-recorder-477xPHRU.js +134 -0
  364. package/components/voice-recorder-BUtmSvPO.cjs +18 -0
  365. package/custom-elements.json +1 -1
  366. package/index.d.ts +11 -1
  367. package/package.json +134 -5
  368. package/utils/button-interaction-controllers/interaction-controller.d.ts +1 -1
  369. package/utils/index.d.ts +1 -0
  370. package/utils/scaled-indicator.d.ts +8 -0
  371. package/utils/voice-recorder.d.ts +121 -0
  372. package/components/NumberFormatter-DewVDY5w.cjs +0 -18
  373. package/components/NumberFormatter-DgOUVrge.js +0 -136
  374. package/components/NumberParser-Dik4a0h-.cjs +0 -18
  375. package/components/NumberParser-ci9J5EKv.js +0 -173
  376. package/components/action-group-DBImibFn.js +0 -258
  377. package/components/action-group-DJGMcRHb.cjs +0 -20
  378. package/components/async-directive-BX1T1e1_.cjs +0 -22
  379. package/components/async-directive-BfcqVjDp.js +0 -82
  380. package/components/base-CBCg3yyw.cjs +0 -40
  381. package/components/base-WsynuqaS.js +0 -677
  382. package/components/button-base-DbkDzb71.js +0 -144
  383. package/components/button-base-XgPLmwP-.cjs +0 -25
  384. package/components/checkbox-mixin-Do7EgtpQ.js +0 -70
  385. package/components/class-map-Di1D_rCm.cjs +0 -22
  386. package/components/class-map-NbVXqBU0.js +0 -51
  387. package/components/clear-button-DQcRdcUa.js +0 -53
  388. package/components/clear-button-OFUFFe7G.cjs +0 -18
  389. package/components/close-button-Cbnb7XXj.cjs +0 -18
  390. package/components/close-button-CqHYZhum.js +0 -51
  391. package/components/color-controller-DTp1juRz.js +0 -3198
  392. package/components/color-controller-_ZwyhvaU.cjs +0 -18
  393. package/components/color-loupe-CaA_Lfkk.cjs +0 -56
  394. package/components/color-loupe-CmMsXbjT.js +0 -81
  395. package/components/dependency-manger-C5HCkMMB.cjs +0 -18
  396. package/components/dependency-manger-CEXvGQUV.js +0 -54
  397. package/components/directive-C7oCP5Bh.cjs +0 -22
  398. package/components/directive-helpers-Cm6gitnu.js +0 -62
  399. package/components/directive-helpers-DyIRTWwA.cjs +0 -22
  400. package/components/divider.module-DDvBo9zo.cjs +0 -18
  401. package/components/divider.module-DoQWQEIJ.js +0 -21
  402. package/components/element-resolution-BvRLGqIU.cjs +0 -18
  403. package/components/element-resolution-FCUT-wql.js +0 -91
  404. package/components/field-group-DXfBWrkO.js +0 -66
  405. package/components/field-group-DkGst3r5.cjs +0 -23
  406. package/components/field-label-CZ2zzChK.js +0 -106
  407. package/components/field-label-mO1AkUgR.cjs +0 -25
  408. package/components/flow-D-0MTYCm.js +0 -527
  409. package/components/flow-DM3dNAKs.cjs +0 -30
  410. package/components/focus-group-DHeTq18L.js +0 -218
  411. package/components/focus-group-DnxZUBhQ.cjs +0 -18
  412. package/components/focus-visible-B0P9aY_G.cjs +0 -18
  413. package/components/focus-visible-DBlJGoEW.js +0 -74
  414. package/components/focusable-BxtpnzWp.js +0 -153
  415. package/components/focusable-EbipgXRh.cjs +0 -18
  416. package/components/index-BwxgAdzi.cjs +0 -57
  417. package/components/index-Cl54m8Yh.js +0 -1490
  418. package/components/index-HjQa8tew.js +0 -1174
  419. package/components/index-Wq3qZJGh.cjs +0 -113
  420. package/components/language-resolution-DJzmyzZq.cjs +0 -18
  421. package/components/like-anchor-Bvn_vLQ8.js +0 -69
  422. package/components/like-anchor-sod1C1fR.cjs +0 -32
  423. package/components/luzmo-icons-4nDFv1Lq.js +0 -229
  424. package/components/luzmo-icons-D4IvHgVd.cjs +0 -29
  425. package/components/manage-help-text-DhgARkZX.cjs +0 -30
  426. package/components/manage-help-text-syYnjKGL.js +0 -92
  427. package/components/mutation-controller-DH7YOCyj.js +0 -52
  428. package/components/mutation-controller-DkOMCW-c.cjs +0 -22
  429. package/components/observe-slot-presence-CmVi0zTc.js +0 -68
  430. package/components/observe-slot-presence-bc9chhsi.cjs +0 -18
  431. package/components/observe-slot-text-BPfIQQtz.js +0 -87
  432. package/components/observe-slot-text-Ceb7SvYT.cjs +0 -18
  433. package/components/overlay-Cig9r6uU.js +0 -2747
  434. package/components/overlay-KSKMzzkh.cjs +0 -47
  435. package/components/pending-state-DTX7ggyF.js +0 -61
  436. package/components/picker-BfBP7XJN.js +0 -461
  437. package/components/picker-xIphqE6d.cjs +0 -123
  438. package/components/platform-BiXhwqk3.cjs +0 -18
  439. package/components/popover-DjX0aAnY.js +0 -67
  440. package/components/popover-KFfO0IYL.cjs +0 -30
  441. package/components/progress-circle-BvRJNuNo.cjs +0 -33
  442. package/components/progress-circle-DXH9z8-6.js +0 -97
  443. package/components/query-BL-TJj7K.cjs +0 -22
  444. package/components/query-D_KR_GUc.js +0 -51
  445. package/components/query-assigned-elements-DjfhL1cl.js +0 -36
  446. package/components/query-assigned-elements-DsKsfk7G.cjs +0 -22
  447. package/components/query-assigned-nodes-BcKWmGzy.cjs +0 -22
  448. package/components/roving-tabindex-By_fCy_e.cjs +0 -18
  449. package/components/roving-tabindex-DOg4z6ZU.js +0 -66
  450. package/components/sized-mixin-CPxE5C96.cjs +0 -18
  451. package/components/sized-mixin-D4ACoVUr.js +0 -63
  452. package/components/slottable-request-event-BfUUt1Mh.cjs +0 -18
  453. package/components/slottable-request-event-DggLA4Rx.js +0 -31
  454. package/components/state-D8JEtYqe.cjs +0 -22
  455. package/components/strategies-9indNIEb.js +0 -195
  456. package/components/strategies-BACP6MhR.cjs +0 -18
  457. package/components/streaming-listener-B00MvALi.cjs +0 -18
  458. package/components/streaming-listener-CP-JE6Fa.js +0 -91
  459. package/components/style-map-CeilmSgs.cjs +0 -22
  460. package/components/style-map-IgqIKvlE.js +0 -53
  461. package/components/text-field-BTkr42k4.cjs +0 -85
  462. package/components/text-field-ol9Ed5lQ.js +0 -314
  463. package/components/text-field.module-ColtFhf_.js +0 -21
  464. package/components/text-field.module-p_VF2tC_.cjs +0 -18
  465. package/components/unit-input/index.cjs +0 -43
  466. package/components/unit-input/index.d.ts +0 -7
  467. package/components/unit-input/index.js +0 -183
  468. package/components/unit-input/unit-input.d.ts +0 -33
  469. /package/components/date-time-picker/{helpers.d.ts → shared/helpers.d.ts} +0 -0
  470. /package/components/date-time-picker/{segments → shared/segments}/date/day-segment.d.ts +0 -0
  471. /package/components/date-time-picker/{segments → shared/segments}/date/month-segment.d.ts +0 -0
  472. /package/components/date-time-picker/{segments → shared/segments}/date/year-segment.d.ts +0 -0
  473. /package/components/date-time-picker/{segments → shared/segments}/date-time-segments.d.ts +0 -0
  474. /package/components/date-time-picker/{segments → shared/segments}/editable-segment.d.ts +0 -0
  475. /package/components/date-time-picker/{segments → shared/segments}/literal-segment.d.ts +0 -0
  476. /package/components/date-time-picker/{segments → shared/segments}/modifiers/clear-modifier.d.ts +0 -0
  477. /package/components/date-time-picker/{segments → shared/segments}/modifiers/decrement-modifier.d.ts +0 -0
  478. /package/components/date-time-picker/{segments → shared/segments}/modifiers/increment-modifier.d.ts +0 -0
  479. /package/components/date-time-picker/{segments → shared/segments}/modifiers/input-modifier.d.ts +0 -0
  480. /package/components/date-time-picker/{segments → shared/segments}/modifiers/segments-modifier.d.ts +0 -0
  481. /package/components/date-time-picker/{segments → shared/segments}/segments-factory.d.ts +0 -0
  482. /package/components/date-time-picker/{segments → shared/segments}/segments-formatter.d.ts +0 -0
  483. /package/components/date-time-picker/{segments → shared/segments}/time/day-period-segment.d.ts +0 -0
  484. /package/components/date-time-picker/{segments → shared/segments}/time/hour-segment.d.ts +0 -0
  485. /package/components/date-time-picker/{segments → shared/segments}/time/millisecond-segment.d.ts +0 -0
  486. /package/components/date-time-picker/{segments → shared/segments}/time/minute-segment.d.ts +0 -0
  487. /package/components/date-time-picker/{segments → shared/segments}/time/second-segment.d.ts +0 -0
@@ -0,0 +1,89 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import { type PromptBoxElement, type PromptBoxSegment } from '../types';
3
+ export interface RichInputHost extends ReactiveControllerHost {
4
+ allowElements: boolean;
5
+ acceptedElementTypes: string[];
6
+ allowImages: boolean;
7
+ disabled: boolean;
8
+ readonly: boolean;
9
+ pending: boolean;
10
+ value: string;
11
+ shadowRoot: ShadowRoot | null;
12
+ dispatchEvent(event: Event): boolean;
13
+ requestUpdate(): void;
14
+ handlePastedImages(clipboardData: DataTransfer | null): boolean;
15
+ }
16
+ /**
17
+ * Manages the contenteditable rich input: element badges, paste handling,
18
+ * drag-and-drop, and segment parsing.
19
+ */
20
+ export declare class RichInputController implements ReactiveController {
21
+ private _host;
22
+ private _elements;
23
+ private _idCounter;
24
+ private _dragCaret;
25
+ isDragOver: boolean;
26
+ richInputElement: HTMLDivElement | null;
27
+ constructor(host: RichInputHost);
28
+ hostConnected(): void;
29
+ hostDisconnected(): void;
30
+ get elements(): Map<string, PromptBoxElement>;
31
+ get elementCount(): number;
32
+ getSegments(): PromptBoxSegment[];
33
+ setSegments(value: PromptBoxSegment[]): void;
34
+ insertElement(elementType: string, label: string, data: unknown, icon?: unknown): string;
35
+ /**
36
+ * Core insertion logic. When a range is provided it is used directly,
37
+ * bypassing the Selection API (essential for Safari drag-and-drop where
38
+ * the Selection API cannot address nodes inside Shadow DOM).
39
+ * Pass `null` to read from the current selection, or `undefined` to skip
40
+ * range-based insertion entirely and append at the end.
41
+ */
42
+ private _insertElementAtRange;
43
+ private _getSelectionRange;
44
+ removeElement(id: string): void;
45
+ getElements(): PromptBoxElement[];
46
+ clearElements(): void;
47
+ handleRichInput: () => void;
48
+ handleRichPaste: (e: ClipboardEvent) => void;
49
+ handleRichDragOver: (e: DragEvent) => void;
50
+ handleRichDragLeave: (e: DragEvent) => void;
51
+ handleRichDrop: (e: DragEvent) => void;
52
+ /**
53
+ * Handle Backspace/Delete next to element badges.
54
+ * Returns true if a badge was removed (caller should preventDefault).
55
+ */
56
+ handleBadgeDelete(key: string): boolean;
57
+ /** Find an element badge immediately before `offset` within `container`. */
58
+ private _findBadgeBefore;
59
+ /** Find an element badge immediately after `offset` within `container`. */
60
+ private _findBadgeAfter;
61
+ /** Plain text + inline labels, in segment order (used for `value` / textarea parity). */
62
+ private _segmentsToPlainText;
63
+ private _cannotEditRichContent;
64
+ /**
65
+ * When there are no badges and no visible text, contenteditable still often
66
+ * leaves `<br>` or zero-width-only nodes. That prevents `:empty` from matching,
67
+ * so the CSS placeholder pseudo-element stays hidden. Clear the DOM in that case.
68
+ */
69
+ private _cleanupSemanticallyEmptyRichInput;
70
+ syncValue(): void;
71
+ private _parseSegments;
72
+ private _createBadgeNode;
73
+ /**
74
+ * Inserts a space text node after the given badge if the next character
75
+ * is not already a space (or there is no next sibling).
76
+ *
77
+ * Prepends a zero-width space (U+200B) so Safari renders the caret at
78
+ * the correct position instead of jumping to the start of the input.
79
+ */
80
+ private _ensureSpaceAfter;
81
+ private _showDragCaret;
82
+ private _hideDragCaret;
83
+ private _generateId;
84
+ /**
85
+ * Moves the caret to the character position closest to the given viewport
86
+ * coordinates. Used during `dragover` to show a live caret preview.
87
+ */
88
+ private _positionCaretAtPoint;
89
+ }
@@ -0,0 +1,107 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import { VirtualTrigger } from '../../overlay/virtual-trigger';
3
+ import type { TriggerConfig, TriggerOption } from '../types';
4
+ export interface TriggerMenuHost extends ReactiveControllerHost {
5
+ allowElements: boolean;
6
+ disabled: boolean;
7
+ readonly: boolean;
8
+ pending: boolean;
9
+ shadowRoot: ShadowRoot | null;
10
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
11
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
12
+ dispatchEvent(event: Event): boolean;
13
+ requestUpdate(): void;
14
+ insertElement(elementType: string, label: string, data: unknown, icon?: unknown): string;
15
+ focus(): void;
16
+ }
17
+ /**
18
+ * Manages trigger menu detection, overlay positioning, option filtering,
19
+ * and keyboard navigation.
20
+ *
21
+ * Supports arbitrary trigger keys via a `TriggerConfig[]` — no longer
22
+ * hardcoded to `@` and `/`.
23
+ */
24
+ export declare class TriggerMenuController implements ReactiveController {
25
+ private _host;
26
+ private _triggers;
27
+ /** Currently active trigger key, or null when no menu is open. */
28
+ activeTrigger: string | null;
29
+ /** Text typed after the trigger key (used for filtering). */
30
+ searchString: string;
31
+ /** Virtual anchor element for the overlay. */
32
+ virtualElement: VirtualTrigger | null;
33
+ /**
34
+ * Index of the currently highlighted option in the filtered list.
35
+ * -1 means nothing explicitly selected (but first item is visually active).
36
+ */
37
+ highlightedIndex: number;
38
+ /**
39
+ * Suppresses pointer-based highlighting after keyboard navigation
40
+ * until the user actually moves the mouse. Prevents scroll-induced
41
+ * `pointerenter` from stealing the highlight.
42
+ */
43
+ pointerMovedSinceKeyNav: boolean;
44
+ /** Index of the option currently under the pointer, -1 when none. */
45
+ hoveredIndex: number;
46
+ /** Filtered options for the active trigger, computed on each search change. */
47
+ filteredOptions: TriggerOption[];
48
+ /** Reference to the contenteditable element. */
49
+ richInputElement: HTMLDivElement | null;
50
+ constructor(host: TriggerMenuHost);
51
+ hostConnected(): void;
52
+ hostDisconnected(): void;
53
+ get triggers(): TriggerConfig[];
54
+ set triggers(value: TriggerConfig[]);
55
+ /**
56
+ * Get the TriggerConfig for the currently active trigger.
57
+ */
58
+ get activeConfig(): TriggerConfig | undefined;
59
+ /**
60
+ * Whether any trigger configs are defined.
61
+ */
62
+ get hasTriggers(): boolean;
63
+ /**
64
+ * Check if a given trigger key has a slot defined.
65
+ */
66
+ getSlotName(triggerKey: string): string | undefined;
67
+ /**
68
+ * Get all distinct slot names across all trigger configs.
69
+ */
70
+ get allSlotNames(): string[];
71
+ /**
72
+ * Called on each input event in the rich input. When no menu is open, detects
73
+ * trigger keys typed at a word boundary; when open, updates the search string.
74
+ */
75
+ handleInput(inputEvent?: InputEvent): void;
76
+ open(triggerKey: string): void;
77
+ close(): void;
78
+ /**
79
+ * Handle keydown events in the rich input when a trigger menu is open.
80
+ * Returns true if the event was consumed (caller should preventDefault).
81
+ */
82
+ handleKeydown(e: KeyboardEvent): boolean;
83
+ /**
84
+ * Handle the overlay's closed event.
85
+ */
86
+ handleOverlayClosed: () => void;
87
+ /**
88
+ * Handle keydown inside the overlay (e.g. Escape from slotted content).
89
+ */
90
+ handleOverlayKeydown: (e: KeyboardEvent) => void;
91
+ private _detectTrigger;
92
+ private _extractTriggerSearchFromContent;
93
+ private _isTriggerKey;
94
+ private _updateFilteredOptions;
95
+ /**
96
+ * Find the first non-header option index starting from (and including) `start`.
97
+ * Returns -1 if none found.
98
+ */
99
+ private _findSelectableIndex;
100
+ handlePointerMove: () => void;
101
+ private _moveHighlight;
102
+ private _selectHighlighted;
103
+ selectOption(option: TriggerOption): void;
104
+ private _handleTriggerSelect;
105
+ private _handleDocumentPointerDown;
106
+ private _dispatchChange;
107
+ }
@@ -0,0 +1,18 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../prompt-box-DV8Smf3Q.cjs`);exports.ELEMENT_MIME_TYPE=e.n,exports.LuzmoPromptBox=e.t;
@@ -0,0 +1,9 @@
1
+ import { LuzmoPromptBox } from './prompt-box';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'luzmo-prompt-box': LuzmoPromptBox;
5
+ }
6
+ }
7
+ export { LuzmoPromptBox } from './prompt-box';
8
+ export { ELEMENT_MIME_TYPE } from './types';
9
+ export type { ActionValue, PromptBoxAttachment, PromptBoxElement, PromptBoxElementInsertedDetail, PromptBoxElementRemovedDetail, PromptBoxRecordErrorDetail, PromptBoxRecordingCompleteDetail, PromptBoxSegment, PromptBoxSubmitDetail, TriggerConfig, TriggerMenuChangeDetail, TriggerMenuSelectDetail, TriggerOption } from './types';
@@ -0,0 +1,25 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ (() => {
19
+ if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
20
+ let e = document.createElement("style");
21
+ e.setAttribute("data-luzmo-vars", ""), e.textContent = "html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-full-down: color-mix(in oklch, var(--luzmo-border-color-full), black 45%);--luzmo-border-color-full-focus: color-mix(in oklch, var(--luzmo-border-color-full), black 25%);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-font-color-down: color-mix(in oklch, var(--luzmo-font-color), black 20%);--luzmo-font-color-focus: color-mix(in oklch, var(--luzmo-font-color), black 8%);--luzmo-primary: #4434ff;--luzmo-primary-hover: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-down: color-mix(in oklch, var(--luzmo-primary), black 20%);--luzmo-primary-focus: color-mix(in oklch, var(--luzmo-primary), black 8%);--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: color-mix(in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5%);--luzmo-background-color-down: color-mix(in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 7%), black 1%);--luzmo-background-color-focus: color-mix(in oklch, color-mix(in oklch, var(--luzmo-background-color), var(--luzmo-primary) 5%), black 1.5%);--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-background-color-highlight-down: color-mix(in oklch, var(--luzmo-background-color-highlight), black 45%);--luzmo-background-color-highlight-focus: color-mix(in oklch, var(--luzmo-background-color-highlight), black 25%);--luzmo-secondary: #d000d0;--luzmo-secondary-hover: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-down: color-mix(in oklch, var(--luzmo-secondary), black 20%);--luzmo-secondary-focus: color-mix(in oklch, var(--luzmo-secondary), black 8%);--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 208, 0, 208;--luzmo-scrollbar-size: 6px;--luzmo-scrollbar-thumb-background: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-scrollbar-thumb-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-thumb-hover-background: rgba( var(--luzmo-border-color-rgb), 0.4 );--luzmo-scrollbar-track-background: transparent;--luzmo-scrollbar-track-border-radius: var(--luzmo-border-radius-s);--luzmo-scrollbar-width: thin;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-down: color-mix(in oklch, var(--luzmo-negative-color), black 20%);--luzmo-negative-color-focus: color-mix(in oklch, var(--luzmo-negative-color), black 8%);--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-negative-inverse-color: #ffffff;--luzmo-positive-color: rgb(18, 133, 90);--luzmo-positive-color-hover: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-down: color-mix(in oklch, var(--luzmo-positive-color), black 20%);--luzmo-positive-color-focus: color-mix(in oklch, var(--luzmo-positive-color), black 8%);--luzmo-positive-color-rgb: 18, 133, 90;--luzmo-positive-inverse-color: #ffffff;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-down: color-mix(in oklch, var(--luzmo-selected-color), black 45%);--luzmo-selected-color-focus: color-mix(in oklch, var(--luzmo-selected-color), black 25%);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-selected-color-hard-down: color-mix(in oklch, var(--luzmo-selected-color-hard), black 45%);--luzmo-selected-color-hard-focus: color-mix(in oklch, var(--luzmo-selected-color-hard), black 25%);--luzmo-informative-color: #1670dd;--luzmo-informative-color-rgb: 22, 112, 221;--luzmo-notice-color: rgb(229, 127, 0);--luzmo-seafoam-color: rgb(0, 140, 140);--luzmo-indigo-color: rgb(68, 52, 255);--luzmo-purple-color: rgb(112, 48, 210);--luzmo-fuchsia-color: rgb(205, 30, 170);--luzmo-magenta-color: rgb(203, 36, 98);--luzmo-yellow-color: rgb(228, 208, 0);--luzmo-gray-color: rgb(110, 110, 110);--luzmo-red-color: rgb(202, 34, 28);--luzmo-orange-color: rgb(218, 123, 17);--luzmo-chartreuse-color: rgb(85, 135, 0);--luzmo-celery-color: rgb(48, 134, 22);--luzmo-green-color: rgb(18, 133, 90);--luzmo-cyan-color: rgb(0, 134, 180);--luzmo-blue-color: rgb(22, 112, 221);--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 10px;--luzmo-icon-size-xs: 12px;--luzmo-icon-size-s: 14px;--luzmo-icon-size-m: 16px;--luzmo-icon-size-l: 18px;--luzmo-icon-size-xl: 20px;--luzmo-icon-size-xxl: 32px}", document.head.appendChild(e);
22
+ }
23
+ })();
24
+ import { n as e, t } from "../prompt-box-BEloQP-R.js";
25
+ export { e as ELEMENT_MIME_TYPE, t as LuzmoPromptBox };
@@ -0,0 +1,3 @@
1
+ export declare function subscribeKeyboardTracker(): void;
2
+ export declare function unsubscribeKeyboardTracker(): void;
3
+ export declare function wasKeyboardEvent(): boolean;
@@ -0,0 +1,10 @@
1
+ import { nothing, TemplateResult } from 'lit';
2
+ import type { LuzmoPromptBox } from './prompt-box';
3
+ export declare function renderTopActions(el: LuzmoPromptBox, hasContent: boolean, onSlotChange: (e: Event) => void): TemplateResult;
4
+ export declare function renderBottomActions(el: LuzmoPromptBox, hasContent: boolean, onSlotChange: (e: Event) => void): TemplateResult;
5
+ export declare function renderRecordButton(el: LuzmoPromptBox): TemplateResult;
6
+ export declare function renderSubmitButton(el: LuzmoPromptBox): TemplateResult;
7
+ export declare function renderTriggerMenu(el: LuzmoPromptBox): TemplateResult;
8
+ export declare function renderTextarea(el: LuzmoPromptBox): TemplateResult;
9
+ export declare function renderAttachments(el: LuzmoPromptBox): TemplateResult | typeof nothing;
10
+ export declare function renderHiddenFileInput(el: LuzmoPromptBox): TemplateResult | typeof nothing;
@@ -0,0 +1,194 @@
1
+ import { CSSResultArray, PropertyValues, TemplateResult } from 'lit';
2
+ import { LuzmoElement } from '../../utils/base';
3
+ import '../action-button';
4
+ import '../button';
5
+ import '../button/clear-button';
6
+ import '../icon';
7
+ import '../overlay';
8
+ import '../tags';
9
+ import '../text-field';
10
+ import { AttachmentsController } from './controllers/attachments-controller';
11
+ import { RecordingController } from './controllers/recording-controller';
12
+ import { RichInputController } from './controllers/rich-input-controller';
13
+ import { TriggerMenuController } from './controllers/trigger-menu-controller';
14
+ import type { PromptBoxAttachment, PromptBoxElement, PromptBoxElementInsertedDetail, PromptBoxElementRemovedDetail, PromptBoxRecordErrorDetail, PromptBoxRecordingCompleteDetail, PromptBoxSegment, PromptBoxSubmitDetail, TriggerConfig, TriggerMenuChangeDetail, TriggerMenuSelectDetail, TriggerOption } from './types';
15
+ declare const LuzmoPromptBox_base: typeof LuzmoElement & {
16
+ new (...args: any[]): import("../..").SizedElementInterface;
17
+ prototype: import("../..").SizedElementInterface;
18
+ };
19
+ /**
20
+ * A prompt box component for chat/AI interfaces with text input and action slots.
21
+ *
22
+ * @element luzmo-prompt-box
23
+ *
24
+ * @slot - Default slot for additional content
25
+ * @slot top-actions - Slot for action buttons displayed above the input
26
+ * @slot bottom-actions - Slot for action buttons displayed below the input
27
+ * @slot record-button - Slot for a custom record/voice button
28
+ * @slot submit-button - Slot for a custom submit button
29
+ *
30
+ * @fires luzmo-submit - Fired when the prompt is submitted.
31
+ * @fires luzmo-trigger-change - Fired when a trigger menu opens, closes, or the search string changes.
32
+ * @fires luzmo-element-inserted - Fired when an inline element badge is inserted.
33
+ * @fires luzmo-element-removed - Fired when an inline element badge is removed.
34
+ * @fires luzmo-attachments-change - Fired when attachments change.
35
+ * @fires luzmo-record - Fired when recording state changes.
36
+ * @fires luzmo-recording-complete - Fired when recording finishes.
37
+ * @fires luzmo-record-cancel - Fired when recording is cancelled.
38
+ * @fires luzmo-record-error - Fired when recording errors.
39
+ */
40
+ export declare class LuzmoPromptBox extends LuzmoPromptBox_base {
41
+ static get styles(): CSSResultArray;
42
+ /** The number of visible text rows for the textarea. */
43
+ rows: number;
44
+ /** Whether the textarea should grow to accommodate content. */
45
+ grows: boolean;
46
+ /**
47
+ * Maximum rows the textarea can grow to (`-1` = unlimited).
48
+ * Values less than 1 are disregarded.
49
+ */
50
+ maxRows: number;
51
+ /** Whether to show the record/voice button. */
52
+ recording: boolean;
53
+ /** Whether the submit button is hidden. */
54
+ hideSubmit: boolean;
55
+ /** Whether submit behavior is disabled while keeping the input interactive. */
56
+ disableSubmit: boolean;
57
+ /** Whether to use single-line layout with actions, input, and submit in one row. */
58
+ singleLine: boolean;
59
+ /** Placeholder text for the input. */
60
+ placeholder: string;
61
+ /** The current value of the input. */
62
+ value: string;
63
+ /** Whether the prompt box is disabled. */
64
+ disabled: boolean;
65
+ /** Whether the input is readonly. */
66
+ readonly: boolean;
67
+ /** Maximum number of characters allowed. */
68
+ maxlength: number;
69
+ /** Whether the prompt box is in a pending/loading state. */
70
+ pending: boolean;
71
+ /** Whether to allow image attachments. */
72
+ allowImages: boolean;
73
+ /** Whether to allow file attachments. */
74
+ allowFiles: boolean;
75
+ /** Accepted file types for attachments (MIME types or extensions). */
76
+ acceptedFileTypes: string[];
77
+ /**
78
+ * Whether to enable rich input mode with inline element badges.
79
+ * When enabled, the textarea is replaced with a contenteditable div.
80
+ */
81
+ allowElements: boolean;
82
+ /** Optional filter for accepted element types during drag-and-drop. */
83
+ acceptedElementTypes: string[];
84
+ /**
85
+ * Trigger key configurations. Each entry defines a key character that
86
+ * opens a popover when typed at a word boundary.
87
+ *
88
+ * ```ts
89
+ * promptBox.triggers = [
90
+ * { key: '@', options: assetOptions, slotName: 'assets-menu' },
91
+ * { key: '/', options: skillOptions, lazy: true }
92
+ * ];
93
+ *
94
+ * ```
95
+ */
96
+ get triggers(): TriggerConfig[];
97
+ set triggers(value: TriggerConfig[]);
98
+ private _hasTopActions;
99
+ private _hasBottomActions;
100
+ private _hasRecordButton;
101
+ private _hasSubmitButton;
102
+ private _inputFocused;
103
+ private _inputElement;
104
+ private _richInputElement;
105
+ private _fileInput;
106
+ private _finishRecordingButton;
107
+ private _attachments;
108
+ private _recording;
109
+ private _richInput;
110
+ private _triggerMenu;
111
+ /** @internal — used by templates */
112
+ get attachmentsController(): AttachmentsController;
113
+ /** @internal — used by templates */
114
+ get recordingController(): RecordingController;
115
+ /** @internal — used by templates */
116
+ get richInputController(): RichInputController;
117
+ /** @internal — used by templates */
118
+ get triggerMenuController(): TriggerMenuController;
119
+ /** @internal — used by templates */
120
+ get hasRecordButton(): boolean;
121
+ /** @internal — used by templates */
122
+ get hasSubmitButton(): boolean;
123
+ get tagSize(): 's' | 'm';
124
+ get segments(): PromptBoxSegment[];
125
+ set segments(value: PromptBoxSegment[]);
126
+ connectedCallback(): void;
127
+ disconnectedCallback(): void;
128
+ protected updated(changedProperties: PropertyValues): void;
129
+ focus(): void;
130
+ clear(): void;
131
+ addFiles(files: File[]): string[];
132
+ removeAttachment(id: string): void;
133
+ clearAttachments(): void;
134
+ getAttachments(): PromptBoxAttachment[];
135
+ openFilePicker(): void;
136
+ insertElement(elementType: string, label: string, data: unknown, icon?: unknown): string;
137
+ removeElement(id: string): void;
138
+ getElements(): PromptBoxElement[];
139
+ getTopActions(): Element[];
140
+ getBottomActions(): Element[];
141
+ submit(): void;
142
+ /** @internal */
143
+ selectTriggerOption(option: TriggerOption): void;
144
+ /** @internal */
145
+ highlightTriggerOption(index: number): void;
146
+ /** @internal */
147
+ handleRecordButtonSlotChange: (e: Event) => void;
148
+ /** @internal */
149
+ handleSubmitButtonSlotChange: (e: Event) => void;
150
+ /** @internal */
151
+ handleRecordClick: (event: Event) => void;
152
+ /** @internal */
153
+ handleInput: (e: Event) => void;
154
+ /** @internal */
155
+ handleKeydown: (e: KeyboardEvent) => void;
156
+ /** @internal */
157
+ handleInputFocusIn: () => void;
158
+ /** @internal */
159
+ handleInputFocusOut: () => void;
160
+ /** @internal */
161
+ handleRichInputEvent: (e: InputEvent) => void;
162
+ /** @internal */
163
+ handleRichKeydown: (e: KeyboardEvent) => void;
164
+ private _slotPresenceHandler;
165
+ private _handleComponentFocusIn;
166
+ private _handleComponentFocusOut;
167
+ private _handlePaste;
168
+ /** @internal */
169
+ handlePastedImages(clipboardData: DataTransfer | null): boolean;
170
+ private _handleTopActionsSlotChange;
171
+ private _handleBottomActionsSlotChange;
172
+ private _submit;
173
+ protected render(): TemplateResult;
174
+ }
175
+ export type { ActionValue, PromptBoxAttachment, PromptBoxElement, PromptBoxElementInsertedDetail, PromptBoxElementRemovedDetail, PromptBoxRecordErrorDetail, PromptBoxRecordingCompleteDetail, PromptBoxSegment, PromptBoxSubmitDetail, TriggerConfig, TriggerMenuChangeDetail, TriggerMenuSelectDetail, TriggerOption } from './types';
176
+ export { ELEMENT_MIME_TYPE } from './types';
177
+ declare global {
178
+ interface GlobalEventHandlersEventMap {
179
+ 'luzmo-submit': CustomEvent<PromptBoxSubmitDetail>;
180
+ 'luzmo-record': CustomEvent<{
181
+ isRecording: boolean;
182
+ }>;
183
+ 'luzmo-recording-complete': CustomEvent<PromptBoxRecordingCompleteDetail>;
184
+ 'luzmo-record-cancel': CustomEvent<void>;
185
+ 'luzmo-record-error': CustomEvent<PromptBoxRecordErrorDetail>;
186
+ 'luzmo-attachments-change': CustomEvent<{
187
+ attachments: PromptBoxAttachment[];
188
+ }>;
189
+ 'luzmo-element-inserted': CustomEvent<PromptBoxElementInsertedDetail>;
190
+ 'luzmo-element-removed': CustomEvent<PromptBoxElementRemovedDetail>;
191
+ 'luzmo-trigger-change': CustomEvent<TriggerMenuChangeDetail>;
192
+ 'luzmo-trigger-select': CustomEvent<TriggerMenuSelectDetail>;
193
+ }
194
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Utilities for computing a collapsed Range at a given viewport coordinate,
3
+ * used by the drag-and-drop logic in `RichInputController` to position the
4
+ * caret and drag indicator at the drop point.
5
+ *
6
+ * Tries shadow-root-aware APIs first, then document-level APIs, and finally
7
+ * a manual text-node binary search for maximum browser coverage (Safari
8
+ * doesn't expose caret APIs for Shadow DOM).
9
+ */
10
+ /**
11
+ * Compute a collapsed Range at the character position closest to the given
12
+ * viewport coordinates within `container`. Tries shadow-root-aware caret
13
+ * APIs first, then document-level APIs, then a manual walk.
14
+ *
15
+ * @param shadowRoot - Shadow root to try shadow-aware caret APIs on.
16
+ * @param container - The contenteditable element to search within.
17
+ * @param x - Viewport X coordinate.
18
+ * @param y - Viewport Y coordinate.
19
+ * @param ignoreNode - Optional node to skip during the manual walk (e.g. drag caret).
20
+ */
21
+ export declare function getRangeAtPoint(shadowRoot: ShadowRoot | null, container: HTMLElement, x: number, y: number, ignoreNode?: Node | null): Range | null;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Get a Range from the current selection that can see into shadow DOM.
3
+ * Tries `shadowRoot.getSelection` (older Chrome), then `document.getSelection`
4
+ * with a containment check, then `getComposedRanges` (Safari 17+, Chrome 130+)
5
+ * as a fallback when `getRangeAt` can't cross the shadow boundary.
6
+ */
7
+ export declare function getShadowRange(shadowRoot: ShadowRoot | null): Range | null;
8
+ /**
9
+ * Whether the rich-input caret is at a valid trigger boundary (collapsed, after a
10
+ * newly typed character). Returns true when the character *before* that typed
11
+ * character is start-of-input, space, newline, NBSP, or an element badge — so
12
+ * call from `input` once the trigger key is in the DOM and selection sits after it.
13
+ */
14
+ export declare function isAtWordBoundary(shadowRoot: ShadowRoot | null): boolean;
15
+ /**
16
+ * Get the bounding position of the caret for overlay anchoring.
17
+ * Returns the position at the trigger character (one char before the caret).
18
+ */
19
+ export declare function getCaretRect(shadowRoot: ShadowRoot | null, richInputElement: HTMLElement | null): {
20
+ x: number;
21
+ y: number;
22
+ } | null;
23
+ /**
24
+ * Extract the trigger search string from the rich input DOM.
25
+ * Scans backwards from the caret in the current text node to find text
26
+ * typed after the trigger character.
27
+ */
28
+ export declare function extractTriggerSearchString(shadowRoot: ShadowRoot | null, triggerKey: string): string | null;
29
+ /**
30
+ * Focus the rich input and place the caret right after the badge's
31
+ * trailing space node. Uses `setBaseAndExtent` for Safari shadow-DOM
32
+ * compatibility, with `addRange` as a fallback.
33
+ */
34
+ export declare function placeCursorAfterBadge(input: HTMLElement, badgeId: string): void;
35
+ /**
36
+ * Remove the trigger character and search string from a contenteditable.
37
+ * First tries selection-based removal, then falls back to a text-node scan.
38
+ */
39
+ export declare function removeTriggerText(shadowRoot: ShadowRoot | null, richInputElement: HTMLElement, triggerKey: string, searchString: string): void;
@@ -0,0 +1,10 @@
1
+ import type { ActionValue } from './types';
2
+ /**
3
+ * Synchronise disabled/pending/readonly state to all interactive elements
4
+ * inside the given slots.
5
+ */
6
+ export declare function syncSlottedElementsState(shadowRoot: ShadowRoot | null, disabled: boolean, pending: boolean): void;
7
+ /**
8
+ * Extract values from interactive elements (for submit detail).
9
+ */
10
+ export declare function extractActionValues(elements: Element[]): ActionValue[];
@@ -0,0 +1,112 @@
1
+ export interface ActionValue {
2
+ element: Element;
3
+ name?: string;
4
+ value?: unknown;
5
+ checked?: boolean;
6
+ }
7
+ export interface PromptBoxAttachment {
8
+ file: File;
9
+ id: string;
10
+ previewUrl?: string;
11
+ }
12
+ export interface PromptBoxElement {
13
+ id: string;
14
+ elementType: string;
15
+ label: string;
16
+ data: unknown;
17
+ icon?: unknown;
18
+ }
19
+ export type PromptBoxSegment = {
20
+ type: 'text';
21
+ value?: string;
22
+ } | {
23
+ type: 'element';
24
+ value: PromptBoxElement;
25
+ };
26
+ export interface PromptBoxSubmitDetail {
27
+ value: string;
28
+ segments: PromptBoxSegment[];
29
+ topActions: Element[];
30
+ bottomActions: Element[];
31
+ actionValues: ActionValue[];
32
+ attachments: PromptBoxAttachment[];
33
+ }
34
+ export interface PromptBoxElementInsertedDetail {
35
+ element: PromptBoxElement;
36
+ }
37
+ export interface PromptBoxElementRemovedDetail {
38
+ element: PromptBoxElement;
39
+ }
40
+ export interface PromptBoxRecordingCompleteDetail {
41
+ audioBlob: Blob;
42
+ duration: number;
43
+ mimeType: string;
44
+ }
45
+ export interface PromptBoxRecordErrorDetail {
46
+ error: string;
47
+ }
48
+ export interface TriggerOption {
49
+ label: string;
50
+ value: string;
51
+ description?: string;
52
+ icon?: unknown;
53
+ /** Arbitrary payload attached to the option when selected. */
54
+ data?: unknown;
55
+ /** Element type used when inserting as inline badge (defaults to trigger key). */
56
+ elementType?: string;
57
+ /** When true, renders as a non-interactive category header instead of a selectable option. */
58
+ header?: boolean;
59
+ }
60
+ /**
61
+ * Configuration for a single trigger key.
62
+ *
63
+ * When the user types this key at a word boundary the prompt box opens a
64
+ * popover. The popover can contain:
65
+ * - A named slot (if `slotName` is set) rendered inside the popover for fully custom content.
66
+ * - A built-in `luzmo-options` list populated from `options`.
67
+ * - Both at the same time (slot first, then auto-generated list).
68
+ *
69
+ * When `lazy` is true the component does **not** filter locally — it emits
70
+ * `luzmo-trigger-change` and expects the consumer to update `options` via the
71
+ * `triggers` property.
72
+ */
73
+ export interface TriggerConfig {
74
+ /** The character that activates this trigger (e.g. `@`, `/`). */
75
+ key: string;
76
+ /** Named slot to render inside the popover for this trigger. */
77
+ slotName?: string;
78
+ /** Options rendered in a built-in `luzmo-options` component. */
79
+ options?: TriggerOption[];
80
+ /**
81
+ * When true the component skips local filtering and relies on the consumer
82
+ * to update `options` in response to `luzmo-trigger-change`.
83
+ */
84
+ lazy?: boolean;
85
+ /** When true, matching search text is highlighted in option labels. */
86
+ highlightSearch?: boolean;
87
+ /**
88
+ * Custom render function for the option icon. Receives the option and should
89
+ * return a Lit `TemplateResult`. When set, the returned template replaces
90
+ * the default `luzmo-icon` for every option in this trigger.
91
+ *
92
+ * ```ts
93
+ * iconTemplate: (option) => html`
94
+ * <img src="/icons/${option.value}.svg" width="20" height="20" />
95
+ * `
96
+ * ```
97
+ */
98
+ iconTemplate?: (option: TriggerOption) => unknown;
99
+ }
100
+ export interface TriggerMenuChangeDetail {
101
+ trigger: string;
102
+ open: boolean;
103
+ searchString: string;
104
+ }
105
+ export interface TriggerMenuSelectDetail {
106
+ trigger: string;
107
+ elementType: string;
108
+ label: string;
109
+ data: unknown;
110
+ icon?: unknown;
111
+ }
112
+ export declare const ELEMENT_MIME_TYPE = "application/x-luzmo-element";