@mhmo91/schmancy 0.4.32 → 0.4.34

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 (346) hide show
  1. package/dist/{animated-text-DcLpvyCq.js → animated-text-AbNgT7ie.js} +3 -3
  2. package/dist/{animated-text-DcLpvyCq.js.map → animated-text-AbNgT7ie.js.map} +1 -1
  3. package/dist/{animated-text-BitOmeE1.cjs → animated-text-CYmUxmlv.cjs} +2 -2
  4. package/dist/{animated-text-BitOmeE1.cjs.map → animated-text-CYmUxmlv.cjs.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component-BTLn3oIv.cjs → area.component-B1Lmmsuk.cjs} +2 -2
  9. package/dist/{area.component-BTLn3oIv.cjs.map → area.component-B1Lmmsuk.cjs.map} +1 -1
  10. package/dist/{area.component-xbNRrst9.js → area.component-BxrgxiLv.js} +3 -3
  11. package/dist/{area.component-xbNRrst9.js.map → area.component-BxrgxiLv.js.map} +1 -1
  12. package/dist/area.js +2 -2
  13. package/dist/{autocomplete-BqRrw118.js → autocomplete-Bx1vWN32.js} +3 -3
  14. package/dist/{autocomplete-BqRrw118.js.map → autocomplete-Bx1vWN32.js.map} +1 -1
  15. package/dist/{autocomplete-Dvc06UNM.cjs → autocomplete-ClTDM1cy.cjs} +2 -2
  16. package/dist/{autocomplete-Dvc06UNM.cjs.map → autocomplete-ClTDM1cy.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/{avatar-DIALT_3k.cjs → avatar-Ytu5d0n6.cjs} +2 -2
  20. package/dist/{avatar-DIALT_3k.cjs.map → avatar-Ytu5d0n6.cjs.map} +1 -1
  21. package/dist/{avatar-CVzlATFH.js → avatar-aYgD4qxk.js} +46 -46
  22. package/dist/{avatar-CVzlATFH.js.map → avatar-aYgD4qxk.js.map} +1 -1
  23. package/dist/badge.cjs +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{boat-Dtum9CaN.cjs → boat--6fKaS1r.cjs} +2 -2
  26. package/dist/{boat-Dtum9CaN.cjs.map → boat--6fKaS1r.cjs.map} +1 -1
  27. package/dist/{boat-ByFTBKD2.js → boat-vVWqUMYt.js} +2 -2
  28. package/dist/{boat-ByFTBKD2.js.map → boat-vVWqUMYt.js.map} +1 -1
  29. package/dist/boat.cjs +1 -1
  30. package/dist/boat.js +1 -1
  31. package/dist/busy.cjs +1 -1
  32. package/dist/busy.js +1 -1
  33. package/dist/button.cjs +1 -1
  34. package/dist/button.js +1 -1
  35. package/dist/card.cjs +1 -1
  36. package/dist/card.js +1 -1
  37. package/dist/{checkbox-Dq0Lm3AM.js → checkbox-91xSd_El.js} +5 -5
  38. package/dist/{checkbox-220X9LTx.cjs.map → checkbox-91xSd_El.js.map} +1 -1
  39. package/dist/{checkbox-220X9LTx.cjs → checkbox-CcKQi7Hq.cjs} +2 -2
  40. package/dist/checkbox-CcKQi7Hq.cjs.map +1 -0
  41. package/dist/checkbox.cjs +1 -1
  42. package/dist/checkbox.js +1 -1
  43. package/dist/{chips-aRU1fwEV.js → chips-D26R6u7T.js} +3 -3
  44. package/dist/chips-D26R6u7T.js.map +1 -0
  45. package/dist/{chips-jORxgpG7.cjs → chips-Duj_48dP.cjs} +2 -2
  46. package/dist/chips-Duj_48dP.cjs.map +1 -0
  47. package/dist/chips.cjs +1 -1
  48. package/dist/chips.js +1 -1
  49. package/dist/{circular-progress-Dis30LMa.js → circular-progress-BAzvWUr0.js} +3 -3
  50. package/dist/{circular-progress-Dis30LMa.js.map → circular-progress-BAzvWUr0.js.map} +1 -1
  51. package/dist/{circular-progress-DMccmWrI.cjs → circular-progress-CeiF8CYP.cjs} +2 -2
  52. package/dist/{circular-progress-DMccmWrI.cjs.map → circular-progress-CeiF8CYP.cjs.map} +1 -1
  53. package/dist/circular-progress.cjs +1 -1
  54. package/dist/circular-progress.js +1 -1
  55. package/dist/code-highlight.cjs +1 -1
  56. package/dist/code-highlight.js +1 -1
  57. package/dist/{code-preview-CCHcWZvS.cjs → code-preview-BCUSwkuU.cjs} +13 -13
  58. package/dist/code-preview-BCUSwkuU.cjs.map +1 -0
  59. package/dist/{code-preview-BwIb73Yd.js → code-preview-kNXSixdo.js} +333 -331
  60. package/dist/code-preview-kNXSixdo.js.map +1 -0
  61. package/dist/components.cjs +1 -1
  62. package/dist/components.js +1 -1
  63. package/dist/consume-5D1qfVWM.js.map +1 -1
  64. package/dist/consume-edta5ng5.cjs.map +1 -1
  65. package/dist/content-drawer.cjs +1 -1
  66. package/dist/content-drawer.js +1 -1
  67. package/dist/context-object-CDDP4bTk.js.map +1 -1
  68. package/dist/context-object-K_1gDFu-.cjs.map +1 -1
  69. package/dist/{date-range-DinaPWK0.cjs → date-range-CBrZ7Pm6.cjs} +2 -2
  70. package/dist/date-range-CBrZ7Pm6.cjs.map +1 -0
  71. package/dist/{date-range-CA_4vjWe.js → date-range-gp2cu49l.js} +3 -3
  72. package/dist/date-range-gp2cu49l.js.map +1 -0
  73. package/dist/{date-range-inline-DFjyAvPv.js → date-range-inline-DZwtgeXX.js} +3 -3
  74. package/dist/{date-range-inline-DFjyAvPv.js.map → date-range-inline-DZwtgeXX.js.map} +1 -1
  75. package/dist/{date-range-inline-CGMvaSeh.cjs → date-range-inline-ZPM9dCG1.cjs} +2 -2
  76. package/dist/{date-range-inline-CGMvaSeh.cjs.map → date-range-inline-ZPM9dCG1.cjs.map} +1 -1
  77. package/dist/date-range-inline.cjs +1 -1
  78. package/dist/date-range-inline.js +1 -1
  79. package/dist/date-range.cjs +1 -1
  80. package/dist/date-range.js +1 -1
  81. package/dist/{delay-CHAH30wI.cjs → delay-CUpeZtD8.cjs} +2 -2
  82. package/dist/delay-CUpeZtD8.cjs.map +1 -0
  83. package/dist/{delay-BJwsHbg3.js → delay-CYxt2x_w.js} +2 -2
  84. package/dist/delay-CYxt2x_w.js.map +1 -0
  85. package/dist/delay.cjs +1 -1
  86. package/dist/delay.js +1 -1
  87. package/dist/{dialog-content-Bp2kwzxD.cjs → dialog-content-Cz2MP3fS.cjs} +2 -2
  88. package/dist/{dialog-content-Bp2kwzxD.cjs.map → dialog-content-Cz2MP3fS.cjs.map} +1 -1
  89. package/dist/{dialog-content-CEZqJRzH.js → dialog-content-DmUr4jZM.js} +3 -3
  90. package/dist/{dialog-content-CEZqJRzH.js.map → dialog-content-DmUr4jZM.js.map} +1 -1
  91. package/dist/dialog-service-BZZK8N6A.cjs.map +1 -1
  92. package/dist/dialog-service-DFMlRcXf.js.map +1 -1
  93. package/dist/dialog.cjs +1 -1
  94. package/dist/dialog.js +1 -1
  95. package/dist/{divider-DfetUf4S.js → divider-BreFKYh2.js} +3 -3
  96. package/dist/{divider-DfetUf4S.js.map → divider-BreFKYh2.js.map} +1 -1
  97. package/dist/{divider-BEVgt1wl.cjs → divider-Cd5pOeZr.cjs} +2 -2
  98. package/dist/{divider-BEVgt1wl.cjs.map → divider-Cd5pOeZr.cjs.map} +1 -1
  99. package/dist/divider.cjs +1 -1
  100. package/dist/divider.js +1 -1
  101. package/dist/{dropdown-content-TJmZ3rpA.js → dropdown-content-DjIvlBvq.js} +3 -3
  102. package/dist/{dropdown-content-TJmZ3rpA.js.map → dropdown-content-DjIvlBvq.js.map} +1 -1
  103. package/dist/{dropdown-content-CERnSXjI.cjs → dropdown-content-zLE8scWl.cjs} +2 -2
  104. package/dist/{dropdown-content-CERnSXjI.cjs.map → dropdown-content-zLE8scWl.cjs.map} +1 -1
  105. package/dist/dropdown.cjs +1 -1
  106. package/dist/dropdown.js +1 -1
  107. package/dist/extra.cjs +1 -1
  108. package/dist/extra.js +1 -1
  109. package/dist/{flex-ByanQCYb.cjs → flex-CEq4v4cK.cjs} +2 -2
  110. package/dist/{flex-ByanQCYb.cjs.map → flex-CEq4v4cK.cjs.map} +1 -1
  111. package/dist/{flex-CXMNh-nH.js → flex-DRvBt9P0.js} +2 -2
  112. package/dist/{flex-CXMNh-nH.js.map → flex-DRvBt9P0.js.map} +1 -1
  113. package/dist/flow-D0e7hGXO.cjs.map +1 -1
  114. package/dist/flow-DXYqC9OA.js.map +1 -1
  115. package/dist/{form-lhQx_Ry0.cjs → form-B5CAbB2i.cjs} +2 -2
  116. package/dist/{form-lhQx_Ry0.cjs.map → form-B5CAbB2i.cjs.map} +1 -1
  117. package/dist/{form-Boc5Pqhf.js → form-BKqz7W6V.js} +2 -2
  118. package/dist/{form-Boc5Pqhf.js.map → form-BKqz7W6V.js.map} +1 -1
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/{formField.mixin-DhiLSVHT.cjs → formField.mixin-BuKEbib1.cjs} +2 -2
  122. package/dist/{formField.mixin-DhiLSVHT.cjs.map → formField.mixin-BuKEbib1.cjs.map} +1 -1
  123. package/dist/{formField.mixin-CX7_nvVy.js → formField.mixin-DCPfsyya.js} +2 -2
  124. package/dist/{formField.mixin-CX7_nvVy.js.map → formField.mixin-DCPfsyya.js.map} +1 -1
  125. package/dist/{icon-D1qw18N6.cjs → icon-B0_pMF_-.cjs} +2 -2
  126. package/dist/{icon-D1qw18N6.cjs.map → icon-B0_pMF_-.cjs.map} +1 -1
  127. package/dist/{icon-BZw88sCH.js → icon-DA0eDV8w.js} +2 -2
  128. package/dist/{icon-BZw88sCH.js.map → icon-DA0eDV8w.js.map} +1 -1
  129. package/dist/{icon-button-TbwQrO1b.js → icon-button-CEnel9Yg.js} +3 -3
  130. package/dist/{icon-button-TbwQrO1b.js.map → icon-button-CEnel9Yg.js.map} +1 -1
  131. package/dist/{icon-button-DBvZApEC.cjs → icon-button-DFVuusoz.cjs} +2 -2
  132. package/dist/{icon-button-DBvZApEC.cjs.map → icon-button-DFVuusoz.cjs.map} +1 -1
  133. package/dist/icons.cjs +1 -1
  134. package/dist/icons.js +1 -1
  135. package/dist/index-CuY8m6ta.js.map +1 -1
  136. package/dist/index-DyJ0oDpR.cjs.map +1 -1
  137. package/dist/index.cjs +1 -1
  138. package/dist/index.js +113 -113
  139. package/dist/{input-BUtEXu3y.js → input-B7Q3RRwE.js} +3 -3
  140. package/dist/{input-BUtEXu3y.js.map → input-B7Q3RRwE.js.map} +1 -1
  141. package/dist/{input-C0F9cNoD.cjs → input-C4tYxk-t.cjs} +2 -2
  142. package/dist/{input-C0F9cNoD.cjs.map → input-C4tYxk-t.cjs.map} +1 -1
  143. package/dist/input.cjs +1 -1
  144. package/dist/input.js +1 -1
  145. package/dist/intersection-CJxzz8c-.js.map +1 -1
  146. package/dist/intersection-CVvaDv96.cjs.map +1 -1
  147. package/dist/layout.cjs +1 -1
  148. package/dist/layout.js +1 -1
  149. package/dist/{list-BCD8h2Do.js → list-BTm67LuV.js} +2 -2
  150. package/dist/{list-BCD8h2Do.js.map → list-BTm67LuV.js.map} +1 -1
  151. package/dist/{list-Bz6tq7ZP.cjs → list-Bos26fD3.cjs} +2 -2
  152. package/dist/{list-Bz6tq7ZP.cjs.map → list-Bos26fD3.cjs.map} +1 -1
  153. package/dist/list.cjs +1 -1
  154. package/dist/list.js +1 -1
  155. package/dist/{litElement.mixin-DGeprHKB.js → litElement.mixin-Cn8IAazz.js} +2 -2
  156. package/dist/{litElement.mixin-DGeprHKB.js.map → litElement.mixin-Cn8IAazz.js.map} +1 -1
  157. package/dist/{litElement.mixin-CII9bbap.cjs → litElement.mixin-Cs3zx2X6.cjs} +2 -2
  158. package/dist/{litElement.mixin-CII9bbap.cjs.map → litElement.mixin-Cs3zx2X6.cjs.map} +1 -1
  159. package/dist/{media-D6ba0wB1.js → media-DPQecp4W.js} +2 -2
  160. package/dist/{media-D6ba0wB1.js.map → media-DPQecp4W.js.map} +1 -1
  161. package/dist/{media-CBLuAmNZ.cjs → media-YhMV6ELC.cjs} +2 -2
  162. package/dist/{media-CBLuAmNZ.cjs.map → media-YhMV6ELC.cjs.map} +1 -1
  163. package/dist/{menu-BDQr8EZ1.cjs → menu-BfNE5Pz2.cjs} +2 -2
  164. package/dist/{menu-BDQr8EZ1.cjs.map → menu-BfNE5Pz2.cjs.map} +1 -1
  165. package/dist/{menu-C0SauakY.js → menu-C5KQk1CK.js} +3 -3
  166. package/dist/{menu-C0SauakY.js.map → menu-C5KQk1CK.js.map} +1 -1
  167. package/dist/menu.cjs +1 -1
  168. package/dist/menu.js +1 -1
  169. package/dist/nav-drawer.cjs +1 -1
  170. package/dist/nav-drawer.js +1 -1
  171. package/dist/{notification-service-B1f848tO.cjs → notification-service-Bq_d-qqB.cjs} +2 -2
  172. package/dist/{notification-service-B1f848tO.cjs.map → notification-service-Bq_d-qqB.cjs.map} +1 -1
  173. package/dist/{notification-service-X8mRASdk.js → notification-service-unFpqUQn.js} +3 -3
  174. package/dist/{notification-service-X8mRASdk.js.map → notification-service-unFpqUQn.js.map} +1 -1
  175. package/dist/notification.cjs +1 -1
  176. package/dist/notification.js +1 -1
  177. package/dist/{option-ckV22mLf.cjs → option-B9LbtNdk.cjs} +2 -2
  178. package/dist/{option-ckV22mLf.cjs.map → option-B9LbtNdk.cjs.map} +1 -1
  179. package/dist/{option-DVlCqux7.js → option-Cy-nYxTs.js} +2 -2
  180. package/dist/{option-DVlCqux7.js.map → option-Cy-nYxTs.js.map} +1 -1
  181. package/dist/option.cjs +1 -1
  182. package/dist/option.js +1 -1
  183. package/dist/{payment-card-form-BUsPCZPp.cjs → payment-card-form-D45IjHFN.cjs} +2 -2
  184. package/dist/payment-card-form-D45IjHFN.cjs.map +1 -0
  185. package/dist/{payment-card-form-D7PV8spa.js → payment-card-form-ctWIc4vM.js} +3 -3
  186. package/dist/payment-card-form-ctWIc4vM.js.map +1 -0
  187. package/dist/{progress-BZ6AFT0f.js → progress-4Ef6bw05.js} +2 -2
  188. package/dist/{progress-BZ6AFT0f.js.map → progress-4Ef6bw05.js.map} +1 -1
  189. package/dist/{progress-CABg45XF.cjs → progress-QXnS6DIm.cjs} +2 -2
  190. package/dist/{progress-CABg45XF.cjs.map → progress-QXnS6DIm.cjs.map} +1 -1
  191. package/dist/progress.cjs +1 -1
  192. package/dist/progress.js +1 -1
  193. package/dist/provide-BxZ2kn_p.cjs.map +1 -1
  194. package/dist/provide-tcktw8xB.js.map +1 -1
  195. package/dist/{radio-button-D4Y1bWGN.js → radio-button-CEp1kd-P.js} +3 -3
  196. package/dist/{radio-button-D4Y1bWGN.js.map → radio-button-CEp1kd-P.js.map} +1 -1
  197. package/dist/{radio-button-DQ4VclEZ.cjs → radio-button-CUzdKTtW.cjs} +2 -2
  198. package/dist/{radio-button-DQ4VclEZ.cjs.map → radio-button-CUzdKTtW.cjs.map} +1 -1
  199. package/dist/radio-group.cjs +1 -1
  200. package/dist/radio-group.js +1 -1
  201. package/dist/redispatch-event-BLom7yp4.js.map +1 -1
  202. package/dist/redispatch-event-DHcobAl6.cjs.map +1 -1
  203. package/dist/ripple-BumgqsDT.js.map +1 -1
  204. package/dist/ripple-C2BHbhcS.cjs.map +1 -1
  205. package/dist/rxjs-utils.cjs.map +1 -1
  206. package/dist/rxjs-utils.js.map +1 -1
  207. package/dist/{schmancy-steps-container-CZ0upElE.cjs → schmancy-steps-container-D3m07gLT.cjs} +2 -2
  208. package/dist/{schmancy-steps-container-CZ0upElE.cjs.map → schmancy-steps-container-D3m07gLT.cjs.map} +1 -1
  209. package/dist/{schmancy-steps-container-BskkdQwD.js → schmancy-steps-container-KI2azXpv.js} +2 -2
  210. package/dist/{schmancy-steps-container-BskkdQwD.js.map → schmancy-steps-container-KI2azXpv.js.map} +1 -1
  211. package/dist/{select-DfQogfes.cjs → select-Bw4QilHf.cjs} +3 -3
  212. package/dist/{select-DfQogfes.cjs.map → select-Bw4QilHf.cjs.map} +1 -1
  213. package/dist/{select-wui4bIUE.js → select-g77JoEFx.js} +18 -20
  214. package/dist/{select-wui4bIUE.js.map → select-g77JoEFx.js.map} +1 -1
  215. package/dist/select.cjs +1 -1
  216. package/dist/select.js +2 -3
  217. package/dist/selector-hook-Bf_lCnGW.cjs.map +1 -1
  218. package/dist/{selector-hook-DL0SIQiY.js → selector-hook-DPe2CGKx.js} +16 -16
  219. package/dist/{selector-hook-DL0SIQiY.js.map → selector-hook-DPe2CGKx.js.map} +1 -1
  220. package/dist/sheet-C-bFq5IG.cjs +54 -0
  221. package/dist/sheet-C-bFq5IG.cjs.map +1 -0
  222. package/dist/sheet-rcWGv1EZ.js +149 -0
  223. package/dist/sheet-rcWGv1EZ.js.map +1 -0
  224. package/dist/sheet.cjs +1 -1
  225. package/dist/sheet.js +2 -2
  226. package/dist/{sheet.service-Dm2r1_ji.js → sheet.service-BKQ7n7nz.js} +479 -461
  227. package/dist/sheet.service-BKQ7n7nz.js.map +1 -0
  228. package/dist/{sheet.service-DQQ44gXD.cjs → sheet.service-ihtgUWRM.cjs} +3 -3
  229. package/dist/sheet.service-ihtgUWRM.cjs.map +1 -0
  230. package/dist/{slider-Dwm1KfNL.js → slider-BJQE9wHL.js} +3 -3
  231. package/dist/{slider-Dwm1KfNL.js.map → slider-BJQE9wHL.js.map} +1 -1
  232. package/dist/{slider-C2oEvRAS.cjs → slider-DMIOW38W.cjs} +2 -2
  233. package/dist/{slider-C2oEvRAS.cjs.map → slider-DMIOW38W.cjs.map} +1 -1
  234. package/dist/slider.cjs +1 -1
  235. package/dist/slider.js +1 -1
  236. package/dist/{spinner-DKgZemVU.cjs → spinner-ByMXQNV3.cjs} +2 -2
  237. package/dist/{spinner-DKgZemVU.cjs.map → spinner-ByMXQNV3.cjs.map} +1 -1
  238. package/dist/{spinner-Bh6XkC88.js → spinner-NFkGJJz1.js} +2 -2
  239. package/dist/{spinner-Bh6XkC88.js.map → spinner-NFkGJJz1.js.map} +1 -1
  240. package/dist/steps.cjs +1 -1
  241. package/dist/steps.js +1 -1
  242. package/dist/store.js +1 -1
  243. package/dist/{surface-DIIUamff.cjs → surface-BhCe8hp8.cjs} +2 -2
  244. package/dist/{surface-DIIUamff.cjs.map → surface-BhCe8hp8.cjs.map} +1 -1
  245. package/dist/{surface-DhiuAGb8.js → surface-C7jJaxVu.js} +2 -2
  246. package/dist/{surface-DhiuAGb8.js.map → surface-C7jJaxVu.js.map} +1 -1
  247. package/dist/surface.cjs +1 -1
  248. package/dist/surface.js +1 -1
  249. package/dist/{table-BrAoSQhN.cjs → table-BlwkABmS.cjs} +2 -2
  250. package/dist/table-BlwkABmS.cjs.map +1 -0
  251. package/dist/{table-DSZ9kmUG.js → table-CmwIcTR5.js} +2 -2
  252. package/dist/table-CmwIcTR5.js.map +1 -0
  253. package/dist/table.cjs +1 -1
  254. package/dist/table.js +1 -1
  255. package/dist/{tabs-compatibility-B7aJnQ0X.js → tabs-compatibility-BdKslPOu.js} +2 -2
  256. package/dist/{tabs-compatibility-B7aJnQ0X.js.map → tabs-compatibility-BdKslPOu.js.map} +1 -1
  257. package/dist/{tabs-compatibility-Ck74XeID.cjs → tabs-compatibility-v0k0K0ID.cjs} +2 -2
  258. package/dist/{tabs-compatibility-Ck74XeID.cjs.map → tabs-compatibility-v0k0K0ID.cjs.map} +1 -1
  259. package/dist/tabs.cjs +1 -1
  260. package/dist/tabs.js +1 -1
  261. package/dist/{tailwind.mixin-CBu1BEQZ.cjs → tailwind.mixin-1kcW0BGm.cjs} +2 -2
  262. package/dist/{tailwind.mixin-CBu1BEQZ.cjs.map → tailwind.mixin-1kcW0BGm.cjs.map} +1 -1
  263. package/dist/{tailwind.mixin-DWhCm94g.js → tailwind.mixin-BHLwDiBj.js} +2 -2
  264. package/dist/{tailwind.mixin-DWhCm94g.js.map → tailwind.mixin-BHLwDiBj.js.map} +1 -1
  265. package/dist/teleport.cjs +1 -1
  266. package/dist/teleport.js +1 -1
  267. package/dist/{textarea-CGTMdhoF.cjs → textarea-CL3oExE7.cjs} +2 -2
  268. package/dist/{textarea-CGTMdhoF.cjs.map → textarea-CL3oExE7.cjs.map} +1 -1
  269. package/dist/{textarea-Bq0XdGaH.js → textarea-CfLyPiqF.js} +2 -2
  270. package/dist/{textarea-Bq0XdGaH.js.map → textarea-CfLyPiqF.js.map} +1 -1
  271. package/dist/textarea.cjs +1 -1
  272. package/dist/textarea.js +1 -1
  273. package/dist/{theme-button-CznhJ8g_.cjs → theme-button-D9DpgXlC.cjs} +2 -2
  274. package/dist/{theme-button-CznhJ8g_.cjs.map → theme-button-D9DpgXlC.cjs.map} +1 -1
  275. package/dist/{theme-button-DYoygmRA.js → theme-button-tekBpoTr.js} +2 -2
  276. package/dist/{theme-button-DYoygmRA.js.map → theme-button-tekBpoTr.js.map} +1 -1
  277. package/dist/theme-button.cjs +1 -1
  278. package/dist/theme-button.js +1 -1
  279. package/dist/theme.cjs +1 -1
  280. package/dist/theme.interface-C5Kj6WjD.js.map +1 -1
  281. package/dist/theme.interface-Xg5Zi46a.cjs.map +1 -1
  282. package/dist/theme.js +1 -1
  283. package/dist/{timezone-BCGcdasU.cjs → timezone-DIYE4qo4.cjs} +2 -2
  284. package/dist/{timezone-BCGcdasU.cjs.map → timezone-DIYE4qo4.cjs.map} +1 -1
  285. package/dist/{timezone-Co7gqqQt.js → timezone-rpn_HlNW.js} +3 -3
  286. package/dist/{timezone-Co7gqqQt.js.map → timezone-rpn_HlNW.js.map} +1 -1
  287. package/dist/{tooltip-DBuaAFmK.js → tooltip-C5DJ3omV.js} +2 -2
  288. package/dist/{tooltip-DBuaAFmK.js.map → tooltip-C5DJ3omV.js.map} +1 -1
  289. package/dist/{tooltip-Bqa0D34J.cjs → tooltip-apPpbYRb.cjs} +2 -2
  290. package/dist/{tooltip-Bqa0D34J.cjs.map → tooltip-apPpbYRb.cjs.map} +1 -1
  291. package/dist/tooltip.cjs +1 -1
  292. package/dist/tooltip.js +1 -1
  293. package/dist/{tree-CfE695gp.js → tree-B38B9Zts.js} +2 -2
  294. package/dist/{tree-CfE695gp.js.map → tree-B38B9Zts.js.map} +1 -1
  295. package/dist/{tree-CFeXYaJy.cjs → tree-DYOX-2CI.cjs} +2 -2
  296. package/dist/{tree-CFeXYaJy.cjs.map → tree-DYOX-2CI.cjs.map} +1 -1
  297. package/dist/tree.cjs +1 -1
  298. package/dist/tree.js +1 -1
  299. package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
  300. package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
  301. package/dist/types.cjs.map +1 -1
  302. package/dist/types.js.map +1 -1
  303. package/dist/{typewriter-BZ_adVXB.js → typewriter-Cf1Bl0lI.js} +4 -4
  304. package/dist/typewriter-Cf1Bl0lI.js.map +1 -0
  305. package/dist/{typewriter-B6Jb22Pe.cjs → typewriter-D5sC3i_h.cjs} +2 -2
  306. package/dist/typewriter-D5sC3i_h.cjs.map +1 -0
  307. package/dist/typewriter.cjs +1 -1
  308. package/dist/typewriter.js +1 -1
  309. package/dist/{typography-DvVeO1a_.cjs → typography-VDYy4xDQ.cjs} +2 -2
  310. package/dist/{typography-DvVeO1a_.cjs.map → typography-VDYy4xDQ.cjs.map} +1 -1
  311. package/dist/{typography-DI5RXpWs.js → typography-sm5Ne22S.js} +2 -2
  312. package/dist/{typography-DI5RXpWs.js.map → typography-sm5Ne22S.js.map} +1 -1
  313. package/dist/typography.cjs +1 -1
  314. package/dist/typography.js +1 -1
  315. package/dist/{utils-jduntaQU.js → utils-03Coa8AW.js} +2 -2
  316. package/dist/{utils-jduntaQU.js.map → utils-03Coa8AW.js.map} +1 -1
  317. package/dist/{utils-BqFGvnN9.cjs → utils-C9nzOWpR.cjs} +2 -2
  318. package/dist/{utils-BqFGvnN9.cjs.map → utils-C9nzOWpR.cjs.map} +1 -1
  319. package/package.json +10 -10
  320. package/types/src/index.d.ts +1 -0
  321. package/types/src/select/index.d.ts +1 -1
  322. package/types/src/select/select.d.ts +1 -0
  323. package/types/src/sheet/sheet.d.ts +4 -5
  324. package/types/src/sheet/sheet.service.d.ts +121 -27
  325. package/types/src/store/selector-hook.d.ts +1 -1
  326. package/dist/checkbox-Dq0Lm3AM.js.map +0 -1
  327. package/dist/chips-aRU1fwEV.js.map +0 -1
  328. package/dist/chips-jORxgpG7.cjs.map +0 -1
  329. package/dist/code-preview-BwIb73Yd.js.map +0 -1
  330. package/dist/code-preview-CCHcWZvS.cjs.map +0 -1
  331. package/dist/date-range-CA_4vjWe.js.map +0 -1
  332. package/dist/date-range-DinaPWK0.cjs.map +0 -1
  333. package/dist/delay-BJwsHbg3.js.map +0 -1
  334. package/dist/delay-CHAH30wI.cjs.map +0 -1
  335. package/dist/payment-card-form-BUsPCZPp.cjs.map +0 -1
  336. package/dist/payment-card-form-D7PV8spa.js.map +0 -1
  337. package/dist/sheet-BGuqw1NG.js +0 -141
  338. package/dist/sheet-BGuqw1NG.js.map +0 -1
  339. package/dist/sheet-DlLj6OeU.cjs +0 -47
  340. package/dist/sheet-DlLj6OeU.cjs.map +0 -1
  341. package/dist/sheet.service-DQQ44gXD.cjs.map +0 -1
  342. package/dist/sheet.service-Dm2r1_ji.js.map +0 -1
  343. package/dist/table-BrAoSQhN.cjs.map +0 -1
  344. package/dist/table-DSZ9kmUG.js.map +0 -1
  345. package/dist/typewriter-B6Jb22Pe.cjs.map +0 -1
  346. package/dist/typewriter-BZ_adVXB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"typography-DvVeO1a_.cjs","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","render","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":"8SAWaA,QAAAA,mBAAN,cAAiCC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAjD,aAAAC,CAAAC,MAAAC,GAAAA,SAAAA,EAmSmEC,KAAAC,KAAA,OAQ/BD,KAAAE,MAAA,IAAA,CAgChC,QAAAC,CACF,OAAAC,EAAAA,mBAAA,CAAA,EAzCRC,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EAlSvBd,2BAmSZe,UAAA,OAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EA1SvBd,2BA2SZe,UAAA,QAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAlTdd,CAAAA,CAAAA,EAAAA,2BAmTZe,UAAA,QAAA,CASAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EA3Tdd,CAAAA,CAAAA,EAAAA,2BA4TZe,UAAA,SAAA,CAUAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EArUdd,CAAAA,CAAAA,EAAAA,2BAsUZe,UAAA,YAAA,CAGAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMS,OAAQC,UAAW,YAAaH,QAAAA,MAxUtCd,2BAyUZe,UAAA,WAAA,CAzUYf,EAAAA,QAANA,mBAAAW,EAAA,CADNO,EAAAA,cAAc,qBAAA,CAAA,EACFlB"}
1
+ {"version":3,"file":"typography-VDYy4xDQ.cjs","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","render","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":"8SAWaA,QAAAA,mBAAN,cAAiCC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAjD,aAAAC,CAAAC,MAAAA,GAAAC,SAAAA,EAmSNC,KAAAC,KAAyE,OAQzED,KAAAE,MAA0C,IAAA,CAgChC,QAAAC,CACT,OAAOC,EAAAA,mBACR,CAAA,EA1CAC,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAAS,CAAA,CAAA,EAlSvBd,2BAmSZe,UAAA,OAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAAS,CAAA,CAAA,EA1SvBd,2BA2SZe,UAAA,QAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAAS,CAAA,CAAA,EAlTvBd,2BAmTZe,UAAA,QAAA,CAAA,EASAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAAS,CAAA,CAAA,EA3TvBd,2BA4TZe,UAAA,SAAA,CAAA,EAUAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAAS,CAAA,CAAA,EArUvBd,2BAsUZe,UAAA,YAAA,CAAA,EAGAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMS,OAAQC,UAAW,YAAaH,QAAAA,MAxUtCd,2BAyUZe,UAAA,WAAA,CAAA,EAzUYf,QAAAA,mBAANW,EAAA,CADNO,EAAAA,cAAc,qBAAA,CAAA,EACFlB"}
@@ -1,4 +1,4 @@
1
- import { T as r } from "./tailwind.mixin-DWhCm94g.js";
1
+ import { T as r } from "./tailwind.mixin-BHLwDiBj.js";
2
2
  import { css as x, html as g } from "lit";
3
3
  import { property as o, customElement as f } from "lit/decorators.js";
4
4
  var y = Object.defineProperty, d = Object.getOwnPropertyDescriptor, i = (a, n, s, h) => {
@@ -301,4 +301,4 @@ i([o({ type: String, reflect: !0 })], t.prototype, "type", 2), i([o({ type: Stri
301
301
  export {
302
302
  t as S
303
303
  };
304
- //# sourceMappingURL=typography-DI5RXpWs.js.map
304
+ //# sourceMappingURL=typography-sm5Ne22S.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typography-DI5RXpWs.js","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":";;;;;;;AAWa,IAAAA,IAAN,cAAiCC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAAjD,cAAAC;AAAAC,aAAAC,SAmSmEC,GAAAA,KAAAC,OAAA,QAQ/BD,KAAAE,QAAA;AAAA,EAAA;AAAA,EAgChC,SACF;AAAA,WAAAC;AAAAA,EAAA;AAAA;AAzCRC,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YAlSdb,CAAAA,CAAAA,GAAAA,EAmSZc,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YA1Sdb,CAAAA,CAAAA,GAAAA,EA2SZc,WAAA,SAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QAlTdb,EAmTZc,WAAA,SAAA,CASAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QA3Tdb,EA4TZc,WAAA,UAAA,CAUAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAS,GAAA,CAAA,CAAA,GArUvBb,EAsUZc,WAAA,aAAA,IAGAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMQ,QAAQC,WAAW,aAAaH,YAxUtCb,CAAAA,CAAAA,GAAAA,EAyUZc,WAAA,YAAA,CAAA,GAzUYd,IAANU,EAAA,CADNO,EAAc,qBAAA,CAAA,GACFjB;"}
1
+ {"version":3,"file":"typography-sm5Ne22S.js","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","render","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":";;;;;;;AAWO,IAAMA,IAAN,cAAiCC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAAjD,cAAAC;AAAAC,aAAAC,SAAAA,GAmSNC,KAAAC,OAAyE,QAQzED,KAAAE,QAA0C;AAAA,EAAA;AAAA,EAgChC,SAAAC;AACT,WAAOC;AAAAA,EACR;AAAA;AA1CAC,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,YAAS,CAAA,CAAA,GAlSvBd,EAmSZe,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,YAAS,CAAA,CAAA,GA1SvBd,EA2SZe,WAAA,SAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,SAAAA,QAlTdd,EAmTZe,WAAA,SAAA,CAAA,GASAJ,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,SAAAA,QA3Tdd,EA4TZe,WAAA,UAAA,CAAA,GAUAJ,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,SAAAA,GAAS,CAAA,CAAA,GArUvBd,EAsUZe,WAAA,aAAA,IAGAJ,EAAA,CADCC,EAAS,EAAEL,MAAMS,QAAQC,WAAW,aAAaH,YAAS,CAAA,CAAA,GAxU/Cd,EAyUZe,WAAA,YAAA,CAAA,GAzUYf,IAANW,EAAA,CADNO,EAAc,qBAAA,CAAA,GACFlB,CAAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typography-DvVeO1a_.cjs");Object.defineProperty(exports,"SchmancyTypography",{enumerable:!0,get:()=>e.SchmancyTypography});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typography-VDYy4xDQ.cjs");Object.defineProperty(exports,"SchmancyTypography",{enumerable:!0,get:()=>e.SchmancyTypography});
2
2
  //# sourceMappingURL=typography.cjs.map
@@ -1,4 +1,4 @@
1
- import { S as p } from "./typography-DI5RXpWs.js";
1
+ import { S as p } from "./typography-sm5Ne22S.js";
2
2
  export {
3
3
  p as SchmancyTypography
4
4
  };
@@ -82,7 +82,7 @@ function J(t) {
82
82
  function u(t) {
83
83
  let e = 0;
84
84
  for (let n = 0; n < t.length; n++)
85
- e = (e << 5) - e + t.charCodeAt(n), e |= 0;
85
+ e = (e << 5) - e + t.charCodeAt(n), e &= e;
86
86
  return Math.abs(e).toString(36);
87
87
  }
88
88
  function p(t, e = ["password", "token", "secret", "apiKey"]) {
@@ -125,4 +125,4 @@ export {
125
125
  f as n,
126
126
  p as s
127
127
  };
128
- //# sourceMappingURL=utils-jduntaQU.js.map
128
+ //# sourceMappingURL=utils-03Coa8AW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-jduntaQU.js","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","deepMerge","target","source","output","hasOwnProperty","sourceValue","targetValue","isObject","obj","constructor","toString","call","debounce","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encodeRouteState","state","json","JSON","stringify","encodeURIComponent","decodeRouteState","encoded","decoded","decodeURIComponent","parsed","parse","error","compareRouteActions","a","b","area","params","compareActiveRoutes","createRouteCacheKey","route","stateHash","simpleHash","paramsHash","str","hash","charCodeAt","Math","abs","sanitizeRouteState","keysToRemove","sanitized","includes","value","map","item","extractQueryParams","url","searchParams","URLSearchParams","URL","window","location","origin","search","forEach","buildQueryString","set","String","queryString"],"mappings":"AAQgB,SAAAA,EACfC,GACAC,GAGA;AAAA,MAAID,MAAiBC,EACb,QAAA;AAIR,aAAWD,KAAiB,cAAsC,OAAjBC,KAAiB,WAC1D,QAAA;AAIR,MAAID,EAAaE,QAAQD,EAAaC,QAAQF,EAAaE,SAASD,EAAaC,KACzE;AAIR,QAAMC,IAAQH,EAAqBI,oBAC7BC,IAAQJ,EAAqBG;AAEnC,MAAID,KAAQE,KACPC,MAAMC,QAAQJ,CAAAA,KAASG,MAAMC,QAAQF,CACxC,EAAA,QAAIF,EAAKK,WAAWH,EAAKG,UAClBL,EAAKM,MAAM,CAACC,GAAMC,MAAMD,MAASL,EAAKM,CAK3C,CAAA;AAAA,MAAA;AACH,UAAMC,IAASZ,EAAaa,WACtBC,IAASb,EAAaY;AAG5B,QAAIE,OAAOC,eAAeJ,CAAYG,MAAAA,OAAOC,eAAeF,CAAS,GAAA;AAEpE,YAAMG,IAAQF,OAAOG,oBAAoBN,CAAAA,EAAQO,KAC3CC,GAAAA,IAAQL,OAAOG,oBAAoBJ,CAAQK,EAAAA,KAAAA;AAEjD,aAAOF,EAAMT,WAAWY,EAAMZ,UAC1BS,EAAMR,MAAM,CAACY,GAAKV,MAAMU,MAAQD,EAAMT,CAAAA,CAAAA;AAAAA,IAAE;AAAA,EAC7C;EACO;AAID,SAAA;AACR;AAOO,SAASW,EAAiBC,GAAAA;AAChC,SAAOA,EACLC,cACAC,QAAQ,cAAc,EACzB;AAAA;AAOO,SAASC,EAAWC,GAAAA;AACtB,MAAqB,OAAdA,KAAc,SACxB,QAAOA,EAAUH,YAGlB;AAAA,MAAIG,aAAqBC,YACjB,QAAAD,EAAUJ,QAAQC;AAGtB,MAAqB,OAAdG,KAAc,YAAY;AAEpC,UAAMzB,IAAOyB,EAAUzB;AACvB,QAAIA,EAEI,QAAAA,EACLuB,QAAQ,YAAY,OACpBD,YACAC,EAAAA,QAAQ,MAAM,EAAA;AAAA,EACjB;AAGM,SAAA;AACR;AAQgB,SAAAI,EACfC,GACAC,GAAAA;AAEM,QAAAC,IAAS,EAAKF,GAAAA,EAAAA;AAEpB,aAAWT,KAAOU,EACb,KAAAA,EAAOE,eAAeZ,IAAM;AACzB,UAAAa,IAAcH,EAAOV,IACrBc,IAAcH,EAAOX,CAEvBe;AAAAA,IAAAA,EAASF,MAAgBE,EAASD,CAAAA,IACrCH,EAAOX,CAAAA,IAAOQ,EAAUM,GAAaD,CAAAA,IAErCF,EAAOX,CAAAA,IAAOa;AAAAA,EACf;AAIK,SAAAF;AACR;AAOO,SAASI,EAASC,GAAAA;AACxB,SAAOA,MAAQ,QACJA,OAAAA,KAAQ,YACfA,EAAIC,gBAAgBvB,UACpBA,OAAOF,UAAU0B,SAASC,KAAKH,CACpC,MAD6C;AAC7C;AAQgB,SAAAI,EACfC,GACAC,GAEA;AAAA,MAAIC,IAAgD;AAEpD,SAAO,YAAwBC,GAAAA;AAC9B,UAAMC,IAAUC;AAEA,IAAZH,MAAY,QACfI,aAAaJ,CAAAA,GAGdA,IAAUK,WAAW,MAAA;AACfP,MAAAA,EAAAQ,MAAMJ,GAASD,CACVD,GAAAA,IAAA;AAAA,IAAA,GACRD,CACJ;AAAA,EAAA;AACD;AAOO,SAASQ,EAAiBC,GAC5B;AAAA,MAAA;AACG,UAAAC,IAAOC,KAAKC,UAAUH,CAAAA;AAC5B,WAAOI,mBAAmBH;UAGnB;AAAA,WAAA;AAAA,EAAA;AAET;AAOO,SAASI,EAAiBC;AAC5B,MAACA,CAAAA,EAAS,QAAO,CAAC;AAElB,MACG;AAAA,UAAAC,IAAUC,mBAAmBF,IAC7BG,IAASP,KAAKQ,MAAMH,CAAAA;AAEtB,QAAAvB,EAASyB,CAAAA,EACL,QAAAA;AAAAA,UAEAE;AAAAA,EAC4C;AAGrD,SAAO,CAAC;AACT;AAQgB,SAAAC,EAAoBC,GAAgBC,GAEnD;AAGA,MAHID,EAAEE,SAASD,EAAEC,QAGjB,OAAWF,EAAEtC,aAAqBuC,OAAAA,EAAEvC,UAAkB,QAAA;AAEtD,MAA2B,OAAhBsC,EAAEtC,aAAc,mBAAmBuC,EAAEvC,aAAc;AAC7D,QAAIL,EAAiB2C,EAAEtC,SAAAA,MAAeL,EAAiB4C,EAAEvC,WACjD,QAAA;AAAA,aAEyB,OAAhBsC,EAAEtC,aAAc,cAAqC,OAAhBuC,EAAEvC,aAAc;AACtE,SAAK5B,EAAiCkE,EAAEtC,WAAWuC,EAAEvC,WAC7C,QAAA;AAAA,aAEEsC,EAAEtC,cAAcuC,EAAEvC,UACrB,QAAA;AAIR,SAAI2B,KAAKC,UAAUU,EAAEb,SAAS,CAAE,CAAME,MAAAA,KAAKC,UAAUW,EAAEd,SAAS,CAAE,CAK9DE,KAAAA,KAAKC,UAAUU,EAAEG,UAAU,CAAE,CAAA,MAAMd,KAAKC,UAAUW,EAAEE,UAAU,CAAE;AAKrE;AAQgB,SAAAC,EAAoBJ,GAAgBC;AACnD,SAAOD,EAAEE,SAASD,EAAEC,QAChBF,EAAEtC,cAAcuC,EAAEvC,aAClB2B,KAAKC,UAAUU,EAAEb,SAAS,CAAE,OAAME,KAAKC,UAAUW,EAAEd,SAAS,CAAA,CAAA,KAC5DE,KAAKC,UAAUU,EAAEG,UAAU,CAAE,CAAMd,MAAAA,KAAKC,UAAUW,EAAEE,UAAU,CAAA,CAAA;AACnE;AAOO,SAASE,EAAoBC,GACnC;AAAA,QAAMhD,IAAUG,EAAW6C,EAAM5C,SAAc,KAAA,WACzC6C,IAAYC,EAAWnB,KAAKC,UAAUgB,EAAMnB,SAAS,CAAA,CAAA,CAAA,GACrDsB,IAAaD,EAAWnB,KAAKC,UAAUgB,EAAMH,UAAU,CAAA;AAEtD,SAAA,GAAGG,EAAMJ,IAAAA,IAAQ5C,KAAWiD,CAAaE,IAAAA,CAAAA;AACjD;AAOA,SAASD,EAAWE,GACnB;AAAA,MAAIC,IAAO;AAEX,WAASjE,IAAI,GAAGA,IAAIgE,EAAInE,QAAQG;AAEtBiE,IAAAA,KAAAA,KAAQ,KAAKA,IADTD,EAAIE,WAAWlE,IAE5BiE,KAAOA;AAGR,SAAOE,KAAKC,IAAIH,CAAAA,EAAMrC,SAAS,EAAA;AAChC;AAQgB,SAAAyC,EACf5B,GACA6B,IAAyB,CAAC,YAAY,SAAS,UAAU;AAEzD,QAAMC,IAAqC,CAAC;AAE5C,aAAW7D,KAAO+B,EACb,KAAAA,EAAMnB,eAAeZ,CAAAA,KAAAA,CAAS4D,EAAaE,SAAS9D,IAAM;AACvD,UAAA+D,IAAQhC,EAAM/B;AAEhBe,IAAAA,EAASgD,CAAAA,IACZF,EAAU7D,CAAAA,IAAO2D,EAAmBI,GAAOH,CAAAA,IACjC3E,MAAMC,QAAQ6E,KACdF,EAAA7D,CAAAA,IAAO+D,EAAMC,WACtBjD,EAASkD,CAAAA,IAAQN,EAAmBM,GAAML,KAAgBK,CAG3DJ,IAAAA,EAAU7D,CAAO+D,IAAAA;AAAAA,EAClB;AAIK,SAAAF;AACR;AAOO,SAASK,EAAmBC,GAClC;AAAA,QAAMpB,IAAiC,CAAC;AAEpC,MAAAqB;AAEJ,SAAID,aAAeE,kBACHD,IAAAD,IACU,OAARA,KAAQ,WAEzBC,IADe,IAAIE,IAAIH,GAAKI,OAAOC,SAASC,MAAAA,EACtBL,eAEtBA,IAAe,IAAIC,gBAAgBE,OAAOC,SAASE,MAAAA,GAGvCN,EAAAO,QAAQ,CAACZ,GAAO/D,MAC5B+C;AAAAA,IAAAA,EAAO/C,KAAO+D;AAAAA,EAAA,CAAA,GAGRhB;AACR;AAOO,SAAS6B,EAAiB7B,GAAAA;AAC1B,QAAAqB,IAAe,IAAIC;AAEzB,aAAWrE,KAAO+C,EACb,KAAAA,EAAOnC,eAAeZ,CAAAA,GAAM;AACzB,UAAA+D,IAAQhB,EAAO/C,CAAAA;AACjB+D,SAAAA,QAAyCA,MAAU,MACtDK,EAAaS,IAAI7E,GAAK8E,OAAOf,CAAAA,CAAAA;AAAAA,EAC9B;AAII,QAAAgB,IAAcX,EAAalD,SAAAA;AAC1B,SAAA6D,IAAc,IAAIA,CAAgB,KAAA;AAC1C;"}
1
+ {"version":3,"file":"utils-03Coa8AW.js","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","deepMerge","target","source","output","hasOwnProperty","sourceValue","targetValue","isObject","obj","constructor","toString","call","debounce","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encodeRouteState","state","json","JSON","stringify","encodeURIComponent","error","decodeRouteState","encoded","decoded","decodeURIComponent","parsed","parse","compareRouteActions","a","b","area","params","compareActiveRoutes","createRouteCacheKey","route","stateHash","simpleHash","paramsHash","str","hash","charCodeAt","Math","abs","sanitizeRouteState","keysToRemove","sanitized","includes","value","map","item","extractQueryParams","url","searchParams","URLSearchParams","URL","window","location","origin","search","forEach","buildQueryString","set","String","queryString"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function u(t,e){if(t===e)return!0;if(typeof t!="function"||typeof e!="function")return!1;if(t.name&&e.name&&t.name===e.name)return!0;const n=t.observedAttributes,o=e.observedAttributes;if(n&&o&&Array.isArray(n)&&Array.isArray(o))return n.length===o.length&&n.every((r,c)=>r===o[c]);try{const r=t.prototype,c=e.prototype;if(Object.getPrototypeOf(r)===Object.getPrototypeOf(c)){const i=Object.getOwnPropertyNames(r).sort(),f=Object.getOwnPropertyNames(c).sort();return i.length===f.length&&i.every((m,l)=>m===f[l])}}catch{}return!1}function s(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}function p(t){if(typeof t=="string")return t.toLowerCase();if(t instanceof HTMLElement)return t.tagName.toLowerCase();if(typeof t=="function"){const e=t.name;if(e)return e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"")}return null}function a(t){return t!==null&&typeof t=="object"&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}function y(t){let e=0;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return Math.abs(e).toString(36)}exports.buildQueryString=function(t){const e=new URLSearchParams;for(const o in t)if(t.hasOwnProperty(o)){const r=t[o];r!=null&&r!==""&&e.set(o,String(r))}const n=e.toString();return n?`?${n}`:""},exports.compareActiveRoutes=function(t,e){return t.area===e.area&&t.component===e.component&&JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.compareCustomElementConstructors=u,exports.compareRouteActions=function(t,e){if(t.area!==e.area||typeof t.component!=typeof e.component)return!1;if(typeof t.component=="string"&&typeof e.component=="string"){if(s(t.component)!==s(e.component))return!1}else if(typeof t.component=="function"&&typeof e.component=="function"){if(!u(t.component,e.component))return!1}else if(t.component!==e.component)return!1;return JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.createRouteCacheKey=function(t){const e=p(t.component)||"unknown",n=y(JSON.stringify(t.state||{})),o=y(JSON.stringify(t.params||{}));return`${t.area}:${e}:${n}:${o}`},exports.debounce=function(t,e){let n=null;return function(...o){const r=this;n!==null&&clearTimeout(n),n=setTimeout(()=>{t.apply(r,o),n=null},e)}},exports.decodeRouteState=function(t){if(!t)return{};try{const e=decodeURIComponent(t),n=JSON.parse(e);if(a(n))return n}catch{}return{}},exports.deepMerge=function t(e,n){const o={...e};for(const r in n)if(n.hasOwnProperty(r)){const c=n[r],i=o[r];a(c)&&a(i)?o[r]=t(i,c):o[r]=c}return o},exports.encodeRouteState=function(t){try{const e=JSON.stringify(t);return encodeURIComponent(e)}catch{return""}},exports.extractQueryParams=function(t){const e={};let n;return t instanceof URLSearchParams?n=t:typeof t=="string"?n=new URL(t,window.location.origin).searchParams:n=new URLSearchParams(window.location.search),n.forEach((o,r)=>{e[r]=o}),e},exports.getTagName=p,exports.isObject=a,exports.normalizeTagName=s,exports.sanitizeRouteState=function t(e,n=["password","token","secret","apiKey"]){const o={};for(const r in e)if(e.hasOwnProperty(r)&&!n.includes(r)){const c=e[r];a(c)?o[r]=t(c,n):Array.isArray(c)?o[r]=c.map(i=>a(i)?t(i,n):i):o[r]=c}return o};
2
- //# sourceMappingURL=utils-BqFGvnN9.cjs.map
1
+ "use strict";function u(t,e){if(t===e)return!0;if(typeof t!="function"||typeof e!="function")return!1;if(t.name&&e.name&&t.name===e.name)return!0;const n=t.observedAttributes,o=e.observedAttributes;if(n&&o&&Array.isArray(n)&&Array.isArray(o))return n.length===o.length&&n.every((r,c)=>r===o[c]);try{const r=t.prototype,c=e.prototype;if(Object.getPrototypeOf(r)===Object.getPrototypeOf(c)){const i=Object.getOwnPropertyNames(r).sort(),f=Object.getOwnPropertyNames(c).sort();return i.length===f.length&&i.every((m,l)=>m===f[l])}}catch{}return!1}function s(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}function p(t){if(typeof t=="string")return t.toLowerCase();if(t instanceof HTMLElement)return t.tagName.toLowerCase();if(typeof t=="function"){const e=t.name;if(e)return e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"")}return null}function a(t){return t!==null&&typeof t=="object"&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}function y(t){let e=0;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e&=e;return Math.abs(e).toString(36)}exports.buildQueryString=function(t){const e=new URLSearchParams;for(const o in t)if(t.hasOwnProperty(o)){const r=t[o];r!=null&&r!==""&&e.set(o,String(r))}const n=e.toString();return n?`?${n}`:""},exports.compareActiveRoutes=function(t,e){return t.area===e.area&&t.component===e.component&&JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.compareCustomElementConstructors=u,exports.compareRouteActions=function(t,e){if(t.area!==e.area||typeof t.component!=typeof e.component)return!1;if(typeof t.component=="string"&&typeof e.component=="string"){if(s(t.component)!==s(e.component))return!1}else if(typeof t.component=="function"&&typeof e.component=="function"){if(!u(t.component,e.component))return!1}else if(t.component!==e.component)return!1;return JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.createRouteCacheKey=function(t){const e=p(t.component)||"unknown",n=y(JSON.stringify(t.state||{})),o=y(JSON.stringify(t.params||{}));return`${t.area}:${e}:${n}:${o}`},exports.debounce=function(t,e){let n=null;return function(...o){const r=this;n!==null&&clearTimeout(n),n=setTimeout(()=>{t.apply(r,o),n=null},e)}},exports.decodeRouteState=function(t){if(!t)return{};try{const e=decodeURIComponent(t),n=JSON.parse(e);if(a(n))return n}catch{}return{}},exports.deepMerge=function t(e,n){const o={...e};for(const r in n)if(n.hasOwnProperty(r)){const c=n[r],i=o[r];a(c)&&a(i)?o[r]=t(i,c):o[r]=c}return o},exports.encodeRouteState=function(t){try{const e=JSON.stringify(t);return encodeURIComponent(e)}catch{return""}},exports.extractQueryParams=function(t){const e={};let n;return t instanceof URLSearchParams?n=t:typeof t=="string"?n=new URL(t,window.location.origin).searchParams:n=new URLSearchParams(window.location.search),n.forEach((o,r)=>{e[r]=o}),e},exports.getTagName=p,exports.isObject=a,exports.normalizeTagName=s,exports.sanitizeRouteState=function t(e,n=["password","token","secret","apiKey"]){const o={};for(const r in e)if(e.hasOwnProperty(r)&&!n.includes(r)){const c=e[r];a(c)?o[r]=t(c,n):Array.isArray(c)?o[r]=c.map(i=>a(i)?t(i,n):i):o[r]=c}return o};
2
+ //# sourceMappingURL=utils-C9nzOWpR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-BqFGvnN9.cjs","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","isObject","obj","constructor","toString","call","simpleHash","str","hash","charCodeAt","Math","abs","params","searchParams","URLSearchParams","hasOwnProperty","value","e","set","String","queryString","a","b","area","JSON","stringify","state","route","stateHash","paramsHash","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encoded","decoded","decodeURIComponent","parsed","parse","error","deepMerge","target","source","output","sourceValue","targetValue","json","encodeURIComponent","url","URL","window","location","origin","search","forEach","sanitizeRouteState","keysToRemove","sanitized","includes","map","item"],"mappings":"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"}
1
+ {"version":3,"file":"utils-C9nzOWpR.cjs","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","isObject","obj","constructor","toString","call","simpleHash","str","hash","charCodeAt","Math","abs","params","searchParams","URLSearchParams","hasOwnProperty","value","set","String","queryString","a","b","area","JSON","stringify","state","route","stateHash","paramsHash","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encoded","decoded","decodeURIComponent","parsed","parse","error","deepMerge","target","source","output","sourceValue","targetValue","json","encodeURIComponent","url","URL","window","location","origin","search","forEach","sanitizeRouteState","keysToRemove","sanitized","includes","map","item"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhmo91/schmancy",
3
- "version": "0.4.32",
3
+ "version": "0.4.34",
4
4
  "description": "UI library build with web components",
5
5
  "main": "./dist/index.js",
6
6
  "packageManager": "yarn@4.9.2",
@@ -46,9 +46,9 @@
46
46
  "homepage": "https://github.com/mhmo91/schmancy#readme",
47
47
  "dependencies": {
48
48
  "@floating-ui/dom": "^1.7.2",
49
- "@lit-labs/motion": "^1.0.8",
50
- "@lit-labs/virtualizer": "^2.1.0",
51
- "@lit/context": "^1.1.5",
49
+ "@lit-labs/motion": "^1.0.9",
50
+ "@lit-labs/virtualizer": "^2.1.1",
51
+ "@lit/context": "^1.1.6",
52
52
  "@material/material-color-utilities": "^0.3.0",
53
53
  "@material/mwc-base": "^0.27.0",
54
54
  "@material/web": "^2.3.0",
@@ -63,7 +63,7 @@
63
63
  "fastest-levenshtein": "^1.0.16",
64
64
  "highlight.js": "^11.11.1",
65
65
  "immer": "^10.1.1",
66
- "lit": "^3.3.0",
66
+ "lit": "^3.2.1",
67
67
  "playground-elements": "^0.20.0",
68
68
  "rxjs": "^7.8.2",
69
69
  "tippy.js": "^6.3.7",
@@ -78,23 +78,23 @@
78
78
  "@tailwindcss/forms": "^0.5.10",
79
79
  "@tailwindcss/postcss": "^4.1.11",
80
80
  "@tailwindcss/vite": "^4.1.11",
81
- "@types/node": "^24.0.8",
81
+ "@types/node": "^24.1.0",
82
82
  "@types/uuid": "^10.0.0",
83
- "@typescript-eslint/parser": "^8.35.1",
83
+ "@typescript-eslint/parser": "^8.38.0",
84
84
  "@vitest/ui": "^3.2.4",
85
85
  "autoprefixer": "^10.4.21",
86
86
  "c8": "^10.1.3",
87
87
  "deepmerge": "^4.3.1",
88
- "eslint": "^9.30.0",
88
+ "eslint": "^9.32.0",
89
89
  "happy-dom": "^18.0.1",
90
90
  "postcss": "^8.5.6",
91
91
  "prettier": "^3.6.2",
92
92
  "rollup-plugin-copy": "^3.5.0",
93
93
  "sass": "^1.89.2",
94
94
  "tailwindcss": "^4.1.11",
95
- "vite": "^7.0.0",
95
+ "vite": "^7.0.6",
96
96
  "vite-plugin-sitemap": "^0.8.2",
97
- "vite-plugin-webfont-dl": "^3.10.5",
97
+ "vite-plugin-webfont-dl": "^3.11.1",
98
98
  "vitest": "^3.2.4"
99
99
  },
100
100
  "peerDependencies": {
@@ -51,3 +51,4 @@ export * from './typewriter';
51
51
  export * from './typography';
52
52
  export * from './utils';
53
53
  export * from './avatar';
54
+ export { sheet } from './sheet';
@@ -1 +1 @@
1
- export * from './select';
1
+ export { SchmancySelect, type SchmancySelectChangeEvent } from './select';
@@ -15,6 +15,7 @@ export declare class SchmancySelect extends SchmancySelect_base {
15
15
  label: string;
16
16
  hint: string;
17
17
  validateOn: 'always' | 'touched' | 'dirty' | 'submitted';
18
+ size: 'sm' | 'md' | 'lg';
18
19
  private isOpen;
19
20
  private valueLabel;
20
21
  private isValid;
@@ -9,7 +9,7 @@ export default class SchmancySheet extends SchmancySheet_base {
9
9
  lock: boolean;
10
10
  handleHistory: boolean;
11
11
  title: string;
12
- private sheet;
12
+ private sheetRef;
13
13
  private assignedElements;
14
14
  focusAttribute: string;
15
15
  private lastFocusedElement;
@@ -17,15 +17,14 @@ export default class SchmancySheet extends SchmancySheet_base {
17
17
  connectedCallback(): void;
18
18
  disconnectedCallback(): void;
19
19
  private setupEventListeners;
20
- private sheetContainsFocus;
21
20
  private announcePresence;
22
- private addFocusTrap;
23
- private removeFocusTrap;
24
- private handleFocusIn;
21
+ private setBackgroundInert;
25
22
  setIsSheetShown(isShown: boolean): void;
26
23
  closeSheet(): void;
27
24
  private getFocusElement;
28
25
  focus(): void;
26
+ private handleOverlayClick;
27
+ private handleHeaderDismiss;
29
28
  render(): import("lit-html").TemplateResult<1>;
30
29
  }
31
30
  declare global {