@mhmo91/schmancy 0.10.14 → 0.10.16

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 (544) hide show
  1. package/custom-elements.json +2554 -3086
  2. package/dist/active-host-BP0zy_Y9.js +63 -0
  3. package/dist/{active-host-CvNYoprt.js.map → active-host-BP0zy_Y9.js.map} +1 -1
  4. package/dist/active-host-jH3iloCR.cjs +1 -0
  5. package/dist/{active-host-CcIa2tmW.cjs.map → active-host-jH3iloCR.cjs.map} +1 -1
  6. package/dist/agent/schmancy.agent.js +2579 -2385
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +971 -1189
  9. package/dist/{animation-CO_Csq84.cjs.map → animation-CCOIW4wJ.cjs.map} +1 -1
  10. package/dist/{animation-BK-8BwY8.js.map → animation-DCznELuT.js.map} +1 -1
  11. package/dist/{area-C_kgZZhN.js → area-ChxsDTu_.js} +2 -2
  12. package/dist/{area-C_kgZZhN.js.map → area-ChxsDTu_.js.map} +1 -1
  13. package/dist/{area-DFPtKzWy.cjs → area-Qt6yUnuA.cjs} +3 -3
  14. package/dist/{area-DFPtKzWy.cjs.map → area-Qt6yUnuA.cjs.map} +1 -1
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +2 -2
  17. package/dist/{audio-CluX8Qpq.cjs → audio-D-TZzpXF.cjs} +1 -1
  18. package/dist/{audio-CluX8Qpq.cjs.map → audio-D-TZzpXF.cjs.map} +1 -1
  19. package/dist/{audio-DcXphulJ.js → audio-DS43uoRA.js} +1 -1
  20. package/dist/{audio-DcXphulJ.js.map → audio-DS43uoRA.js.map} +1 -1
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/{autocomplete-DWSuwSRS.js → autocomplete-CXvUjMD-.js} +46 -71
  24. package/dist/autocomplete-CXvUjMD-.js.map +1 -0
  25. package/dist/autocomplete-Ck2zbdF9.cjs +115 -0
  26. package/dist/autocomplete-Ck2zbdF9.cjs.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +2 -2
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +3 -3
  32. package/dist/badge.cjs +1 -1
  33. package/dist/badge.js +1 -1
  34. package/dist/{boat-CZma2ojF.js → boat-Bj0wVcZi.js} +5 -5
  35. package/dist/{boat-CZma2ojF.js.map → boat-Bj0wVcZi.js.map} +1 -1
  36. package/dist/{boat-Dy6cc3hB.cjs → boat-DpFkILFF.cjs} +2 -2
  37. package/dist/{boat-Dy6cc3hB.cjs.map → boat-DpFkILFF.cjs.map} +1 -1
  38. package/dist/boat.cjs +1 -1
  39. package/dist/boat.js +1 -1
  40. package/dist/breadcrumb.cjs +3 -3
  41. package/dist/breadcrumb.cjs.map +1 -1
  42. package/dist/breadcrumb.js +2 -2
  43. package/dist/{busy-DCsqryvq.cjs → busy-CtcnclA3.cjs} +3 -3
  44. package/dist/{busy-DCsqryvq.cjs.map → busy-CtcnclA3.cjs.map} +1 -1
  45. package/dist/{busy-DeV2ByMw.js → busy-CyZSBnZP.js} +2 -2
  46. package/dist/{busy-DeV2ByMw.js.map → busy-CyZSBnZP.js.map} +1 -1
  47. package/dist/busy.cjs +1 -1
  48. package/dist/busy.js +1 -1
  49. package/dist/button.cjs +4 -4
  50. package/dist/button.cjs.map +1 -1
  51. package/dist/button.js +19 -4
  52. package/dist/button.js.map +1 -1
  53. package/dist/{card--GgSX4X5.cjs → card-Cl6jp1yX.cjs} +5 -5
  54. package/dist/{card--GgSX4X5.cjs.map → card-Cl6jp1yX.cjs.map} +1 -1
  55. package/dist/{card-BTTsHzJJ.js → card-nYZCKmOO.js} +3 -3
  56. package/dist/{card-BTTsHzJJ.js.map → card-nYZCKmOO.js.map} +1 -1
  57. package/dist/card.cjs +1 -1
  58. package/dist/card.js +1 -1
  59. package/dist/{checkbox-NNReP9s_.cjs → checkbox-BeNo0ZGt.cjs} +4 -4
  60. package/dist/{checkbox-Cj5j-ppk.js.map → checkbox-BeNo0ZGt.cjs.map} +1 -1
  61. package/dist/{checkbox-Cj5j-ppk.js → checkbox-DiUrZiyc.js} +17 -30
  62. package/dist/checkbox-DiUrZiyc.js.map +1 -0
  63. package/dist/checkbox.cjs +1 -1
  64. package/dist/checkbox.js +1 -1
  65. package/dist/{chips-CP-CbfoZ.js → chips-CfPFXv7Z.js} +5 -5
  66. package/dist/{chips-CP-CbfoZ.js.map → chips-CfPFXv7Z.js.map} +1 -1
  67. package/dist/{chips-iporOXxK.cjs → chips-DK6m-VCM.cjs} +5 -5
  68. package/dist/{chips-iporOXxK.cjs.map → chips-DK6m-VCM.cjs.map} +1 -1
  69. package/dist/chips.cjs +1 -1
  70. package/dist/chips.js +2 -2
  71. package/dist/connectivity.cjs +2 -2
  72. package/dist/connectivity.cjs.map +1 -1
  73. package/dist/connectivity.js +3 -3
  74. package/dist/content-drawer.cjs +1 -1
  75. package/dist/content-drawer.js +1 -1
  76. package/dist/{context-DJTJnSK4.js.map → context-6oXCZmZN.js.map} +1 -1
  77. package/dist/{context-BpCETidA.cjs.map → context-CRZeiCqq.cjs.map} +1 -1
  78. package/dist/{cursor-glow-Bulq-38P.cjs → cursor-glow-C8LgCxpI.cjs} +1 -1
  79. package/dist/{cursor-glow-Bulq-38P.cjs.map → cursor-glow-C8LgCxpI.cjs.map} +1 -1
  80. package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-Cs2XLDB9.js} +1 -1
  81. package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-Cs2XLDB9.js.map} +1 -1
  82. package/dist/date-range-DA6anfcF.cjs +131 -0
  83. package/dist/date-range-DA6anfcF.cjs.map +1 -0
  84. package/dist/{date-range-CgNujP8r.js → date-range-DjlF2u7o.js} +124 -89
  85. package/dist/date-range-DjlF2u7o.js.map +1 -0
  86. package/dist/date-range-inline-BfYK795W.cjs +43 -0
  87. package/dist/{date-range-inline-D4IjOOO0.cjs.map → date-range-inline-BfYK795W.cjs.map} +1 -1
  88. package/dist/{date-range-inline-C2PXX_GY.js → date-range-inline-n7y_H6PJ.js} +2 -2
  89. package/dist/{date-range-inline-C2PXX_GY.js.map → date-range-inline-n7y_H6PJ.js.map} +1 -1
  90. package/dist/date-range-inline.cjs +1 -1
  91. package/dist/date-range-inline.js +1 -1
  92. package/dist/date-range.cjs +1 -1
  93. package/dist/date-range.js +1 -1
  94. package/dist/delay.cjs +2 -2
  95. package/dist/delay.cjs.map +1 -1
  96. package/dist/delay.js +3 -3
  97. package/dist/{details-DT2b3xOn.cjs → details-BdAVsLl-.cjs} +2 -2
  98. package/dist/{details-DT2b3xOn.cjs.map → details-BdAVsLl-.cjs.map} +1 -1
  99. package/dist/{details-VjaNwtfd.js → details-CS_ToAOj.js} +6 -6
  100. package/dist/{details-VjaNwtfd.js.map → details-CS_ToAOj.js.map} +1 -1
  101. package/dist/details.cjs +1 -1
  102. package/dist/details.js +1 -1
  103. package/dist/directives.cjs +1 -1
  104. package/dist/directives.js +5 -5
  105. package/dist/{divider-BMO8pzEO.js → divider-COLK0RbT.js} +2 -2
  106. package/dist/{divider-BMO8pzEO.js.map → divider-COLK0RbT.js.map} +1 -1
  107. package/dist/{divider-BW33TZ-X.cjs → divider-CvWAnvdO.cjs} +2 -2
  108. package/dist/{divider-BW33TZ-X.cjs.map → divider-CvWAnvdO.cjs.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/dropdown.cjs +3 -3
  112. package/dist/dropdown.cjs.map +1 -1
  113. package/dist/dropdown.js +2 -2
  114. package/dist/{expand-DbELKKOt.js → expand-D9LzmpoV.js} +5 -5
  115. package/dist/{expand-DbELKKOt.js.map → expand-D9LzmpoV.js.map} +1 -1
  116. package/dist/{expand-_f5EUKWB.cjs → expand-r2sATPUJ.cjs} +3 -3
  117. package/dist/{expand-_f5EUKWB.cjs.map → expand-r2sATPUJ.cjs.map} +1 -1
  118. package/dist/expand.cjs +1 -1
  119. package/dist/expand.js +1 -1
  120. package/dist/float-2nHYuBx-.cjs +1 -0
  121. package/dist/{float-CKmd-0-t.cjs.map → float-2nHYuBx-.cjs.map} +1 -1
  122. package/dist/{float-B6RBb2dN.js → float-BWy39CXr.js} +2 -2
  123. package/dist/{float-B6RBb2dN.js.map → float-BWy39CXr.js.map} +1 -1
  124. package/dist/float.cjs +1 -1
  125. package/dist/float.js +1 -1
  126. package/dist/form-DhjedCWm.js +258 -0
  127. package/dist/form-DhjedCWm.js.map +1 -0
  128. package/dist/form-g5c70rac.cjs +42 -0
  129. package/dist/form-g5c70rac.cjs.map +1 -0
  130. package/dist/form.cjs +1 -1
  131. package/dist/form.js +2 -2
  132. package/dist/handover/agent-runtime-followups.md +1 -1
  133. package/dist/handover/agent-runtime-v1.md +3 -3
  134. package/dist/{hashContent-Bobsobip.cjs.map → hashContent-Ck6laKlk.cjs.map} +1 -1
  135. package/dist/{hashContent-BU6jl5ih.js.map → hashContent-dJrI-9sc.js.map} +1 -1
  136. package/dist/{icons-r-S17M8U.cjs → icons-1HIENBco.cjs} +2 -2
  137. package/dist/{icons-r-S17M8U.cjs.map → icons-1HIENBco.cjs.map} +1 -1
  138. package/dist/{icons-CoDo95Cu.js → icons-3y0kr1aB.js} +3 -3
  139. package/dist/{icons-CoDo95Cu.js.map → icons-3y0kr1aB.js.map} +1 -1
  140. package/dist/icons.cjs +1 -1
  141. package/dist/icons.js +1 -1
  142. package/dist/{iframe-P9c_qg1-.cjs → iframe-CjqYuZG5.cjs} +2 -2
  143. package/dist/{iframe-P9c_qg1-.cjs.map → iframe-CjqYuZG5.cjs.map} +1 -1
  144. package/dist/{iframe-k4oI-TIj.js → iframe-Z5gTK-gd.js} +2 -2
  145. package/dist/{iframe-k4oI-TIj.js.map → iframe-Z5gTK-gd.js.map} +1 -1
  146. package/dist/iframe.cjs +1 -1
  147. package/dist/iframe.js +1 -1
  148. package/dist/index.cjs +1 -1
  149. package/dist/index.js +60 -60
  150. package/dist/{input-D95GjINh.js → input-B-fw6f_r.js} +103 -104
  151. package/dist/input-B-fw6f_r.js.map +1 -0
  152. package/dist/input-BtcIhu0Q.cjs +52 -0
  153. package/dist/input-BtcIhu0Q.cjs.map +1 -0
  154. package/dist/{input-chip-DpC_XEKN.js → input-chip-CtQ0pH5b.js} +2 -2
  155. package/dist/{input-chip-DpC_XEKN.js.map → input-chip-CtQ0pH5b.js.map} +1 -1
  156. package/dist/{input-chip-D0ZXqTt5.cjs → input-chip-DZktYohr.cjs} +2 -2
  157. package/dist/{input-chip-D0ZXqTt5.cjs.map → input-chip-DZktYohr.cjs.map} +1 -1
  158. package/dist/input.cjs +1 -1
  159. package/dist/input.js +1 -1
  160. package/dist/json.cjs +2 -2
  161. package/dist/json.cjs.map +1 -1
  162. package/dist/json.js +3 -3
  163. package/dist/kbd.cjs +2 -2
  164. package/dist/kbd.cjs.map +1 -1
  165. package/dist/kbd.js +2 -2
  166. package/dist/{layout-CXPNsUIo.js → layout-BH28sKGc.js} +1 -1
  167. package/dist/{layout-CXPNsUIo.js.map → layout-BH28sKGc.js.map} +1 -1
  168. package/dist/{layout-Zhe7wSZ_.cjs → layout-Delq-QvR.cjs} +1 -1
  169. package/dist/{layout-Zhe7wSZ_.cjs.map → layout-Delq-QvR.cjs.map} +1 -1
  170. package/dist/layout.cjs +1 -1
  171. package/dist/layout.js +1 -1
  172. package/dist/{lazy-Dq9mRRjT.cjs.map → lazy-CayEFyC3.cjs.map} +1 -1
  173. package/dist/{lazy-B0ia54tT.js.map → lazy-D-bO2r4m.js.map} +1 -1
  174. package/dist/{lightbox-C-yHeoK0.cjs → lightbox-BHTZOn8K.cjs} +3 -3
  175. package/dist/{lightbox-C-yHeoK0.cjs.map → lightbox-BHTZOn8K.cjs.map} +1 -1
  176. package/dist/{lightbox-CovQtmyn.js → lightbox-BL3LWp-P.js} +9 -9
  177. package/dist/{lightbox-CovQtmyn.js.map → lightbox-BL3LWp-P.js.map} +1 -1
  178. package/dist/lightbox.cjs +1 -1
  179. package/dist/lightbox.js +1 -1
  180. package/dist/{list-CAijuky4.cjs → list-CHYa5VGY.cjs} +3 -3
  181. package/dist/{list-CAijuky4.cjs.map → list-CHYa5VGY.cjs.map} +1 -1
  182. package/dist/{list-C1pR9vhu.js → list-DLJL1JQj.js} +2 -2
  183. package/dist/{list-C1pR9vhu.js.map → list-DLJL1JQj.js.map} +1 -1
  184. package/dist/list.cjs +1 -1
  185. package/dist/list.js +1 -1
  186. package/dist/{magnetic-BJgB1dVi.cjs → magnetic-Bgh7aHHI.cjs} +1 -1
  187. package/dist/{magnetic-BJgB1dVi.cjs.map → magnetic-Bgh7aHHI.cjs.map} +1 -1
  188. package/dist/{magnetic-YwCNvtbB.js → magnetic-DxvoEz8_.js} +2 -2
  189. package/dist/{magnetic-YwCNvtbB.js.map → magnetic-DxvoEz8_.js.map} +1 -1
  190. package/dist/{menu-B59vZv9n.js → menu-BNq93w6X.js} +3 -3
  191. package/dist/{menu-B59vZv9n.js.map → menu-BNq93w6X.js.map} +1 -1
  192. package/dist/{menu-BaHO3Cip.cjs → menu-DAikvkeV.cjs} +3 -3
  193. package/dist/{menu-BaHO3Cip.cjs.map → menu-DAikvkeV.cjs.map} +1 -1
  194. package/dist/menu.cjs +1 -1
  195. package/dist/menu.js +1 -1
  196. package/dist/mixins-BOOu6q2n.cjs +298 -0
  197. package/dist/mixins-BOOu6q2n.cjs.map +1 -0
  198. package/dist/mixins-BWb9_e1s.js +680 -0
  199. package/dist/mixins-BWb9_e1s.js.map +1 -0
  200. package/dist/mixins.cjs +1 -1
  201. package/dist/mixins.js +2 -2
  202. package/dist/nav-drawer.cjs +1 -1
  203. package/dist/nav-drawer.js +1 -1
  204. package/dist/navigation-bar.cjs +1 -1
  205. package/dist/navigation-bar.js +1 -1
  206. package/dist/navigation-rail.cjs +3 -3
  207. package/dist/navigation-rail.cjs.map +1 -1
  208. package/dist/navigation-rail.js +2 -2
  209. package/dist/{notification-BeLoVa47.js → notification-CUmb9c3Y.js} +4 -4
  210. package/dist/{notification-BeLoVa47.js.map → notification-CUmb9c3Y.js.map} +1 -1
  211. package/dist/notification-Dy2azMyt.cjs +23 -0
  212. package/dist/{notification-BC9nG8Sr.cjs.map → notification-Dy2azMyt.cjs.map} +1 -1
  213. package/dist/notification.cjs +1 -1
  214. package/dist/notification.js +1 -1
  215. package/dist/{option-BWF4GBp-.cjs → option-CDgIKifG.cjs} +2 -2
  216. package/dist/{option-BWF4GBp-.cjs.map → option-CDgIKifG.cjs.map} +1 -1
  217. package/dist/{option-UvlSAcC4.js → option-DFvQ551b.js} +2 -2
  218. package/dist/{option-UvlSAcC4.js.map → option-DFvQ551b.js.map} +1 -1
  219. package/dist/option.cjs +1 -1
  220. package/dist/option.js +1 -1
  221. package/dist/{overlay-stack-DCDS17uj.js.map → overlay-stack-BR4iYivO.js.map} +1 -1
  222. package/dist/{overlay-stack-DPIe_aYv.cjs.map → overlay-stack-Dk0xETTy.cjs.map} +1 -1
  223. package/dist/overlay.cjs +2 -2
  224. package/dist/overlay.cjs.map +1 -1
  225. package/dist/{overlay.confirm-body-URtE1gI3.cjs → overlay.confirm-body-BkhNvr0c.cjs} +2 -2
  226. package/dist/{overlay.confirm-body-URtE1gI3.cjs.map → overlay.confirm-body-BkhNvr0c.cjs.map} +1 -1
  227. package/dist/{overlay.confirm-body-9W0B5QGv.js → overlay.confirm-body-uFp-0Zfh.js} +2 -2
  228. package/dist/{overlay.confirm-body-9W0B5QGv.js.map → overlay.confirm-body-uFp-0Zfh.js.map} +1 -1
  229. package/dist/overlay.js +8 -8
  230. package/dist/{overlay.service-DnZTcKyJ.cjs → overlay.service-1YWfUD2S.cjs} +1 -1
  231. package/dist/{overlay.service-DnZTcKyJ.cjs.map → overlay.service-1YWfUD2S.cjs.map} +1 -1
  232. package/dist/{overlay.service-CVqs2Gu1.js → overlay.service-BcF12kGb.js} +2 -2
  233. package/dist/{overlay.service-CVqs2Gu1.js.map → overlay.service-BcF12kGb.js.map} +1 -1
  234. package/dist/page.cjs +2 -2
  235. package/dist/page.cjs.map +1 -1
  236. package/dist/page.js +5 -5
  237. package/dist/{progress-CwzwY8Oe.cjs → progress-C02sWkmE.cjs} +2 -2
  238. package/dist/{progress-CwzwY8Oe.cjs.map → progress-C02sWkmE.cjs.map} +1 -1
  239. package/dist/{progress-C29Uw-WJ.js → progress-bLbGRuQ1.js} +2 -2
  240. package/dist/{progress-C29Uw-WJ.js.map → progress-bLbGRuQ1.js.map} +1 -1
  241. package/dist/progress.cjs +1 -1
  242. package/dist/progress.js +1 -1
  243. package/dist/radio-group-BA-jRct5.cjs +40 -0
  244. package/dist/radio-group-BA-jRct5.cjs.map +1 -0
  245. package/dist/{radio-group-CW8airhZ.js → radio-group-DA4eIGCj.js} +4 -4
  246. package/dist/radio-group-DA4eIGCj.js.map +1 -0
  247. package/dist/radio-group.cjs +1 -1
  248. package/dist/radio-group.js +1 -1
  249. package/dist/range.cjs +6 -4
  250. package/dist/range.cjs.map +1 -1
  251. package/dist/range.js +19 -15
  252. package/dist/range.js.map +1 -1
  253. package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-D7LqTUMn.js.map} +1 -1
  254. package/dist/{reduced-motion-Ds-HjMzn.cjs.map → reduced-motion-Dzfp_w5x.cjs.map} +1 -1
  255. package/dist/{rxjs-utils-CVeJQ9KG.js.map → rxjs-utils-D9U4MW0Q.js.map} +1 -1
  256. package/dist/{rxjs-utils-DCUHg_Ml.cjs.map → rxjs-utils-kWPShgKu.cjs.map} +1 -1
  257. package/dist/rxjs-utils.cjs +1 -1
  258. package/dist/rxjs-utils.js +1 -1
  259. package/dist/{scroll-BotoGcMU.js → scroll-CG5up5oy.js} +2 -2
  260. package/dist/{scroll-BotoGcMU.js.map → scroll-CG5up5oy.js.map} +1 -1
  261. package/dist/{scroll-CmhmUebp.cjs → scroll-D8vBF_gY.cjs} +2 -2
  262. package/dist/{scroll-CmhmUebp.cjs.map → scroll-D8vBF_gY.cjs.map} +1 -1
  263. package/dist/{search-BLCRsxIC.cjs.map → search-DPKoC-dT.cjs.map} +1 -1
  264. package/dist/{search-BTz7-Rev.js.map → search-MvIBA93K.js.map} +1 -1
  265. package/dist/{select-Dbn-CImU.js → select-BrK1BJoU.js} +52 -73
  266. package/dist/select-BrK1BJoU.js.map +1 -0
  267. package/dist/select-Dh2j7Qc-.cjs +56 -0
  268. package/dist/select-Dh2j7Qc-.cjs.map +1 -0
  269. package/dist/select.cjs +1 -1
  270. package/dist/select.js +1 -1
  271. package/dist/skeleton.cjs +2 -2
  272. package/dist/skeleton.cjs.map +1 -1
  273. package/dist/skeleton.js +2 -2
  274. package/dist/skills/autocomplete.md +16 -3
  275. package/dist/skills/button.md +19 -0
  276. package/dist/skills/checkbox.md +19 -0
  277. package/dist/skills/date-range.md +19 -0
  278. package/dist/skills/form-ux-rules.md +55 -0
  279. package/dist/skills/form.md +121 -25
  280. package/dist/skills/input.md +19 -4
  281. package/dist/skills/range.md +15 -1
  282. package/dist/skills/schmancy/autocomplete.md +16 -3
  283. package/dist/skills/schmancy/button.md +19 -0
  284. package/dist/skills/schmancy/checkbox.md +19 -0
  285. package/dist/skills/schmancy/date-range.md +19 -0
  286. package/dist/skills/schmancy/form-ux-rules.md +55 -0
  287. package/dist/skills/schmancy/form.md +121 -25
  288. package/dist/skills/schmancy/input.md +19 -4
  289. package/dist/skills/schmancy/range.md +15 -1
  290. package/dist/skills/schmancy/select.md +13 -1
  291. package/dist/skills/schmancy/state.md +5 -0
  292. package/dist/skills/schmancy/switch.md +21 -2
  293. package/dist/skills/schmancy/textarea.md +13 -0
  294. package/dist/skills/select.md +13 -1
  295. package/dist/skills/state.md +5 -0
  296. package/dist/skills/switch.md +21 -2
  297. package/dist/skills/textarea.md +13 -0
  298. package/dist/slider.cjs +3 -3
  299. package/dist/slider.cjs.map +1 -1
  300. package/dist/slider.js +2 -2
  301. package/dist/{sound.service-kKfsN0m-.js → sound.service-BIN2W7Rv.js} +1 -1
  302. package/dist/{sound.service-kKfsN0m-.js.map → sound.service-BIN2W7Rv.js.map} +1 -1
  303. package/dist/{sound.service-BGs6m0Cm.cjs → sound.service-DyY78ukR.cjs} +1 -1
  304. package/dist/{sound.service-BGs6m0Cm.cjs.map → sound.service-DyY78ukR.cjs.map} +1 -1
  305. package/dist/{splash-screen-DtkjCJYo.js → splash-screen-BcjjJSlK.js} +2 -2
  306. package/dist/{splash-screen-DtkjCJYo.js.map → splash-screen-BcjjJSlK.js.map} +1 -1
  307. package/dist/{splash-screen-DlQUv-kV.cjs → splash-screen-Kr1sPtME.cjs} +2 -2
  308. package/dist/{splash-screen-DlQUv-kV.cjs.map → splash-screen-Kr1sPtME.cjs.map} +1 -1
  309. package/dist/splash-screen.cjs +1 -1
  310. package/dist/splash-screen.js +1 -1
  311. package/dist/{src-DEUjlTsX.cjs → src-B2-CU8fu.cjs} +11 -11
  312. package/dist/{src-DEUjlTsX.cjs.map → src-B2-CU8fu.cjs.map} +1 -1
  313. package/dist/{src-D6e0adHi.js → src-DvywUq7l.js} +38 -38
  314. package/dist/{src-D6e0adHi.js.map → src-DvywUq7l.js.map} +1 -1
  315. package/dist/state-avic94Ft.cjs +1 -0
  316. package/dist/{state-DNdCPITt.cjs.map → state-avic94Ft.cjs.map} +1 -1
  317. package/dist/{state-BusMG6sM.js → state-nm8yzMPp.js} +1 -2
  318. package/dist/{state-BusMG6sM.js.map → state-nm8yzMPp.js.map} +1 -1
  319. package/dist/state.cjs +1 -1
  320. package/dist/state.js +2 -2
  321. package/dist/steps.cjs +3 -3
  322. package/dist/steps.cjs.map +1 -1
  323. package/dist/steps.js +2 -2
  324. package/dist/{surface-A82O1kgu.js → surface-BtMMHKol.js} +2 -2
  325. package/dist/{surface-A82O1kgu.js.map → surface-BtMMHKol.js.map} +1 -1
  326. package/dist/surface-CgXeKdGL.cjs +7 -0
  327. package/dist/{surface-BpppoNXN.cjs.map → surface-CgXeKdGL.cjs.map} +1 -1
  328. package/dist/surface.cjs +1 -1
  329. package/dist/surface.js +1 -1
  330. package/dist/switch.cjs +3 -3
  331. package/dist/switch.cjs.map +1 -1
  332. package/dist/switch.js +27 -43
  333. package/dist/switch.js.map +1 -1
  334. package/dist/table.cjs +3 -3
  335. package/dist/table.cjs.map +1 -1
  336. package/dist/table.js +2 -2
  337. package/dist/{tabs-cVHHd1dY.js → tabs-CikPr7by.js} +2 -2
  338. package/dist/{tabs-cVHHd1dY.js.map → tabs-CikPr7by.js.map} +1 -1
  339. package/dist/{tabs-TO3UiBsm.cjs → tabs-CitVls3_.cjs} +2 -2
  340. package/dist/{tabs-TO3UiBsm.cjs.map → tabs-CitVls3_.cjs.map} +1 -1
  341. package/dist/tabs.cjs +1 -1
  342. package/dist/tabs.js +1 -1
  343. package/dist/teleport.cjs +1 -1
  344. package/dist/teleport.js +1 -1
  345. package/dist/textarea-CqV1wvmB.cjs +43 -0
  346. package/dist/textarea-CqV1wvmB.cjs.map +1 -0
  347. package/dist/textarea-DVkwQSis.js +186 -0
  348. package/dist/textarea-DVkwQSis.js.map +1 -0
  349. package/dist/textarea.cjs +1 -1
  350. package/dist/textarea.js +1 -1
  351. package/dist/{theme-CT408FqH.js → theme-BIWS4TOW.js} +9 -9
  352. package/dist/{theme-CT408FqH.js.map → theme-BIWS4TOW.js.map} +1 -1
  353. package/dist/theme-DMgjiKda.cjs +181 -0
  354. package/dist/{theme-CpuF3D3q.cjs.map → theme-DMgjiKda.cjs.map} +1 -1
  355. package/dist/{theme-button-pTb5-Wxx.js → theme-button-DC_shZ_7.js} +2 -2
  356. package/dist/{theme-button-pTb5-Wxx.js.map → theme-button-DC_shZ_7.js.map} +1 -1
  357. package/dist/theme-button-ENKa3TPT.cjs +8 -0
  358. package/dist/{theme-button-B6Xf-EiH.cjs.map → theme-button-ENKa3TPT.cjs.map} +1 -1
  359. package/dist/theme-button.cjs +1 -1
  360. package/dist/theme-button.js +1 -1
  361. package/dist/theme.cjs +1 -1
  362. package/dist/{theme.interface-B9TjbSBF.js.map → theme.interface-C8OHheXg.js.map} +1 -1
  363. package/dist/{theme.interface-BujperTo.cjs.map → theme.interface-CYo4UpWK.cjs.map} +1 -1
  364. package/dist/theme.js +4 -4
  365. package/dist/{theme.service-DIUo1mBP.js → theme.service-BOWIT_5k.js} +1 -1
  366. package/dist/{theme.service-DIUo1mBP.js.map → theme.service-BOWIT_5k.js.map} +1 -1
  367. package/dist/{theme.service-Cfk88qHK.cjs → theme.service-DkdH1t60.cjs} +1 -1
  368. package/dist/{theme.service-Cfk88qHK.cjs.map → theme.service-DkdH1t60.cjs.map} +1 -1
  369. package/dist/tree.cjs +2 -2
  370. package/dist/tree.cjs.map +1 -1
  371. package/dist/tree.js +2 -2
  372. package/dist/typography.cjs +2 -2
  373. package/dist/typography.cjs.map +1 -1
  374. package/dist/typography.js +2 -2
  375. package/dist/{utils-kND2Z9Xg.js → utils-Cj_nRRyx.js} +2 -2
  376. package/dist/{utils-kND2Z9Xg.js.map → utils-Cj_nRRyx.js.map} +1 -1
  377. package/dist/{utils-Dt5PpmaQ.cjs → utils-D2QUu4-g.cjs} +1 -1
  378. package/dist/{utils-Dt5PpmaQ.cjs.map → utils-D2QUu4-g.cjs.map} +1 -1
  379. package/dist/utils.cjs +1 -1
  380. package/dist/utils.js +4 -4
  381. package/dist/visually-hidden.cjs +2 -2
  382. package/dist/visually-hidden.cjs.map +1 -1
  383. package/dist/visually-hidden.js +2 -2
  384. package/dist/{window-CuBcOxbc.js → window-BTecgE_U.js} +7 -7
  385. package/dist/{window-CuBcOxbc.js.map → window-BTecgE_U.js.map} +1 -1
  386. package/dist/{window-CSKvv4Ts.cjs → window-DGydMS0g.cjs} +2 -2
  387. package/dist/{window-CSKvv4Ts.cjs.map → window-DGydMS0g.cjs.map} +1 -1
  388. package/dist/window.cjs +1 -1
  389. package/dist/window.js +1 -1
  390. package/package.json +1 -1
  391. package/skills/schmancy/autocomplete.md +16 -3
  392. package/skills/schmancy/button.md +19 -0
  393. package/skills/schmancy/checkbox.md +19 -0
  394. package/skills/schmancy/date-range.md +19 -0
  395. package/skills/schmancy/form-ux-rules.md +55 -0
  396. package/skills/schmancy/form.md +121 -25
  397. package/skills/schmancy/input.md +19 -4
  398. package/skills/schmancy/range.md +15 -1
  399. package/skills/schmancy/select.md +13 -1
  400. package/skills/schmancy/state.md +5 -0
  401. package/skills/schmancy/switch.md +21 -2
  402. package/skills/schmancy/textarea.md +13 -0
  403. package/src/button/button.test.ts +122 -0
  404. package/src/button/button.ts +36 -0
  405. package/src/{autocomplete → form/fields/autocomplete}/autocomplete.ts +48 -75
  406. package/src/{checkbox → form/fields/checkbox}/checkbox.test.ts +1 -1
  407. package/src/form/fields/checkbox/checkbox.ts +126 -0
  408. package/src/form/fields/date-range/date-range.test.ts +102 -0
  409. package/src/{date-range → form/fields/date-range}/date-range.ts +90 -7
  410. package/src/form/fields/input/input.test.ts +201 -0
  411. package/src/{input → form/fields/input}/input.ts +153 -238
  412. package/src/{radio-group → form/fields/radio-group}/radio-button.ts +1 -1
  413. package/src/{radio-group → form/fields/radio-group}/radio-group.ts +1 -1
  414. package/src/form/fields/range/range.test.ts +90 -0
  415. package/src/{range → form/fields/range}/range.ts +34 -13
  416. package/src/{select → form/fields/select}/select.ts +77 -108
  417. package/src/{switch → form/fields/switch}/switch.test.ts +1 -1
  418. package/src/{switch → form/fields/switch}/switch.ts +71 -51
  419. package/src/form/fields/textarea/textarea.test.ts +54 -0
  420. package/src/{textarea → form/fields/textarea}/textarea.ts +33 -72
  421. package/src/form/form-state.ts +31 -0
  422. package/src/form/form-summary.test.ts +105 -0
  423. package/src/form/form-summary.ts +171 -0
  424. package/src/form/form.test.ts +218 -35
  425. package/src/form/form.ts +330 -99
  426. package/src/form/index.ts +2 -0
  427. package/src/index.ts +9 -9
  428. package/types/mixins/formField.mixin.d.ts +90 -0
  429. package/types/src/button/button.d.ts +9 -0
  430. package/types/src/button/button.test.d.ts +3 -0
  431. package/types/src/{autocomplete → form/fields/autocomplete}/autocomplete.d.ts +6 -15
  432. package/types/src/form/fields/checkbox/checkbox.d.ts +47 -0
  433. package/types/src/{date-range → form/fields/date-range}/date-range.d.ts +22 -4
  434. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  435. package/types/src/{input → form/fields/input}/input.d.ts +20 -45
  436. package/types/src/form/fields/input/input.test.d.ts +1 -0
  437. package/types/src/{radio-group → form/fields/radio-group}/radio-button.d.ts +1 -1
  438. package/types/src/{radio-group → form/fields/radio-group}/radio-group.d.ts +1 -1
  439. package/types/src/form/fields/range/range.d.ts +28 -0
  440. package/types/src/form/fields/range/range.test.d.ts +1 -0
  441. package/types/src/{select → form/fields/select}/select.d.ts +23 -24
  442. package/types/src/form/fields/switch/switch.d.ts +57 -0
  443. package/types/src/{textarea → form/fields/textarea}/textarea.d.ts +6 -39
  444. package/types/src/form/fields/textarea/textarea.test.d.ts +1 -0
  445. package/types/src/form/form-state.d.ts +22 -0
  446. package/types/src/form/form-summary.d.ts +42 -0
  447. package/types/src/form/form-summary.test.d.ts +4 -0
  448. package/types/src/form/form.d.ts +79 -34
  449. package/types/src/form/form.test.d.ts +2 -2
  450. package/types/src/form/index.d.ts +2 -0
  451. package/types/src/index.d.ts +9 -9
  452. package/dist/active-host-CcIa2tmW.cjs +0 -1
  453. package/dist/active-host-CvNYoprt.js +0 -57
  454. package/dist/autocomplete-DWSuwSRS.js.map +0 -1
  455. package/dist/autocomplete-iCJOia-q.cjs +0 -115
  456. package/dist/autocomplete-iCJOia-q.cjs.map +0 -1
  457. package/dist/checkbox-NNReP9s_.cjs.map +0 -1
  458. package/dist/date-range-CaOxwZDq.cjs +0 -131
  459. package/dist/date-range-CaOxwZDq.cjs.map +0 -1
  460. package/dist/date-range-CgNujP8r.js.map +0 -1
  461. package/dist/date-range-inline-D4IjOOO0.cjs +0 -43
  462. package/dist/decorate-23nYs4Le.js +0 -7
  463. package/dist/decorate-DpFmy0nm.cjs +0 -1
  464. package/dist/float-CKmd-0-t.cjs +0 -1
  465. package/dist/form-CFvwnfuJ.js +0 -68
  466. package/dist/form-CFvwnfuJ.js.map +0 -1
  467. package/dist/form-Ceijw1aA.cjs +0 -1
  468. package/dist/form-Ceijw1aA.cjs.map +0 -1
  469. package/dist/input-D95GjINh.js.map +0 -1
  470. package/dist/input-D9s4jDAb.cjs +0 -51
  471. package/dist/input-D9s4jDAb.cjs.map +0 -1
  472. package/dist/mixins-BV0w2yIE.js +0 -627
  473. package/dist/mixins-BV0w2yIE.js.map +0 -1
  474. package/dist/mixins-DvAYa-F7.cjs +0 -298
  475. package/dist/mixins-DvAYa-F7.cjs.map +0 -1
  476. package/dist/notification-BC9nG8Sr.cjs +0 -23
  477. package/dist/radio-group-ByMD6Lsj.cjs +0 -40
  478. package/dist/radio-group-ByMD6Lsj.cjs.map +0 -1
  479. package/dist/radio-group-CW8airhZ.js.map +0 -1
  480. package/dist/select-BdBThja4.cjs +0 -56
  481. package/dist/select-BdBThja4.cjs.map +0 -1
  482. package/dist/select-Dbn-CImU.js.map +0 -1
  483. package/dist/state-DNdCPITt.cjs +0 -1
  484. package/dist/surface-BpppoNXN.cjs +0 -7
  485. package/dist/textarea-B9dy-yec.js +0 -211
  486. package/dist/textarea-B9dy-yec.js.map +0 -1
  487. package/dist/textarea-DFY0Flgv.cjs +0 -39
  488. package/dist/textarea-DFY0Flgv.cjs.map +0 -1
  489. package/dist/theme-CpuF3D3q.cjs +0 -181
  490. package/dist/theme-button-B6Xf-EiH.cjs +0 -8
  491. package/src/checkbox/checkbox.ts +0 -162
  492. package/types/src/checkbox/checkbox.d.ts +0 -71
  493. package/types/src/range/range.d.ts +0 -25
  494. package/types/src/switch/switch.d.ts +0 -53
  495. /package/dist/{animation-CO_Csq84.cjs → animation-CCOIW4wJ.cjs} +0 -0
  496. /package/dist/{animation-BK-8BwY8.js → animation-DCznELuT.js} +0 -0
  497. /package/dist/{context-DJTJnSK4.js → context-6oXCZmZN.js} +0 -0
  498. /package/dist/{context-BpCETidA.cjs → context-CRZeiCqq.cjs} +0 -0
  499. /package/dist/{hashContent-Bobsobip.cjs → hashContent-Ck6laKlk.cjs} +0 -0
  500. /package/dist/{hashContent-BU6jl5ih.js → hashContent-dJrI-9sc.js} +0 -0
  501. /package/dist/{lazy-Dq9mRRjT.cjs → lazy-CayEFyC3.cjs} +0 -0
  502. /package/dist/{lazy-B0ia54tT.js → lazy-D-bO2r4m.js} +0 -0
  503. /package/dist/{overlay-stack-DCDS17uj.js → overlay-stack-BR4iYivO.js} +0 -0
  504. /package/dist/{overlay-stack-DPIe_aYv.cjs → overlay-stack-Dk0xETTy.cjs} +0 -0
  505. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-D7LqTUMn.js} +0 -0
  506. /package/dist/{reduced-motion-Ds-HjMzn.cjs → reduced-motion-Dzfp_w5x.cjs} +0 -0
  507. /package/dist/{rxjs-utils-CVeJQ9KG.js → rxjs-utils-D9U4MW0Q.js} +0 -0
  508. /package/dist/{rxjs-utils-DCUHg_Ml.cjs → rxjs-utils-kWPShgKu.cjs} +0 -0
  509. /package/dist/{search-BLCRsxIC.cjs → search-DPKoC-dT.cjs} +0 -0
  510. /package/dist/{search-BTz7-Rev.js → search-MvIBA93K.js} +0 -0
  511. /package/dist/{theme.interface-B9TjbSBF.js → theme.interface-C8OHheXg.js} +0 -0
  512. /package/dist/{theme.interface-BujperTo.cjs → theme.interface-CYo4UpWK.cjs} +0 -0
  513. /package/src/{autocomplete → form/fields/autocomplete}/autocomplete.scss +0 -0
  514. /package/src/{autocomplete → form/fields/autocomplete}/index.ts +0 -0
  515. /package/src/{checkbox → form/fields/checkbox}/index.ts +0 -0
  516. /package/src/{date-range → form/fields/date-range}/date-range-dialog.ts +0 -0
  517. /package/src/{date-range → form/fields/date-range}/date-range-helpers.ts +0 -0
  518. /package/src/{date-range → form/fields/date-range}/date-range-presets.ts +0 -0
  519. /package/src/{date-range → form/fields/date-range}/date-utils.ts +0 -0
  520. /package/src/{date-range → form/fields/date-range}/index.ts +0 -0
  521. /package/src/{input → form/fields/input}/index.ts +0 -0
  522. /package/src/{input → form/fields/input}/input.scss +0 -0
  523. /package/src/{radio-group → form/fields/radio-group}/index.ts +0 -0
  524. /package/src/{radio-group → form/fields/radio-group}/radio-group.scss +0 -0
  525. /package/src/{range → form/fields/range}/index.ts +0 -0
  526. /package/src/{select → form/fields/select}/index.ts +0 -0
  527. /package/src/{switch → form/fields/switch}/index.ts +0 -0
  528. /package/src/{textarea → form/fields/textarea}/index.ts +0 -0
  529. /package/src/{textarea → form/fields/textarea}/textarea.scss +0 -0
  530. /package/types/src/{autocomplete → form/fields/autocomplete}/index.d.ts +0 -0
  531. /package/types/src/{checkbox → form/fields/checkbox}/checkbox.test.d.ts +0 -0
  532. /package/types/src/{checkbox → form/fields/checkbox}/index.d.ts +0 -0
  533. /package/types/src/{date-range → form/fields/date-range}/date-range-dialog.d.ts +0 -0
  534. /package/types/src/{date-range → form/fields/date-range}/date-range-helpers.d.ts +0 -0
  535. /package/types/src/{date-range → form/fields/date-range}/date-range-presets.d.ts +0 -0
  536. /package/types/src/{date-range → form/fields/date-range}/date-utils.d.ts +0 -0
  537. /package/types/src/{date-range → form/fields/date-range}/index.d.ts +0 -0
  538. /package/types/src/{input → form/fields/input}/index.d.ts +0 -0
  539. /package/types/src/{radio-group → form/fields/radio-group}/index.d.ts +0 -0
  540. /package/types/src/{range → form/fields/range}/index.d.ts +0 -0
  541. /package/types/src/{select → form/fields/select}/index.d.ts +0 -0
  542. /package/types/src/{switch → form/fields/switch}/index.d.ts +0 -0
  543. /package/types/src/{switch → form/fields/switch}/switch.test.d.ts +0 -0
  544. /package/types/src/{textarea → form/fields/textarea}/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-cVHHd1dY.js","names":[],"sources":["../src/tabs/context.ts","../src/tabs/tab.ts","../src/tabs/tabs-group.ts"],"sourcesContent":["import { createContext } from '@lit/context'\n\nexport type TSchmancyTabsMode = 'scroll' | 'tabs'\n\nexport const SchmancyTabsModeContext = createContext<TSchmancyTabsMode>('tabs')\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTabsModeContext } from './context'\n\n@customElement('schmancy-tab')\nexport default class SchmancyTab extends SchmancyElement {\n\t@property({ type: String, reflect: true }) label\n\t@property({ type: String, reflect: true }) value\n\t@property({ type: Boolean, reflect: true }) active!: boolean\n\n\t@consume({ context: SchmancyTabsModeContext, subscribe: true })\n\t@state()\n\tmode\n\n\tprotected updated(changedProperties: Map<PropertyKey, unknown>) {\n\t\tif (changedProperties.has('active') && this.active) {\n\t\t\t// Trigger resize for virtualizers to recalculate when tab becomes visible\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Don't render content until tab is active (virtualizers need actual layout, not hidden)\n\t\tif (this.mode === 'tabs' && !this.active) {\n\t\t\treturn html``\n\t\t}\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab': SchmancyTab\n\t}\n}\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { filter, fromEvent, interval, map, take, throttleTime } from 'rxjs'\nimport { SchmancyTabsModeContext, TSchmancyTabsMode } from './context'\nimport SchmancyTab from './tab'\n\n/**\n * @slot - The content of the tab group\n * @fires tab-changed - The event fired when the tab is changed\n */\n@customElement('schmancy-tab-group')\nexport default class SchmancyTabGroup extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\theight: 100%;\n\t}\n`];\n\t@provide({ context: SchmancyTabsModeContext })\n\t@property({ type: String })\n\tmode: TSchmancyTabsMode = 'tabs'\n\n\t@property({ type: Boolean }) rounded = true\n\n\t@property({ type: String, reflect: true }) activeTab: string\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate tabsElements!: Array<SchmancyTab>\n\n\t@query('#tabsNavigation') navElement!: HTMLElement\n\t@query('#tabsContent') tabsContent!: HTMLElement\n\n\t@state()\n\tprivate tabs: Array<SchmancyTab> = []\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(window, 'scroll')\n\t\t\t.pipe(\n\t\t\t\tthrottleTime(1000),\n\t\t\t\tfilter(() => this.mode === 'scroll'),\n\t\t\t\tmap(() => {\n\t\t\t\t\tlet closestDiv = null\n\t\t\t\t\tlet closestDistance = Infinity\n\t\t\t\t\tthis.tabsElements.forEach(div => {\n\t\t\t\t\t\tconst distance =\n\t\t\t\t\t\t\tdiv.getBoundingClientRect().top - this.navElement.clientHeight + document.body.offsetHeight / 3\n\n\t\t\t\t\t\tif (distance < closestDistance && distance > 0) {\n\t\t\t\t\t\t\tclosestDistance = distance\n\t\t\t\t\t\t\tclosestDiv = div\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\treturn closestDiv\n\t\t\t\t}),\n\t\t\t\tfilter((el: SchmancyTab | null) => el !== null),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (el: SchmancyTab) => {\n\t\t\t\t\tthis.activeTab = el.value\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tinterval(0)\n\t\t\t.pipe(\n\t\t\t\tfilter(() => !!this.navElement.clientHeight),\n\t\t\t\ttake(1),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\t\tif (this.mode === 'scroll') tab.style.paddingTop = this.navElement.clientHeight + 'px'\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\thydrateTabs() {\n\t\tthis.tabs = this.tabsElements\n\t\tif (!this.activeTab && this.tabsElements[0]) {\n\t\t\tthis.activeTab = this.tabsElements[0].value\n\t\t\tthis.tabsElements[0].active = true\n\t\t} else {\n\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\tif (tab.value === this.activeTab) tab.active = true\n\t\t\t\telse tab.active = false\n\t\t\t})\n\t\t}\n\t\tconst lastTab = this.tabs?.[-1]\n\t\tif (lastTab) {\n\t\t\tlastTab.style.paddingBottom = lastTab.offsetHeight + 'px'\n\t\t}\n\t}\n\n\ttabChanged(selectedTab: { label: string; value: string }) {\n\t\tlet activeTabElement: SchmancyTab | undefined\n\t\tthis.tabsElements.forEach(tab => {\n\t\t\tif (tab.value === selectedTab.value) {\n\t\t\t\ttab.active = true\n\t\t\t\tactiveTabElement = tab\n\t\t\t\t// scroll to the tab\n\t\t\t\tif (this.mode === 'scroll') {\n\t\t\t\t\t// Scroll the desired element into view\n\t\t\t\t\tactiveTabElement.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'start',\n\t\t\t\t\t\tinline: 'start',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttab.active = false\n\t\t\t}\n\t\t})\n\t\tif (this.mode === 'tabs') {\n\t\t\tthis.activeTab = selectedTab.value\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('tab-changed', { detail: this.activeTab }))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst tabs = {\n\t\t\t'bg-surface-default color-surface-on': true,\n\t\t\t'flex z-50 overflow-auto': true,\n\t\t\t'sticky top-0 shadow-md': this.mode === 'scroll',\n\t\t\t'rounded-full': this.rounded,\n\t\t}\n\n\t\tconst activeTab = {\n\t\t\t'text-primary-default': true,\n\t\t}\n\n\t\tconst inactiveTab = {\n\t\t\t'border-transparent': true,\n\t\t\t'hover:text-surface-on': true,\n\t\t\t'hover:border-outlineVariant': true,\n\t\t\t'text-surface-onVariant': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"tabsNavigation\" class=\"${this.classMap(tabs)}\" aria-label=\"Tabs\">\n\t\t\t\t${repeat(\n\t\t\t\t\tthis.tabs,\n\t\t\t\t\ttab => tab.value,\n\t\t\t\t\ttab => html`\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.tabChanged({\n\t\t\t\t\t\t\t\t\tlabel: tab.label,\n\t\t\t\t\t\t\t\t\tvalue: tab.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-current=\"page\"\n\t\t\t\t\t\t\tclass=\"h-auto relative\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"px-4 py-3 ${this.activeTab === tab.value\n\t\t\t\t\t\t\t\t\t? this.classMap(activeTab)\n\t\t\t\t\t\t\t\t\t: this.classMap(inactiveTab)}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-typography class=\"h-full align-middle flex \" type=\"title\" token=\"md\" weight=\"medium\">\n\t\t\t\t\t\t\t\t\t${tab.label}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t.hidden=${this.activeTab !== tab.value}\n\t\t\t\t\t\t\t\t\tclass=\"border-primary-default absolute bottom-0 inset-x-6 border-solid border-2 rounded-t-full\"\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t\t<section id=\"tabsContent\" class=\"h-full\">\n\t\t\t\t<slot @slotchange=${() => this.hydrateTabs()}></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab-group': SchmancyTabGroup\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-CikPr7by.js","names":[],"sources":["../src/tabs/context.ts","../src/tabs/tab.ts","../src/tabs/tabs-group.ts"],"sourcesContent":["import { createContext } from '@lit/context'\n\nexport type TSchmancyTabsMode = 'scroll' | 'tabs'\n\nexport const SchmancyTabsModeContext = createContext<TSchmancyTabsMode>('tabs')\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTabsModeContext } from './context'\n\n@customElement('schmancy-tab')\nexport default class SchmancyTab extends SchmancyElement {\n\t@property({ type: String, reflect: true }) label\n\t@property({ type: String, reflect: true }) value\n\t@property({ type: Boolean, reflect: true }) active!: boolean\n\n\t@consume({ context: SchmancyTabsModeContext, subscribe: true })\n\t@state()\n\tmode\n\n\tprotected updated(changedProperties: Map<PropertyKey, unknown>) {\n\t\tif (changedProperties.has('active') && this.active) {\n\t\t\t// Trigger resize for virtualizers to recalculate when tab becomes visible\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Don't render content until tab is active (virtualizers need actual layout, not hidden)\n\t\tif (this.mode === 'tabs' && !this.active) {\n\t\t\treturn html``\n\t\t}\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab': SchmancyTab\n\t}\n}\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { filter, fromEvent, interval, map, take, throttleTime } from 'rxjs'\nimport { SchmancyTabsModeContext, TSchmancyTabsMode } from './context'\nimport SchmancyTab from './tab'\n\n/**\n * @slot - The content of the tab group\n * @fires tab-changed - The event fired when the tab is changed\n */\n@customElement('schmancy-tab-group')\nexport default class SchmancyTabGroup extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\theight: 100%;\n\t}\n`];\n\t@provide({ context: SchmancyTabsModeContext })\n\t@property({ type: String })\n\tmode: TSchmancyTabsMode = 'tabs'\n\n\t@property({ type: Boolean }) rounded = true\n\n\t@property({ type: String, reflect: true }) activeTab: string\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate tabsElements!: Array<SchmancyTab>\n\n\t@query('#tabsNavigation') navElement!: HTMLElement\n\t@query('#tabsContent') tabsContent!: HTMLElement\n\n\t@state()\n\tprivate tabs: Array<SchmancyTab> = []\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(window, 'scroll')\n\t\t\t.pipe(\n\t\t\t\tthrottleTime(1000),\n\t\t\t\tfilter(() => this.mode === 'scroll'),\n\t\t\t\tmap(() => {\n\t\t\t\t\tlet closestDiv = null\n\t\t\t\t\tlet closestDistance = Infinity\n\t\t\t\t\tthis.tabsElements.forEach(div => {\n\t\t\t\t\t\tconst distance =\n\t\t\t\t\t\t\tdiv.getBoundingClientRect().top - this.navElement.clientHeight + document.body.offsetHeight / 3\n\n\t\t\t\t\t\tif (distance < closestDistance && distance > 0) {\n\t\t\t\t\t\t\tclosestDistance = distance\n\t\t\t\t\t\t\tclosestDiv = div\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\treturn closestDiv\n\t\t\t\t}),\n\t\t\t\tfilter((el: SchmancyTab | null) => el !== null),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (el: SchmancyTab) => {\n\t\t\t\t\tthis.activeTab = el.value\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tinterval(0)\n\t\t\t.pipe(\n\t\t\t\tfilter(() => !!this.navElement.clientHeight),\n\t\t\t\ttake(1),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\t\tif (this.mode === 'scroll') tab.style.paddingTop = this.navElement.clientHeight + 'px'\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\thydrateTabs() {\n\t\tthis.tabs = this.tabsElements\n\t\tif (!this.activeTab && this.tabsElements[0]) {\n\t\t\tthis.activeTab = this.tabsElements[0].value\n\t\t\tthis.tabsElements[0].active = true\n\t\t} else {\n\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\tif (tab.value === this.activeTab) tab.active = true\n\t\t\t\telse tab.active = false\n\t\t\t})\n\t\t}\n\t\tconst lastTab = this.tabs?.[-1]\n\t\tif (lastTab) {\n\t\t\tlastTab.style.paddingBottom = lastTab.offsetHeight + 'px'\n\t\t}\n\t}\n\n\ttabChanged(selectedTab: { label: string; value: string }) {\n\t\tlet activeTabElement: SchmancyTab | undefined\n\t\tthis.tabsElements.forEach(tab => {\n\t\t\tif (tab.value === selectedTab.value) {\n\t\t\t\ttab.active = true\n\t\t\t\tactiveTabElement = tab\n\t\t\t\t// scroll to the tab\n\t\t\t\tif (this.mode === 'scroll') {\n\t\t\t\t\t// Scroll the desired element into view\n\t\t\t\t\tactiveTabElement.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'start',\n\t\t\t\t\t\tinline: 'start',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttab.active = false\n\t\t\t}\n\t\t})\n\t\tif (this.mode === 'tabs') {\n\t\t\tthis.activeTab = selectedTab.value\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('tab-changed', { detail: this.activeTab }))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst tabs = {\n\t\t\t'bg-surface-default color-surface-on': true,\n\t\t\t'flex z-50 overflow-auto': true,\n\t\t\t'sticky top-0 shadow-md': this.mode === 'scroll',\n\t\t\t'rounded-full': this.rounded,\n\t\t}\n\n\t\tconst activeTab = {\n\t\t\t'text-primary-default': true,\n\t\t}\n\n\t\tconst inactiveTab = {\n\t\t\t'border-transparent': true,\n\t\t\t'hover:text-surface-on': true,\n\t\t\t'hover:border-outlineVariant': true,\n\t\t\t'text-surface-onVariant': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"tabsNavigation\" class=\"${this.classMap(tabs)}\" aria-label=\"Tabs\">\n\t\t\t\t${repeat(\n\t\t\t\t\tthis.tabs,\n\t\t\t\t\ttab => tab.value,\n\t\t\t\t\ttab => html`\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.tabChanged({\n\t\t\t\t\t\t\t\t\tlabel: tab.label,\n\t\t\t\t\t\t\t\t\tvalue: tab.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-current=\"page\"\n\t\t\t\t\t\t\tclass=\"h-auto relative\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"px-4 py-3 ${this.activeTab === tab.value\n\t\t\t\t\t\t\t\t\t? this.classMap(activeTab)\n\t\t\t\t\t\t\t\t\t: this.classMap(inactiveTab)}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-typography class=\"h-full align-middle flex \" type=\"title\" token=\"md\" weight=\"medium\">\n\t\t\t\t\t\t\t\t\t${tab.label}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t.hidden=${this.activeTab !== tab.value}\n\t\t\t\t\t\t\t\t\tclass=\"border-primary-default absolute bottom-0 inset-x-6 border-solid border-2 rounded-t-full\"\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t\t<section id=\"tabsContent\" class=\"h-full\">\n\t\t\t\t<slot @slotchange=${() => this.hydrateTabs()}></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab-group': SchmancyTabGroup\n\t}\n}\n"],"mappings":";;;;;;;AAIA,IAAa,IAA0B,EAAiC,OAAA,ECGzD,IAAA,cAA0B,EAAA;CASxC,QAAkB,GAAA;AACb,IAAkB,IAAI,SAAA,IAAa,KAAK,UAE3C,4BAAA;AACC,UAAO,cAAc,IAAI,MAAM,SAAA,CAAA;IAAA;;CAKlC,SAAA;AAEC,SAAI,KAAK,SAAS,UAAW,KAAK,SAG3B,CAAI,kBAFH,CAAI;;;AAAA,EAAA,CApBZ,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,EAAA,CACzC,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,EAAA,CACzC,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAE1C,EAAQ;CAAE,SAAS;CAAyB,WAAA,CAAW;CAAA,CAAA,EACvD,GAAA,CAAA,EAAO,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAPR,EAAc,eAAA,CAAA,EAAe,EAAA;ACQf,IAAA,IAAA,cAA+B,EAAA;CAAA,YAAA,GAAA,GAAA;AAAA,QAAA,GAAA,EAAA,EAAA,KAAA,OASnB,QAAA,KAAA,UAAA,CAEa,GAAA,KAAA,OAYJ,EAAA;;CAAA;AAAA,OAAA,SAtBnB,CAAC,CAAG;;;;;;;CAwBpB,oBAAA;AACC,QAAM,mBAAA,EACN,EAAU,QAAQ,SAAA,CAChB,KACA,EAAa,IAAA,EACb,QAAa,KAAK,SAAS,SAAT,EAClB,QAAA;GACC,IAAI,IAAa,MACb,IAAkB;AAUtB,UATA,KAAK,aAAa,SAAQ,MAAA;IACzB,IAAM,IACL,EAAI,uBAAA,CAAwB,MAAM,KAAK,WAAW,eAAe,SAAS,KAAK,eAAe;AAE3F,QAAW,KAAmB,IAAW,MAC5C,IAAkB,GAClB,IAAa;KAAA,EAGR;IAAA,EAER,GAAQ,MAA2B,MAAO,KAAP,CAAA,CAEnC,UAAU,EACV,OAAO,MAAA;AACN,QAAK,YAAY,EAAG;KAAA,CAAA;;CAKxB,eAAA;AACC,IAAS,EAAA,CACP,KACA,QAAA,CAAA,CAAe,KAAK,WAAW,aAAA,EAC/B,EAAK,EAAA,CAAA,CAEL,gBAAA;AACA,QAAK,aAAa,SAAQ,MAAA;AACP,IAAd,KAAK,SAAS,aAAU,EAAI,MAAM,aAAa,KAAK,WAAW,eAAe;KAAA;IAAA;;CAKtF,cAAA;AACC,OAAK,OAAO,KAAK,cAAA,CACZ,KAAK,aAAa,KAAK,aAAa,MACxC,KAAK,YAAY,KAAK,aAAa,GAAG,OACtC,KAAK,aAAa,GAAG,SAAA,CAAS,KAE9B,KAAK,aAAa,SAAQ,MAAA;AACrB,KAAI,UAAU,KAAK,YAAW,EAAI,SAAA,CAAS,IAC1C,EAAI,SAAA,CAAS;IAAA;EAGpB,IAAM,IAAU,KAAK,OAAA;AACjB,QACH,EAAQ,MAAM,gBAAgB,EAAQ,eAAe;;CAIvD,WAAW,GAAA;EACV,IAAI;AACJ,OAAK,aAAa,SAAQ,MAAA;AACrB,KAAI,UAAU,EAAY,SAC7B,EAAI,SAAA,CAAS,GACb,IAAmB,GAEf,KAAK,SAAS,YAEjB,EAAiB,eAAe;IAC/B,UAAU;IACV,OAAO;IACP,QAAQ;IAAA,CAAA,IAIV,EAAI,SAAA,CAAS;IAAA,EAGX,KAAK,SAAS,WACjB,KAAK,YAAY,EAAY,QAE9B,KAAK,cAAc,IAAI,YAAY,eAAe,EAAE,QAAQ,KAAK,WAAA,CAAA,CAAA;;CAGlE,SAAA;EACC,IAAM,IAAO;GACZ,uCAAA,CAAuC;GACvC,2BAAA,CAA2B;GAC3B,0BAA0B,KAAK,SAAS;GACxC,gBAAgB,KAAK;GAAA,EAGhB,IAAY,EACjB,wBAAA,CAAwB,GAAA,EAGnB,IAAc;GACnB,sBAAA,CAAsB;GACtB,yBAAA,CAAyB;GACzB,+BAAA,CAA+B;GAC/B,0BAAA,CAA0B;GAAA;AAG3B,SAAO,CAAI;yCAC4B,KAAK,SAAS,EAAA,CAAA;MACjD,EACD,KAAK,OACL,MAAO,EAAI,QACX,MAAO,CAAI;;;AAGR,QAAK,WAAW;IACf,OAAO,EAAI;IACX,OAAO,EAAI;IAAA,CAAA;IAAA;;;;;2BAOO,KAAK,cAAc,EAAI,QACvC,KAAK,SAAS,EAAA,GACd,KAAK,SAAS,EAAA,CAAA;;;WAGd,EAAI,MAAA;;;mBAGI,KAAK,cAAc,EAAI,MAAA;;;;;;;;8BASZ,KAAK,aAAA,CAAA;;;;;GA3JjC,EAAQ,EAAE,SAAS,GAAA,CAAA,EACnB,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAE3B,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,aAAA,KAAA,EAAA,EAAA,EAAA,CACzC,EAAsB,EACtB,SAAA,CAAS,GAAA,CAAA,CAAA,EACR,EAAA,WAAA,gBAAA,KAAA,EAAA,EAAA,EAAA,CAGD,EAAM,kBAAA,CAAA,EAAkB,EAAA,WAAA,cAAA,KAAA,EAAA,EAAA,EAAA,CACxB,EAAM,eAAA,CAAA,EAAe,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAErB,GAAA,CAAA,EAAO,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAvBR,EAAc,qBAAA,CAAA,EAAqB,EAAA"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-DvAYa-F7.cjs`),t=require(`./decorate-DpFmy0nm.cjs`);let n=require(`rxjs`),r=require(`@lit/context`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/repeat.js`);var s=(0,r.createContext)(`tabs`),c=class extends e.s{updated(e){e.has(`active`)&&this.active&&requestAnimationFrame(()=>{window.dispatchEvent(new Event(`resize`))})}render(){return this.mode!==`tabs`||this.active?a.html`<slot></slot>`:a.html``}};t.t([(0,i.property)({type:String,reflect:!0})],c.prototype,`label`,void 0),t.t([(0,i.property)({type:String,reflect:!0})],c.prototype,`value`,void 0),t.t([(0,i.property)({type:Boolean,reflect:!0})],c.prototype,`active`,void 0),t.t([(0,r.consume)({context:s,subscribe:!0}),(0,i.state)()],c.prototype,`mode`,void 0),c=t.t([(0,i.customElement)(`schmancy-tab`)],c);var l=class extends e.s{constructor(...e){super(...e),this.mode=`tabs`,this.rounded=!0,this.tabs=[]}static{this.styles=[a.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BOOu6q2n.cjs`),t=require(`./active-host-jH3iloCR.cjs`);let n=require(`rxjs`),r=require(`@lit/context`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/repeat.js`);var s=(0,r.createContext)(`tabs`),c=class extends e.c{updated(e){e.has(`active`)&&this.active&&requestAnimationFrame(()=>{window.dispatchEvent(new Event(`resize`))})}render(){return this.mode!==`tabs`||this.active?a.html`<slot></slot>`:a.html``}};t.a([(0,i.property)({type:String,reflect:!0})],c.prototype,`label`,void 0),t.a([(0,i.property)({type:String,reflect:!0})],c.prototype,`value`,void 0),t.a([(0,i.property)({type:Boolean,reflect:!0})],c.prototype,`active`,void 0),t.a([(0,r.consume)({context:s,subscribe:!0}),(0,i.state)()],c.prototype,`mode`,void 0),c=t.a([(0,i.customElement)(`schmancy-tab`)],c);var l=class extends e.c{constructor(...e){super(...e),this.mode=`tabs`,this.rounded=!0,this.tabs=[]}static{this.styles=[a.css`
2
2
  :host {
3
3
  display: block;
4
4
  height: 100%;
@@ -28,4 +28,4 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-DvAYa-F7.cjs`),t=requi
28
28
  <section id="tabsContent" class="h-full">
29
29
  <slot @slotchange=${()=>this.hydrateTabs()}></slot>
30
30
  </section>
31
- `}};t.t([(0,r.provide)({context:s}),(0,i.property)({type:String})],l.prototype,`mode`,void 0),t.t([(0,i.property)({type:Boolean})],l.prototype,`rounded`,void 0),t.t([(0,i.property)({type:String,reflect:!0})],l.prototype,`activeTab`,void 0),t.t([(0,i.queryAssignedElements)({flatten:!0})],l.prototype,`tabsElements`,void 0),t.t([(0,i.query)(`#tabsNavigation`)],l.prototype,`navElement`,void 0),t.t([(0,i.query)(`#tabsContent`)],l.prototype,`tabsContent`,void 0),t.t([(0,i.state)()],l.prototype,`tabs`,void 0),l=t.t([(0,i.customElement)(`schmancy-tab-group`)],l);
31
+ `}};t.a([(0,r.provide)({context:s}),(0,i.property)({type:String})],l.prototype,`mode`,void 0),t.a([(0,i.property)({type:Boolean})],l.prototype,`rounded`,void 0),t.a([(0,i.property)({type:String,reflect:!0})],l.prototype,`activeTab`,void 0),t.a([(0,i.queryAssignedElements)({flatten:!0})],l.prototype,`tabsElements`,void 0),t.a([(0,i.query)(`#tabsNavigation`)],l.prototype,`navElement`,void 0),t.a([(0,i.query)(`#tabsContent`)],l.prototype,`tabsContent`,void 0),t.a([(0,i.state)()],l.prototype,`tabs`,void 0),l=t.a([(0,i.customElement)(`schmancy-tab-group`)],l);
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-TO3UiBsm.cjs","names":[],"sources":["../src/tabs/context.ts","../src/tabs/tab.ts","../src/tabs/tabs-group.ts"],"sourcesContent":["import { createContext } from '@lit/context'\n\nexport type TSchmancyTabsMode = 'scroll' | 'tabs'\n\nexport const SchmancyTabsModeContext = createContext<TSchmancyTabsMode>('tabs')\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTabsModeContext } from './context'\n\n@customElement('schmancy-tab')\nexport default class SchmancyTab extends SchmancyElement {\n\t@property({ type: String, reflect: true }) label\n\t@property({ type: String, reflect: true }) value\n\t@property({ type: Boolean, reflect: true }) active!: boolean\n\n\t@consume({ context: SchmancyTabsModeContext, subscribe: true })\n\t@state()\n\tmode\n\n\tprotected updated(changedProperties: Map<PropertyKey, unknown>) {\n\t\tif (changedProperties.has('active') && this.active) {\n\t\t\t// Trigger resize for virtualizers to recalculate when tab becomes visible\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Don't render content until tab is active (virtualizers need actual layout, not hidden)\n\t\tif (this.mode === 'tabs' && !this.active) {\n\t\t\treturn html``\n\t\t}\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab': SchmancyTab\n\t}\n}\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { filter, fromEvent, interval, map, take, throttleTime } from 'rxjs'\nimport { SchmancyTabsModeContext, TSchmancyTabsMode } from './context'\nimport SchmancyTab from './tab'\n\n/**\n * @slot - The content of the tab group\n * @fires tab-changed - The event fired when the tab is changed\n */\n@customElement('schmancy-tab-group')\nexport default class SchmancyTabGroup extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\theight: 100%;\n\t}\n`];\n\t@provide({ context: SchmancyTabsModeContext })\n\t@property({ type: String })\n\tmode: TSchmancyTabsMode = 'tabs'\n\n\t@property({ type: Boolean }) rounded = true\n\n\t@property({ type: String, reflect: true }) activeTab: string\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate tabsElements!: Array<SchmancyTab>\n\n\t@query('#tabsNavigation') navElement!: HTMLElement\n\t@query('#tabsContent') tabsContent!: HTMLElement\n\n\t@state()\n\tprivate tabs: Array<SchmancyTab> = []\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(window, 'scroll')\n\t\t\t.pipe(\n\t\t\t\tthrottleTime(1000),\n\t\t\t\tfilter(() => this.mode === 'scroll'),\n\t\t\t\tmap(() => {\n\t\t\t\t\tlet closestDiv = null\n\t\t\t\t\tlet closestDistance = Infinity\n\t\t\t\t\tthis.tabsElements.forEach(div => {\n\t\t\t\t\t\tconst distance =\n\t\t\t\t\t\t\tdiv.getBoundingClientRect().top - this.navElement.clientHeight + document.body.offsetHeight / 3\n\n\t\t\t\t\t\tif (distance < closestDistance && distance > 0) {\n\t\t\t\t\t\t\tclosestDistance = distance\n\t\t\t\t\t\t\tclosestDiv = div\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\treturn closestDiv\n\t\t\t\t}),\n\t\t\t\tfilter((el: SchmancyTab | null) => el !== null),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (el: SchmancyTab) => {\n\t\t\t\t\tthis.activeTab = el.value\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tinterval(0)\n\t\t\t.pipe(\n\t\t\t\tfilter(() => !!this.navElement.clientHeight),\n\t\t\t\ttake(1),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\t\tif (this.mode === 'scroll') tab.style.paddingTop = this.navElement.clientHeight + 'px'\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\thydrateTabs() {\n\t\tthis.tabs = this.tabsElements\n\t\tif (!this.activeTab && this.tabsElements[0]) {\n\t\t\tthis.activeTab = this.tabsElements[0].value\n\t\t\tthis.tabsElements[0].active = true\n\t\t} else {\n\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\tif (tab.value === this.activeTab) tab.active = true\n\t\t\t\telse tab.active = false\n\t\t\t})\n\t\t}\n\t\tconst lastTab = this.tabs?.[-1]\n\t\tif (lastTab) {\n\t\t\tlastTab.style.paddingBottom = lastTab.offsetHeight + 'px'\n\t\t}\n\t}\n\n\ttabChanged(selectedTab: { label: string; value: string }) {\n\t\tlet activeTabElement: SchmancyTab | undefined\n\t\tthis.tabsElements.forEach(tab => {\n\t\t\tif (tab.value === selectedTab.value) {\n\t\t\t\ttab.active = true\n\t\t\t\tactiveTabElement = tab\n\t\t\t\t// scroll to the tab\n\t\t\t\tif (this.mode === 'scroll') {\n\t\t\t\t\t// Scroll the desired element into view\n\t\t\t\t\tactiveTabElement.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'start',\n\t\t\t\t\t\tinline: 'start',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttab.active = false\n\t\t\t}\n\t\t})\n\t\tif (this.mode === 'tabs') {\n\t\t\tthis.activeTab = selectedTab.value\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('tab-changed', { detail: this.activeTab }))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst tabs = {\n\t\t\t'bg-surface-default color-surface-on': true,\n\t\t\t'flex z-50 overflow-auto': true,\n\t\t\t'sticky top-0 shadow-md': this.mode === 'scroll',\n\t\t\t'rounded-full': this.rounded,\n\t\t}\n\n\t\tconst activeTab = {\n\t\t\t'text-primary-default': true,\n\t\t}\n\n\t\tconst inactiveTab = {\n\t\t\t'border-transparent': true,\n\t\t\t'hover:text-surface-on': true,\n\t\t\t'hover:border-outlineVariant': true,\n\t\t\t'text-surface-onVariant': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"tabsNavigation\" class=\"${this.classMap(tabs)}\" aria-label=\"Tabs\">\n\t\t\t\t${repeat(\n\t\t\t\t\tthis.tabs,\n\t\t\t\t\ttab => tab.value,\n\t\t\t\t\ttab => html`\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.tabChanged({\n\t\t\t\t\t\t\t\t\tlabel: tab.label,\n\t\t\t\t\t\t\t\t\tvalue: tab.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-current=\"page\"\n\t\t\t\t\t\t\tclass=\"h-auto relative\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"px-4 py-3 ${this.activeTab === tab.value\n\t\t\t\t\t\t\t\t\t? this.classMap(activeTab)\n\t\t\t\t\t\t\t\t\t: this.classMap(inactiveTab)}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-typography class=\"h-full align-middle flex \" type=\"title\" token=\"md\" weight=\"medium\">\n\t\t\t\t\t\t\t\t\t${tab.label}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t.hidden=${this.activeTab !== tab.value}\n\t\t\t\t\t\t\t\t\tclass=\"border-primary-default absolute bottom-0 inset-x-6 border-solid border-2 rounded-t-full\"\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t\t<section id=\"tabsContent\" class=\"h-full\">\n\t\t\t\t<slot @slotchange=${() => this.hydrateTabs()}></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab-group': SchmancyTabGroup\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-CitVls3_.cjs","names":[],"sources":["../src/tabs/context.ts","../src/tabs/tab.ts","../src/tabs/tabs-group.ts"],"sourcesContent":["import { createContext } from '@lit/context'\n\nexport type TSchmancyTabsMode = 'scroll' | 'tabs'\n\nexport const SchmancyTabsModeContext = createContext<TSchmancyTabsMode>('tabs')\n","import { consume } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { SchmancyTabsModeContext } from './context'\n\n@customElement('schmancy-tab')\nexport default class SchmancyTab extends SchmancyElement {\n\t@property({ type: String, reflect: true }) label\n\t@property({ type: String, reflect: true }) value\n\t@property({ type: Boolean, reflect: true }) active!: boolean\n\n\t@consume({ context: SchmancyTabsModeContext, subscribe: true })\n\t@state()\n\tmode\n\n\tprotected updated(changedProperties: Map<PropertyKey, unknown>) {\n\t\tif (changedProperties.has('active') && this.active) {\n\t\t\t// Trigger resize for virtualizers to recalculate when tab becomes visible\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\t// Don't render content until tab is active (virtualizers need actual layout, not hidden)\n\t\tif (this.mode === 'tabs' && !this.active) {\n\t\t\treturn html``\n\t\t}\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab': SchmancyTab\n\t}\n}\n","import { provide } from '@lit/context'\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { filter, fromEvent, interval, map, take, throttleTime } from 'rxjs'\nimport { SchmancyTabsModeContext, TSchmancyTabsMode } from './context'\nimport SchmancyTab from './tab'\n\n/**\n * @slot - The content of the tab group\n * @fires tab-changed - The event fired when the tab is changed\n */\n@customElement('schmancy-tab-group')\nexport default class SchmancyTabGroup extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\theight: 100%;\n\t}\n`];\n\t@provide({ context: SchmancyTabsModeContext })\n\t@property({ type: String })\n\tmode: TSchmancyTabsMode = 'tabs'\n\n\t@property({ type: Boolean }) rounded = true\n\n\t@property({ type: String, reflect: true }) activeTab: string\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate tabsElements!: Array<SchmancyTab>\n\n\t@query('#tabsNavigation') navElement!: HTMLElement\n\t@query('#tabsContent') tabsContent!: HTMLElement\n\n\t@state()\n\tprivate tabs: Array<SchmancyTab> = []\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(window, 'scroll')\n\t\t\t.pipe(\n\t\t\t\tthrottleTime(1000),\n\t\t\t\tfilter(() => this.mode === 'scroll'),\n\t\t\t\tmap(() => {\n\t\t\t\t\tlet closestDiv = null\n\t\t\t\t\tlet closestDistance = Infinity\n\t\t\t\t\tthis.tabsElements.forEach(div => {\n\t\t\t\t\t\tconst distance =\n\t\t\t\t\t\t\tdiv.getBoundingClientRect().top - this.navElement.clientHeight + document.body.offsetHeight / 3\n\n\t\t\t\t\t\tif (distance < closestDistance && distance > 0) {\n\t\t\t\t\t\t\tclosestDistance = distance\n\t\t\t\t\t\t\tclosestDiv = div\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\treturn closestDiv\n\t\t\t\t}),\n\t\t\t\tfilter((el: SchmancyTab | null) => el !== null),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (el: SchmancyTab) => {\n\t\t\t\t\tthis.activeTab = el.value\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tinterval(0)\n\t\t\t.pipe(\n\t\t\t\tfilter(() => !!this.navElement.clientHeight),\n\t\t\t\ttake(1),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\t\tif (this.mode === 'scroll') tab.style.paddingTop = this.navElement.clientHeight + 'px'\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\thydrateTabs() {\n\t\tthis.tabs = this.tabsElements\n\t\tif (!this.activeTab && this.tabsElements[0]) {\n\t\t\tthis.activeTab = this.tabsElements[0].value\n\t\t\tthis.tabsElements[0].active = true\n\t\t} else {\n\t\t\tthis.tabsElements.forEach(tab => {\n\t\t\t\tif (tab.value === this.activeTab) tab.active = true\n\t\t\t\telse tab.active = false\n\t\t\t})\n\t\t}\n\t\tconst lastTab = this.tabs?.[-1]\n\t\tif (lastTab) {\n\t\t\tlastTab.style.paddingBottom = lastTab.offsetHeight + 'px'\n\t\t}\n\t}\n\n\ttabChanged(selectedTab: { label: string; value: string }) {\n\t\tlet activeTabElement: SchmancyTab | undefined\n\t\tthis.tabsElements.forEach(tab => {\n\t\t\tif (tab.value === selectedTab.value) {\n\t\t\t\ttab.active = true\n\t\t\t\tactiveTabElement = tab\n\t\t\t\t// scroll to the tab\n\t\t\t\tif (this.mode === 'scroll') {\n\t\t\t\t\t// Scroll the desired element into view\n\t\t\t\t\tactiveTabElement.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'start',\n\t\t\t\t\t\tinline: 'start',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttab.active = false\n\t\t\t}\n\t\t})\n\t\tif (this.mode === 'tabs') {\n\t\t\tthis.activeTab = selectedTab.value\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('tab-changed', { detail: this.activeTab }))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst tabs = {\n\t\t\t'bg-surface-default color-surface-on': true,\n\t\t\t'flex z-50 overflow-auto': true,\n\t\t\t'sticky top-0 shadow-md': this.mode === 'scroll',\n\t\t\t'rounded-full': this.rounded,\n\t\t}\n\n\t\tconst activeTab = {\n\t\t\t'text-primary-default': true,\n\t\t}\n\n\t\tconst inactiveTab = {\n\t\t\t'border-transparent': true,\n\t\t\t'hover:text-surface-on': true,\n\t\t\t'hover:border-outlineVariant': true,\n\t\t\t'text-surface-onVariant': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<section id=\"tabsNavigation\" class=\"${this.classMap(tabs)}\" aria-label=\"Tabs\">\n\t\t\t\t${repeat(\n\t\t\t\t\tthis.tabs,\n\t\t\t\t\ttab => tab.value,\n\t\t\t\t\ttab => html`\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.tabChanged({\n\t\t\t\t\t\t\t\t\tlabel: tab.label,\n\t\t\t\t\t\t\t\t\tvalue: tab.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-current=\"page\"\n\t\t\t\t\t\t\tclass=\"h-auto relative\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"px-4 py-3 ${this.activeTab === tab.value\n\t\t\t\t\t\t\t\t\t? this.classMap(activeTab)\n\t\t\t\t\t\t\t\t\t: this.classMap(inactiveTab)}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-typography class=\"h-full align-middle flex \" type=\"title\" token=\"md\" weight=\"medium\">\n\t\t\t\t\t\t\t\t\t${tab.label}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t.hidden=${this.activeTab !== tab.value}\n\t\t\t\t\t\t\t\t\tclass=\"border-primary-default absolute bottom-0 inset-x-6 border-solid border-2 rounded-t-full\"\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</section>\n\t\t\t<section id=\"tabsContent\" class=\"h-full\">\n\t\t\t\t<slot @slotchange=${() => this.hydrateTabs()}></slot>\n\t\t\t</section>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tab-group': SchmancyTabGroup\n\t}\n}\n"],"mappings":"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"}
package/dist/tabs.cjs CHANGED
@@ -1 +1 @@
1
- require(`./tabs-TO3UiBsm.cjs`);
1
+ require(`./tabs-CitVls3_.cjs`);
package/dist/tabs.js CHANGED
@@ -1 +1 @@
1
- import "./tabs-cVHHd1dY.js";
1
+ import "./tabs-CikPr7by.js";
package/dist/teleport.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-DEUjlTsX.cjs`);exports.HereMorty=e.n,Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return e.t}}),exports.WhereAreYouRicky=e.r,exports.teleport=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-B2-CU8fu.cjs`);exports.HereMorty=e.n,Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return e.t}}),exports.WhereAreYouRicky=e.r,exports.teleport=e.i;
package/dist/teleport.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as e, n as t, r as n, t as r } from "./src-D6e0adHi.js";
1
+ import { i as e, n as t, r as n, t as r } from "./src-DvywUq7l.js";
2
2
  export { t as HereMorty, r as SchmancyTeleportation, n as WhereAreYouRicky, e as teleport };
@@ -0,0 +1,43 @@
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BOOu6q2n.cjs`),t=require(`./active-host-jH3iloCR.cjs`);let n=require(`rxjs`),r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/if-defined.js`),o=require(`lit/directives/ref.js`),s=require(`lit/directives/when.js`);var c=class extends e.o((0,i.unsafeCSS)(`:host{width:-webkit-fill-available;display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host([fillHeight]){flex-direction:column;height:100%;display:flex}:host:focus{box-shadow:unset!important}textarea:focus-visible{outline:none!important}textarea{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;text-indent:inherit;text-shadow:inherit;text-overflow:inherit;text-rendering:inherit;text-size-adjust:inherit;text-align-last:inherit;overflow-y:auto}@keyframes onAutoFillStart{}textarea:-webkit-autofill{animation-name:onAutoFillStart}`)){constructor(...e){super(...e),this.textareaRef=(0,o.createRef)(),this._a11yId=`schmancy-textarea-${Math.random().toString(36).slice(2,10)}`,this.placeholder=``,this.value=``,this.cols=20,this.fillHeight=!1,this.autoHeight=!0,this.resize=`vertical`,this.wrap=`soft`,this.spellcheck=!1,this.align=`left`,this.tabIndex=0}static{this.shadowRootOptions={...i.LitElement.shadowRootOptions,delegatesFocus:!0}}willUpdate(e){super.willUpdate(e),(e.has(`required`)||e.has(`value`))&&this.required&&!this.value&&this.internals?.setValidity({valueMissing:!0},`Please fill out this field.`)}firstUpdated(){this.autofocus&&this.focus(),this.autoHeight&&(0,n.timer)(0).pipe((0,n.takeUntil)(this.disconnecting)).subscribe(()=>this.adjustHeight()),(0,n.fromEvent)(this.textareaElement,`input`).pipe((0,n.map)(e=>e.target.value),(0,n.distinctUntilChanged)(),(0,n.takeUntil)(this.disconnecting)).subscribe(e=>{this.value=e,this.autoHeight&&this.adjustHeight(),this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e},bubbles:!0,composed:!0}))}),(0,n.fromEvent)(this.textareaElement,`change`).pipe((0,n.map)(e=>e.target.value),(0,n.distinctUntilChanged)(),(0,n.takeUntil)(this.disconnecting)).subscribe(e=>{this.value=e,this.autoHeight&&this.adjustHeight(),this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e},bubbles:!0,composed:!0}))}),(0,n.fromEvent)(this.textareaElement,`keyup`).pipe((0,n.filter)(e=>e.key===`Enter`),(0,n.map)(e=>e.target.value),(0,n.distinctUntilChanged)(),(0,n.takeUntil)(this.disconnecting)).subscribe(e=>{this.value=e,this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent(`enter`,{detail:{value:e},bubbles:!0,composed:!0}))})}get form(){return this.internals?.form}reportValidity(){return this.textareaRef.value?.reportValidity()}checkValidity(){return this.textareaRef.value?.checkValidity()}setCustomValidity(e){return this.textareaRef.value?.setCustomValidity(e)}select(){return this.textareaRef.value?.select()}setSelectionRange(e,t,n){this.textareaRef.value?.setSelectionRange(e,t,n)}get selectionStart(){return this.textareaRef.value?.selectionStart??null}get selectionEnd(){return this.textareaRef.value?.selectionEnd??null}get selectionDirection(){return this.textareaRef.value?.selectionDirection??null}setRangeText(e){this.textareaRef.value?.setRangeText(e)}adjustHeight(){let e=this.textareaRef.value;if(e){let t=e.offsetHeight,n=e.scrollHeight;n>t&&(e.style.height=n+`px`)}}validity(){return this.textareaRef.value?.validity}focus(e={preventScroll:!0}){this.textareaRef.value?.focus(e),this.dispatchEvent(new Event(`focus`))}click(){this.textareaRef.value?.click(),this.dispatchEvent(new Event(`click`))}blur(){this.textareaRef.value?.blur(),this.dispatchEvent(new Event(`blur`))}render(){let e={"block w-full min-w-0 rounded-2xl border bg-surface-containerLowest text-surface-on":!0,"border-outline":!this.error,"border-error-default":this.error,"outline-secondary-default focus:outline-1 focus:border-secondary-default":!0,"disabled:opacity-40 disabled:cursor-not-allowed":!0,"placeholder:text-muted":!0,"ring-0 focus:ring-1 focus:ring-inset":!0,"focus:ring-secondary-default":!this.error,"focus:ring-error-default":this.error,"caret-transparent focus:outline-hidden cursor-pointer select-none":this.readonly,"text-left":this.align===`left`,"text-center":this.align===`center`,"text-right":this.align===`right`,"h-full":this.fillHeight,"resize-none":this.resize===`none`,"resize-y":this.resize===`vertical`,"resize-x":this.resize===`horizontal`,resize:this.resize===`both`,"px-4 py-3":!0},t=this.rows==null?`field-sizing: content;`:``,n={"block mb-1 font-medium text-sm":!0,"opacity-40":this.disabled,"text-primary-default":!this.error,"text-error-default":this.error},r={"w-full min-w-0":!0,"flex flex-col h-full":this.fillHeight},c=`${this._a11yId}-hint`;return i.html`
2
+ <div class="${this.classMap(r)}">
3
+ ${(0,s.when)(this.label,()=>i.html`
4
+ <label class="${this.classMap(n)}" for=${this.id}>
5
+ ${this.label}
6
+ </label>
7
+ `)}
8
+
9
+ <textarea
10
+ ${(0,o.ref)(this.textareaRef)}
11
+ .value=${this.value}
12
+ .id=${this.id}
13
+ .name=${this.name}
14
+ .placeholder=${this.placeholder}
15
+ .required=${this.required}
16
+ class=${this.classMap(e)}
17
+ style=${t}
18
+ .disabled=${this.disabled}
19
+ minlength=${(0,a.ifDefined)(this.minlength)}
20
+ maxlength=${(0,a.ifDefined)(this.maxlength)}
21
+ .readonly=${this.readonly}
22
+ .spellcheck=${this.spellcheck}
23
+ cols=${(0,a.ifDefined)(this.cols)}
24
+ rows=${(0,a.ifDefined)(this.rows)}
25
+ wrap=${(0,a.ifDefined)(this.wrap)}
26
+ dirname=${(0,a.ifDefined)(this.dirname)}
27
+ aria-invalid=${this.error?`true`:`false`}
28
+ aria-required=${this.required?`true`:`false`}
29
+ aria-describedby=${this.hint||this.error&&this.validationMessage?c:i.nothing}
30
+ aria-label=${!this.label&&this.placeholder?this.placeholder:i.nothing}
31
+ ></textarea>
32
+
33
+ ${(0,s.when)(this.hint||this.error&&this.validationMessage,()=>i.html`
34
+ <div
35
+ id=${c}
36
+ class="mt-1 text-sm ${this.error?`text-error-default`:`text-surface-onVariant`}"
37
+ role=${(0,a.ifDefined)(this.error?`alert`:void 0)}
38
+ >
39
+ ${this.error&&this.validationMessage?this.validationMessage:this.hint}
40
+ </div>
41
+ `)}
42
+ </div>
43
+ `}};t.a([(0,r.property)()],c.prototype,`placeholder`,void 0),t.a([(0,r.property)({type:String,reflect:!0})],c.prototype,`value`,void 0),t.a([(0,r.property)({type:Number})],c.prototype,`minlength`,void 0),t.a([(0,r.property)({type:Number})],c.prototype,`maxlength`,void 0),t.a([(0,r.property)({type:Number})],c.prototype,`cols`,void 0),t.a([(0,r.property)({type:Number})],c.prototype,`rows`,void 0),t.a([(0,r.property)({type:Boolean,reflect:!0})],c.prototype,`fillHeight`,void 0),t.a([(0,r.property)({type:Boolean})],c.prototype,`autoHeight`,void 0),t.a([(0,r.property)({type:String,reflect:!0})],c.prototype,`resize`,void 0),t.a([(0,r.property)({type:String})],c.prototype,`wrap`,void 0),t.a([(0,r.property)({type:String})],c.prototype,`dirname`,void 0),t.a([(0,r.property)({type:Boolean,reflect:!0})],c.prototype,`spellcheck`,void 0),t.a([(0,r.property)({type:String,reflect:!0})],c.prototype,`align`,void 0),t.a([(0,r.property)({type:Boolean})],c.prototype,`autofocus`,void 0),t.a([(0,r.property)({type:Number})],c.prototype,`tabIndex`,void 0),t.a([(0,r.query)(`textarea`)],c.prototype,`textareaElement`,void 0),c=t.a([(0,r.customElement)(`schmancy-textarea`)],c);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea-CqV1wvmB.cjs","names":[],"sources":["../src/form/fields/textarea/textarea.scss?inline","../src/form/fields/textarea/textarea.ts"],"sourcesContent":[":host {\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n\twidth: -webkit-fill-available;\n\tdisplay: block;\n}\n\n:host([fillHeight]) {\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\ntextarea:focus-visible {\n\toutline: none !important;\n}\n\ntextarea {\n\t/* Inherit typographic styles */\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\tline-height: inherit;\n\tcolor: inherit;\n\tletter-spacing: inherit;\n\ttext-transform: inherit;\n\ttext-decoration: inherit;\n\ttext-indent: inherit;\n\ttext-shadow: inherit;\n\ttext-overflow: inherit;\n\ttext-rendering: inherit;\n\ttext-size-adjust: inherit;\n\ttext-align-last: inherit;\n\toverflow-y: auto; /* Ensure content is scrollable if it exceeds the visible area */\n}\n\n@keyframes onAutoFillStart {\n\tfrom {\n\t}\n\tto {\n\t}\n}\n\ntextarea:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n}\n","import { LitElement, html, nothing, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil, timer } from 'rxjs'\nimport style from './textarea.scss?inline'\nimport { SchmancyFormField } from '@mixins/index'\n\n/**\n * Textarea component with auto-resize and form integration.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} value - Current value of the textarea\n * @prop {string} placeholder - Placeholder text\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} disabled - Whether the field is disabled\n * @prop {boolean} readonly - Whether the field is read-only\n * @prop {number} rows - Number of visible text rows\n * @prop {number} maxlength - Maximum character length\n */\n@customElement('schmancy-textarea')\nexport default class SchmancyTextarea extends SchmancyFormField(unsafeCSS(style)) {\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true,\n\t}\n\n\t// `formAssociated`, `internals`, `name`, `label`, `required`, `disabled`,\n\t// `error`, `validationMessage`, `hint`, `id`, `validateOn`, `touched`,\n\t// `dirty`, `submitted`, `markTouched`, `markSubmitted`, `setCustomValidity`,\n\t// `formResetCallback`, `formDisabledCallback` — all from the mixin.\n\ttextareaRef = createRef<HTMLTextAreaElement>()\n\n\tprivate readonly _a11yId = `schmancy-textarea-${Math.random().toString(36).slice(2, 10)}`\n\n\t/**\n\t * The placeholder of the control.\n\t * @attr placeholder\n\t * @type {string}\n\t * @default ''\n\t * @public\n\t */\n\t@property() placeholder = ''\n\n\t/**\n\t * The value of the control. Narrowed from the mixin's wide union to the\n\t * textarea-specific `string` type.\n\t * @attr {string} value - The value of the control.\n\t */\n\t@property({ type: String, reflect: true }) override value: string = ''\n\n\t/**\n\t * The minlength attribute of the control.\n\t * @attr\n\t */\n\t@property({ type: Number })\n\tpublic minlength: number | undefined\n\n\t/**\n\t * The maxlength attribute of the control.\n\t * @attr\n\t */\n\t@property({ type: Number })\n\tpublic maxlength!: number\n\n\t/**\n\t * The number of columns (width) of the control.\n\t * @attr cols\n\t * @type {number}\n\t * @default 20\n\t * @public\n\t */\n\t@property({ type: Number }) cols = 20\n\n\t/**\n\t * The number of rows (height) of the control.\n\t * When not set, the textarea auto-sizes to fit its content via field-sizing: content.\n\t * @attr rows\n\t * @type {number}\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number }) rows: number | undefined\n\n\t/**\n\t * Makes the textarea fill the height of its container.\n\t * @attr fillHeight\n\t * @type {boolean}\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) fillHeight = false\n\n\t/**\n\t * Automatically adjusts height based on content.\n\t * @attr autoHeight\n\t * @type {boolean}\n\t * @default true\n\t * @public\n\t */\n\t@property({ type: Boolean }) autoHeight = true\n\n\t/**\n\t * Controls whether the textarea can be resized by the user.\n\t * @attr resize\n\t * @type {'none' | 'vertical' | 'horizontal' | 'both'}\n\t * @default 'vertical'\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) resize: 'none' | 'vertical' | 'horizontal' | 'both' = 'vertical'\n\n\t/**\n\t * Specifies how the text in a text area is to be wrapped when submitted in a form.\n\t * @attr wrap\n\t * @type {'hard' | 'soft'}\n\t * @default 'soft'\n\t * @public\n\t */\n\t@property({ type: String }) wrap: 'hard' | 'soft' = 'soft'\n\n\t/**\n\t * The dirname attribute of the control.\n\t * @attr dirname\n\t * @type {string}\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: String }) dirname: string | undefined\n\n\t// `required`, `disabled`, `readonly`, `error`, `validationMessage`, `hint`\n\t// come from the mixin. Textarea-specific extras only:\n\t@property({ type: Boolean, reflect: true }) spellcheck = false\n\n\t@property({ type: String, reflect: true }) align: 'left' | 'center' | 'right' = 'left'\n\n\t/**\n\t * The autofocus attribute of the control.\n\t */\n\t@property({ type: Boolean })\n\tpublic override autofocus!: boolean\n\n\t@property({ type: Number })\n\tpublic override tabIndex = 0\n\n\t@query('textarea') textareaElement!: HTMLTextAreaElement\n\n\t// Mixin's willUpdate already calls internals.setFormValue() on value-change\n\t// and runs the required-empty / customError validity machinery. Native\n\t// `valueMissing` flag is set here for richer ValidityState introspection.\n\toverride willUpdate(changed: PropertyValues): void {\n\t\tsuper.willUpdate(changed)\n\t\tif (changed.has('required') || changed.has('value')) {\n\t\t\tif (this.required && !this.value) {\n\t\t\t\tthis.internals?.setValidity({ valueMissing: true }, 'Please fill out this field.')\n\t\t\t}\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\t\tif (this.autoHeight) {\n\t\t\t// Initial adjustment for pre-filled content (cancel-on-disconnect).\n\t\t\ttimer(0)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => this.adjustHeight())\n\t\t}\n\t\tfromEvent(this.textareaElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tif (this.autoHeight) {\n\t\t\t\t\tthis.adjustHeight()\n\t\t\t\t}\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t\tfromEvent(this.textareaElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tif (this.autoHeight) {\n\t\t\t\t\tthis.adjustHeight()\n\t\t\t\t}\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t\t// emit on enter\n\t\tfromEvent<KeyboardEvent>(this.textareaElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => event.key === 'Enter'),\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\tget form() {\n\t\treturn this.internals?.form\n\t}\n\n\t/** Checks for validity of the control and shows the browser message if it's invalid. */\n\tpublic reportValidity() {\n\t\treturn this.textareaRef.value?.reportValidity()\n\t}\n\n\t/** Checks for validity of the control and emits the invalid event if it invalid. */\n\tpublic checkValidity() {\n\t\treturn this.textareaRef.value?.checkValidity()\n\t}\n\n\t/** Sets a custom validity message. */\n\tpublic setCustomValidity(message: string) {\n\t\treturn this.textareaRef.value?.setCustomValidity(message)\n\t}\n\n\t/** Selects all text within the textarea. */\n\tpublic select() {\n\t\treturn this.textareaRef.value?.select()\n\t}\n\n\t/** Sets the selection range. */\n\tpublic setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none') {\n\t\tthis.textareaRef.value?.setSelectionRange(start, end, direction)\n\t}\n\n\t/** Returns the selected text within the textarea. */\n\tpublic get selectionStart(): number | null {\n\t\treturn this.textareaRef.value?.selectionStart ?? null\n\t}\n\n\tpublic get selectionEnd(): number | null {\n\t\treturn this.textareaRef.value?.selectionEnd ?? null\n\t}\n\n\tpublic get selectionDirection(): 'forward' | 'backward' | 'none' | null {\n\t\treturn this.textareaRef.value?.selectionDirection ?? null\n\t}\n\n\t/** Sets the range of text to be selected. */\n\tpublic setRangeText(replacement: string) {\n\t\tthis.textareaRef.value?.setRangeText(replacement)\n\t}\n\n\t/** Adjusts the height of the textarea based on its content. */\n\tpublic adjustHeight() {\n\t\tconst textarea = this.textareaRef.value\n\t\tif (textarea) {\n\t\t\t// Only grow, never shrink\n\t\t\tconst currentHeight = textarea.offsetHeight\n\t\t\tconst scrollHeight = textarea.scrollHeight\n\t\t\tif (scrollHeight > currentHeight) {\n\t\t\t\ttextarea.style.height = scrollHeight + 'px'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic validity(): ValidityState | undefined {\n\t\treturn this.textareaRef.value?.validity\n\t}\n\n\tpublic override focus(\n\t\toptions: FocusOptions = {\n\t\t\tpreventScroll: true,\n\t\t},\n\t) {\n\t\tthis.textareaRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\tpublic override click() {\n\t\tthis.textareaRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\tpublic override blur() {\n\t\tthis.textareaRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst textareaClasses = {\n\t\t\t// Base styles - matching input component\n\t\t\t'block w-full min-w-0 rounded-2xl border bg-surface-containerLowest text-surface-on': true,\n\t\t\t// Border color\n\t\t\t'border-outline': !this.error,\n\t\t\t'border-error-default': this.error,\n\t\t\t// Focus styles\n\t\t\t'outline-secondary-default focus:outline-1 focus:border-secondary-default': true,\n\t\t\t// Disabled styles\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t// Placeholder\n\t\t\t'placeholder:text-muted': true,\n\t\t\t// Ring styles (subtle focus ring)\n\t\t\t'ring-0 focus:ring-1 focus:ring-inset': true,\n\t\t\t'focus:ring-secondary-default': !this.error,\n\t\t\t'focus:ring-error-default': this.error,\n\t\t\t// Readonly styles\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer select-none': this.readonly,\n\t\t\t// Text alignment\n\t\t\t'text-left': this.align === 'left',\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t\t// Textarea specific\n\t\t\t'h-full': this.fillHeight,\n\t\t\t'resize-none': this.resize === 'none',\n\t\t\t'resize-y': this.resize === 'vertical',\n\t\t\t'resize-x': this.resize === 'horizontal',\n\t\t\t'resize': this.resize === 'both',\n\t\t\t// Padding matching input\n\t\t\t'px-4 py-3': true,\n\t\t}\n\t\tconst fieldSizing = this.rows == null ? 'field-sizing: content;' : ''\n\t\tconst labelClasses = {\n\t\t\t'block mb-1 font-medium text-sm': true,\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'text-primary-default': !this.error,\n\t\t\t'text-error-default': this.error,\n\t\t}\n\t\tconst containerClasses = {\n\t\t\t'w-full min-w-0': true,\n\t\t\t'flex flex-col h-full': this.fillHeight,\n\t\t}\n\t\tconst hintId = `${this._a11yId}-hint`\n\t\treturn html`\n\t\t<div class=\"${this.classMap(containerClasses)}\">\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label class=\"${this.classMap(labelClasses)}\" for=${this.id}>\n\t\t\t\t\t\t${this.label}\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<textarea\n\t\t\t\t${ref(this.textareaRef)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.id=${this.id}\n\t\t\t\t.name=${this.name}\n\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t.required=${this.required}\n\t\t\t\tclass=${this.classMap(textareaClasses)}\n\t\t\t\tstyle=${fieldSizing}\n\t\t\t\t.disabled=${this.disabled}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\t.readonly=${this.readonly}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tcols=${ifDefined(this.cols)}\n\t\t\t\trows=${ifDefined(this.rows)}\n\t\t\t\twrap=${ifDefined(this.wrap)}\n\t\t\t\tdirname=${ifDefined(this.dirname)}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-describedby=${this.hint || (this.error && this.validationMessage) ? hintId : nothing}\n\t\t\t\taria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n\t\t\t></textarea>\n\n\t\t\t${when(\n\t\t\t\tthis.hint || (this.error && this.validationMessage),\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=${hintId}\n\t\t\t\t\t\tclass=\"mt-1 text-sm ${this.error ? 'text-error-default' : 'text-surface-onVariant'}\"\n\t\t\t\t\t\trole=${ifDefined(this.error ? 'alert' : undefined)}\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.error && this.validationMessage ? this.validationMessage : this.hint}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t</div>\n\t\t`\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\nexport type SchmancyTextareaChangeEvent = CustomEvent<EventDetails>\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-textarea': SchmancyTextarea\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import { o as e } from "./mixins-BWb9_e1s.js";
2
+ import { a as t } from "./active-host-BP0zy_Y9.js";
3
+ import { distinctUntilChanged as n, filter as r, fromEvent as i, map as a, takeUntil as o, timer as s } from "rxjs";
4
+ import { customElement as c, property as l, query as u } from "lit/decorators.js";
5
+ import { LitElement as d, html as f, nothing as p, unsafeCSS as m } from "lit";
6
+ import { ifDefined as h } from "lit/directives/if-defined.js";
7
+ import { createRef as g, ref as _ } from "lit/directives/ref.js";
8
+ import { when as v } from "lit/directives/when.js";
9
+ var y = class extends e(m(":host{width:-webkit-fill-available;display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host([fillHeight]){flex-direction:column;height:100%;display:flex}:host:focus{box-shadow:unset!important}textarea:focus-visible{outline:none!important}textarea{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;text-indent:inherit;text-shadow:inherit;text-overflow:inherit;text-rendering:inherit;text-size-adjust:inherit;text-align-last:inherit;overflow-y:auto}@keyframes onAutoFillStart{}textarea:-webkit-autofill{animation-name:onAutoFillStart}")) {
10
+ constructor(...e) {
11
+ super(...e), this.textareaRef = g(), this._a11yId = `schmancy-textarea-${Math.random().toString(36).slice(2, 10)}`, this.placeholder = "", this.value = "", this.cols = 20, this.fillHeight = !1, this.autoHeight = !0, this.resize = "vertical", this.wrap = "soft", this.spellcheck = !1, this.align = "left", this.tabIndex = 0;
12
+ }
13
+ static {
14
+ this.shadowRootOptions = {
15
+ ...d.shadowRootOptions,
16
+ delegatesFocus: !0
17
+ };
18
+ }
19
+ willUpdate(e) {
20
+ super.willUpdate(e), (e.has("required") || e.has("value")) && this.required && !this.value && this.internals?.setValidity({ valueMissing: !0 }, "Please fill out this field.");
21
+ }
22
+ firstUpdated() {
23
+ this.autofocus && this.focus(), this.autoHeight && s(0).pipe(o(this.disconnecting)).subscribe(() => this.adjustHeight()), i(this.textareaElement, "input").pipe(a((e) => e.target.value), n(), o(this.disconnecting)).subscribe((e) => {
24
+ this.value = e, this.autoHeight && this.adjustHeight(), this.dispatchEvent(new CustomEvent("change", {
25
+ detail: { value: e },
26
+ bubbles: !0,
27
+ composed: !0
28
+ }));
29
+ }), i(this.textareaElement, "change").pipe(a((e) => e.target.value), n(), o(this.disconnecting)).subscribe((e) => {
30
+ this.value = e, this.autoHeight && this.adjustHeight(), this.dispatchEvent(new CustomEvent("change", {
31
+ detail: { value: e },
32
+ bubbles: !0,
33
+ composed: !0
34
+ }));
35
+ }), i(this.textareaElement, "keyup").pipe(r((e) => e.key === "Enter"), a((e) => e.target.value), n(), o(this.disconnecting)).subscribe((e) => {
36
+ this.value = e, this.dispatchEvent(new CustomEvent("change", {
37
+ detail: { value: e },
38
+ bubbles: !0,
39
+ composed: !0
40
+ })), this.dispatchEvent(new CustomEvent("enter", {
41
+ detail: { value: e },
42
+ bubbles: !0,
43
+ composed: !0
44
+ }));
45
+ });
46
+ }
47
+ get form() {
48
+ return this.internals?.form;
49
+ }
50
+ reportValidity() {
51
+ return this.textareaRef.value?.reportValidity();
52
+ }
53
+ checkValidity() {
54
+ return this.textareaRef.value?.checkValidity();
55
+ }
56
+ setCustomValidity(e) {
57
+ return this.textareaRef.value?.setCustomValidity(e);
58
+ }
59
+ select() {
60
+ return this.textareaRef.value?.select();
61
+ }
62
+ setSelectionRange(e, t, n) {
63
+ this.textareaRef.value?.setSelectionRange(e, t, n);
64
+ }
65
+ get selectionStart() {
66
+ return this.textareaRef.value?.selectionStart ?? null;
67
+ }
68
+ get selectionEnd() {
69
+ return this.textareaRef.value?.selectionEnd ?? null;
70
+ }
71
+ get selectionDirection() {
72
+ return this.textareaRef.value?.selectionDirection ?? null;
73
+ }
74
+ setRangeText(e) {
75
+ this.textareaRef.value?.setRangeText(e);
76
+ }
77
+ adjustHeight() {
78
+ let e = this.textareaRef.value;
79
+ if (e) {
80
+ let t = e.offsetHeight, n = e.scrollHeight;
81
+ n > t && (e.style.height = n + "px");
82
+ }
83
+ }
84
+ validity() {
85
+ return this.textareaRef.value?.validity;
86
+ }
87
+ focus(e = { preventScroll: !0 }) {
88
+ this.textareaRef.value?.focus(e), this.dispatchEvent(new Event("focus"));
89
+ }
90
+ click() {
91
+ this.textareaRef.value?.click(), this.dispatchEvent(new Event("click"));
92
+ }
93
+ blur() {
94
+ this.textareaRef.value?.blur(), this.dispatchEvent(new Event("blur"));
95
+ }
96
+ render() {
97
+ let e = {
98
+ "block w-full min-w-0 rounded-2xl border bg-surface-containerLowest text-surface-on": !0,
99
+ "border-outline": !this.error,
100
+ "border-error-default": this.error,
101
+ "outline-secondary-default focus:outline-1 focus:border-secondary-default": !0,
102
+ "disabled:opacity-40 disabled:cursor-not-allowed": !0,
103
+ "placeholder:text-muted": !0,
104
+ "ring-0 focus:ring-1 focus:ring-inset": !0,
105
+ "focus:ring-secondary-default": !this.error,
106
+ "focus:ring-error-default": this.error,
107
+ "caret-transparent focus:outline-hidden cursor-pointer select-none": this.readonly,
108
+ "text-left": this.align === "left",
109
+ "text-center": this.align === "center",
110
+ "text-right": this.align === "right",
111
+ "h-full": this.fillHeight,
112
+ "resize-none": this.resize === "none",
113
+ "resize-y": this.resize === "vertical",
114
+ "resize-x": this.resize === "horizontal",
115
+ resize: this.resize === "both",
116
+ "px-4 py-3": !0
117
+ }, t = this.rows == null ? "field-sizing: content;" : "", n = {
118
+ "block mb-1 font-medium text-sm": !0,
119
+ "opacity-40": this.disabled,
120
+ "text-primary-default": !this.error,
121
+ "text-error-default": this.error
122
+ }, r = {
123
+ "w-full min-w-0": !0,
124
+ "flex flex-col h-full": this.fillHeight
125
+ }, i = `${this._a11yId}-hint`;
126
+ return f`
127
+ <div class="${this.classMap(r)}">
128
+ ${v(this.label, () => f`
129
+ <label class="${this.classMap(n)}" for=${this.id}>
130
+ ${this.label}
131
+ </label>
132
+ `)}
133
+
134
+ <textarea
135
+ ${_(this.textareaRef)}
136
+ .value=${this.value}
137
+ .id=${this.id}
138
+ .name=${this.name}
139
+ .placeholder=${this.placeholder}
140
+ .required=${this.required}
141
+ class=${this.classMap(e)}
142
+ style=${t}
143
+ .disabled=${this.disabled}
144
+ minlength=${h(this.minlength)}
145
+ maxlength=${h(this.maxlength)}
146
+ .readonly=${this.readonly}
147
+ .spellcheck=${this.spellcheck}
148
+ cols=${h(this.cols)}
149
+ rows=${h(this.rows)}
150
+ wrap=${h(this.wrap)}
151
+ dirname=${h(this.dirname)}
152
+ aria-invalid=${this.error ? "true" : "false"}
153
+ aria-required=${this.required ? "true" : "false"}
154
+ aria-describedby=${this.hint || this.error && this.validationMessage ? i : p}
155
+ aria-label=${!this.label && this.placeholder ? this.placeholder : p}
156
+ ></textarea>
157
+
158
+ ${v(this.hint || this.error && this.validationMessage, () => f`
159
+ <div
160
+ id=${i}
161
+ class="mt-1 text-sm ${this.error ? "text-error-default" : "text-surface-onVariant"}"
162
+ role=${h(this.error ? "alert" : void 0)}
163
+ >
164
+ ${this.error && this.validationMessage ? this.validationMessage : this.hint}
165
+ </div>
166
+ `)}
167
+ </div>
168
+ `;
169
+ }
170
+ };
171
+ t([l()], y.prototype, "placeholder", void 0), t([l({
172
+ type: String,
173
+ reflect: !0
174
+ })], y.prototype, "value", void 0), t([l({ type: Number })], y.prototype, "minlength", void 0), t([l({ type: Number })], y.prototype, "maxlength", void 0), t([l({ type: Number })], y.prototype, "cols", void 0), t([l({ type: Number })], y.prototype, "rows", void 0), t([l({
175
+ type: Boolean,
176
+ reflect: !0
177
+ })], y.prototype, "fillHeight", void 0), t([l({ type: Boolean })], y.prototype, "autoHeight", void 0), t([l({
178
+ type: String,
179
+ reflect: !0
180
+ })], y.prototype, "resize", void 0), t([l({ type: String })], y.prototype, "wrap", void 0), t([l({ type: String })], y.prototype, "dirname", void 0), t([l({
181
+ type: Boolean,
182
+ reflect: !0
183
+ })], y.prototype, "spellcheck", void 0), t([l({
184
+ type: String,
185
+ reflect: !0
186
+ })], y.prototype, "align", void 0), t([l({ type: Boolean })], y.prototype, "autofocus", void 0), t([l({ type: Number })], y.prototype, "tabIndex", void 0), t([u("textarea")], y.prototype, "textareaElement", void 0), y = t([c("schmancy-textarea")], y);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea-DVkwQSis.js","names":[],"sources":["../src/form/fields/textarea/textarea.scss?inline","../src/form/fields/textarea/textarea.ts"],"sourcesContent":[":host {\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n\twidth: -webkit-fill-available;\n\tdisplay: block;\n}\n\n:host([fillHeight]) {\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\ntextarea:focus-visible {\n\toutline: none !important;\n}\n\ntextarea {\n\t/* Inherit typographic styles */\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\tline-height: inherit;\n\tcolor: inherit;\n\tletter-spacing: inherit;\n\ttext-transform: inherit;\n\ttext-decoration: inherit;\n\ttext-indent: inherit;\n\ttext-shadow: inherit;\n\ttext-overflow: inherit;\n\ttext-rendering: inherit;\n\ttext-size-adjust: inherit;\n\ttext-align-last: inherit;\n\toverflow-y: auto; /* Ensure content is scrollable if it exceeds the visible area */\n}\n\n@keyframes onAutoFillStart {\n\tfrom {\n\t}\n\tto {\n\t}\n}\n\ntextarea:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n}\n","import { LitElement, html, nothing, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil, timer } from 'rxjs'\nimport style from './textarea.scss?inline'\nimport { SchmancyFormField } from '@mixins/index'\n\n/**\n * Textarea component with auto-resize and form integration.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} value - Current value of the textarea\n * @prop {string} placeholder - Placeholder text\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} disabled - Whether the field is disabled\n * @prop {boolean} readonly - Whether the field is read-only\n * @prop {number} rows - Number of visible text rows\n * @prop {number} maxlength - Maximum character length\n */\n@customElement('schmancy-textarea')\nexport default class SchmancyTextarea extends SchmancyFormField(unsafeCSS(style)) {\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true,\n\t}\n\n\t// `formAssociated`, `internals`, `name`, `label`, `required`, `disabled`,\n\t// `error`, `validationMessage`, `hint`, `id`, `validateOn`, `touched`,\n\t// `dirty`, `submitted`, `markTouched`, `markSubmitted`, `setCustomValidity`,\n\t// `formResetCallback`, `formDisabledCallback` — all from the mixin.\n\ttextareaRef = createRef<HTMLTextAreaElement>()\n\n\tprivate readonly _a11yId = `schmancy-textarea-${Math.random().toString(36).slice(2, 10)}`\n\n\t/**\n\t * The placeholder of the control.\n\t * @attr placeholder\n\t * @type {string}\n\t * @default ''\n\t * @public\n\t */\n\t@property() placeholder = ''\n\n\t/**\n\t * The value of the control. Narrowed from the mixin's wide union to the\n\t * textarea-specific `string` type.\n\t * @attr {string} value - The value of the control.\n\t */\n\t@property({ type: String, reflect: true }) override value: string = ''\n\n\t/**\n\t * The minlength attribute of the control.\n\t * @attr\n\t */\n\t@property({ type: Number })\n\tpublic minlength: number | undefined\n\n\t/**\n\t * The maxlength attribute of the control.\n\t * @attr\n\t */\n\t@property({ type: Number })\n\tpublic maxlength!: number\n\n\t/**\n\t * The number of columns (width) of the control.\n\t * @attr cols\n\t * @type {number}\n\t * @default 20\n\t * @public\n\t */\n\t@property({ type: Number }) cols = 20\n\n\t/**\n\t * The number of rows (height) of the control.\n\t * When not set, the textarea auto-sizes to fit its content via field-sizing: content.\n\t * @attr rows\n\t * @type {number}\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number }) rows: number | undefined\n\n\t/**\n\t * Makes the textarea fill the height of its container.\n\t * @attr fillHeight\n\t * @type {boolean}\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) fillHeight = false\n\n\t/**\n\t * Automatically adjusts height based on content.\n\t * @attr autoHeight\n\t * @type {boolean}\n\t * @default true\n\t * @public\n\t */\n\t@property({ type: Boolean }) autoHeight = true\n\n\t/**\n\t * Controls whether the textarea can be resized by the user.\n\t * @attr resize\n\t * @type {'none' | 'vertical' | 'horizontal' | 'both'}\n\t * @default 'vertical'\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) resize: 'none' | 'vertical' | 'horizontal' | 'both' = 'vertical'\n\n\t/**\n\t * Specifies how the text in a text area is to be wrapped when submitted in a form.\n\t * @attr wrap\n\t * @type {'hard' | 'soft'}\n\t * @default 'soft'\n\t * @public\n\t */\n\t@property({ type: String }) wrap: 'hard' | 'soft' = 'soft'\n\n\t/**\n\t * The dirname attribute of the control.\n\t * @attr dirname\n\t * @type {string}\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: String }) dirname: string | undefined\n\n\t// `required`, `disabled`, `readonly`, `error`, `validationMessage`, `hint`\n\t// come from the mixin. Textarea-specific extras only:\n\t@property({ type: Boolean, reflect: true }) spellcheck = false\n\n\t@property({ type: String, reflect: true }) align: 'left' | 'center' | 'right' = 'left'\n\n\t/**\n\t * The autofocus attribute of the control.\n\t */\n\t@property({ type: Boolean })\n\tpublic override autofocus!: boolean\n\n\t@property({ type: Number })\n\tpublic override tabIndex = 0\n\n\t@query('textarea') textareaElement!: HTMLTextAreaElement\n\n\t// Mixin's willUpdate already calls internals.setFormValue() on value-change\n\t// and runs the required-empty / customError validity machinery. Native\n\t// `valueMissing` flag is set here for richer ValidityState introspection.\n\toverride willUpdate(changed: PropertyValues): void {\n\t\tsuper.willUpdate(changed)\n\t\tif (changed.has('required') || changed.has('value')) {\n\t\t\tif (this.required && !this.value) {\n\t\t\t\tthis.internals?.setValidity({ valueMissing: true }, 'Please fill out this field.')\n\t\t\t}\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\t\tif (this.autoHeight) {\n\t\t\t// Initial adjustment for pre-filled content (cancel-on-disconnect).\n\t\t\ttimer(0)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => this.adjustHeight())\n\t\t}\n\t\tfromEvent(this.textareaElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tif (this.autoHeight) {\n\t\t\t\t\tthis.adjustHeight()\n\t\t\t\t}\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t\tfromEvent(this.textareaElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tif (this.autoHeight) {\n\t\t\t\t\tthis.adjustHeight()\n\t\t\t\t}\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t\t// emit on enter\n\t\tfromEvent<KeyboardEvent>(this.textareaElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(event => event.key === 'Enter'),\n\t\t\t\tmap(event => (event.target as HTMLTextAreaElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\tget form() {\n\t\treturn this.internals?.form\n\t}\n\n\t/** Checks for validity of the control and shows the browser message if it's invalid. */\n\tpublic reportValidity() {\n\t\treturn this.textareaRef.value?.reportValidity()\n\t}\n\n\t/** Checks for validity of the control and emits the invalid event if it invalid. */\n\tpublic checkValidity() {\n\t\treturn this.textareaRef.value?.checkValidity()\n\t}\n\n\t/** Sets a custom validity message. */\n\tpublic setCustomValidity(message: string) {\n\t\treturn this.textareaRef.value?.setCustomValidity(message)\n\t}\n\n\t/** Selects all text within the textarea. */\n\tpublic select() {\n\t\treturn this.textareaRef.value?.select()\n\t}\n\n\t/** Sets the selection range. */\n\tpublic setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none') {\n\t\tthis.textareaRef.value?.setSelectionRange(start, end, direction)\n\t}\n\n\t/** Returns the selected text within the textarea. */\n\tpublic get selectionStart(): number | null {\n\t\treturn this.textareaRef.value?.selectionStart ?? null\n\t}\n\n\tpublic get selectionEnd(): number | null {\n\t\treturn this.textareaRef.value?.selectionEnd ?? null\n\t}\n\n\tpublic get selectionDirection(): 'forward' | 'backward' | 'none' | null {\n\t\treturn this.textareaRef.value?.selectionDirection ?? null\n\t}\n\n\t/** Sets the range of text to be selected. */\n\tpublic setRangeText(replacement: string) {\n\t\tthis.textareaRef.value?.setRangeText(replacement)\n\t}\n\n\t/** Adjusts the height of the textarea based on its content. */\n\tpublic adjustHeight() {\n\t\tconst textarea = this.textareaRef.value\n\t\tif (textarea) {\n\t\t\t// Only grow, never shrink\n\t\t\tconst currentHeight = textarea.offsetHeight\n\t\t\tconst scrollHeight = textarea.scrollHeight\n\t\t\tif (scrollHeight > currentHeight) {\n\t\t\t\ttextarea.style.height = scrollHeight + 'px'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic validity(): ValidityState | undefined {\n\t\treturn this.textareaRef.value?.validity\n\t}\n\n\tpublic override focus(\n\t\toptions: FocusOptions = {\n\t\t\tpreventScroll: true,\n\t\t},\n\t) {\n\t\tthis.textareaRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\tpublic override click() {\n\t\tthis.textareaRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\tpublic override blur() {\n\t\tthis.textareaRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\tprotected render(): unknown {\n\t\tconst textareaClasses = {\n\t\t\t// Base styles - matching input component\n\t\t\t'block w-full min-w-0 rounded-2xl border bg-surface-containerLowest text-surface-on': true,\n\t\t\t// Border color\n\t\t\t'border-outline': !this.error,\n\t\t\t'border-error-default': this.error,\n\t\t\t// Focus styles\n\t\t\t'outline-secondary-default focus:outline-1 focus:border-secondary-default': true,\n\t\t\t// Disabled styles\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t// Placeholder\n\t\t\t'placeholder:text-muted': true,\n\t\t\t// Ring styles (subtle focus ring)\n\t\t\t'ring-0 focus:ring-1 focus:ring-inset': true,\n\t\t\t'focus:ring-secondary-default': !this.error,\n\t\t\t'focus:ring-error-default': this.error,\n\t\t\t// Readonly styles\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer select-none': this.readonly,\n\t\t\t// Text alignment\n\t\t\t'text-left': this.align === 'left',\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t\t// Textarea specific\n\t\t\t'h-full': this.fillHeight,\n\t\t\t'resize-none': this.resize === 'none',\n\t\t\t'resize-y': this.resize === 'vertical',\n\t\t\t'resize-x': this.resize === 'horizontal',\n\t\t\t'resize': this.resize === 'both',\n\t\t\t// Padding matching input\n\t\t\t'px-4 py-3': true,\n\t\t}\n\t\tconst fieldSizing = this.rows == null ? 'field-sizing: content;' : ''\n\t\tconst labelClasses = {\n\t\t\t'block mb-1 font-medium text-sm': true,\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'text-primary-default': !this.error,\n\t\t\t'text-error-default': this.error,\n\t\t}\n\t\tconst containerClasses = {\n\t\t\t'w-full min-w-0': true,\n\t\t\t'flex flex-col h-full': this.fillHeight,\n\t\t}\n\t\tconst hintId = `${this._a11yId}-hint`\n\t\treturn html`\n\t\t<div class=\"${this.classMap(containerClasses)}\">\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label class=\"${this.classMap(labelClasses)}\" for=${this.id}>\n\t\t\t\t\t\t${this.label}\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<textarea\n\t\t\t\t${ref(this.textareaRef)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.id=${this.id}\n\t\t\t\t.name=${this.name}\n\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t.required=${this.required}\n\t\t\t\tclass=${this.classMap(textareaClasses)}\n\t\t\t\tstyle=${fieldSizing}\n\t\t\t\t.disabled=${this.disabled}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\t.readonly=${this.readonly}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tcols=${ifDefined(this.cols)}\n\t\t\t\trows=${ifDefined(this.rows)}\n\t\t\t\twrap=${ifDefined(this.wrap)}\n\t\t\t\tdirname=${ifDefined(this.dirname)}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-describedby=${this.hint || (this.error && this.validationMessage) ? hintId : nothing}\n\t\t\t\taria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n\t\t\t></textarea>\n\n\t\t\t${when(\n\t\t\t\tthis.hint || (this.error && this.validationMessage),\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=${hintId}\n\t\t\t\t\t\tclass=\"mt-1 text-sm ${this.error ? 'text-error-default' : 'text-surface-onVariant'}\"\n\t\t\t\t\t\trole=${ifDefined(this.error ? 'alert' : undefined)}\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.error && this.validationMessage ? this.validationMessage : this.hint}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t</div>\n\t\t`\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\nexport type SchmancyTextareaChangeEvent = CustomEvent<EventDetails>\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-textarea': SchmancyTextarea\n\t}\n}\n"],"mappings":"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"}
package/dist/textarea.cjs CHANGED
@@ -1 +1 @@
1
- require(`./textarea-DFY0Flgv.cjs`);
1
+ require(`./textarea-CqV1wvmB.cjs`);
package/dist/textarea.js CHANGED
@@ -1 +1 @@
1
- import "./textarea-B9dy-yec.js";
1
+ import "./textarea-DVkwQSis.js";
@@ -1,8 +1,8 @@
1
- import { d as e, s as t } from "./mixins-BV0w2yIE.js";
2
- import { t as n } from "./decorate-23nYs4Le.js";
3
- import { n as r } from "./sound.service-kKfsN0m-.js";
4
- import { i, r as a } from "./theme.service-DIUo1mBP.js";
5
- import "./theme.interface-B9TjbSBF.js";
1
+ import { c as e, f as t } from "./mixins-BWb9_e1s.js";
2
+ import { a as n } from "./active-host-BP0zy_Y9.js";
3
+ import { n as r } from "./sound.service-BIN2W7Rv.js";
4
+ import { i, r as a } from "./theme.service-BOWIT_5k.js";
5
+ import "./theme.interface-C8OHheXg.js";
6
6
  import { Observable as o, Subject as s, debounceTime as c, fromEvent as l, of as u, switchMap as d, takeUntil as f, tap as p } from "rxjs";
7
7
  import { provide as m } from "@lit/context";
8
8
  import { customElement as h, property as g, state as _ } from "lit/decorators.js";
@@ -3610,7 +3610,7 @@ var Ie = b(":host,:root{--md-ref-typeface-brand:var(--schmancy-font-family,sans-
3610
3610
  e.next(n);
3611
3611
  });
3612
3612
  return () => n.unsubscribe();
3613
- }), Z = class extends t {
3613
+ }), Z = class extends e {
3614
3614
  constructor(...e) {
3615
3615
  super(...e), this.scheme = "auto", this.root = !1, this.locale = typeof navigator < "u" ? navigator.language : "de-DE", this.theme = {};
3616
3616
  }
@@ -3681,8 +3681,8 @@ var Ie = b(":host,:root{--md-ref-typeface-brand:var(--schmancy-font-family,sans-
3681
3681
  n([g({
3682
3682
  type: String,
3683
3683
  reflect: !0
3684
- })], Z.prototype, "color", void 0), n([g({ type: String })], Z.prototype, "scheme", void 0), n([g({ type: Boolean })], Z.prototype, "root", void 0), n([g({ type: String })], Z.prototype, "locale", void 0), n([g({ type: String })], Z.prototype, "name", void 0), n([m({ context: e }), g({ type: Object })], Z.prototype, "theme", void 0), Z = n([h("schmancy-theme")], Z);
3685
- var Q = class extends t {
3684
+ })], Z.prototype, "color", void 0), n([g({ type: String })], Z.prototype, "scheme", void 0), n([g({ type: Boolean })], Z.prototype, "root", void 0), n([g({ type: String })], Z.prototype, "locale", void 0), n([g({ type: String })], Z.prototype, "name", void 0), n([m({ context: t }), g({ type: Object })], Z.prototype, "theme", void 0), Z = n([h("schmancy-theme")], Z);
3685
+ var Q = class extends e {
3686
3686
  constructor(...e) {
3687
3687
  super(...e), this.currentScheme = "auto", this.currentColor = "#6200ee", this.resolvedScheme = "light", this.themeComponent = null, this.colorInput$ = new s();
3688
3688
  }
@@ -3860,7 +3860,7 @@ var ze = class extends CustomEvent {
3860
3860
  composed: !0
3861
3861
  });
3862
3862
  }
3863
- }, $ = class extends t {
3863
+ }, $ = class extends e {
3864
3864
  constructor(...e) {
3865
3865
  super(...e), this.currentColor = "#6200ee", this.currentScheme = "auto", this.moodText = "", this.isGenerating = !1, this.audioSequence = null, this.detectedMood = "", this.error = "", this.volume = .15, this.currentThemeName = "default", this.themeComponent = null, this.moodInput$ = new s();
3866
3866
  }