@mhmo91/schmancy 0.5.20 → 0.5.22

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 (330) hide show
  1. package/ai/navigation-rail.md +475 -0
  2. package/dist/ai/navigation-rail.md +475 -0
  3. package/dist/{animated-text-D1D0dI8T.cjs → animated-text-Bic7z7SI.cjs} +2 -2
  4. package/dist/{animated-text-D1D0dI8T.cjs.map → animated-text-Bic7z7SI.cjs.map} +1 -1
  5. package/dist/{animated-text-DS9AsLAy.js → animated-text-CLEr78FV.js} +3 -3
  6. package/dist/{animated-text-DS9AsLAy.js.map → animated-text-CLEr78FV.js.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/{area.component-DZFtLBMV.cjs → area.component-BrvNYy7Z.cjs} +2 -2
  11. package/dist/{area.component-DZFtLBMV.cjs.map → area.component-BrvNYy7Z.cjs.map} +1 -1
  12. package/dist/{area.component-5hv6c-dZ.js → area.component-tIK_P5JR.js} +3 -3
  13. package/dist/{area.component-5hv6c-dZ.js.map → area.component-tIK_P5JR.js.map} +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{autocomplete-DpGmI06M.cjs → autocomplete-CG2YtfwU.cjs} +2 -2
  16. package/dist/autocomplete-CG2YtfwU.cjs.map +1 -0
  17. package/dist/{autocomplete-Bm_tnRns.js → autocomplete-DzZQusAY.js} +10 -10
  18. package/dist/autocomplete-DzZQusAY.js.map +1 -0
  19. package/dist/autocomplete.cjs +1 -1
  20. package/dist/autocomplete.js +1 -1
  21. package/dist/{avatar-DVkOL5_x.js → avatar-39MTGkwX.js} +50 -50
  22. package/dist/{avatar-DVkOL5_x.js.map → avatar-39MTGkwX.js.map} +1 -1
  23. package/dist/{avatar-B0Q9R0jH.cjs → avatar-QYDHa7s3.cjs} +2 -2
  24. package/dist/{avatar-B0Q9R0jH.cjs.map → avatar-QYDHa7s3.cjs.map} +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{boat-DDBc--4N.js → boat-BdJ1jyK_.js} +2 -2
  28. package/dist/{boat-DDBc--4N.js.map → boat-BdJ1jyK_.js.map} +1 -1
  29. package/dist/{boat-DpuxxF9v.cjs → boat-DP98_5qG.cjs} +2 -2
  30. package/dist/{boat-DpuxxF9v.cjs.map → boat-DP98_5qG.cjs.map} +1 -1
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.cjs +1 -1
  38. package/dist/card.js +1 -1
  39. package/dist/{checkbox-ByAbf0mX.js → checkbox-4mBWkzKG.js} +2 -2
  40. package/dist/{checkbox-ByAbf0mX.js.map → checkbox-4mBWkzKG.js.map} +1 -1
  41. package/dist/{checkbox-DA355aVd.cjs → checkbox-CIMDI5hW.cjs} +2 -2
  42. package/dist/{checkbox-DA355aVd.cjs.map → checkbox-CIMDI5hW.cjs.map} +1 -1
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/chips.cjs +1 -1
  46. package/dist/chips.js +2 -2
  47. package/dist/code-highlight.cjs +1 -1
  48. package/dist/code-highlight.js +1 -1
  49. package/dist/{code-preview-BEDuv4oc.js → code-preview-CrsExDWj.js} +7 -8
  50. package/dist/{code-preview-BEDuv4oc.js.map → code-preview-CrsExDWj.js.map} +1 -1
  51. package/dist/{code-preview-DXvds6Ik.cjs → code-preview-hWI3erYE.cjs} +6 -7
  52. package/dist/{code-preview-DXvds6Ik.cjs.map → code-preview-hWI3erYE.cjs.map} +1 -1
  53. package/dist/components.cjs +1 -1
  54. package/dist/components.js +1 -1
  55. package/dist/content-drawer.cjs +1 -1
  56. package/dist/content-drawer.js +1 -1
  57. package/dist/{date-range-CO96uRfu.cjs → date-range-B0yz-_Zv.cjs} +2 -2
  58. package/dist/{date-range-CO96uRfu.cjs.map → date-range-B0yz-_Zv.cjs.map} +1 -1
  59. package/dist/{date-range-CWwzapvu.js → date-range-CM-5J_JO.js} +3 -3
  60. package/dist/{date-range-CWwzapvu.js.map → date-range-CM-5J_JO.js.map} +1 -1
  61. package/dist/{date-range-inline-DcRJrT7z.js → date-range-inline-CPI4EyL0.js} +3 -3
  62. package/dist/{date-range-inline-DcRJrT7z.js.map → date-range-inline-CPI4EyL0.js.map} +1 -1
  63. package/dist/{date-range-inline-Br8Pkm6Z.cjs → date-range-inline-P8P2ixg1.cjs} +2 -2
  64. package/dist/{date-range-inline-Br8Pkm6Z.cjs.map → date-range-inline-P8P2ixg1.cjs.map} +1 -1
  65. package/dist/date-range-inline.cjs +1 -1
  66. package/dist/date-range-inline.js +1 -1
  67. package/dist/date-range.cjs +1 -1
  68. package/dist/date-range.js +1 -1
  69. package/dist/{delay-BU66nJyr.cjs → delay-1aTGz1ZH.cjs} +2 -2
  70. package/dist/{delay-BU66nJyr.cjs.map → delay-1aTGz1ZH.cjs.map} +1 -1
  71. package/dist/{delay-4p58-oPM.js → delay-Lg_7K_Vi.js} +2 -2
  72. package/dist/{delay-4p58-oPM.js.map → delay-Lg_7K_Vi.js.map} +1 -1
  73. package/dist/delay.cjs +1 -1
  74. package/dist/delay.js +1 -1
  75. package/dist/{details-COgnQWz1.js → details-gUvX6sxc.js} +2 -2
  76. package/dist/{details-COgnQWz1.js.map → details-gUvX6sxc.js.map} +1 -1
  77. package/dist/{details-CoqpAwjh.cjs → details-uxsPpjMp.cjs} +2 -2
  78. package/dist/{details-CoqpAwjh.cjs.map → details-uxsPpjMp.cjs.map} +1 -1
  79. package/dist/details.cjs +1 -1
  80. package/dist/details.js +1 -1
  81. package/dist/{dialog-content-CJUcyFT1.cjs → dialog-content-CvVd9EwS.cjs} +2 -2
  82. package/dist/{dialog-content-CJUcyFT1.cjs.map → dialog-content-CvVd9EwS.cjs.map} +1 -1
  83. package/dist/{dialog-content-naA5eL6T.js → dialog-content-DKLDmgfz.js} +3 -3
  84. package/dist/{dialog-content-naA5eL6T.js.map → dialog-content-DKLDmgfz.js.map} +1 -1
  85. package/dist/dialog.cjs +1 -1
  86. package/dist/dialog.js +1 -1
  87. package/dist/{divider-a2f7N3mc.cjs → divider-CHGffGro.cjs} +2 -2
  88. package/dist/{divider-a2f7N3mc.cjs.map → divider-CHGffGro.cjs.map} +1 -1
  89. package/dist/{divider-DsNchzPn.js → divider-EvBnlb2a.js} +3 -3
  90. package/dist/{divider-DsNchzPn.js.map → divider-EvBnlb2a.js.map} +1 -1
  91. package/dist/divider.cjs +1 -1
  92. package/dist/divider.js +1 -1
  93. package/dist/{dropdown-content-YiOmwoxH.cjs → dropdown-content-FVKimBQR.cjs} +2 -2
  94. package/dist/{dropdown-content-YiOmwoxH.cjs.map → dropdown-content-FVKimBQR.cjs.map} +1 -1
  95. package/dist/{dropdown-content-CARJm72a.js → dropdown-content-NGBIkvdR.js} +3 -3
  96. package/dist/{dropdown-content-CARJm72a.js.map → dropdown-content-NGBIkvdR.js.map} +1 -1
  97. package/dist/dropdown.cjs +1 -1
  98. package/dist/dropdown.js +1 -1
  99. package/dist/{email-recipients-CM41HA4G.js → email-recipients-CXFSIsL-.js} +5 -5
  100. package/dist/{email-recipients-CM41HA4G.js.map → email-recipients-CXFSIsL-.js.map} +1 -1
  101. package/dist/{email-recipients-Dha5jYMG.cjs → email-recipients-DxqCC99q.cjs} +2 -2
  102. package/dist/{email-recipients-Dha5jYMG.cjs.map → email-recipients-DxqCC99q.cjs.map} +1 -1
  103. package/dist/extra.cjs +1 -1
  104. package/dist/extra.js +1 -1
  105. package/dist/{flex-D-oS3wlY.js → flex-Cm4nZM9q.js} +2 -2
  106. package/dist/{flex-D-oS3wlY.js.map → flex-Cm4nZM9q.js.map} +1 -1
  107. package/dist/{flex-zqTHF06u.cjs → flex-DisTVvBI.cjs} +2 -2
  108. package/dist/{flex-zqTHF06u.cjs.map → flex-DisTVvBI.cjs.map} +1 -1
  109. package/dist/{form-DPAzy8Dn.js → form-BU9TBjfk.js} +2 -2
  110. package/dist/{form-DPAzy8Dn.js.map → form-BU9TBjfk.js.map} +1 -1
  111. package/dist/{form-BSlt0E8v.cjs → form-SMbhjYsC.cjs} +2 -2
  112. package/dist/{form-BSlt0E8v.cjs.map → form-SMbhjYsC.cjs.map} +1 -1
  113. package/dist/form.cjs +1 -1
  114. package/dist/form.js +1 -1
  115. package/dist/{formField.mixin-R7Ddvq3q.cjs → formField.mixin-DYkeOpES.cjs} +2 -2
  116. package/dist/{formField.mixin-R7Ddvq3q.cjs.map → formField.mixin-DYkeOpES.cjs.map} +1 -1
  117. package/dist/{formField.mixin-CVkUNhSX.js → formField.mixin-DxhnL3Kb.js} +2 -2
  118. package/dist/{formField.mixin-CVkUNhSX.js.map → formField.mixin-DxhnL3Kb.js.map} +1 -1
  119. package/dist/{icon-Cm5BKSV4.cjs → icon-BT_1B5_G.cjs} +2 -2
  120. package/dist/{icon-Cm5BKSV4.cjs.map → icon-BT_1B5_G.cjs.map} +1 -1
  121. package/dist/{icon-ave1X5b9.js → icon-Cgd3NUcv.js} +2 -2
  122. package/dist/{icon-ave1X5b9.js.map → icon-Cgd3NUcv.js.map} +1 -1
  123. package/dist/{icon-button-BdB5el84.cjs → icon-button-C5hq1cKD.cjs} +2 -2
  124. package/dist/{icon-button-BdB5el84.cjs.map → icon-button-C5hq1cKD.cjs.map} +1 -1
  125. package/dist/{icon-button-DiNXfJ8u.js → icon-button-DsjqusZz.js} +3 -3
  126. package/dist/{icon-button-DiNXfJ8u.js.map → icon-button-DsjqusZz.js.map} +1 -1
  127. package/dist/icons.cjs +1 -1
  128. package/dist/icons.js +1 -1
  129. package/dist/index.cjs +1 -1
  130. package/dist/index.js +49 -49
  131. package/dist/{input-DPiDmsjt.js → input-Bj4MTOC9.js} +3 -3
  132. package/dist/{input-DPiDmsjt.js.map → input-Bj4MTOC9.js.map} +1 -1
  133. package/dist/{input-B6zwyDBC.cjs → input-D3qmQZ-Y.cjs} +2 -2
  134. package/dist/{input-B6zwyDBC.cjs.map → input-D3qmQZ-Y.cjs.map} +1 -1
  135. package/dist/{input-chip-CkWSf6nV.cjs → input-chip-CbD-eDs-.cjs} +2 -2
  136. package/dist/{input-chip-CkWSf6nV.cjs.map → input-chip-CbD-eDs-.cjs.map} +1 -1
  137. package/dist/{input-chip-C06GAnnC.js → input-chip-DiThsRoi.js} +2 -2
  138. package/dist/{input-chip-C06GAnnC.js.map → input-chip-DiThsRoi.js.map} +1 -1
  139. package/dist/input.cjs +1 -1
  140. package/dist/input.js +1 -1
  141. package/dist/layout.cjs +1 -1
  142. package/dist/layout.js +1 -1
  143. package/dist/{list-BCDPk6mM.cjs → list-5Y_CGGJF.cjs} +2 -2
  144. package/dist/{list-BCDPk6mM.cjs.map → list-5Y_CGGJF.cjs.map} +1 -1
  145. package/dist/{list-vICZQxqV.js → list-CAFpmXsb.js} +2 -2
  146. package/dist/{list-vICZQxqV.js.map → list-CAFpmXsb.js.map} +1 -1
  147. package/dist/list.cjs +1 -1
  148. package/dist/list.js +1 -1
  149. package/dist/{litElement.mixin-jTGHsEfH.js → litElement.mixin-Bv6DGuhe.js} +2 -2
  150. package/dist/{litElement.mixin-jTGHsEfH.js.map → litElement.mixin-Bv6DGuhe.js.map} +1 -1
  151. package/dist/{litElement.mixin-DLJYzvsb.cjs → litElement.mixin-rWG9s46P.cjs} +2 -2
  152. package/dist/{litElement.mixin-DLJYzvsb.cjs.map → litElement.mixin-rWG9s46P.cjs.map} +1 -1
  153. package/dist/mailbox.cjs +1 -1
  154. package/dist/mailbox.js +1 -1
  155. package/dist/{map-D6QG9Yzr.cjs → map-bTOQf8Jm.cjs} +2 -2
  156. package/dist/{map-D6QG9Yzr.cjs.map → map-bTOQf8Jm.cjs.map} +1 -1
  157. package/dist/{map-DZt51SfS.js → map-yv8FB9mG.js} +2 -2
  158. package/dist/{map-DZt51SfS.js.map → map-yv8FB9mG.js.map} +1 -1
  159. package/dist/map.cjs +1 -1
  160. package/dist/map.js +1 -1
  161. package/dist/{media-BUx20F5U.js → media-CA52MXd3.js} +2 -2
  162. package/dist/{media-BUx20F5U.js.map → media-CA52MXd3.js.map} +1 -1
  163. package/dist/{media-CdPEYBLJ.cjs → media-CPIoKlRw.cjs} +2 -2
  164. package/dist/{media-CdPEYBLJ.cjs.map → media-CPIoKlRw.cjs.map} +1 -1
  165. package/dist/{menu-CvWQC1In.js → menu-BKO9PgJq.js} +3 -3
  166. package/dist/{menu-CvWQC1In.js.map → menu-BKO9PgJq.js.map} +1 -1
  167. package/dist/{menu-2UwBHzr9.cjs → menu-Cak8SbFx.cjs} +2 -2
  168. package/dist/{menu-2UwBHzr9.cjs.map → menu-Cak8SbFx.cjs.map} +1 -1
  169. package/dist/menu.cjs +1 -1
  170. package/dist/menu.js +1 -1
  171. package/dist/nav-drawer.cjs +1 -1
  172. package/dist/nav-drawer.js +1 -1
  173. package/dist/navigation-bar.cjs +1 -1
  174. package/dist/navigation-bar.js +1 -1
  175. package/dist/navigation-rail-C8OOb0V3.js +564 -0
  176. package/dist/navigation-rail-C8OOb0V3.js.map +1 -0
  177. package/dist/navigation-rail-D1iYDMy2.cjs +415 -0
  178. package/dist/navigation-rail-D1iYDMy2.cjs.map +1 -0
  179. package/dist/navigation-rail.cjs +1 -1
  180. package/dist/navigation-rail.js +1 -1
  181. package/dist/{notification-service-BqvWCDoP.cjs → notification-service-DaXxcXyj.cjs} +2 -2
  182. package/dist/{notification-service-BqvWCDoP.cjs.map → notification-service-DaXxcXyj.cjs.map} +1 -1
  183. package/dist/{notification-service-eOCFErH1.js → notification-service-jfBwJ2TN.js} +4 -4
  184. package/dist/{notification-service-eOCFErH1.js.map → notification-service-jfBwJ2TN.js.map} +1 -1
  185. package/dist/notification.cjs +1 -1
  186. package/dist/notification.js +2 -2
  187. package/dist/{notify-COSA8XRV.js → notify-C5gy3egX.js} +2 -2
  188. package/dist/{notify-COSA8XRV.js.map → notify-C5gy3egX.js.map} +1 -1
  189. package/dist/{notify-BaedZ1y9.cjs → notify-Dd5h2l-v.cjs} +2 -2
  190. package/dist/{notify-BaedZ1y9.cjs.map → notify-Dd5h2l-v.cjs.map} +1 -1
  191. package/dist/{option-CeXe-DCz.cjs → option-C6PwIhut.cjs} +2 -2
  192. package/dist/{option-CeXe-DCz.cjs.map → option-C6PwIhut.cjs.map} +1 -1
  193. package/dist/{option-CplQ_59U.js → option-D7b-uGff.js} +2 -2
  194. package/dist/{option-CplQ_59U.js.map → option-D7b-uGff.js.map} +1 -1
  195. package/dist/option.cjs +1 -1
  196. package/dist/option.js +1 -1
  197. package/dist/{payment-card-form-wns1GAaC.cjs → payment-card-form-DTfoZiiN.cjs} +2 -2
  198. package/dist/{payment-card-form-wns1GAaC.cjs.map → payment-card-form-DTfoZiiN.cjs.map} +1 -1
  199. package/dist/{payment-card-form-hVPgM3HO.js → payment-card-form-xwk5dfeQ.js} +3 -3
  200. package/dist/{payment-card-form-hVPgM3HO.js.map → payment-card-form-xwk5dfeQ.js.map} +1 -1
  201. package/dist/{progress-X8hxleUC.js → progress-D-5gThOU.js} +2 -2
  202. package/dist/{progress-X8hxleUC.js.map → progress-D-5gThOU.js.map} +1 -1
  203. package/dist/{progress-CM5lHuCR.cjs → progress-sFt6EeRy.cjs} +2 -2
  204. package/dist/{progress-CM5lHuCR.cjs.map → progress-sFt6EeRy.cjs.map} +1 -1
  205. package/dist/progress.cjs +1 -1
  206. package/dist/progress.js +1 -1
  207. package/dist/{radio-button--uXczpjB.js → radio-button-CZq8Z-V-.js} +3 -3
  208. package/dist/{radio-button--uXczpjB.js.map → radio-button-CZq8Z-V-.js.map} +1 -1
  209. package/dist/{radio-button-D76Qubig.cjs → radio-button-Cc5fCDdU.cjs} +2 -2
  210. package/dist/{radio-button-D76Qubig.cjs.map → radio-button-Cc5fCDdU.cjs.map} +1 -1
  211. package/dist/radio-group.cjs +1 -1
  212. package/dist/radio-group.js +1 -1
  213. package/dist/{schmancy-steps-container-Dc_hXgrm.cjs → schmancy-steps-container-Cb-cUZWP.cjs} +2 -2
  214. package/dist/{schmancy-steps-container-Dc_hXgrm.cjs.map → schmancy-steps-container-Cb-cUZWP.cjs.map} +1 -1
  215. package/dist/{schmancy-steps-container-Csh_Ocoa.js → schmancy-steps-container-DkPckhRw.js} +2 -2
  216. package/dist/{schmancy-steps-container-Csh_Ocoa.js.map → schmancy-steps-container-DkPckhRw.js.map} +1 -1
  217. package/dist/{select-DvjgcI2e.cjs → select-BszKwEA_.cjs} +4 -4
  218. package/dist/select-BszKwEA_.cjs.map +1 -0
  219. package/dist/{select-BrdNXtJK.js → select-CHgsFxnz.js} +14 -14
  220. package/dist/select-CHgsFxnz.js.map +1 -0
  221. package/dist/select.cjs +1 -1
  222. package/dist/select.js +1 -1
  223. package/dist/{sheet-D6hxqRpX.js → sheet-BscruHZw.js} +3 -3
  224. package/dist/{sheet-D6hxqRpX.js.map → sheet-BscruHZw.js.map} +1 -1
  225. package/dist/{sheet-DrGvhM5D.cjs → sheet-ZHVITumf.cjs} +2 -2
  226. package/dist/{sheet-DrGvhM5D.cjs.map → sheet-ZHVITumf.cjs.map} +1 -1
  227. package/dist/sheet.cjs +1 -1
  228. package/dist/sheet.js +1 -1
  229. package/dist/{slider-DNqgaGvI.cjs → slider-BKUCiMOV.cjs} +2 -2
  230. package/dist/{slider-DNqgaGvI.cjs.map → slider-BKUCiMOV.cjs.map} +1 -1
  231. package/dist/{slider-ev-R3lWD.js → slider-gBHyj2TC.js} +3 -3
  232. package/dist/{slider-ev-R3lWD.js.map → slider-gBHyj2TC.js.map} +1 -1
  233. package/dist/slider.cjs +1 -1
  234. package/dist/slider.js +1 -1
  235. package/dist/{spinner-BBhBlm_F.cjs → spinner-CiRbCC74.cjs} +2 -2
  236. package/dist/{spinner-BBhBlm_F.cjs.map → spinner-CiRbCC74.cjs.map} +1 -1
  237. package/dist/{spinner-0Be5YjKa.js → spinner-DZ3oE5cQ.js} +2 -2
  238. package/dist/{spinner-0Be5YjKa.js.map → spinner-DZ3oE5cQ.js.map} +1 -1
  239. package/dist/steps.cjs +1 -1
  240. package/dist/steps.js +1 -1
  241. package/dist/{suggestion-chip-WW3dScRF.js → suggestion-chip-BTiLUD1d.js} +10 -10
  242. package/dist/suggestion-chip-BTiLUD1d.js.map +1 -0
  243. package/dist/{suggestion-chip-GLpIJvu3.cjs → suggestion-chip-D7izoLhZ.cjs} +8 -8
  244. package/dist/suggestion-chip-D7izoLhZ.cjs.map +1 -0
  245. package/dist/{surface-DmtBge0h.js → surface-C4Lkv6Xu.js} +2 -2
  246. package/dist/{surface-DmtBge0h.js.map → surface-C4Lkv6Xu.js.map} +1 -1
  247. package/dist/{surface-BaMQfpnN.cjs → surface-DTqeD1NX.cjs} +2 -2
  248. package/dist/{surface-BaMQfpnN.cjs.map → surface-DTqeD1NX.cjs.map} +1 -1
  249. package/dist/surface.cjs +1 -1
  250. package/dist/surface.js +1 -1
  251. package/dist/{table-Bc86ZVfE.cjs → table-CGB_dR8H.cjs} +2 -2
  252. package/dist/{table-Bc86ZVfE.cjs.map → table-CGB_dR8H.cjs.map} +1 -1
  253. package/dist/{table-D00xx57f.js → table-D320TllW.js} +2 -2
  254. package/dist/{table-D00xx57f.js.map → table-D320TllW.js.map} +1 -1
  255. package/dist/table.cjs +1 -1
  256. package/dist/table.js +1 -1
  257. package/dist/{tabs-compatibility-Bo4Z38SO.cjs → tabs-compatibility-C1ifLAs_.cjs} +2 -2
  258. package/dist/{tabs-compatibility-Bo4Z38SO.cjs.map → tabs-compatibility-C1ifLAs_.cjs.map} +1 -1
  259. package/dist/{tabs-compatibility-BQqS_oQN.js → tabs-compatibility-DNkcL6dE.js} +2 -2
  260. package/dist/{tabs-compatibility-BQqS_oQN.js.map → tabs-compatibility-DNkcL6dE.js.map} +1 -1
  261. package/dist/tabs.cjs +1 -1
  262. package/dist/tabs.js +1 -1
  263. package/dist/tailwind.mixin-9XFzAXGw.js +43 -0
  264. package/dist/{tailwind.mixin-Dq8FD_xN.js.map → tailwind.mixin-9XFzAXGw.js.map} +1 -1
  265. package/dist/tailwind.mixin-ChrVaJHF.cjs +2 -0
  266. package/dist/{tailwind.mixin-B_-9TcsC.cjs.map → tailwind.mixin-ChrVaJHF.cjs.map} +1 -1
  267. package/dist/teleport.cjs +1 -1
  268. package/dist/teleport.js +1 -1
  269. package/dist/{textarea-DvfusaL0.cjs → textarea-1QvQzHKm.cjs} +2 -2
  270. package/dist/{textarea-DvfusaL0.cjs.map → textarea-1QvQzHKm.cjs.map} +1 -1
  271. package/dist/{textarea-DpSgcB0q.js → textarea-B2U316Um.js} +2 -2
  272. package/dist/{textarea-DpSgcB0q.js.map → textarea-B2U316Um.js.map} +1 -1
  273. package/dist/textarea.cjs +1 -1
  274. package/dist/textarea.js +1 -1
  275. package/dist/{theme-button-Dj3aS2jG.cjs → theme-button-B0n3kSd_.cjs} +2 -2
  276. package/dist/{theme-button-Dj3aS2jG.cjs.map → theme-button-B0n3kSd_.cjs.map} +1 -1
  277. package/dist/{theme-button-1dnUcGe5.js → theme-button-zUYywyWx.js} +2 -2
  278. package/dist/{theme-button-1dnUcGe5.js.map → theme-button-zUYywyWx.js.map} +1 -1
  279. package/dist/theme-button.cjs +1 -1
  280. package/dist/theme-button.js +1 -1
  281. package/dist/theme.cjs +1 -1
  282. package/dist/{theme.component-B2834R93.cjs → theme.component-BLKJxyFX.cjs} +2 -2
  283. package/dist/{theme.component-B2834R93.cjs.map → theme.component-BLKJxyFX.cjs.map} +1 -1
  284. package/dist/{theme.component-DwzieORm.js → theme.component-DpPMKf8l.js} +2 -2
  285. package/dist/{theme.component-DwzieORm.js.map → theme.component-DpPMKf8l.js.map} +1 -1
  286. package/dist/theme.js +1 -1
  287. package/dist/{timezone-CWEqsRA_.cjs → timezone-DRSCR7bi.cjs} +2 -2
  288. package/dist/{timezone-CWEqsRA_.cjs.map → timezone-DRSCR7bi.cjs.map} +1 -1
  289. package/dist/{timezone-YbhVzZRq.js → timezone-DhLUcYcX.js} +3 -3
  290. package/dist/{timezone-YbhVzZRq.js.map → timezone-DhLUcYcX.js.map} +1 -1
  291. package/dist/{tooltip-BZ2fruXd.cjs → tooltip-B4nvmANO.cjs} +2 -2
  292. package/dist/{tooltip-BZ2fruXd.cjs.map → tooltip-B4nvmANO.cjs.map} +1 -1
  293. package/dist/{tooltip-DgLua_UV.js → tooltip-tFxYzDct.js} +2 -2
  294. package/dist/{tooltip-DgLua_UV.js.map → tooltip-tFxYzDct.js.map} +1 -1
  295. package/dist/tooltip.cjs +1 -1
  296. package/dist/tooltip.js +1 -1
  297. package/dist/{tree-Dg-mKO7n.js → tree-C9gLZE_E.js} +2 -2
  298. package/dist/{tree-Dg-mKO7n.js.map → tree-C9gLZE_E.js.map} +1 -1
  299. package/dist/{tree-c9Fcsgxi.cjs → tree-CRjGBeHH.cjs} +2 -2
  300. package/dist/{tree-c9Fcsgxi.cjs.map → tree-CRjGBeHH.cjs.map} +1 -1
  301. package/dist/tree.cjs +1 -1
  302. package/dist/tree.js +1 -1
  303. package/dist/{typewriter-Bgp3f7FN.js → typewriter-DN9HiCBW.js} +4 -4
  304. package/dist/{typewriter-Bgp3f7FN.js.map → typewriter-DN9HiCBW.js.map} +1 -1
  305. package/dist/{typewriter-FHkXxEdA.cjs → typewriter-VGsKEZOj.cjs} +2 -2
  306. package/dist/{typewriter-FHkXxEdA.cjs.map → typewriter-VGsKEZOj.cjs.map} +1 -1
  307. package/dist/typewriter.cjs +1 -1
  308. package/dist/typewriter.js +1 -1
  309. package/dist/{typography-B2kH45Vn.js → typography-MN7P8my2.js} +2 -2
  310. package/dist/{typography-B2kH45Vn.js.map → typography-MN7P8my2.js.map} +1 -1
  311. package/dist/{typography-CE_QuH1P.cjs → typography-XN-pEi3Q.cjs} +2 -2
  312. package/dist/{typography-CE_QuH1P.cjs.map → typography-XN-pEi3Q.cjs.map} +1 -1
  313. package/dist/typography.cjs +1 -1
  314. package/dist/typography.js +1 -1
  315. package/package.json +1 -1
  316. package/types/src/navigation-rail/index.d.ts +1 -1
  317. package/types/src/navigation-rail/navigation-rail-item.d.ts +89 -9
  318. package/types/src/navigation-rail/navigation-rail.d.ts +77 -9
  319. package/dist/autocomplete-Bm_tnRns.js.map +0 -1
  320. package/dist/autocomplete-DpGmI06M.cjs.map +0 -1
  321. package/dist/navigation-rail-item-CIg6-B2G.js +0 -151
  322. package/dist/navigation-rail-item-CIg6-B2G.js.map +0 -1
  323. package/dist/navigation-rail-item-DA7eqAg3.cjs +0 -116
  324. package/dist/navigation-rail-item-DA7eqAg3.cjs.map +0 -1
  325. package/dist/select-BrdNXtJK.js.map +0 -1
  326. package/dist/select-DvjgcI2e.cjs.map +0 -1
  327. package/dist/suggestion-chip-GLpIJvu3.cjs.map +0 -1
  328. package/dist/suggestion-chip-WW3dScRF.js.map +0 -1
  329. package/dist/tailwind.mixin-B_-9TcsC.cjs +0 -2
  330. package/dist/tailwind.mixin-Dq8FD_xN.js +0 -43
@@ -1,44 +1,124 @@
1
- declare const SchmancyNavigationRailItem_base: import("../../mixins").Constructor<CustomElementConstructor> & import("../../mixins").Constructor<import("@mixins/tailwind.mixin").ITailwindElementMixin> & import("../../mixins").Constructor<import("lit").LitElement> & import("../../mixins").Constructor<import("../../mixins").IBaseMixin>;
1
+ import { PropertyValues } from 'lit';
2
+ export type NavigationRailItemClickEvent = CustomEvent<{
3
+ icon: string;
4
+ label: string;
5
+ value: string;
6
+ active: boolean;
7
+ }>;
8
+ declare const SchmancyNavigationRailItem_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
2
9
  /**
10
+ * Material Design 3 Navigation Rail Item Component
11
+ * @see https://m3.material.io/components/navigation-rail/overview
12
+ *
3
13
  * `<schmancy-navigation-rail-item>` component
4
14
  *
5
15
  * Individual navigation item for use within a navigation rail.
6
16
  * Represents a single destination or action with an icon and optional label.
7
17
  *
8
18
  * @element schmancy-navigation-rail-item
9
- * @slot icon - Slot for the navigation item icon
10
- * @slot - Default slot for custom content (takes precedence over icon/label props)
19
+ * @slot icon - Slot for the navigation item icon (e.g., schmancy-icon)
20
+ * @slot - Default slot for custom content
21
+ * @slot badge - Custom badge content
22
+ *
23
+ * @fires navigate - When the item is clicked
24
+ *
25
+ * @csspart container - The main item container
26
+ * @csspart indicator - The active indicator
27
+ * @csspart icon - The icon container
28
+ * @csspart label - The label text
29
+ * @csspart badge - The badge element
30
+ *
31
+ * @example
32
+ * <schmancy-navigation-rail-item
33
+ * icon="home"
34
+ * label="Home"
35
+ * value="/home"
36
+ * badge="3"
37
+ * active>
38
+ * </schmancy-navigation-rail-item>
11
39
  *
12
40
  * @example
13
- * <schmancy-navigation-rail-item icon="home" label="Home" active></schmancy-navigation-rail-item>
41
+ * <!-- Using 'selected' alias -->
42
+ * <schmancy-navigation-rail-item
43
+ * icon="settings"
44
+ * label="Settings"
45
+ * value="/settings"
46
+ * selected>
47
+ * </schmancy-navigation-rail-item>
48
+ *
49
+ * @example
50
+ * <!-- With custom icon -->
51
+ * <schmancy-navigation-rail-item label="Dashboard">
52
+ * <schmancy-icon slot="icon">dashboard</schmancy-icon>
53
+ * </schmancy-navigation-rail-item>
14
54
  */
15
55
  export declare class SchmancyNavigationRailItem extends SchmancyNavigationRailItem_base {
56
+ private hovering$;
57
+ private pressing$;
58
+ private active$;
16
59
  /**
17
- * Icon name for the navigation item
60
+ * Icon name (Material Symbols icon)
18
61
  */
19
62
  icon: string;
20
63
  /**
21
64
  * Label text for the navigation item
22
65
  */
23
66
  label: string;
67
+ /**
68
+ * Value associated with this item (useful for routing)
69
+ */
70
+ value: string;
24
71
  /**
25
72
  * Whether this item is currently active/selected
26
73
  * @default false
27
74
  */
28
- active: boolean;
75
+ get active(): boolean;
76
+ set active(value: boolean);
29
77
  /**
30
- * Badge text to display (e.g., notification count)
78
+ * Whether this item is currently selected (alias for active)
79
+ * @default false
80
+ */
81
+ get selected(): boolean;
82
+ set selected(value: boolean);
83
+ /**
84
+ * Badge text or number to display
31
85
  */
32
86
  badge: string;
33
87
  /**
34
- * Whether the parent rail is extended
88
+ * Badge variant
89
+ */
90
+ badgeVariant: 'error' | 'primary' | 'secondary';
91
+ /**
92
+ * Whether to show the label (controlled by parent rail)
93
+ * @default false
94
+ */
95
+ showLabel: boolean;
96
+ /**
97
+ * Whether this item is disabled
98
+ * @default false
99
+ */
100
+ disabled: boolean;
101
+ /**
102
+ * Whether this is a nested item (sub-navigation)
35
103
  * @default false
36
104
  */
37
- extended: boolean;
105
+ nested: boolean;
106
+ /**
107
+ * Whether this item represents a group separator
108
+ * @default false
109
+ */
110
+ group: boolean;
111
+ private showRipple;
112
+ connectedCallback(): void;
113
+ updated(changedProperties: PropertyValues): void;
38
114
  /**
39
115
  * Handle click events
40
116
  */
41
117
  private handleClick;
118
+ /**
119
+ * Handle keyboard events
120
+ */
121
+ private handleKeyDown;
42
122
  protected render(): import("lit-html").TemplateResult<1>;
43
123
  }
44
124
  declare global {
@@ -1,31 +1,99 @@
1
- declare const SchmancyNavigationRail_base: import("../../mixins").Constructor<CustomElementConstructor> & import("../../mixins").Constructor<import("@mixins/tailwind.mixin").ITailwindElementMixin> & import("../../mixins").Constructor<import("lit").LitElement> & import("../../mixins").Constructor<import("../../mixins").IBaseMixin>;
1
+ import { PropertyValues } from 'lit';
2
+ export type NavigateEvent = CustomEvent<string>;
3
+ export type NavigationRailMenuClickEvent = CustomEvent<void>;
4
+ export type NavigationRailFabClickEvent = CustomEvent<void>;
5
+ export type LabelVisibility = 'all' | 'selected' | 'none';
6
+ declare const SchmancyNavigationRail_base: CustomElementConstructor & import("@mixins/index").Constructor<import("lit").LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
2
7
  /**
8
+ * Material Design 3 Navigation Rail Component
9
+ * @see https://m3.material.io/components/navigation-rail/overview
10
+ *
3
11
  * `<schmancy-navigation-rail>` component
4
12
  *
5
- * A vertical navigation component typically positioned on the left side of an application.
13
+ * A Material Design 3 vertical navigation component positioned on the left side of an application.
6
14
  * Navigation rails provide access to between 3-7 primary destinations with a compact footprint.
7
15
  *
8
16
  * @element schmancy-navigation-rail
17
+ * @slot fab - Slot for a floating action button at the top
18
+ * @slot menu - Slot for a menu icon or button below the FAB
19
+ * @slot header - Custom header content slot
20
+ * @slot footer - Custom footer content slot
9
21
  * @slot - Default slot for navigation rail items
10
22
  *
23
+ * @fires navigate - When a navigation item is selected
24
+ * @fires menu-click - When the menu button is clicked
25
+ * @fires fab-click - When the FAB is clicked
26
+ *
27
+ * @csspart rail - The main rail container
28
+ * @csspart header - The header section
29
+ * @csspart nav - The navigation items container
30
+ * @csspart footer - The footer section
31
+ *
11
32
  * @example
12
- * <schmancy-navigation-rail>
33
+ * <schmancy-navigation-rail activeIndex="0">
34
+ * <schmancy-button slot="fab" variant="filled" aria-label="Compose">
35
+ * <schmancy-icon>add</schmancy-icon>
36
+ * </schmancy-button>
37
+ * <schmancy-button slot="menu" variant="text" aria-label="Menu">
38
+ * <schmancy-icon>menu</schmancy-icon>
39
+ * </schmancy-button>
13
40
  * <schmancy-navigation-rail-item icon="home" label="Home"></schmancy-navigation-rail-item>
14
41
  * <schmancy-navigation-rail-item icon="search" label="Search"></schmancy-navigation-rail-item>
42
+ * <schmancy-navigation-rail-item icon="favorite" label="Favorites" badge="3"></schmancy-navigation-rail-item>
43
+ * <schmancy-navigation-rail-item icon="settings" label="Settings"></schmancy-navigation-rail-item>
15
44
  * </schmancy-navigation-rail>
16
45
  */
17
46
  export declare class SchmancyNavigationRail extends SchmancyNavigationRail_base {
47
+ private activeIndex$;
48
+ /**
49
+ * The currently active item index
50
+ * @default -1
51
+ */
52
+ get activeIndex(): number;
53
+ set activeIndex(value: number);
54
+ /**
55
+ * The currently active item value (for programmatic selection)
56
+ */
57
+ get activeValue(): string;
58
+ set activeValue(value: string);
59
+ private _activeValue;
60
+ /**
61
+ * When to show labels for navigation items
62
+ * 'all' - Always show labels for all items
63
+ * 'selected' - Only show label for selected item
64
+ * 'none' - Never show labels
65
+ * @default 'all'
66
+ */
67
+ labelVisibility: LabelVisibility;
68
+ /**
69
+ * Alignment of navigation items
70
+ * @default 'top'
71
+ */
72
+ alignment: 'top' | 'center' | 'bottom';
18
73
  /**
19
- * Whether the navigation rail is extended to show labels
20
- * @default false
74
+ * Show tooltips when labels are hidden
75
+ * @default true
21
76
  */
22
- extended: boolean;
77
+ showTooltips: boolean;
23
78
  /**
24
- * Alignment of items within the rail
25
- * @default 'center'
79
+ * Enable keyboard navigation
80
+ * @default true
26
81
  */
27
- align: 'start' | 'center' | 'end';
82
+ keyboardNavigation: boolean;
83
+ private focusedIndex;
84
+ private allElements;
85
+ private get navigationItems();
86
+ connectedCallback(): void;
87
+ updated(changedProperties: PropertyValues): void;
88
+ private updateActiveStates;
89
+ private updateActiveByValue;
90
+ private updateLabelVisibility;
91
+ private handleKeyDown;
92
+ private handleFabClick;
93
+ private handleMenuClick;
28
94
  protected render(): import("lit-html").TemplateResult<1>;
95
+ private setupNavigateListener;
96
+ private handleSlotChange;
29
97
  }
30
98
  declare global {
31
99
  interface HTMLElementTagNameMap {
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-Bm_tnRns.js","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../utils/search'\n// Import chip component for multi-select display\nimport '../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'off'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n @property({ type: Boolean }) error = false\n @property({ type: String }) validationMessage = ''\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n // Complex autofill detection disabled - using simple auto-select on blur instead\n // this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n\n // Keep search input persistent - don't reset\n // this._inputValue$.next('')\n // this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline - only for single select\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value && !this.multi),\n tap(([, selectedValue, options]) => {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open =>\n open\n ? timer(10).pipe(\n switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n\n private _updateInputDisplay() {\n // For multi-select, we don't update input display since chips show the selections\n if (this.multi) {\n return\n }\n\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen) {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n // Auto-selection now happens on blur, no need for autofill detection\n }\n\n private handleChipRemove(value: string) {\n const currentValues = this._selectedValues$.value\n const newValues = currentValues.filter(v => v !== value)\n this._selectedValues$.next(newValues)\n this._fireChangeEvent()\n this._announceToScreenReader(`Removed: ${this._getChipLabel(value)}`)\n }\n\n private _getChipLabel(value: string): string {\n const option = this._options.find(opt => opt.value === value)\n return option ? option.label || option.textContent || value : value\n }\n\n private _focusTextInput() {\n if (this._inputElementRef.value) {\n this._inputElementRef.value.focus()\n }\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n // Get size-based styling to match Schmancy input\n const getSizeStyles = () => {\n switch (this.size) {\n case 'sm':\n return {\n height: 'min-h-[40px]',\n padding: 'px-2',\n fontSize: 'text-sm', // 14px\n labelSize: 'text-sm'\n }\n case 'lg':\n return {\n height: 'min-h-[60px]',\n padding: 'px-5',\n fontSize: 'text-lg', // 18px\n labelSize: 'text-lg'\n }\n case 'md':\n default:\n return {\n height: 'min-h-[50px]',\n padding: 'px-4',\n fontSize: 'text-base', // 16px\n labelSize: 'text-base'\n }\n }\n }\n\n const { height, padding, fontSize, labelSize } = getSizeStyles()\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Custom input wrapper for Gmail-style chip input -->\n <slot name=\"trigger\">\n ${when(this.multi,\n () => html`\n <!-- Custom multi-select input with inline chips -->\n <div class=\"relative\">\n ${when(this.label, () => html`\n <label class=\"${classMap({\n 'block mb-1 font-medium': true,\n 'text-primary-default': !this.error,\n 'text-error-default': this.error,\n [labelSize]: true\n })}\">\n ${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n </label>\n `)}\n <div\n class=\"${classMap({\n 'flex flex-wrap items-center gap-1': true,\n [height]: true,\n [padding]: true,\n 'block w-full min-w-0 rounded-[8px] border-0': true,\n 'bg-surface-highest text-surface-on': true,\n 'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n 'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n 'ring-error-default focus-within:ring-error-default': this.error,\n 'cursor-text transition-colors duration-200': true\n })}\"\n @click=${() => this._focusTextInput()}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n >\n <!-- Render chips inline -->\n ${repeat(\n this._selectedValues$.value,\n value => value,\n value => html`\n <schmancy-input-chip\n .value=${value}\n @remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n class=\"flex-shrink-0 my-0.5\"\n >\n ${this._getChipLabel(value)}\n </schmancy-input-chip>\n `\n )}\n\n <!-- Text input for typing -->\n <input\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n type=\"text\"\n class=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .placeholder=${this._selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n .value=${this._inputValue}\n .autocomplete=${this.autocomplete}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n // Clear input on focus for new searches\n this._inputValue = ''\n this._inputValue$.next('')\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n />\n </div>\n\n <!-- Validation message -->\n ${when(this.error && this.validationMessage, () => html`\n <div class=\"mt-1 text-sm text-error-default\">\n ${this.validationMessage}\n </div>\n `)}\n </div>\n `,\n () => html`\n <!-- Regular single-select input -->\n <schmancy-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n `\n )}\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \n }\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$, this._selectedValues$),\n tap(([event, isOpen, options, selectedValues]) => {\n // Handle backspace to remove last chip in multi-select when input is empty\n if (this.multi && event.key === 'Backspace' && !this._inputValue && selectedValues.length > 0 && !isOpen) {\n event.preventDefault()\n const lastValue = selectedValues[selectedValues.length - 1]\n this.handleChipRemove(lastValue)\n return\n }\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","error","validationMessage","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","find","opt","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","_getChipLabel","_focusTextInput","focus","render","descriptionId","height","padding","fontSize","labelSize","getSizeStyles","html","when","classMap","repeat","handleChipRemove","ref","toLowerCase","replace","target","_handleKeyDown","_handleAutoSelectOnBlur","absolute","flex","bestMatch","bestScore","_e","event","key","lastValue","firstVisible","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-DpGmI06M.cjs","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../utils/search'\n// Import chip component for multi-select display\nimport '../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'off'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n @property({ type: Boolean }) error = false\n @property({ type: String }) validationMessage = ''\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n // Complex autofill detection disabled - using simple auto-select on blur instead\n // this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n\n // Keep search input persistent - don't reset\n // this._inputValue$.next('')\n // this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline - only for single select\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value && !this.multi),\n tap(([, selectedValue, options]) => {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open =>\n open\n ? timer(10).pipe(\n switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n\n private _updateInputDisplay() {\n // For multi-select, we don't update input display since chips show the selections\n if (this.multi) {\n return\n }\n\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen) {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n // Auto-selection now happens on blur, no need for autofill detection\n }\n\n private handleChipRemove(value: string) {\n const currentValues = this._selectedValues$.value\n const newValues = currentValues.filter(v => v !== value)\n this._selectedValues$.next(newValues)\n this._fireChangeEvent()\n this._announceToScreenReader(`Removed: ${this._getChipLabel(value)}`)\n }\n\n private _getChipLabel(value: string): string {\n const option = this._options.find(opt => opt.value === value)\n return option ? option.label || option.textContent || value : value\n }\n\n private _focusTextInput() {\n if (this._inputElementRef.value) {\n this._inputElementRef.value.focus()\n }\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n // Get size-based styling to match Schmancy input\n const getSizeStyles = () => {\n switch (this.size) {\n case 'sm':\n return {\n height: 'min-h-[40px]',\n padding: 'px-2',\n fontSize: 'text-sm', // 14px\n labelSize: 'text-sm'\n }\n case 'lg':\n return {\n height: 'min-h-[60px]',\n padding: 'px-5',\n fontSize: 'text-lg', // 18px\n labelSize: 'text-lg'\n }\n case 'md':\n default:\n return {\n height: 'min-h-[50px]',\n padding: 'px-4',\n fontSize: 'text-base', // 16px\n labelSize: 'text-base'\n }\n }\n }\n\n const { height, padding, fontSize, labelSize } = getSizeStyles()\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Custom input wrapper for Gmail-style chip input -->\n <slot name=\"trigger\">\n ${when(this.multi,\n () => html`\n <!-- Custom multi-select input with inline chips -->\n <div class=\"relative\">\n ${when(this.label, () => html`\n <label class=\"${classMap({\n 'block mb-1 font-medium': true,\n 'text-primary-default': !this.error,\n 'text-error-default': this.error,\n [labelSize]: true\n })}\">\n ${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n </label>\n `)}\n <div\n class=\"${classMap({\n 'flex flex-wrap items-center gap-1': true,\n [height]: true,\n [padding]: true,\n 'block w-full min-w-0 rounded-[8px] border-0': true,\n 'bg-surface-highest text-surface-on': true,\n 'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n 'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n 'ring-error-default focus-within:ring-error-default': this.error,\n 'cursor-text transition-colors duration-200': true\n })}\"\n @click=${() => this._focusTextInput()}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n >\n <!-- Render chips inline -->\n ${repeat(\n this._selectedValues$.value,\n value => value,\n value => html`\n <schmancy-input-chip\n .value=${value}\n @remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n class=\"flex-shrink-0 my-0.5\"\n >\n ${this._getChipLabel(value)}\n </schmancy-input-chip>\n `\n )}\n\n <!-- Text input for typing -->\n <input\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n type=\"text\"\n class=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .placeholder=${this._selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n .value=${this._inputValue}\n .autocomplete=${this.autocomplete}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n // Clear input on focus for new searches\n this._inputValue = ''\n this._inputValue$.next('')\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n />\n </div>\n\n <!-- Validation message -->\n ${when(this.error && this.validationMessage, () => html`\n <div class=\"mt-1 text-sm text-error-default\">\n ${this.validationMessage}\n </div>\n `)}\n </div>\n `,\n () => html`\n <!-- Regular single-select input -->\n <schmancy-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n `\n )}\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \n }\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$, this._selectedValues$),\n tap(([event, isOpen, options, selectedValues]) => {\n // Handle backspace to remove last chip in multi-select when input is empty\n if (this.multi && event.key === 'Backspace' && !this._inputValue && selectedValues.length > 0 && !isOpen) {\n event.preventDefault()\n const lastValue = selectedValues[selectedValues.length - 1]\n this.handleChipRemove(lastValue)\n return\n }\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","error","validationMessage","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","find","opt","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","_getChipLabel","_focusTextInput","focus","render","descriptionId","height","padding","fontSize","labelSize","getSizeStyles","html","when","classMap","repeat","handleChipRemove","ref","toLowerCase","replace","target","_handleKeyDown","_handleAutoSelectOnBlur","absolute","flex","bestMatch","bestScore","_e","event","key","lastValue","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"wpBA8CA,IAAqBA,EAArB,cAAkDC,mYAAlD,aAAAC,CAAAC,MAAAA,GAAAC,SAAAA,EAEiCC,KAAAC,SAAAA,GACDD,KAAAE,YAAc,GACCF,KAAAG,MAAQ,GACvBH,KAAAI,KAAO,GACPJ,KAAAK,UAAY,QACXL,KAAAM,MAAAA,GACDN,KAAAO,YAAc,GACCP,KAAAQ,KAAkB,KACjCR,KAAAS,aAAe,MACfT,KAAAU,WAAa,IACbV,KAAAW,oBAAsB,GACrBX,KAAAY,MAAAA,GACDZ,KAAAa,kBAAoB,GA6BvCb,KAAQc,MAAAA,GACRd,KAAQe,YAAc,GACtBf,KAAQgB,qBAAuB,EAC/BhB,KAAQiB,YAAAA,GAMjBjB,KAAQkB,iBAAmBC,cAG3BnB,KAAQoB,gBAAkB,IAAIC,EAAAA,gBAAwB,EAAA,EACtDrB,KAAQsB,iBAAmB,IAAID,EAAAA,gBAA0B,CAAA,CAAA,EACzDrB,KAAQuB,aAAe,IAAIF,EAAAA,gBAAwB,EAAA,EACnDrB,KAAQwB,OAAS,IAAIH,EAAAA,gBAAAA,IACrBrB,KAAQyB,UAAY,IAAIJ,EAAAA,gBAAkC,CAAA,CAAA,EAC1DrB,KAAQ0B,eAAiB,IAAIC,UAC7B3B,KAAQ4B,gBAAkB,IAAID,SAAoB,CA3ClD,IAAA,QAAIE,CACA,MAAO,CAAA,GAAI7B,KAAKsB,iBAAiBQ,KAAAA,CACrC,CACA,IAAA,OAAWC,EAAAA,CACP/B,KAAKsB,iBAAiBU,KAAKC,MAAMC,QAAQH,GAAQ,CAAA,GAAIA,CAAAA,EAAQ,CAAA,CAAA,CACjE,CAIA,IAAA,OAAID,CACA,OAAO9B,KAAKM,MACNN,KAAKsB,iBAAiBQ,MAAMK,KAAK,GAAA,EACjCnC,KAAKoB,gBAAgBU,KAC/B,CACA,IAAA,MAAUM,EAAAA,CACFpC,KAAKM,MACLN,KAAKsB,iBAAiBU,KAClBI,EAAMA,EAAIC,MAAM,GAAA,EAAKC,IAAIC,GAAKA,EAAEC,QAAQC,OAAOC,OAAAA,EAAW,CAAA,CAAA,EAG9D1C,KAAKoB,gBAAgBY,KAAKI,CAAAA,CAElC,CAuBA,mBAAAO,CACI7C,MAAM6C,kBAAAA,EAED3C,KAAK4C,KACN5C,KAAK4C,GAAK,oBAAoBC,KAAKC,OAAAA,EAASC,SAAS,EAAA,EAAIC,MAAM,EAAG,CAAA,CAAA,IAGtEhD,KAAKiD,wBAAAA,EACLjD,KAAKkD,2BAAAA,CAGT,CAEQ,yBAAAD,CAEJjD,KAAKyB,UAAU0B,KACXC,EAAAA,IAAIC,GAAAA,CACAA,EAAQC,QAAQ,CAACC,EAAQC,IAAAA,CACrBD,EAAOE,aAAa,OAAQ,QAAA,EAC5BF,EAAOG,SAAAA,GACFH,EAAOX,KACRW,EAAOX,GAAK,GAAG5C,KAAK4C,EAAAA,WAAaY,CAAAA,IAEhCD,EAAOI,aAAa,kBAAA,IACrBC,YAAUL,EAAQ,aAAA,EAAeJ,KAC7BC,EAAAA,IAAIS,GAAAA,CACAA,EAAEC,eAAAA,EACFD,EAAEE,gBAAAA,CAAAA,CAAAA,EAENC,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAU,IAAMlE,KAAK0B,eAAeM,KAAKuB,CAAAA,CAAAA,EAC3CA,EAAOE,aAAa,mBAAoB,MAAA,EAAA,CAAA,CAAA,CAAA,EAIpDO,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAGFC,gBAAc,CACVnE,KAAKoB,gBACLpB,KAAKsB,iBACLtB,KAAKyB,SAAAA,CAAAA,EACN0B,KACCC,EAAAA,IAAI,CAAA,CAAEgB,EAAeC,EAAgBhB,CAAAA,IAAAA,CACjCA,EAAQC,QAAQC,GAAAA,CACZA,EAAOe,SAAWtE,KAAKM,MACjB+D,EAAeE,SAAShB,EAAOzB,KAAAA,EAC/ByB,EAAOzB,QAAUsC,EACvBb,EAAOE,aAAa,gBAAiBe,OAAOjB,EAAOe,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAG3DN,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAGFlE,KAAKuB,aAAa4B,KACdsB,yBACAC,EAAAA,aAAa1E,KAAKU,UAAAA,EAClBiE,EAAAA,eAAe3E,KAAKyB,UAAWzB,KAAKwB,MAAAA,EACpC4B,EAAAA,IAAI,CAAA,CAAEwB,EAAYvB,EAASwB,CAAAA,IAAAA,CACvB,GAAA,CAAKA,EAAQ,OAEb,MAAMC,EAAOF,EAAWpC,KAAAA,EAExB,GAAKsC,EAQE,CAEH,MAAMC,EAAkC1B,EAAQf,IAAIiB,GAAAA,CAEhD,MAAMyB,EAAczB,EAAOpD,OAASoD,EAAO0B,aAAe,GACpDC,EAAc3B,EAAOzB,MAGrBqD,EAAaC,EAAAA,WAAWN,EAAME,CAAAA,EAC9BK,EAAaD,EAAAA,WAAWN,EAAMI,CAAAA,EAKpC,MAAO,CAAE3B,OAAAA,EAAQ+B,MAFHzC,KAAK0C,IAAiB,IAAbJ,EAAkBE,CAAAA,CAAAA,CAAAA,CAAAA,EAM7CN,EAAcS,KAAK,CAACC,EAAGC,IAAMA,EAAEJ,MAAQG,EAAEH,KAAAA,EAGzC,IAAIK,EAAe,EACnBZ,EAAczB,QAAQ,CAACsC,EAAMpC,IAAAA,CACzB,KAAA,CAAMD,OAAEA,EAAA+B,MAAQA,CAAAA,EAAUM,EAGtBN,EAAQtF,KAAKW,oBACb4C,EAAOsC,OAAAA,IAEPtC,EAAOsC,OAAAA,GACPF,IAEApC,EAAOuC,MAAMC,MAAQvB,OAAOhB,MAIpCxD,KAAKgB,qBAAuB2E,EAC5B3F,KAAKiB,YAAc0E,EAAe,CACtC,MA5CItC,EAAQC,QAAQC,GAAAA,CACZA,EAAOsC,OAAAA,GACPtC,EAAOuC,MAAMC,MAAQ,GAAA,CAAA,EAEzB/F,KAAKgB,qBAAuBqC,EAAQ2C,OACpChG,KAAKiB,YAAAA,GAyCTjB,KAAKiG,wBACDjG,KAAKgB,qBAAuB,EACtB,GAAGhB,KAAKgB,oBAAAA,UAA8BhB,KAAKgB,uBAAyB,EAAI,GAAK,GAAA,cAC7E,mBAAA,CAAA,CAAA,EAGdgD,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAGFlE,KAAK0B,eAAeyB,KAChBwB,EAAAA,eAAe3E,KAAKoB,gBAAiBpB,KAAKsB,gBAAAA,EAC1C8B,EAAAA,IAAI,CAAA,CAAEG,EAAQ2C,EAAGC,CAAAA,IAAAA,CACb,GAAInG,KAAKM,MAAO,CACZ,MAAMkD,EAAQ2C,EAAcC,QAAQ7C,EAAOzB,KAAAA,EACrCuE,EAAY7C,EAAAA,GACZ,CAAA,GAAI2C,EAAcnD,MAAM,EAAGQ,CAAAA,EAAAA,GAAW2C,EAAcnD,MAAMQ,EAAQ,CAAA,CAAA,EAClE,CAAA,GAAI2C,EAAe5C,EAAOzB,KAAAA,EAChC9B,KAAKsB,iBAAiBU,KAAKqE,CAAAA,EAM3B,MAAMC,EAAStG,KAAKuG,mBAAAA,EACpBvG,KAAKiG,wBACDK,EAAON,OAAS,EACV,aAAaM,EAAOnE,KAAK,IAAA,CAAA,GACzB,qBAAA,CAEd,MACInC,KAAKoB,gBAAgBY,KAAKuB,EAAOzB,KAAAA,EACjC9B,KAAKwB,OAAOQ,KAAAA,EAAK,EACjBhC,KAAKc,MAAAA,GAELd,KAAKe,YAAcwC,EAAOpD,OAASoD,EAAO0B,aAAe,GACzDjF,KAAKuB,aAAaS,KAAKhC,KAAKe,WAAAA,EAE5ByF,EAAAA,MAAM,GAAA,EAAKrD,KACPC,EAAAA,IAAI,IAAMpD,KAAKkB,iBAAiBY,OAAO2E,KAAAA,CAAAA,EACvCC,EAAAA,KAAK,CAAA,CAAA,EACPxC,UAAAA,EAEFlE,KAAKiG,wBAAwB,aAAa1C,EAAOpD,OAASoD,EAAO0B,WAAAA,EAAAA,CAAAA,CAAAA,EAGzE7B,MAAI,IAAMpD,KAAK2G,iBAAAA,CAAAA,EACf3C,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAGFC,gBAAc,CACVnE,KAAKwB,OACLxB,KAAKoB,gBACLpB,KAAKyB,SAAAA,CAAAA,EACN0B,KACCV,EAAAA,OAAO,IAAA,CAAOzC,KAAKwB,OAAOM,OAAAA,CAAU9B,KAAKM,KAAAA,EACzC8C,EAAAA,IAAI,CAAA,CAAC,CAAGgB,EAAef,CAAAA,IAAAA,CACnB,MAAME,EAASF,EAAQuD,KAAKC,GAAOA,EAAI/E,QAAUsC,CAAAA,EACjDpE,KAAKe,YAAcwC,IAASA,EAAOpD,OAASoD,EAAO0B,cAAoB,GACvEjF,KAAKuB,aAAaS,KAAKhC,KAAKe,WAAAA,CAAAA,CAAAA,EAEhCiD,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAGFlE,KAAKwB,OAAO2B,KACRC,EAAAA,IAAI0D,GAAQ9G,KAAKc,MAAQgG,CAAAA,EACzB9C,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,CACN,CAEQ,4BAAAhB,CACJlD,KAAK4B,gBAAgBuB,KACjBV,EAAAA,WAAaoB,EAAEkD,eAAexC,SAASvE,IAAAA,CAAAA,EACvCyC,EAAAA,OAAOoB,GAAAA,CAAM7D,KAAKgH,SAASC,KAAKJ,GAAOhD,EAAEkD,aAAAA,EAAexC,SAASsC,CAAAA,CAAAA,CAAAA,EACjEpE,SAAO,IAAMzC,KAAKc,KAAAA,EAClBsC,EAAAA,IAAI,IAAA,CACApD,KAAKwB,OAAOQ,KAAAA,EAAK,EACjBhC,KAAKkH,oBAAAA,CAAAA,CAAAA,EAETlD,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,EAEFlE,KAAKwB,OAAO2B,KACRsB,yBACA0C,EAAAA,UAAUL,GACNA,EACMN,QAAM,EAAA,EAAIrD,KACRgE,EAAAA,UAAU,IAAMvD,EAAAA,UAAsBwD,SAAU,OAAA,EAASjE,KACrDC,EAAAA,IAAIS,GAAK7D,KAAK4B,gBAAgBI,KAAK6B,CAAAA,CAAAA,EACnCG,YAAUhE,KAAKwB,OAAO2B,KAAKV,EAAAA,OAAOoC,IAAWA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAGnDwC,EAAAA,KAAAA,EAEVrD,EAAAA,UAAUhE,KAAKiE,aAAAA,CAAAA,EACjBC,UAAAA,CACN,CAGQ,qBAAAgD,CAEAlH,KAAKM,OAITgH,EAAAA,GAAG,IAAA,EAAMnE,KACLwB,EAAAA,eACI3E,KAAKoB,gBACLpB,KAAKyB,UACLzB,KAAKwB,MAAAA,EAET4B,EAAAA,IAAI,CAAA,CAAC,CAAGgB,EAAef,EAASwB,CAAAA,IAAAA,CAC5B,GAAK7E,KAAKkB,iBAAiBY,OAAAA,CAEtB+C,EAAQ,CACT,MAAMtB,EAASF,EAAQuD,KAAKC,GAAOA,EAAI/E,QAAUsC,CAAAA,EACjDpE,KAAKe,YAAcwC,IAASA,EAAOpD,OAASoD,EAAO0B,cAAoB,GACvEjF,KAAKuB,aAAaS,KAAKhC,KAAKe,WAAAA,EAC5Bf,KAAKkB,iBAAiBY,MAAMA,MAAQ9B,KAAKe,WAC7C,CAAA,CAAA,EAEJ2F,EAAAA,KAAK,CAAA,CAAA,EACPxC,UAAAA,CACN,CAEQ,oBAAAqC,CACJ,OAAOvG,KAAKgH,SACPvE,OAAOc,GACJvD,KAAKM,MACCN,KAAKsB,iBAAiBQ,MAAMyC,SAAShB,EAAOzB,KAAAA,EAC5CyB,EAAOzB,QAAU9B,KAAKoB,gBAAgBU,KAAAA,EAE/CQ,IAAIiB,GAAUA,EAAOpD,OAASoD,EAAO0B,aAAe,EAAA,CAC7D,CAEQ,wBAAwBsC,EAAAA,CAC5B,MAAMC,EAAaxH,KAAKyH,YAAYC,cAAc,cAAA,EAC9CF,IACAA,EAAWvC,YAAcsC,EAEjC,CAEQ,kBAAAZ,CACJ,MAAMgB,EAAoD,CACtD7F,MAAO9B,KAAK8B,KAAAA,EAGZ9B,KAAKM,QACLqH,EAAO9F,OAAS,CAAA,GAAI7B,KAAKsB,iBAAiBQ,KAAAA,GAG9C9B,KAAK4H,cACD,IAAIC,YAAuD,SAAU,CACjEF,OAAAA,EACAG,QAAAA,GACAC,SAAAA,EAAU,CAAA,CAAA,CAGtB,CAEO,eAAAC,CACH,MAAA,CAAKhI,KAAKC,WACHD,KAAKM,MACNN,KAAKsB,iBAAiBQ,MAAMkE,OAAS,EACrCtD,EAAQ1C,KAAKoB,gBAAgBU,MACvC,CAEO,gBAAAmG,CACH,OAAIjI,KAAKkB,iBAAiBY,MACf9B,KAAKkB,iBAAiBY,MAAMmG,eAAAA,EAEhCjI,KAAKgI,cAAAA,CAChB,CAEA,cAAAE,CAEA,CAEQ,iBAAiBpG,EAAAA,CACrB,MACMuE,EADgBrG,KAAKsB,iBAAiBQ,MACZW,OAAOF,GAAKA,IAAMT,CAAAA,EAClD9B,KAAKsB,iBAAiBU,KAAKqE,CAAAA,EAC3BrG,KAAK2G,iBAAAA,EACL3G,KAAKiG,wBAAwB,YAAYjG,KAAKmI,cAAcrG,CAAAA,CAAAA,EAAAA,CAChE,CAEQ,cAAcA,EAAAA,CAClB,MAAMyB,EAASvD,KAAKgH,SAASJ,KAAKC,GAAOA,EAAI/E,QAAUA,CAAAA,EACvD,OAAOyB,IAASA,EAAOpD,OAASoD,EAAO0B,cAAuBnD,CAClE,CAEQ,iBAAAsG,CACApI,KAAKkB,iBAAiBY,OACtB9B,KAAKkB,iBAAiBY,MAAMuG,MAAAA,CAEpC,CAEA,QAAAC,CACI,MAAMC,EAAgB,GAAGvI,KAAK4C,EAAAA,QAAAA,CA8BxB4F,OAAEA,EAAAC,QAAQA,EAAAC,SAASA,EAAAC,UAAUA,CAAAA,GA3Bb,IAAA,CAClB,OAAQ3I,KAAKQ,KAAAA,CACT,IAAK,KACD,MAAO,CACHgI,OAAQ,eACRC,QAAS,OACTC,SAAU,UACVC,UAAW,SAAA,EAEnB,IAAK,KACD,MAAO,CACHH,OAAQ,eACRC,QAAS,OACTC,SAAU,UACVC,UAAW,SAAA,EAGnB,QACI,MAAO,CACHH,OAAQ,eACRC,QAAS,OACTC,SAAU,YACVC,UAAW,WAAA,CAAA,CAAA,GAKsBC,EAEjD,OAAOC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,kBAMG7I,KAAKO,YAAcsI,EAAAA,gBAAgBN,CAAAA,qBAAkCvI,KAAKO,WAAAA,SAAsB,EAAA;AAAA;AAAA;AAAA;AAAA,sBAI5FuI,EAAAA,KAAK9I,KAAKM,MACR,IAAMuI,EAAAA;AAAAA;AAAAA;AAAAA,kCAGIC,OAAK9I,KAAKG,MAAO,IAAM0I,EAAAA;AAAAA,oDACLE,WAAS,CACrB,yBAAA,GACA,uBAAA,CAAyB/I,KAAKY,MAC9B,qBAAsBZ,KAAKY,MAC3B+H,CAACA,CAAAA,EAAAA,EAAY,CAAA,CAAA;AAAA,0CAEX3I,KAAKG,KAAAA,GAAQH,KAAKC,SAAW4I,EAAAA,qDAAuD,EAAA;AAAA;AAAA;;6CAIjFE,WAAS,CACd,oCAAA,GACAP,CAACA,CAAAA,EAAAA,GACDC,CAACA,CAAAA,EAAAA,GACD,8CAAA,GACA,qCAAA,GACA,mEACA,8DAAA,CAAgEzI,KAAKY,MACrE,qDAAsDZ,KAAKY,MAC3D,6CAAA,EAA8C,CAAA,CAAA;AAAA,6CAEzC,IAAMZ,KAAKoI,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oDAKJpI,KAAKc,KAAAA;AAAAA;AAAAA;AAAAA,sCAGnBkI,EAAAA,OACEhJ,KAAKsB,iBAAiBQ,MACtBA,GAASA,EACTA,GAAS+G,EAAAA;AAAAA;AAAAA,yDAEQ/G,CAAAA;AAAAA,0DACE+B,GAAmB7D,KAAKiJ,iBAAiBpF,EAAE8D,OAAO7F,KAAAA,CAAAA;AAAAA;AAAAA;AAAAA,kDAG3D9B,KAAKmI,cAAcrG,CAAAA,CAAAA;AAAAA;AAAAA;;;;0CAO3BoH,EAAAA,IAAIlJ,KAAKkB,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA,mHAGgEwH,CAAAA;AAAAA,gDACnE1I,KAAKI,MAAQJ,KAAKG,OAAOgJ,YAAAA,EAAcC,QAAQ,OAAQ,GAAA,CAAA;AAAA,uDAChDpJ,KAAKsB,iBAAiBQ,MAAMkE,OAAS,EAAI,cAAgBhG,KAAKE,WAAAA;AAAAA,iDACpEF,KAAKe,WAAAA;AAAAA,wDACEf,KAAKS,YAAAA;AAAAA,iDACXoD,GAAAA,CACN,MAAM/B,EAAS+B,EAAEwF,OAA4BvH,MAC7C9B,KAAKe,YAAce,EACnB9B,KAAKuB,aAAaS,KAAKF,CAAAA,CAAAA,CAAAA;AAAAA,iDAEjB+B,GAAAA,CACNA,EAAEE,gBAAAA,EAEF/D,KAAKe,YAAc,GACnBf,KAAKuB,aAAaS,KAAK,EAAA,EACvBhC,KAAKwB,OAAOQ,KAAAA,EAAK,CAAA,CAAA;AAAA,mDAET6B,GAAAA,CACR7D,KAAKsJ,eAAezF,CAAAA,CAAAA,CAAAA;AAAAA,gDAEhB,IAAA,CACJ7D,KAAKuJ,wBAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,kCAMfT,EAAAA,KAAK9I,KAAKY,OAASZ,KAAKa,kBAAmB,IAAMgI,EAAAA;AAAAA;AAAAA,0CAEzC7I,KAAKa,iBAAAA;AAAAA;AAAAA;;0BAKvB,IAAMgI,EAAAA;AAAAA;AAAAA;AAAAA,wCAGU7I,KAAKQ,IAAAA;AAAAA,kCACX0I,EAAAA,IAAIlJ,KAAKkB,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA,wCAGHlB,KAAKI,MAAQJ,KAAKG,OAAOgJ,YAAAA,EAAcC,QAAQ,OAAQ,GAAA,CAAA;AAAA,yCACtDpJ,KAAKG,KAAAA;AAAAA,+CACCH,KAAKE,WAAAA;AAAAA,4CACRF,KAAKC,QAAAA;AAAAA,yCACRD,KAAKe,WAAAA;AAAAA;AAAAA,+CAECf,KAAKS,YAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,gDAMJT,KAAKc,KAAAA;AAAAA,mDACFd,KAAKO,YAAcgI,EAAAA,MAAgB;AAAA,yCAC5C1E,GAAAA,CACN,MAAM/B,EAAS+B,EAAEwF,OAA4BvH,MAC7C9B,KAAKe,YAAce,EACnB9B,KAAKuB,aAAaS,KAAKF,CAAAA,CAAAA,CAAAA;AAAAA,yCAEjB+B,GAAAA,CACNA,EAAEE,gBAAAA,EACF/D,KAAKwB,OAAOQ,KAAAA,EAAK,CAAA,CAAA;AAAA,yCAEX6B,GAAAA,CACNA,EAAEE,gBAAAA,EACF/D,KAAKwB,OAAOQ,KAAAA,EAAK,CAAA,CAAA;AAAA,2CAET6B,GAAAA,CACR7D,KAAKsJ,eAAezF,CAAAA,CAAAA,CAAAA;AAAAA,wCAEhB,IAAA,CACJ7D,KAAKuJ,wBAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;;;;;;4BAWbR,WAAS,CACbS,SAAAA,GACA,cACA,OAAA,GACA,SAAA,GACA,aAAA,GACA,YAAA,GACA,mBACA,aAAA,GACA,iBAAA,GACAC,KAAAA,GACA,WAAA,EAAY,CAAA,CAAA;AAAA;AAAA,2CAGOzJ,KAAKM,MAAQ,OAAS,OAAA;AAAA,iCAChC,GAAGN,KAAKG,OAAS,SAAA,WAAA;AAAA,+BACnBH,KAAKc,KAAAA;AAAAA,yCACKd,KAAKK,SAAAA,cAAuBL,KAAKc,MAAQ,OAAS,MAAA;AAAA,kCACzD,IAAA,CACVd,KAAKyB,UAAUO,KAAKhC,KAAKgH,QAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA,sBAI1BhH,KAAKiB,YAEJ,GAFkB4H,EAAAA;AAAAA;AAAAA;;;SAMtC,CAEQ,yBAAAU,CAEJ,GAAIvJ,KAAKM,OAAAA,CAAUN,KAAKc,OAAAA,CAAUd,KAAKe,YAAYyB,KAAAA,EAC/C,OAGJ,MAAMoC,EAAa5E,KAAKe,YAAYyB,KAAAA,EAGpC,IAAIkH,EAAmC,KACnCC,EAAY,EAEhB3J,KAAKgH,SAAS1D,QAAQC,GAAAA,CAElB,GAAIA,EAAOsC,OAAQ,OAGnB,MAAMb,EAAczB,EAAOpD,OAASoD,EAAO0B,aAAe,GACpDC,EAAc3B,EAAOzB,MAGrBqD,EAAaC,EAAAA,WAAWR,EAAYI,CAAAA,EACpCK,EAAaD,EAAAA,WAAWR,EAAYM,CAAAA,EAGpCI,EAAQzC,KAAK0C,IAAiB,IAAbJ,EAAkBE,CAAAA,EAGrCC,EAAQqE,GAAarE,GAAStF,KAAKW,sBACnCgJ,EAAYrE,EACZoE,EAAYnG,EAAAA,CAAAA,EAKhBmG,IAEA1J,KAAK0B,eAAeM,KAAK0H,CAAAA,EAGzB1J,KAAKwB,OAAOQ,KAAAA,EAAK,EACjBhC,KAAKc,MAAAA,GAGb,CAEQ,eAAe8I,EAAAA,CACnBhG,YAAyBwD,SAAU,SAAA,EAAWjE,KAC1CuD,EAAAA,KAAK,CAAA,EACL/B,EAAAA,eAAe3E,KAAKwB,OAAQxB,KAAKyB,UAAWzB,KAAKsB,gBAAAA,EACjD8B,EAAAA,IAAI,CAAA,CAAEyG,EAAOhF,EAAQxB,EAASgB,CAAAA,IAAAA,CAE1B,GAAIrE,KAAKM,OAASuJ,EAAMC,MAAQ,aAARA,CAAwB9J,KAAKe,aAAesD,EAAe2B,OAAS,GAAA,CAAMnB,EAAQ,CACtGgF,EAAM/F,eAAAA,EACN,MAAMiG,EAAY1F,EAAeA,EAAe2B,OAAS,CAAA,EAEzD,OAAA,KADAhG,KAAKiJ,iBAAiBc,CAAAA,CAE1B,CACA,GAAA,CAAKlF,IAAWgF,EAAMC,MAAQ,aAAeD,EAAMC,MAAQ,SAWvD,OAVAD,EAAM/F,eAAAA,EACN9D,KAAKwB,OAAOQ,KAAAA,EAAK,EAAA,KAEjBwE,EAAAA,MAAM,EAAA,EAAIrD,KACNC,EAAAA,IAAI,IAAA,CACqBC,EAAQuD,KAAKC,GAAAA,CAAQA,EAAIhB,MAAAA,GAChCwC,MAAAA,CAAAA,CAAAA,EAElB3B,EAAAA,KAAK,CAAA,CAAA,EACPxC,UAAAA,EAIN,GAAA,CAAKW,EAAQ,OAEb,MAAMmF,EAAiB3G,EAAQZ,OAAOoE,GAAAA,CAAQA,EAAIhB,MAAAA,EAC7CL,KAAK,CAACC,EAAGC,IAAMuE,SAASxE,EAAEK,MAAMC,OAAS,GAAA,EAAOkE,SAASvE,EAAEI,MAAMC,OAAS,GAAA,CAAA,EAEzEmE,EAAgBF,EAAepD,KAAKC,GAAOA,IAAQO,SAAS+C,aAAAA,EAC5DC,EAAeF,EAAgBF,EAAe5D,QAAQ8D,CAAAA,EAAAA,GAE5D,OAAQL,EAAMC,IAAAA,CACV,IAAK,SACDD,EAAM/F,eAAAA,EACN9D,KAAKwB,OAAOQ,KAAAA,EAAK,EACjBhC,KAAKkH,oBAAAA,EACLlH,KAAKkB,iBAAiBY,OAAOuG,MAAAA,EAC7B,MAEJ,IAAK,MACDrI,KAAKwB,OAAOQ,KAAAA,EAAK,EACjBhC,KAAKkH,oBAAAA,EACL,MAEJ,IAAK,YACD2C,EAAM/F,eAAAA,EACN,MAAMuG,EAAYD,EAAeJ,EAAehE,OAAS,EAAIoE,EAAe,EAAI,EAChFJ,EAAeK,CAAAA,GAAYhC,MAAAA,EAC3B,MAEJ,IAAK,UACDwB,EAAM/F,eAAAA,EACN,MAAMwG,EAAYF,EAAe,EAAIA,EAAe,EAAIJ,EAAehE,OAAS,EAChFgE,EAAeM,CAAAA,GAAYjC,MAAAA,EAC3B,MAEJ,IAAK,OACDwB,EAAM/F,eAAAA,EACNkG,EAAe,CAAA,GAAI3B,MAAAA,EACnB,MAEJ,IAAK,MACDwB,EAAM/F,eAAAA,EACNkG,EAAeA,EAAehE,OAAS,CAAA,GAAIqC,MAAAA,EAC3C,MAEJ,IAAK,QACL,IAAK,IACG6B,IACAL,EAAM/F,eAAAA,EACN9D,KAAK0B,eAAeM,KAAKkI,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAK3ChG,UAAAA,CACN,CAAA,EApsB6BqG,EAAA,CAA5BC,WAAS,CAAEC,KAAM/H,OAAAA,CAAAA,CAAAA,EAFD/C,EAEY+K,UAAA,WAAA,CAAA,EACDH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EAHD7E,EAGW+K,UAAA,cAAA,CAAA,EACeH,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMjG,OAAQmG,QAAAA,EAAS,CAAA,CAAA,EAJlBhL,EAI0B+K,UAAA,QAAA,CAAA,EACfH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EALD7E,EAKW+K,UAAA,OAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EAND7E,EAMW+K,UAAA,YAAA,CAAA,EACCH,EAAA,CAA5BC,WAAS,CAAEC,KAAM/H,OAAAA,CAAAA,CAAAA,EAPD/C,EAOY+K,UAAA,QAAA,CAAA,EACDH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EARD7E,EAQW+K,UAAA,cAAA,CAAA,EACeH,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMjG,OAAQmG,QAAAA,EAAS,CAAA,CAAA,EATlBhL,EAS0B+K,UAAA,OAAA,CAAA,EACfH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EAVD7E,EAUW+K,UAAA,eAAA,GACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EAXDjL,EAWW+K,UAAA,aAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EAZDjL,EAYW+K,UAAA,sBAAA,CAAA,EACCH,EAAA,CAA5BC,WAAS,CAAEC,KAAM/H,OAAAA,CAAAA,CAAAA,EAbD/C,EAaY+K,UAAA,QAAA,GACDH,EAAA,CAA3BC,WAAS,CAAEC,KAAMjG,MAAAA,CAAAA,CAAAA,EAdD7E,EAcW+K,UAAA,oBAAA,CAAA,EAIxBH,EAAA,CADHC,WAAS,CAAEC,KAAMxI,KAAAA,CAAAA,CAAAA,EAjBDtC,EAkBb+K,UAAA,SAAA,CAAA,EASAH,EAAA,CADHC,EAAAA,SAAS,CAAEC,KAAMjG,OAAQmG,QAAAA,EAAS,CAAA,CAAA,EA1BlBhL,EA2Bb+K,UAAA,QAAA,CAAA,EAgBaH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA3CgBlL,EA2CA+K,UAAA,QAAA,CAAA,EACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA5CgBlL,EA4CA+K,UAAA,cAAA,CAAA,EACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA7CgBlL,EA6CA+K,UAAA,uBAAA,CAAA,EACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA9CgBlL,EA8CA+K,UAAA,cAAA,GAGEH,EAAA,CAAlBO,EAAAA,MAAM,UAAA,CAAA,EAjDUnL,EAiDE+K,UAAA,WAAA,CAAA,EACCH,EAAA,CAAnBO,EAAAA,MAAM,WAAA,CAAA,EAlDUnL,EAkDG+K,UAAA,SAAA,CAAA,EAC8BH,EAAA,CAAjDQ,wBAAsB,CAAEC,QAAAA,EAAS,CAAA,CAAA,EAnDjBrL,EAmDiC+K,UAAA,WAAA,CAAA,EAnDjC/K,EAArB4K,EAAA,CADCU,EAAAA,cAAc,uBAAA,CAAA,EACMtL,CAAAA"}
@@ -1,151 +0,0 @@
1
- import { T as g } from "./tailwind.mixin-Dq8FD_xN.js";
2
- import { css as x, html as l } from "lit";
3
- import { property as a, customElement as y } from "lit/decorators.js";
4
- var m = Object.defineProperty, b = Object.getOwnPropertyDescriptor, h = (p, t, i, o) => {
5
- for (var n, e = o > 1 ? void 0 : o ? b(t, i) : t, r = p.length - 1; r >= 0; r--) (n = p[r]) && (e = (o ? n(t, i, e) : n(e)) || e);
6
- return o && e && m(t, i, e), e;
7
- };
8
- let d = class extends g(x`
9
- :host {
10
- display: flex;
11
- flex-direction: column;
12
- width: 80px;
13
- height: 100%;
14
- background-color: var(--schmancy-sys-color-surface-container);
15
- color: var(--schmancy-sys-color-surface-on);
16
- box-sizing: border-box;
17
- }
18
-
19
- :host([extended]) {
20
- width: 192px;
21
- }
22
-
23
- /* Alignment options */
24
- :host([align='start']) {
25
- align-items: flex-start;
26
- padding: 16px 12px;
27
- }
28
-
29
- :host([align='center']) {
30
- align-items: center;
31
- justify-content: center;
32
- padding: 16px 12px;
33
- }
34
-
35
- :host([align='end']) {
36
- align-items: flex-end;
37
- padding: 16px 12px;
38
- }
39
-
40
- /* Default center alignment */
41
- :host {
42
- align-items: center;
43
- padding: 16px 12px;
44
- gap: 12px;
45
- }
46
- `) {
47
- constructor() {
48
- super(...arguments), this.extended = !1, this.align = "center";
49
- }
50
- render() {
51
- return l`<slot></slot>`;
52
- }
53
- };
54
- h([a({ type: Boolean, reflect: !0 })], d.prototype, "extended", 2), h([a({ reflect: !0 })], d.prototype, "align", 2), d = h([y("schmancy-navigation-rail")], d);
55
- var f = Object.defineProperty, u = Object.getOwnPropertyDescriptor, c = (p, t, i, o) => {
56
- for (var n, e = o > 1 ? void 0 : o ? u(t, i) : t, r = p.length - 1; r >= 0; r--) (n = p[r]) && (e = (o ? n(t, i, e) : n(e)) || e);
57
- return o && e && f(t, i, e), e;
58
- };
59
- let s = class extends g(x`
60
- :host {
61
- display: flex;
62
- align-items: center;
63
- justify-content: center;
64
- min-width: 56px;
65
- min-height: 56px;
66
- border-radius: 16px;
67
- cursor: pointer;
68
- transition: all 0.2s ease;
69
- position: relative;
70
- box-sizing: border-box;
71
- color: var(--schmancy-sys-color-surface-on-variant);
72
- user-select: none;
73
- }
74
-
75
- :host(:hover) {
76
- background-color: var(--schmancy-sys-color-surface-container-high);
77
- }
78
-
79
- :host([active]) {
80
- background-color: var(--schmancy-sys-color-secondary-container);
81
- color: var(--schmancy-sys-color-secondary-container-on);
82
- }
83
-
84
- :host([extended]) {
85
- width: 168px;
86
- justify-content: flex-start;
87
- padding: 0 16px;
88
- gap: 12px;
89
- }
90
-
91
- .icon {
92
- font-family: 'Material Symbols Outlined';
93
- font-size: 24px;
94
- line-height: 1;
95
- flex-shrink: 0;
96
- }
97
-
98
- .label {
99
- font-size: 14px;
100
- font-weight: 500;
101
- line-height: 1.2;
102
- overflow: hidden;
103
- text-overflow: ellipsis;
104
- white-space: nowrap;
105
- }
106
-
107
- .badge {
108
- position: absolute;
109
- top: 4px;
110
- right: 4px;
111
- min-width: 16px;
112
- height: 16px;
113
- border-radius: 8px;
114
- background-color: var(--schmancy-sys-color-error);
115
- color: var(--schmancy-sys-color-error-on);
116
- font-size: 11px;
117
- font-weight: 500;
118
- display: flex;
119
- align-items: center;
120
- justify-content: center;
121
- padding: 0 4px;
122
- box-sizing: border-box;
123
- }
124
-
125
- :host([extended]) .badge {
126
- position: static;
127
- margin-left: auto;
128
- }
129
- `) {
130
- constructor() {
131
- super(...arguments), this.icon = "", this.label = "", this.active = !1, this.badge = "", this.extended = !1;
132
- }
133
- handleClick() {
134
- this.dispatchEvent(new CustomEvent("rail-item-click", { detail: { icon: this.icon, label: this.label, active: this.active }, bubbles: !0, composed: !0 }));
135
- }
136
- render() {
137
- return this.querySelector("[slot]") || this.textContent?.trim() ? l`<slot @click=${this.handleClick}></slot>` : l`
138
- <div @click=${this.handleClick}>
139
- ${this.icon ? l`<span class="icon">${this.icon}</span>` : ""}
140
- ${this.extended && this.label ? l`<span class="label">${this.label}</span>` : ""}
141
- ${this.badge ? l`<span class="badge">${this.badge}</span>` : ""}
142
- </div>
143
- `;
144
- }
145
- };
146
- c([a({ type: String })], s.prototype, "icon", 2), c([a({ type: String })], s.prototype, "label", 2), c([a({ type: Boolean, reflect: !0 })], s.prototype, "active", 2), c([a({ type: String })], s.prototype, "badge", 2), c([a({ type: Boolean, reflect: !0 })], s.prototype, "extended", 2), s = c([y("schmancy-navigation-rail-item")], s);
147
- export {
148
- d as S,
149
- s as a
150
- };
151
- //# sourceMappingURL=navigation-rail-item-CIg6-B2G.js.map