@mhmo91/schmancy 0.9.9 → 0.9.10

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 (329) hide show
  1. package/dist/{area-D9b9dHQr.cjs → area-BafkBc1f.cjs} +1 -1
  2. package/dist/{area-D9b9dHQr.cjs.map → area-BafkBc1f.cjs.map} +1 -1
  3. package/dist/{area-BARjKpE9.js → area-D03HRn1L.js} +1 -1
  4. package/dist/{area-BARjKpE9.js.map → area-D03HRn1L.js.map} +1 -1
  5. package/dist/area.cjs +1 -1
  6. package/dist/area.js +1 -1
  7. package/dist/{autocomplete-AI2CCJmK.cjs → autocomplete-BeLg4A3T.cjs} +1 -1
  8. package/dist/{autocomplete-AI2CCJmK.cjs.map → autocomplete-BeLg4A3T.cjs.map} +1 -1
  9. package/dist/{autocomplete-DOimwVMP.js → autocomplete-BotVnTfP.js} +2 -2
  10. package/dist/{autocomplete-DOimwVMP.js.map → autocomplete-BotVnTfP.js.map} +1 -1
  11. package/dist/autocomplete.cjs +1 -1
  12. package/dist/autocomplete.js +1 -1
  13. package/dist/badge.cjs +1 -1
  14. package/dist/badge.js +1 -1
  15. package/dist/{boat-Bk4u-LzT.cjs → boat-4hSLFsGy.cjs} +1 -1
  16. package/dist/{boat-Bk4u-LzT.cjs.map → boat-4hSLFsGy.cjs.map} +1 -1
  17. package/dist/{boat-DrghVeWK.js → boat-C1wGdoaF.js} +1 -1
  18. package/dist/{boat-DrghVeWK.js.map → boat-C1wGdoaF.js.map} +1 -1
  19. package/dist/boat.cjs +1 -1
  20. package/dist/boat.js +1 -1
  21. package/dist/breadcrumb.cjs +1 -1
  22. package/dist/breadcrumb.js +1 -1
  23. package/dist/{busy-c_q_F8O0.cjs → busy-C0qP0TiL.cjs} +1 -1
  24. package/dist/{busy-c_q_F8O0.cjs.map → busy-C0qP0TiL.cjs.map} +1 -1
  25. package/dist/{busy-BmFfwyz_.js → busy-D74-XaFn.js} +1 -1
  26. package/dist/{busy-BmFfwyz_.js.map → busy-D74-XaFn.js.map} +1 -1
  27. package/dist/busy.cjs +1 -1
  28. package/dist/busy.js +1 -1
  29. package/dist/button.cjs +1 -1
  30. package/dist/button.js +1 -1
  31. package/dist/{card-BADJHUMA.js → card-C8Ns2mRo.js} +1 -1
  32. package/dist/{card-BADJHUMA.js.map → card-C8Ns2mRo.js.map} +1 -1
  33. package/dist/{card-C_E944_Z.cjs → card-DUq_MsxC.cjs} +1 -1
  34. package/dist/{card-C_E944_Z.cjs.map → card-DUq_MsxC.cjs.map} +1 -1
  35. package/dist/card.cjs +1 -1
  36. package/dist/card.js +1 -1
  37. package/dist/charts.cjs +1 -1
  38. package/dist/charts.js +1 -1
  39. package/dist/{checkbox-D7rvCrGk.js → checkbox-D18r6c0V.js} +1 -1
  40. package/dist/{checkbox-D7rvCrGk.js.map → checkbox-D18r6c0V.js.map} +1 -1
  41. package/dist/{checkbox-ZqDoCagB.cjs → checkbox-qPH_5Viu.cjs} +1 -1
  42. package/dist/{checkbox-ZqDoCagB.cjs.map → checkbox-qPH_5Viu.cjs.map} +1 -1
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/{chips-vdzIsesI.js → chips-0rKPqQt8.js} +3 -3
  46. package/dist/{chips-vdzIsesI.js.map → chips-0rKPqQt8.js.map} +1 -1
  47. package/dist/{chips-Cux635Qs.cjs → chips-BI_kt5BS.cjs} +1 -1
  48. package/dist/{chips-Cux635Qs.cjs.map → chips-BI_kt5BS.cjs.map} +1 -1
  49. package/dist/chips.cjs +1 -1
  50. package/dist/chips.js +2 -2
  51. package/dist/{code-highlight-D6yruol6.js → code-highlight-ClzG4FL4.js} +1 -1
  52. package/dist/{code-highlight-D6yruol6.js.map → code-highlight-ClzG4FL4.js.map} +1 -1
  53. package/dist/{code-highlight-C9lKek2p.cjs → code-highlight-DGInmDAW.cjs} +1 -1
  54. package/dist/{code-highlight-C9lKek2p.cjs.map → code-highlight-DGInmDAW.cjs.map} +1 -1
  55. package/dist/code-highlight.cjs +1 -1
  56. package/dist/code-highlight.js +1 -1
  57. package/dist/{components-ByRyEzz5.cjs → components-7hOtFi_q.cjs} +1 -1
  58. package/dist/{components-ByRyEzz5.cjs.map → components-7hOtFi_q.cjs.map} +1 -1
  59. package/dist/{components-DSvPKR9Q.js → components-RbvrLE3U.js} +1 -1
  60. package/dist/{components-DSvPKR9Q.js.map → components-RbvrLE3U.js.map} +1 -1
  61. package/dist/components.cjs +1 -1
  62. package/dist/components.js +1 -1
  63. package/dist/connectivity.cjs +1 -1
  64. package/dist/connectivity.js +1 -1
  65. package/dist/content-drawer.cjs +1 -1
  66. package/dist/content-drawer.js +1 -1
  67. package/dist/{date-range-DJsavigf.cjs → date-range-B0kW9np7.cjs} +1 -1
  68. package/dist/{date-range-DJsavigf.cjs.map → date-range-B0kW9np7.cjs.map} +1 -1
  69. package/dist/{date-range-tEX2Jx2j.js → date-range-CfIIPIA_.js} +2 -2
  70. package/dist/{date-range-tEX2Jx2j.js.map → date-range-CfIIPIA_.js.map} +1 -1
  71. package/dist/date-range.cjs +1 -1
  72. package/dist/date-range.js +1 -1
  73. package/dist/{delay-CZw37zps.js → delay-CPoyWZuQ.js} +3 -3
  74. package/dist/{delay-CZw37zps.js.map → delay-CPoyWZuQ.js.map} +1 -1
  75. package/dist/{delay-BvVdfhAR.cjs → delay-k_HiVnhP.cjs} +1 -1
  76. package/dist/{delay-BvVdfhAR.cjs.map → delay-k_HiVnhP.cjs.map} +1 -1
  77. package/dist/delay.cjs +1 -1
  78. package/dist/delay.js +1 -1
  79. package/dist/{details-D7VTnLOh.js → details-BU5kx0Jh.js} +1 -1
  80. package/dist/{details-D7VTnLOh.js.map → details-BU5kx0Jh.js.map} +1 -1
  81. package/dist/{details-Bhz8_whd.cjs → details-CQIbCUY0.cjs} +1 -1
  82. package/dist/{details-Bhz8_whd.cjs.map → details-CQIbCUY0.cjs.map} +1 -1
  83. package/dist/details.cjs +1 -1
  84. package/dist/details.js +1 -1
  85. package/dist/dialog.cjs +1 -1
  86. package/dist/dialog.js +1 -1
  87. package/dist/{divider-zS232JDr.js → divider-D9borfuG.js} +1 -1
  88. package/dist/{divider-zS232JDr.js.map → divider-D9borfuG.js.map} +1 -1
  89. package/dist/{divider-S0bHwCCS.cjs → divider-IX9sp29l.cjs} +1 -1
  90. package/dist/{divider-S0bHwCCS.cjs.map → divider-IX9sp29l.cjs.map} +1 -1
  91. package/dist/divider.cjs +1 -1
  92. package/dist/divider.js +1 -1
  93. package/dist/dropdown.cjs +1 -1
  94. package/dist/dropdown.js +2 -2
  95. package/dist/{expand-BXt9SqAF.js → expand-Dw9tbuFG.js} +2 -2
  96. package/dist/{expand-BXt9SqAF.js.map → expand-Dw9tbuFG.js.map} +1 -1
  97. package/dist/{expand-Dr7TFXpl.cjs → expand-dIrDcH9Y.cjs} +1 -1
  98. package/dist/{expand-Dr7TFXpl.cjs.map → expand-dIrDcH9Y.cjs.map} +1 -1
  99. package/dist/expand.cjs +1 -1
  100. package/dist/expand.js +1 -1
  101. package/dist/{extra-BmZTXAp0.cjs → extra-BFpPepJn.cjs} +1 -1
  102. package/dist/{extra-BmZTXAp0.cjs.map → extra-BFpPepJn.cjs.map} +1 -1
  103. package/dist/{extra-COYhsOyZ.js → extra-D3sZLtFY.js} +1 -1
  104. package/dist/{extra-COYhsOyZ.js.map → extra-D3sZLtFY.js.map} +1 -1
  105. package/dist/extra.cjs +1 -1
  106. package/dist/extra.js +1 -1
  107. package/dist/{float-DCXafWh6.js → float-BKd4pilD.js} +1 -1
  108. package/dist/{float-DCXafWh6.js.map → float-BKd4pilD.js.map} +1 -1
  109. package/dist/{float-CSRW-Rrd.cjs → float-CJ3SuEcG.cjs} +1 -1
  110. package/dist/{float-CSRW-Rrd.cjs.map → float-CJ3SuEcG.cjs.map} +1 -1
  111. package/dist/float.cjs +1 -1
  112. package/dist/float.js +1 -1
  113. package/dist/{icons-DPUeLS_Y.cjs → icons-1AkKNd7O.cjs} +1 -1
  114. package/dist/{icons-DPUeLS_Y.cjs.map → icons-1AkKNd7O.cjs.map} +1 -1
  115. package/dist/{icons-BbaI9Zf-.js → icons-DqIVrIIK.js} +1 -1
  116. package/dist/{icons-BbaI9Zf-.js.map → icons-DqIVrIIK.js.map} +1 -1
  117. package/dist/icons.cjs +1 -1
  118. package/dist/icons.js +1 -1
  119. package/dist/{iframe-Ct50FYXq.cjs → iframe-CtDetaw3.cjs} +1 -1
  120. package/dist/{iframe-Ct50FYXq.cjs.map → iframe-CtDetaw3.cjs.map} +1 -1
  121. package/dist/{iframe-CEDOvkql.js → iframe-D4R1Rq7G.js} +1 -1
  122. package/dist/{iframe-CEDOvkql.js.map → iframe-D4R1Rq7G.js.map} +1 -1
  123. package/dist/iframe.cjs +1 -1
  124. package/dist/iframe.js +1 -1
  125. package/dist/index.cjs +1 -1
  126. package/dist/index.js +31 -31
  127. package/dist/{input-chip-CI4__N8w.js → input-chip-B4uw64rQ.js} +1 -1
  128. package/dist/{input-chip-CI4__N8w.js.map → input-chip-B4uw64rQ.js.map} +1 -1
  129. package/dist/{input-chip-BhjGVpc3.cjs → input-chip-DY9IEbQj.cjs} +1 -1
  130. package/dist/{input-chip-BhjGVpc3.cjs.map → input-chip-DY9IEbQj.cjs.map} +1 -1
  131. package/dist/json.cjs +1 -1
  132. package/dist/json.js +2 -2
  133. package/dist/kbd.cjs +1 -1
  134. package/dist/kbd.js +1 -1
  135. package/dist/{layout-D7xOqMkJ.cjs → layout-B1gXjlIO.cjs} +1 -1
  136. package/dist/{layout-D7xOqMkJ.cjs.map → layout-B1gXjlIO.cjs.map} +1 -1
  137. package/dist/{layout-uAQpJN31.js → layout-Dh0qW7XU.js} +2 -2
  138. package/dist/{layout-uAQpJN31.js.map → layout-Dh0qW7XU.js.map} +1 -1
  139. package/dist/layout.cjs +1 -1
  140. package/dist/layout.js +2 -2
  141. package/dist/{lightbox-C0OEHns9.js → lightbox-BM_Bpk_l.js} +2 -2
  142. package/dist/{lightbox-C0OEHns9.js.map → lightbox-BM_Bpk_l.js.map} +1 -1
  143. package/dist/{lightbox-cXRnvHMN.cjs → lightbox-BUuGltX9.cjs} +1 -1
  144. package/dist/{lightbox-cXRnvHMN.cjs.map → lightbox-BUuGltX9.cjs.map} +1 -1
  145. package/dist/lightbox.cjs +1 -1
  146. package/dist/lightbox.js +1 -1
  147. package/dist/{list-CmJ5h35b.cjs → list-C1GMiAi_.cjs} +1 -1
  148. package/dist/{list-CmJ5h35b.cjs.map → list-C1GMiAi_.cjs.map} +1 -1
  149. package/dist/{list-d1mHar5p.js → list-DrF_av2K.js} +2 -2
  150. package/dist/{list-d1mHar5p.js.map → list-DrF_av2K.js.map} +1 -1
  151. package/dist/list.cjs +1 -1
  152. package/dist/list.js +1 -1
  153. package/dist/{litElement.mixin-CncaUoxz.js → litElement.mixin-D6ZHgGZv.js} +1 -1
  154. package/dist/{litElement.mixin-CncaUoxz.js.map → litElement.mixin-D6ZHgGZv.js.map} +1 -1
  155. package/dist/{litElement.mixin-Bj2q1yPw.cjs → litElement.mixin-De5SG5z7.cjs} +1 -1
  156. package/dist/{litElement.mixin-Bj2q1yPw.cjs.map → litElement.mixin-De5SG5z7.cjs.map} +1 -1
  157. package/dist/{mailbox-C4-E93be.js → mailbox-BjB502y9.js} +4 -4
  158. package/dist/{mailbox-C4-E93be.js.map → mailbox-BjB502y9.js.map} +1 -1
  159. package/dist/{mailbox-BmChskZc.cjs → mailbox-D0iXsqyx.cjs} +1 -1
  160. package/dist/{mailbox-BmChskZc.cjs.map → mailbox-D0iXsqyx.cjs.map} +1 -1
  161. package/dist/mailbox.cjs +1 -1
  162. package/dist/mailbox.js +1 -1
  163. package/dist/{map-DHyYLhvy.js → map-BZTxFRVH.js} +1 -1
  164. package/dist/{map-DHyYLhvy.js.map → map-BZTxFRVH.js.map} +1 -1
  165. package/dist/{map-DYEvlNl0.cjs → map-uRYJeifl.cjs} +1 -1
  166. package/dist/{map-DYEvlNl0.cjs.map → map-uRYJeifl.cjs.map} +1 -1
  167. package/dist/map.cjs +1 -1
  168. package/dist/map.js +1 -1
  169. package/dist/{menu-DFDBADp4.js → menu-BamT46lt.js} +1 -1
  170. package/dist/{menu-DFDBADp4.js.map → menu-BamT46lt.js.map} +1 -1
  171. package/dist/{menu-BlPTI6H9.cjs → menu-CXFa_bk4.cjs} +1 -1
  172. package/dist/{menu-BlPTI6H9.cjs.map → menu-CXFa_bk4.cjs.map} +1 -1
  173. package/dist/menu.cjs +1 -1
  174. package/dist/menu.js +1 -1
  175. package/dist/mixins.cjs +1 -1
  176. package/dist/mixins.js +2 -2
  177. package/dist/nav-drawer.cjs +1 -1
  178. package/dist/nav-drawer.js +1 -1
  179. package/dist/navigation-bar.cjs +1 -1
  180. package/dist/navigation-bar.js +1 -1
  181. package/dist/navigation-rail.cjs +1 -1
  182. package/dist/navigation-rail.js +1 -1
  183. package/dist/{notification-DGpv8g2H.js → notification-COgjQodt.js} +2 -2
  184. package/dist/{notification-DGpv8g2H.js.map → notification-COgjQodt.js.map} +1 -1
  185. package/dist/{notification-DKVWYhqs.cjs → notification-Xid-o7gi.cjs} +1 -1
  186. package/dist/{notification-DKVWYhqs.cjs.map → notification-Xid-o7gi.cjs.map} +1 -1
  187. package/dist/notification.cjs +1 -1
  188. package/dist/notification.js +1 -1
  189. package/dist/{option-LtSDy2xf.cjs → option-CNWUeHW3.cjs} +1 -1
  190. package/dist/{option-LtSDy2xf.cjs.map → option-CNWUeHW3.cjs.map} +1 -1
  191. package/dist/{option-BD2eh458.js → option-DdYe_l1A.js} +1 -1
  192. package/dist/{option-BD2eh458.js.map → option-DdYe_l1A.js.map} +1 -1
  193. package/dist/option.cjs +1 -1
  194. package/dist/option.js +1 -1
  195. package/dist/page.cjs +1 -1
  196. package/dist/page.js +2 -2
  197. package/dist/{progress-B5ChDPbB.cjs → progress-Bw-VD6wH.cjs} +1 -1
  198. package/dist/{progress-B5ChDPbB.cjs.map → progress-Bw-VD6wH.cjs.map} +1 -1
  199. package/dist/{progress-CE1Pk2hi.js → progress-OQvbUkDs.js} +1 -1
  200. package/dist/{progress-CE1Pk2hi.js.map → progress-OQvbUkDs.js.map} +1 -1
  201. package/dist/progress.cjs +1 -1
  202. package/dist/progress.js +1 -1
  203. package/dist/{provide-jn1Fj1vv.js → provide-C4L6R1lo.js} +1 -1
  204. package/dist/{provide-jn1Fj1vv.js.map → provide-C4L6R1lo.js.map} +1 -1
  205. package/dist/{provide-BZ9lq_Be.cjs → provide-Dsoh3FdP.cjs} +1 -1
  206. package/dist/{provide-BZ9lq_Be.cjs.map → provide-Dsoh3FdP.cjs.map} +1 -1
  207. package/dist/qr-scanner.cjs +1 -1
  208. package/dist/qr-scanner.js +1 -1
  209. package/dist/{radio-group-Cd9pZ2MR.cjs → radio-group-D5t8f2Ob.cjs} +1 -1
  210. package/dist/{radio-group-Cd9pZ2MR.cjs.map → radio-group-D5t8f2Ob.cjs.map} +1 -1
  211. package/dist/{radio-group-CyRHgIF3.js → radio-group-DI1JXW5r.js} +1 -1
  212. package/dist/{radio-group-CyRHgIF3.js.map → radio-group-DI1JXW5r.js.map} +1 -1
  213. package/dist/radio-group.cjs +1 -1
  214. package/dist/radio-group.js +1 -1
  215. package/dist/range.cjs +1 -1
  216. package/dist/range.js +1 -1
  217. package/dist/{scroll-C_iNOi7E.cjs → scroll-BG5qMncw.cjs} +1 -1
  218. package/dist/{scroll-C_iNOi7E.cjs.map → scroll-BG5qMncw.cjs.map} +1 -1
  219. package/dist/{scroll-DoliwpRu.js → scroll-Dym-6yPI.js} +1 -1
  220. package/dist/{scroll-DoliwpRu.js.map → scroll-Dym-6yPI.js.map} +1 -1
  221. package/dist/{select-CWWuZ2iJ.cjs → select-B1nN5Ac4.cjs} +1 -1
  222. package/dist/{select-CWWuZ2iJ.cjs.map → select-B1nN5Ac4.cjs.map} +1 -1
  223. package/dist/{select-_vHPXi30.js → select-C3L3imJM.js} +1 -1
  224. package/dist/{select-_vHPXi30.js.map → select-C3L3imJM.js.map} +1 -1
  225. package/dist/select.cjs +1 -1
  226. package/dist/select.js +1 -1
  227. package/dist/{sheet-i1KtxGIj.js → sheet-BS9WlMaj.js} +3 -3
  228. package/dist/{sheet-i1KtxGIj.js.map → sheet-BS9WlMaj.js.map} +1 -1
  229. package/dist/{sheet-r0oEYIdi.cjs → sheet-BZRMpyXt.cjs} +1 -1
  230. package/dist/{sheet-r0oEYIdi.cjs.map → sheet-BZRMpyXt.cjs.map} +1 -1
  231. package/dist/sheet.cjs +1 -1
  232. package/dist/sheet.js +2 -2
  233. package/dist/{sheet.service-DUO5_kmI.js → sheet.service-DQWkiYEe.js} +1 -1
  234. package/dist/{sheet.service-DUO5_kmI.js.map → sheet.service-DQWkiYEe.js.map} +1 -1
  235. package/dist/{sheet.service-Cr13Oo6G.cjs → sheet.service-l9jTUaot.cjs} +1 -1
  236. package/dist/{sheet.service-Cr13Oo6G.cjs.map → sheet.service-l9jTUaot.cjs.map} +1 -1
  237. package/dist/skeleton.cjs +1 -1
  238. package/dist/skeleton.js +1 -1
  239. package/dist/skills/INDEX.md +1 -1
  240. package/dist/skills/SKILL.md +1 -1
  241. package/dist/skills/schmancy/INDEX.md +1 -1
  242. package/dist/skills/schmancy/SKILL.md +1 -1
  243. package/dist/skills/schmancy/surface.md +14 -0
  244. package/dist/skills/schmancy/theme.md +83 -5
  245. package/dist/skills/surface.md +14 -0
  246. package/dist/skills/theme.md +83 -5
  247. package/dist/slider.cjs +1 -1
  248. package/dist/slider.js +1 -1
  249. package/dist/{splash-screen-CquyPP1C.cjs → splash-screen-DuFJ0gbD.cjs} +1 -1
  250. package/dist/{splash-screen-CquyPP1C.cjs.map → splash-screen-DuFJ0gbD.cjs.map} +1 -1
  251. package/dist/{splash-screen-CvucPkpD.js → splash-screen-M-v_jiLs.js} +1 -1
  252. package/dist/{splash-screen-CvucPkpD.js.map → splash-screen-M-v_jiLs.js.map} +1 -1
  253. package/dist/splash-screen.cjs +1 -1
  254. package/dist/splash-screen.js +1 -1
  255. package/dist/{src-Bemk2C2P.cjs → src-Ba-S6DFW.cjs} +1 -1
  256. package/dist/{src-Bemk2C2P.cjs.map → src-Ba-S6DFW.cjs.map} +1 -1
  257. package/dist/{src-f5a3W9Mj.js → src-CbR3znbw.js} +40 -40
  258. package/dist/{src-f5a3W9Mj.js.map → src-CbR3znbw.js.map} +1 -1
  259. package/dist/steps.cjs +1 -1
  260. package/dist/steps.js +3 -3
  261. package/dist/{surface-CDufon40.cjs → surface-PECoCLgx.cjs} +1 -1
  262. package/dist/{surface-CDufon40.cjs.map → surface-PECoCLgx.cjs.map} +1 -1
  263. package/dist/{surface-CkEYJCae.js → surface-kM2aYH4g.js} +2 -2
  264. package/dist/{surface-CkEYJCae.js.map → surface-kM2aYH4g.js.map} +1 -1
  265. package/dist/surface.cjs +1 -1
  266. package/dist/surface.js +1 -1
  267. package/dist/switch.cjs +1 -1
  268. package/dist/switch.js +1 -1
  269. package/dist/{table-DWc1mkpj.cjs → table-CENjXiu-.cjs} +1 -1
  270. package/dist/{table-DWc1mkpj.cjs.map → table-CENjXiu-.cjs.map} +1 -1
  271. package/dist/{table-P6VGG7NK.js → table-DrMgc8Aw.js} +1 -1
  272. package/dist/{table-P6VGG7NK.js.map → table-DrMgc8Aw.js.map} +1 -1
  273. package/dist/table.cjs +1 -1
  274. package/dist/table.js +1 -1
  275. package/dist/{tabs-CjGjGrqY.js → tabs-BvFiM0y-.js} +2 -2
  276. package/dist/{tabs-CjGjGrqY.js.map → tabs-BvFiM0y-.js.map} +1 -1
  277. package/dist/{tabs-DGJEKuhC.cjs → tabs-CRA9FMNl.cjs} +1 -1
  278. package/dist/{tabs-DGJEKuhC.cjs.map → tabs-CRA9FMNl.cjs.map} +1 -1
  279. package/dist/tabs.cjs +1 -1
  280. package/dist/tabs.js +1 -1
  281. package/dist/tailwind.mixin-Bug3G6K6.cjs +2 -0
  282. package/dist/{tailwind.mixin-Cpa-VnnX.cjs.map → tailwind.mixin-Bug3G6K6.cjs.map} +1 -1
  283. package/dist/tailwind.mixin-ywtUNG2c.js +219 -0
  284. package/dist/{tailwind.mixin-DufHBjmb.js.map → tailwind.mixin-ywtUNG2c.js.map} +1 -1
  285. package/dist/teleport.cjs +1 -1
  286. package/dist/teleport.js +1 -1
  287. package/dist/{textarea-jmTOXrzl.cjs → textarea-CfwGEIvf.cjs} +1 -1
  288. package/dist/{textarea-jmTOXrzl.cjs.map → textarea-CfwGEIvf.cjs.map} +1 -1
  289. package/dist/{textarea-DZT_Ofp5.js → textarea-DD5gxIsG.js} +1 -1
  290. package/dist/{textarea-DZT_Ofp5.js.map → textarea-DD5gxIsG.js.map} +1 -1
  291. package/dist/textarea.cjs +1 -1
  292. package/dist/textarea.js +1 -1
  293. package/dist/{theme-CCKqaksQ.cjs → theme-BiM_CUpn.cjs} +1 -1
  294. package/dist/{theme-CCKqaksQ.cjs.map → theme-BiM_CUpn.cjs.map} +1 -1
  295. package/dist/{theme-CEc32pAv.js → theme-DNJmVFXF.js} +3 -3
  296. package/dist/{theme-CEc32pAv.js.map → theme-DNJmVFXF.js.map} +1 -1
  297. package/dist/{theme-button-dOiAvdKU.js → theme-button-19T3SFrv.js} +1 -1
  298. package/dist/{theme-button-dOiAvdKU.js.map → theme-button-19T3SFrv.js.map} +1 -1
  299. package/dist/{theme-button-BsJcv-Zv.cjs → theme-button-BwJs6N4k.cjs} +1 -1
  300. package/dist/{theme-button-BsJcv-Zv.cjs.map → theme-button-BwJs6N4k.cjs.map} +1 -1
  301. package/dist/theme-button.cjs +1 -1
  302. package/dist/theme-button.js +1 -1
  303. package/dist/theme.cjs +1 -1
  304. package/dist/theme.js +2 -2
  305. package/dist/tree.cjs +1 -1
  306. package/dist/tree.js +1 -1
  307. package/dist/{typewriter-ByIL2Mh-.cjs → typewriter-BH7nsW7R.cjs} +1 -1
  308. package/dist/{typewriter-ByIL2Mh-.cjs.map → typewriter-BH7nsW7R.cjs.map} +1 -1
  309. package/dist/{typewriter-vOQ3bDLb.js → typewriter-Z-8bbwOh.js} +3 -3
  310. package/dist/{typewriter-vOQ3bDLb.js.map → typewriter-Z-8bbwOh.js.map} +1 -1
  311. package/dist/typewriter.cjs +1 -1
  312. package/dist/typewriter.js +1 -1
  313. package/dist/typography.cjs +1 -1
  314. package/dist/typography.js +1 -1
  315. package/dist/visually-hidden.cjs +1 -1
  316. package/dist/visually-hidden.js +1 -1
  317. package/dist/{window-WnAihpsA.js → window-Du_ougyw.js} +1 -1
  318. package/dist/{window-WnAihpsA.js.map → window-Du_ougyw.js.map} +1 -1
  319. package/dist/{window-BS7ZQjgH.cjs → window-NDXXyj5v.cjs} +1 -1
  320. package/dist/{window-BS7ZQjgH.cjs.map → window-NDXXyj5v.cjs.map} +1 -1
  321. package/dist/window.cjs +1 -1
  322. package/dist/window.js +1 -1
  323. package/package.json +1 -1
  324. package/skills/schmancy/INDEX.md +1 -1
  325. package/skills/schmancy/SKILL.md +1 -1
  326. package/skills/schmancy/surface.md +14 -0
  327. package/skills/schmancy/theme.md +83 -5
  328. package/dist/tailwind.mixin-Cpa-VnnX.cjs +0 -2
  329. package/dist/tailwind.mixin-DufHBjmb.js +0 -219
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.service-DUO5_kmI.js","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
1
+ {"version":3,"file":"sheet.service-DQWkiYEe.js","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
@@ -1 +1 @@
1
- require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./audio-DUVz7Ars.cjs`),n=require(`./overlay-stack-CEYGD9T1.cjs`);let r=require(`rxjs`);var i=function(e){return e.Side=`side`,e.Bottom=`bottom`,e}({}),a=new class{constructor(){this.bottomSheet=new r.Subject,this.activeSheets=new Set,this.popStateListenerActive=!1,this.setupSheetOpeningLogic(),this.setupPopStateListener()}setupSheetOpeningLogic(){this.bottomSheet.pipe((0,r.switchMap)(t=>{let n=t.uid??`sheet-${Date.now()}`;return e.p(`schmancy-sheet`).pipe((0,r.map)(e=>({target:t,existingSheet:e?.getAttribute(`uid`)===n?e:null,uid:n})))}),(0,r.switchMap)(({target:t,existingSheet:n,uid:i})=>n?(0,r.of)({target:t,sheet:n,uid:i}):e.p(`schmancy-theme`).pipe((0,r.map)(e=>{let n=e||document.body,r=document.createElement(`schmancy-sheet`);return r.setAttribute(`uid`,i),n.appendChild(r),{target:t,sheet:r,uid:i}}))),(0,r.tap)(({target:e,sheet:t})=>{e.lock&&t.setAttribute(`lock`,`true`);let r=e.position||(window.innerWidth>=768?i.Side:i.Bottom);t.setAttribute(`position`,r),e.persist&&t.setAttribute(`persist`,String(e.persist)),t.style.setProperty(`--schmancy-overlay-z`,String(n.t.getNextZIndex())),document.body.style.overflow=`hidden`}),(0,r.delay)(20),(0,r.tap)(({target:e,uid:t})=>{window.dispatchEvent(new CustomEvent(`schmancy-sheet-render`,{detail:{component:e.component,uid:t,props:e.props},bubbles:!0,composed:!0}))}),(0,r.delay)(1),(0,r.tap)(({sheet:e,uid:i})=>{e.setAttribute(`open`,`true`),t.t.play(`curious`),this.activeSheets.add(i),(0,r.fromEvent)(e,`close`).pipe((0,r.take)(1),(0,r.delay)(300)).subscribe(()=>{this.activeSheets.delete(i),n.t.release();let t=e.getAttribute(`persist`);t&&t!==`false`||e.remove(),document.body.style.overflow=`auto`})})).subscribe()}setupPopStateListener(){this.popStateListenerActive||=((0,r.fromEvent)(window,`popstate`).subscribe(e=>{if(this.activeSheets.size>0){let t=Array.from(this.activeSheets).pop();t&&(this.dismiss(t),e.state&&e.state.schmancySheet&&history.pushState({},``,window.location.href))}}),!0)}dismiss(e){if(!e&&this.activeSheets.size>0){let t=Array.from(this.activeSheets);e=t[t.length-1]}e&&(t.t.play(`atEase`),window.dispatchEvent(new CustomEvent(`schmancy-sheet-dismiss`,{detail:{uid:e},bubbles:!0,composed:!0})),this.activeSheets.delete(e))}open(e){this.bottomSheet.next(e)}push(e){this.bottomSheet.next(e)}isOpen(e){return this.activeSheets.has(e)}closeAll(){Array.from(this.activeSheets).forEach(e=>{this.dismiss(e)})}};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Bug3G6K6.cjs`),t=require(`./audio-DUVz7Ars.cjs`),n=require(`./overlay-stack-CEYGD9T1.cjs`);let r=require(`rxjs`);var i=function(e){return e.Side=`side`,e.Bottom=`bottom`,e}({}),a=new class{constructor(){this.bottomSheet=new r.Subject,this.activeSheets=new Set,this.popStateListenerActive=!1,this.setupSheetOpeningLogic(),this.setupPopStateListener()}setupSheetOpeningLogic(){this.bottomSheet.pipe((0,r.switchMap)(t=>{let n=t.uid??`sheet-${Date.now()}`;return e.p(`schmancy-sheet`).pipe((0,r.map)(e=>({target:t,existingSheet:e?.getAttribute(`uid`)===n?e:null,uid:n})))}),(0,r.switchMap)(({target:t,existingSheet:n,uid:i})=>n?(0,r.of)({target:t,sheet:n,uid:i}):e.p(`schmancy-theme`).pipe((0,r.map)(e=>{let n=e||document.body,r=document.createElement(`schmancy-sheet`);return r.setAttribute(`uid`,i),n.appendChild(r),{target:t,sheet:r,uid:i}}))),(0,r.tap)(({target:e,sheet:t})=>{e.lock&&t.setAttribute(`lock`,`true`);let r=e.position||(window.innerWidth>=768?i.Side:i.Bottom);t.setAttribute(`position`,r),e.persist&&t.setAttribute(`persist`,String(e.persist)),t.style.setProperty(`--schmancy-overlay-z`,String(n.t.getNextZIndex())),document.body.style.overflow=`hidden`}),(0,r.delay)(20),(0,r.tap)(({target:e,uid:t})=>{window.dispatchEvent(new CustomEvent(`schmancy-sheet-render`,{detail:{component:e.component,uid:t,props:e.props},bubbles:!0,composed:!0}))}),(0,r.delay)(1),(0,r.tap)(({sheet:e,uid:i})=>{e.setAttribute(`open`,`true`),t.t.play(`curious`),this.activeSheets.add(i),(0,r.fromEvent)(e,`close`).pipe((0,r.take)(1),(0,r.delay)(300)).subscribe(()=>{this.activeSheets.delete(i),n.t.release();let t=e.getAttribute(`persist`);t&&t!==`false`||e.remove(),document.body.style.overflow=`auto`})})).subscribe()}setupPopStateListener(){this.popStateListenerActive||=((0,r.fromEvent)(window,`popstate`).subscribe(e=>{if(this.activeSheets.size>0){let t=Array.from(this.activeSheets).pop();t&&(this.dismiss(t),e.state&&e.state.schmancySheet&&history.pushState({},``,window.location.href))}}),!0)}dismiss(e){if(!e&&this.activeSheets.size>0){let t=Array.from(this.activeSheets);e=t[t.length-1]}e&&(t.t.play(`atEase`),window.dispatchEvent(new CustomEvent(`schmancy-sheet-dismiss`,{detail:{uid:e},bubbles:!0,composed:!0})),this.activeSheets.delete(e))}open(e){this.bottomSheet.next(e)}push(e){this.bottomSheet.next(e)}isOpen(e){return this.activeSheets.has(e)}closeAll(){Array.from(this.activeSheets).forEach(e=>{this.dismiss(e)})}};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.service-Cr13Oo6G.cjs","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"mLAgBA,IAAY,EAAL,SAAA,EAAA,CAAA,MACN,GAAA,KAAO,OACP,EAAA,OAAS,SAAA,GAFH,EAAA,CAAA,CA0NM,EAAQ,IAjMrB,KAAA,CAOC,aAAA,CAAA,KAAA,YANc,IAAI,EAAA,QAAA,KAAA,aAEK,IAAI,IAAA,KAAA,uBAAA,CAEM,EAGhC,KAAK,wBAAA,CACL,KAAK,uBAAA,CAMN,wBAAA,CACC,KAAK,YACH,MAAA,EAAA,EAAA,WACU,GAAA,CACT,IAAM,EAAM,EAAO,KAAO,SAAS,KAAK,KAAA,GAGxC,OAAO,EAAA,EAAiC,iBAAA,CAAkB,MAAA,EAAA,EAAA,KACrD,IAGI,CAAE,OAAA,EAAQ,cADH,GAAe,aAAa,MAAA,GAAW,EAAM,EAAgB,KACpC,IAAA,EAAA,EAAA,CAAA,EAAA,EAGxC,EAAA,EAAA,YAAA,CACW,OAAA,EAAQ,cAAA,EAAe,IAAA,KAE/B,GACH,EAAA,EAAA,IAAU,CAAE,OAAA,EAAQ,MAAO,EAAe,IAAA,EAAA,CAAA,CAGpC,EAAA,EAA+B,iBAAA,CAAkB,MAAA,EAAA,EAAA,KACnD,GAAA,CAEH,IAAM,EAAkB,GAAS,SAAS,KAGpC,EAAQ,SAAS,cAAc,iBAAA,CAIrC,OAHA,EAAM,aAAa,MAAO,EAAA,CAC1B,EAAgB,YAAY,EAAA,CAErB,CAAE,OAAA,EAAe,MAAA,EAAwB,IAAA,EAAA,EAAA,CAAA,CAAA,EAGjD,EAAA,EAAA,MAAA,CACK,OAAA,EAAQ,MAAA,KAAA,CAEV,EAAO,MAAM,EAAM,aAAa,OAAQ,OAAA,CAE5C,IAAM,EAAW,EAAO,WAzDrB,OAAO,YAAc,IAAM,EAAsB,KAAO,EAAsB,QA0DjF,EAAM,aAAa,WAAY,EAAA,CAE3B,EAAO,SAAS,EAAM,aAAa,UAAW,OAAO,EAAO,QAAA,CAAA,CAGhE,EAAM,MAAM,YAAY,uBAAwB,OAAO,EAAA,EAAa,eAAA,CAAA,CAAA,CAEpE,SAAS,KAAK,MAAM,SAAW,UAAA,EAC9B,EAAA,EAAA,OACI,GAAA,EAAG,EAAA,EAAA,MAAA,CACF,OAAA,EAAQ,IAAA,KAAA,CAEd,OAAO,cACN,IAAI,YAAY,wBAAyB,CACxC,OAAQ,CACP,UAAW,EAAO,UAClB,IAAA,EACA,MAAO,EAAO,MAAA,CAEf,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,EAAA,EAGX,EAAA,EAAA,OACI,EAAA,EAAE,EAAA,EAAA,MAAA,CACD,MAAA,EAAO,IAAA,KAAA,CACb,EAAM,aAAa,OAAQ,OAAA,CAC3B,EAAA,EAAQ,KAAK,UAAA,CAGb,KAAK,aAAa,IAAI,EAAA,EAGtB,EAAA,EAAA,WAAuB,EAAO,QAAA,CAC5B,MAAA,EAAA,EAAA,MAAU,EAAA,EAAE,EAAA,EAAA,OAAQ,IAAA,CAAA,CACpB,cAAA,CAEA,KAAK,aAAa,OAAO,EAAA,CACzB,EAAA,EAAa,SAAA,CAGb,IAAM,EAAc,EAAM,aAAa,UAAA,CACjB,GAAe,IAAgB,SAGpD,EAAM,QAAA,CAGP,SAAS,KAAK,MAAM,SAAW,QAAA,EAAA,CAAA,CAIlC,WAAA,CAMH,uBAAA,CACK,AAmBJ,KAAK,2BAjBL,EAAA,EAAA,WAAyB,OAAQ,WAAA,CAAY,UAAU,GAAA,CAEtD,GAAI,KAAK,aAAa,KAAO,EAAG,CAE/B,IAAM,EAAY,MAAM,KAAK,KAAK,aAAA,CAAc,KAAA,CAC5C,IACH,KAAK,QAAQ,EAAA,CAIT,EAAM,OAAS,EAAM,MAAM,eAC9B,QAAQ,UAAU,EAAA,CAAI,GAAI,OAAO,SAAS,KAAA,IAAA,CAMzC,CAAyB,GAM/B,QAAQ,EAAA,CACP,GAAA,CAAK,GAAO,KAAK,aAAa,KAAO,EAAG,CAEvC,IAAM,EAAc,MAAM,KAAK,KAAK,aAAA,CACpC,EAAM,EAAY,EAAY,OAAS,GAGpC,IACH,EAAA,EAAQ,KAAK,SAAA,CACb,OAAO,cACN,IAAI,YAAY,yBAA0B,CACzC,OAAQ,CAAE,IAAA,EAAA,CACV,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAGZ,KAAK,aAAa,OAAO,EAAA,EAQ3B,KAAK,EAAA,CACJ,KAAK,YAAY,KAAK,EAAA,CAOvB,KAAK,EAAA,CACJ,KAAK,YAAY,KAAK,EAAA,CAMvB,OAAO,EAAA,CACN,OAAO,KAAK,aAAa,IAAI,EAAA,CAM9B,UAAA,CAEC,MAAM,KAAK,KAAK,aAAA,CAAc,QAAQ,GAAA,CACrC,KAAK,QAAQ,EAAA,EAAA,GAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"sheet.service-l9jTUaot.cjs","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"mLAgBA,IAAY,EAAL,SAAA,EAAA,CAAA,MACN,GAAA,KAAO,OACP,EAAA,OAAS,SAAA,GAFH,EAAA,CAAA,CA0NM,EAAQ,IAjMrB,KAAA,CAOC,aAAA,CAAA,KAAA,YANc,IAAI,EAAA,QAAA,KAAA,aAEK,IAAI,IAAA,KAAA,uBAAA,CAEM,EAGhC,KAAK,wBAAA,CACL,KAAK,uBAAA,CAMN,wBAAA,CACC,KAAK,YACH,MAAA,EAAA,EAAA,WACU,GAAA,CACT,IAAM,EAAM,EAAO,KAAO,SAAS,KAAK,KAAA,GAGxC,OAAO,EAAA,EAAiC,iBAAA,CAAkB,MAAA,EAAA,EAAA,KACrD,IAGI,CAAE,OAAA,EAAQ,cADH,GAAe,aAAa,MAAA,GAAW,EAAM,EAAgB,KACpC,IAAA,EAAA,EAAA,CAAA,EAAA,EAGxC,EAAA,EAAA,YAAA,CACW,OAAA,EAAQ,cAAA,EAAe,IAAA,KAE/B,GACH,EAAA,EAAA,IAAU,CAAE,OAAA,EAAQ,MAAO,EAAe,IAAA,EAAA,CAAA,CAGpC,EAAA,EAA+B,iBAAA,CAAkB,MAAA,EAAA,EAAA,KACnD,GAAA,CAEH,IAAM,EAAkB,GAAS,SAAS,KAGpC,EAAQ,SAAS,cAAc,iBAAA,CAIrC,OAHA,EAAM,aAAa,MAAO,EAAA,CAC1B,EAAgB,YAAY,EAAA,CAErB,CAAE,OAAA,EAAe,MAAA,EAAwB,IAAA,EAAA,EAAA,CAAA,CAAA,EAGjD,EAAA,EAAA,MAAA,CACK,OAAA,EAAQ,MAAA,KAAA,CAEV,EAAO,MAAM,EAAM,aAAa,OAAQ,OAAA,CAE5C,IAAM,EAAW,EAAO,WAzDrB,OAAO,YAAc,IAAM,EAAsB,KAAO,EAAsB,QA0DjF,EAAM,aAAa,WAAY,EAAA,CAE3B,EAAO,SAAS,EAAM,aAAa,UAAW,OAAO,EAAO,QAAA,CAAA,CAGhE,EAAM,MAAM,YAAY,uBAAwB,OAAO,EAAA,EAAa,eAAA,CAAA,CAAA,CAEpE,SAAS,KAAK,MAAM,SAAW,UAAA,EAC9B,EAAA,EAAA,OACI,GAAA,EAAG,EAAA,EAAA,MAAA,CACF,OAAA,EAAQ,IAAA,KAAA,CAEd,OAAO,cACN,IAAI,YAAY,wBAAyB,CACxC,OAAQ,CACP,UAAW,EAAO,UAClB,IAAA,EACA,MAAO,EAAO,MAAA,CAEf,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,EAAA,EAGX,EAAA,EAAA,OACI,EAAA,EAAE,EAAA,EAAA,MAAA,CACD,MAAA,EAAO,IAAA,KAAA,CACb,EAAM,aAAa,OAAQ,OAAA,CAC3B,EAAA,EAAQ,KAAK,UAAA,CAGb,KAAK,aAAa,IAAI,EAAA,EAGtB,EAAA,EAAA,WAAuB,EAAO,QAAA,CAC5B,MAAA,EAAA,EAAA,MAAU,EAAA,EAAE,EAAA,EAAA,OAAQ,IAAA,CAAA,CACpB,cAAA,CAEA,KAAK,aAAa,OAAO,EAAA,CACzB,EAAA,EAAa,SAAA,CAGb,IAAM,EAAc,EAAM,aAAa,UAAA,CACjB,GAAe,IAAgB,SAGpD,EAAM,QAAA,CAGP,SAAS,KAAK,MAAM,SAAW,QAAA,EAAA,CAAA,CAIlC,WAAA,CAMH,uBAAA,CACK,AAmBJ,KAAK,2BAjBL,EAAA,EAAA,WAAyB,OAAQ,WAAA,CAAY,UAAU,GAAA,CAEtD,GAAI,KAAK,aAAa,KAAO,EAAG,CAE/B,IAAM,EAAY,MAAM,KAAK,KAAK,aAAA,CAAc,KAAA,CAC5C,IACH,KAAK,QAAQ,EAAA,CAIT,EAAM,OAAS,EAAM,MAAM,eAC9B,QAAQ,UAAU,EAAA,CAAI,GAAI,OAAO,SAAS,KAAA,IAAA,CAMzC,CAAyB,GAM/B,QAAQ,EAAA,CACP,GAAA,CAAK,GAAO,KAAK,aAAa,KAAO,EAAG,CAEvC,IAAM,EAAc,MAAM,KAAK,KAAK,aAAA,CACpC,EAAM,EAAY,EAAY,OAAS,GAGpC,IACH,EAAA,EAAQ,KAAK,SAAA,CACb,OAAO,cACN,IAAI,YAAY,yBAA0B,CACzC,OAAQ,CAAE,IAAA,EAAA,CACV,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAGZ,KAAK,aAAa,OAAO,EAAA,EAQ3B,KAAK,EAAA,CACJ,KAAK,YAAY,KAAK,EAAA,CAOvB,KAAK,EAAA,CACJ,KAAK,YAAY,KAAK,EAAA,CAMvB,OAAO,EAAA,CACN,OAAO,KAAK,aAAa,IAAI,EAAA,CAM9B,UAAA,CAEC,MAAM,KAAK,KAAK,aAAA,CAAc,QAAQ,GAAA,CACrC,KAAK,QAAQ,EAAA,EAAA,GAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
package/dist/skeleton.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(r.css`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Bug3G6K6.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(r.css`
2
2
  :host {
3
3
  display: block;
4
4
  width: var(--_sw, 100%);
package/dist/skeleton.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./tailwind.mixin-DufHBjmb.js";
1
+ import { t as e } from "./tailwind.mixin-ywtUNG2c.js";
2
2
  import { t } from "./decorate-D_utPUsC.js";
3
3
  import "./mixins.js";
4
4
  import { customElement as n, property as r } from "lit/decorators.js";
@@ -69,5 +69,5 @@ The framework pieces — touch before components.
69
69
  - Conditionals use `when(...)`, `choose(...)`, `ifDefined(...)`.
70
70
  - All RxJS subscriptions end with `.pipe(takeUntil(this.disconnecting))`.
71
71
  - Don't use `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
72
- - Colors come from `--schmancy-sys-color-*` CSS vars or Tailwind theme classes.
72
+ - Colors: prefer Tailwind shortcut utilities (`bg-surface-default`, `text-error-default`, `border-outline-variant`) over `bg-[var(--schmancy-sys-color-X)]`. Token map in [theme.md § Tailwind utilities](./theme.md#tailwind-utilities).
73
73
  - `classMap(...)` must be the sole expression in `class=`; never mix with string interpolation.
@@ -72,7 +72,7 @@ Use component tags (`<schmancy-menu>`, `<schmancy-dropdown>`, `<schmancy-tooltip
72
72
  - `classMap(this.classMap({...}))` must be the sole expression in `class=` — never mix with string interpolation.
73
73
 
74
74
  **Styling**
75
- - Colors: `--schmancy-sys-color-*` CSS vars or Tailwind theme classes. Never hardcoded hex.
75
+ - Colors: prefer Tailwind shortcut utilities (`bg-surface-default`, `text-error-default`, `border-outline-variant`) over the arbitrary-value form (`bg-[var(--schmancy-sys-color-X)]`). Every `--schmancy-sys-color-*` token is aliased to `--color-*`, which Tailwind v4 auto-generates into `bg-*`/`text-*`/`border-*`/etc. Full token map: [theme.md § Tailwind utilities](./theme.md#tailwind-utilities). Use the arbitrary-value form only when the token isn't aliased. Never hardcoded hex.
76
76
  - No `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
77
77
 
78
78
  **Accessibility (combobox forms)**
@@ -69,5 +69,5 @@ The framework pieces — touch before components.
69
69
  - Conditionals use `when(...)`, `choose(...)`, `ifDefined(...)`.
70
70
  - All RxJS subscriptions end with `.pipe(takeUntil(this.disconnecting))`.
71
71
  - Don't use `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
72
- - Colors come from `--schmancy-sys-color-*` CSS vars or Tailwind theme classes.
72
+ - Colors: prefer Tailwind shortcut utilities (`bg-surface-default`, `text-error-default`, `border-outline-variant`) over `bg-[var(--schmancy-sys-color-X)]`. Token map in [theme.md § Tailwind utilities](./theme.md#tailwind-utilities).
73
73
  - `classMap(...)` must be the sole expression in `class=`; never mix with string interpolation.
@@ -72,7 +72,7 @@ Use component tags (`<schmancy-menu>`, `<schmancy-dropdown>`, `<schmancy-tooltip
72
72
  - `classMap(this.classMap({...}))` must be the sole expression in `class=` — never mix with string interpolation.
73
73
 
74
74
  **Styling**
75
- - Colors: `--schmancy-sys-color-*` CSS vars or Tailwind theme classes. Never hardcoded hex.
75
+ - Colors: prefer Tailwind shortcut utilities (`bg-surface-default`, `text-error-default`, `border-outline-variant`) over the arbitrary-value form (`bg-[var(--schmancy-sys-color-X)]`). Every `--schmancy-sys-color-*` token is aliased to `--color-*`, which Tailwind v4 auto-generates into `bg-*`/`text-*`/`border-*`/etc. Full token map: [theme.md § Tailwind utilities](./theme.md#tailwind-utilities). Use the arbitrary-value form only when the token isn't aliased. Never hardcoded hex.
76
76
  - No `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
77
77
 
78
78
  **Accessibility (combobox forms)**
@@ -10,6 +10,20 @@
10
10
  </schmancy-surface>
11
11
  ```
12
12
 
13
+ ## Theme vs. Surface
14
+
15
+ A `<schmancy-theme>` only defines the palette (the `--schmancy-sys-color-*` values). It does not paint a background and does not set the inherited text color. `<schmancy-surface>` is what paints the background **and** establishes the `color` that descendant typography inherits.
16
+
17
+ Without a surface under the theme, typography reads the browser's default color and the app looks broken (white-on-white or black-on-black). The minimal correct app skeleton is always:
18
+
19
+ ```html
20
+ <schmancy-theme root scheme="auto">
21
+ <schmancy-surface type="solid" fill="all">
22
+ <!-- your app -->
23
+ </schmancy-surface>
24
+ </schmancy-theme>
25
+ ```
26
+
13
27
  ## Properties
14
28
 
15
29
  | Property | Type | Default | Description |
@@ -5,10 +5,20 @@
5
5
  ## Usage
6
6
  ```html
7
7
  <schmancy-theme color="#6200ee" scheme="auto" root>
8
- <your-app></your-app>
8
+ <schmancy-surface type="solid" fill="all">
9
+ <your-app></your-app>
10
+ </schmancy-surface>
9
11
  </schmancy-theme>
10
12
  ```
11
13
 
14
+ ## Theme vs. Surface
15
+
16
+ `<schmancy-theme>` only defines the palette — it sets the values of the `--schmancy-sys-color-*` custom properties on its subtree. It does **not** paint a background and does **not** establish an inherited text color.
17
+
18
+ A `<schmancy-surface>` is what actually paints the background and sets the `color` that descendant typography inherits. Without a surface between theme and content, typography falls back to the browser default (white-on-white or black-on-black depending on scheme) and the app looks broken.
19
+
20
+ **Minimal correct skeleton:** `theme` → `surface` → content.
21
+
12
22
  ## Properties
13
23
  | Property | Type | Default | Description |
14
24
  |----------|------|---------|-------------|
@@ -38,21 +48,89 @@ theme.setFullscreen(true)
38
48
  ```html
39
49
  <!-- App root with dark blue theme -->
40
50
  <schmancy-theme color="#1565c0" scheme="dark" root>
41
- <my-app></my-app>
51
+ <schmancy-surface type="solid" fill="all">
52
+ <my-app></my-app>
53
+ </schmancy-surface>
42
54
  </schmancy-theme>
43
55
 
44
- <!-- Nested theme override for a section -->
56
+ <!-- Nested theme override for a section (surface optional — inherits
57
+ on-color from ancestor surface unless you want a new background) -->
45
58
  <schmancy-theme color="#e91e63" scheme="light">
46
59
  <div class="accent-section">...</div>
47
60
  </schmancy-theme>
48
61
 
49
62
  <!-- Arabic locale -->
50
63
  <schmancy-theme color="#4caf50" locale="ar-SA" root>
51
- <my-app></my-app>
64
+ <schmancy-surface type="solid" fill="all">
65
+ <my-app></my-app>
66
+ </schmancy-surface>
52
67
  </schmancy-theme>
53
68
  ```
54
69
 
70
+ ## Tailwind utilities
71
+
72
+ Every `--schmancy-sys-color-*` token is aliased as `--color-*` in the theme stylesheet. Under Tailwind v4, a registered `--color-X` auto-generates the full utility namespace: `bg-X`, `text-X`, `border-X`, `ring-X`, `fill-X`, `stroke-X`, etc.
73
+
74
+ ```
75
+ --schmancy-sys-color-{token} → --color-{token} → bg-{token} · text-{token} · border-{token}
76
+ ```
77
+
78
+ **Prefer the shortcut utility over the arbitrary-value escape hatch.** `border-outline-variant` is equivalent to `border-[var(--schmancy-sys-color-outlineVariant)]` but far more readable.
79
+
80
+ Multi-word tokens are registered in **both** camelCase and kebab-case — both forms work. Use whichever reads better:
81
+
82
+ ```html
83
+ <div class="border-outlineVariant">...</div>
84
+ <div class="border-outline-variant">...</div> <!-- same thing -->
85
+ ```
86
+
87
+ ### Token map
88
+
89
+ **Base**
90
+ ```
91
+ outline · outline-variant (a.k.a. outlineVariant)
92
+ scrim · shadow
93
+ ```
94
+
95
+ **Surface** (backgrounds + on-colors)
96
+ ```
97
+ surface-default · surface-on · surface-on-variant (surface-onVariant)
98
+ surface-dim · surface-bright · surface-tint
99
+ surface-lowest · surface-low · surface-container · surface-high · surface-highest
100
+ surface-containerLowest · surface-containerLow · surface-containerHigh · surface-containerHighest
101
+ surface-inverse (inverse-surface) · surface-inverseOn (inverse-on-surface)
102
+ ```
103
+ *(containerLow/High/Lowest/Highest exist only in camelCase — there's no kebab variant for those four.)*
104
+
105
+ **Primary / Secondary / Tertiary** (same shape for each)
106
+ ```
107
+ {color}-default · {color}-on
108
+ {color}-container · {color}-on-container ({color}-onContainer)
109
+ {color}-fixed · {color}-fixed-dim ({color}-fixedDim)
110
+ {color}-on-fixed ({color}-onFixed) · {color}-on-fixed-variant ({color}-onFixedVariant)
111
+ {color}-inverse (inverse-{color}) # primary only
112
+ ```
113
+
114
+ **Error / Success / Warning / Info**
115
+ ```
116
+ {color}-default · {color}-on
117
+ {color}-container · {color}-on-container ({color}-onContainer)
118
+ ```
119
+
120
+ ### Usage
121
+
122
+ ```html
123
+ <div class="bg-surface-default text-surface-on">Body copy</div>
124
+ <div class="bg-surface-containerLow border border-outline-variant">Card</div>
125
+ <button class="bg-primary-default text-primary-on">Primary action</button>
126
+ <div class="text-error-default">Validation message</div>
127
+ <div class="bg-success-container text-success-on-container">Saved.</div>
128
+ ```
129
+
130
+ ### When the arbitrary-value form is still correct
131
+
132
+ Only reach for `bg-[var(--schmancy-sys-color-X)]` when the token isn't aliased — e.g. a custom `--schmancy-*` property you've registered yourself.
133
+
55
134
  ## Notes
56
135
  - Color and scheme persist to `sessionStorage` per instance
57
136
  - Generates success/warning/info/error semantic color tokens automatically
58
- - Wraps content in a `schmancy-container` with `containerLowest` surface
@@ -10,6 +10,20 @@
10
10
  </schmancy-surface>
11
11
  ```
12
12
 
13
+ ## Theme vs. Surface
14
+
15
+ A `<schmancy-theme>` only defines the palette (the `--schmancy-sys-color-*` values). It does not paint a background and does not set the inherited text color. `<schmancy-surface>` is what paints the background **and** establishes the `color` that descendant typography inherits.
16
+
17
+ Without a surface under the theme, typography reads the browser's default color and the app looks broken (white-on-white or black-on-black). The minimal correct app skeleton is always:
18
+
19
+ ```html
20
+ <schmancy-theme root scheme="auto">
21
+ <schmancy-surface type="solid" fill="all">
22
+ <!-- your app -->
23
+ </schmancy-surface>
24
+ </schmancy-theme>
25
+ ```
26
+
13
27
  ## Properties
14
28
 
15
29
  | Property | Type | Default | Description |
@@ -5,10 +5,20 @@
5
5
  ## Usage
6
6
  ```html
7
7
  <schmancy-theme color="#6200ee" scheme="auto" root>
8
- <your-app></your-app>
8
+ <schmancy-surface type="solid" fill="all">
9
+ <your-app></your-app>
10
+ </schmancy-surface>
9
11
  </schmancy-theme>
10
12
  ```
11
13
 
14
+ ## Theme vs. Surface
15
+
16
+ `<schmancy-theme>` only defines the palette — it sets the values of the `--schmancy-sys-color-*` custom properties on its subtree. It does **not** paint a background and does **not** establish an inherited text color.
17
+
18
+ A `<schmancy-surface>` is what actually paints the background and sets the `color` that descendant typography inherits. Without a surface between theme and content, typography falls back to the browser default (white-on-white or black-on-black depending on scheme) and the app looks broken.
19
+
20
+ **Minimal correct skeleton:** `theme` → `surface` → content.
21
+
12
22
  ## Properties
13
23
  | Property | Type | Default | Description |
14
24
  |----------|------|---------|-------------|
@@ -38,21 +48,89 @@ theme.setFullscreen(true)
38
48
  ```html
39
49
  <!-- App root with dark blue theme -->
40
50
  <schmancy-theme color="#1565c0" scheme="dark" root>
41
- <my-app></my-app>
51
+ <schmancy-surface type="solid" fill="all">
52
+ <my-app></my-app>
53
+ </schmancy-surface>
42
54
  </schmancy-theme>
43
55
 
44
- <!-- Nested theme override for a section -->
56
+ <!-- Nested theme override for a section (surface optional — inherits
57
+ on-color from ancestor surface unless you want a new background) -->
45
58
  <schmancy-theme color="#e91e63" scheme="light">
46
59
  <div class="accent-section">...</div>
47
60
  </schmancy-theme>
48
61
 
49
62
  <!-- Arabic locale -->
50
63
  <schmancy-theme color="#4caf50" locale="ar-SA" root>
51
- <my-app></my-app>
64
+ <schmancy-surface type="solid" fill="all">
65
+ <my-app></my-app>
66
+ </schmancy-surface>
52
67
  </schmancy-theme>
53
68
  ```
54
69
 
70
+ ## Tailwind utilities
71
+
72
+ Every `--schmancy-sys-color-*` token is aliased as `--color-*` in the theme stylesheet. Under Tailwind v4, a registered `--color-X` auto-generates the full utility namespace: `bg-X`, `text-X`, `border-X`, `ring-X`, `fill-X`, `stroke-X`, etc.
73
+
74
+ ```
75
+ --schmancy-sys-color-{token} → --color-{token} → bg-{token} · text-{token} · border-{token}
76
+ ```
77
+
78
+ **Prefer the shortcut utility over the arbitrary-value escape hatch.** `border-outline-variant` is equivalent to `border-[var(--schmancy-sys-color-outlineVariant)]` but far more readable.
79
+
80
+ Multi-word tokens are registered in **both** camelCase and kebab-case — both forms work. Use whichever reads better:
81
+
82
+ ```html
83
+ <div class="border-outlineVariant">...</div>
84
+ <div class="border-outline-variant">...</div> <!-- same thing -->
85
+ ```
86
+
87
+ ### Token map
88
+
89
+ **Base**
90
+ ```
91
+ outline · outline-variant (a.k.a. outlineVariant)
92
+ scrim · shadow
93
+ ```
94
+
95
+ **Surface** (backgrounds + on-colors)
96
+ ```
97
+ surface-default · surface-on · surface-on-variant (surface-onVariant)
98
+ surface-dim · surface-bright · surface-tint
99
+ surface-lowest · surface-low · surface-container · surface-high · surface-highest
100
+ surface-containerLowest · surface-containerLow · surface-containerHigh · surface-containerHighest
101
+ surface-inverse (inverse-surface) · surface-inverseOn (inverse-on-surface)
102
+ ```
103
+ *(containerLow/High/Lowest/Highest exist only in camelCase — there's no kebab variant for those four.)*
104
+
105
+ **Primary / Secondary / Tertiary** (same shape for each)
106
+ ```
107
+ {color}-default · {color}-on
108
+ {color}-container · {color}-on-container ({color}-onContainer)
109
+ {color}-fixed · {color}-fixed-dim ({color}-fixedDim)
110
+ {color}-on-fixed ({color}-onFixed) · {color}-on-fixed-variant ({color}-onFixedVariant)
111
+ {color}-inverse (inverse-{color}) # primary only
112
+ ```
113
+
114
+ **Error / Success / Warning / Info**
115
+ ```
116
+ {color}-default · {color}-on
117
+ {color}-container · {color}-on-container ({color}-onContainer)
118
+ ```
119
+
120
+ ### Usage
121
+
122
+ ```html
123
+ <div class="bg-surface-default text-surface-on">Body copy</div>
124
+ <div class="bg-surface-containerLow border border-outline-variant">Card</div>
125
+ <button class="bg-primary-default text-primary-on">Primary action</button>
126
+ <div class="text-error-default">Validation message</div>
127
+ <div class="bg-success-container text-success-on-container">Saved.</div>
128
+ ```
129
+
130
+ ### When the arbitrary-value form is still correct
131
+
132
+ Only reach for `bg-[var(--schmancy-sys-color-X)]` when the token isn't aliased — e.g. a custom `--schmancy-*` property you've registered yourself.
133
+
55
134
  ## Notes
56
135
  - Color and scheme persist to `sessionStorage` per instance
57
136
  - Generates success/warning/info/error semantic color tokens automatically
58
- - Wraps content in a `schmancy-container` with `containerLowest` surface
package/dist/slider.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-Bj2q1yPw.cjs`);require(`./mixins.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/cache.js`);var s=class extends t.t(a.css`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-De5SG5z7.cjs`);require(`./mixins.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/cache.js`);var s=class extends t.t(a.css`
2
2
  :host {
3
3
  display: block;
4
4
  scroll-snap-align: center; /* If your slider uses scroll-snap */
package/dist/slider.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./decorate-D_utPUsC.js";
2
- import { t } from "./litElement.mixin-CncaUoxz.js";
2
+ import { t } from "./litElement.mixin-D6ZHgGZv.js";
3
3
  import "./mixins.js";
4
4
  import { fromEvent as n } from "rxjs";
5
5
  import { throttleTime as r } from "rxjs/operators";
@@ -1,4 +1,4 @@
1
- require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-Bj2q1yPw.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/directives/style-map.js`),a=require(`lit/decorators.js`),o=require(`lit`);var s=class extends t.t(o.css`
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-De5SG5z7.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/directives/style-map.js`),a=require(`lit/decorators.js`),o=require(`lit`);var s=class extends t.t(o.css`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"file":"splash-screen-CquyPP1C.cjs","names":[],"sources":["../src/splash-screen/splash-screen.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { fromEvent, of, timer, zip } from 'rxjs'\nimport { take, takeUntil, tap } from 'rxjs/operators'\n\nexport type SchmancySplashScreenDoneEvent = CustomEvent<void>\n\n/**\n * Full-viewport splash overlay that dismisses once a minimum duration has\n * elapsed and (optionally) an external `ready` signal has fired. The splash\n * fades out while the underlying app content fades in.\n *\n * Bring-your-own visuals: the `splash` slot is empty by default so the\n * component pulls in no dependencies. Provide a logo, spinner, or\n * animation from the consumer side.\n *\n * @element schmancy-splash-screen\n * @slot splash - Content rendered on the splash layer (logo, spinner, etc.).\n * @slot - Default slot for the actual app content, revealed once dismissed.\n * @fires schmancy-splash-done - `CustomEvent<void>` when the splash dismisses.\n *\n * @example\n * ```html\n * <schmancy-splash-screen min-duration=\"1200\">\n * <my-logo slot=\"splash\"></my-logo>\n * <my-app></my-app>\n * </schmancy-splash-screen>\n * ```\n */\n@customElement('schmancy-splash-screen')\nexport default class SchmancySplashScreen extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t.splash-layer {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: 50;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbackground: var(\n\t\t\t--schmancy-splash-background,\n\t\t\tvar(--schmancy-sys-color-surface-containerLowest, #000)\n\t\t);\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-out;\n\t}\n\n\t.content-layer {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-in-out;\n\t}\n`) {\n\t/**\n\t * Minimum duration (ms) the splash layer stays visible. Prevents a flash\n\t * when the app loads faster than expected.\n\t */\n\t@property({ type: Number, attribute: 'min-duration' }) minDuration = 1500\n\n\t/**\n\t * When true, the splash dismisses on the `minDuration` timer alone.\n\t * When false (default), it additionally waits for an external ready signal\n\t * (a `ready` event on this element, or a call to `this.ready()`).\n\t */\n\t@property({ type: Boolean }) auto = false\n\n\t/**\n\t * When true, the splash starts hidden. Use this for imperative control.\n\t */\n\t@property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false\n\n\t@state() private _visible = true\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.initiallyHidden) {\n\t\t\tthis._visible = false\n\t\t\treturn\n\t\t}\n\n\t\tconst readySignal$ = this.auto ? of(null) : fromEvent<Event>(this, 'ready').pipe(take(1))\n\t\tconst minTimer$ = timer(this.minDuration)\n\n\t\tzip(readySignal$, minTimer$)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(() => this._dismiss()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Imperative API: signal that the app is ready and dismiss the splash\n\t * after the minimum duration has elapsed.\n\t */\n\tpublic ready(): void {\n\t\tthis.dispatchEvent(new Event('ready'))\n\t}\n\n\t/**\n\t * Force the splash to show again (e.g. between route transitions).\n\t */\n\tpublic show(): void {\n\t\tthis._visible = true\n\t}\n\n\tprivate _dismiss(): void {\n\t\tthis._visible = false\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<void>('schmancy-splash-done', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"splash-layer\"\n\t\t\t\taria-hidden=${!this._visible}\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '1' : '0',\n\t\t\t\t\tpointerEvents: this._visible ? 'auto' : 'none',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot name=\"splash\"></slot>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"content-layer\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '0' : '1',\n\t\t\t\t\tpointerEvents: this._visible ? 'none' : 'auto',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-splash-screen': SchmancySplashScreen\n\t}\n}\n"],"mappings":"mQAgCe,IAAA,EAAA,cAAmC,EAAA,EAAY,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;kDA+BK,KAAA,KAAA,KAAA,CAOjC,EAAA,KAAA,gBAAA,CAK0C,EAAA,KAAA,SAAA,CAElD,EAE5B,mBAAA,CACC,MAAM,mBAAA,CAEF,KAAK,gBACR,KAAK,SAAA,CAAW,GAOjB,EAAA,EAAA,KAHqB,KAAK,MAAA,EAAA,EAAA,IAAU,KAAA,EAAK,EAAA,EAAA,WAAoB,KAAM,QAAA,CAAS,MAAA,EAAA,EAAA,MAAU,EAAA,CAAA,EAAG,EAAA,EAAA,OACjE,KAAK,YAAA,CAAA,CAG3B,MAAA,EAAA,EAAA,MACK,EAAA,EAAE,EAAA,EAAA,SACG,KAAK,UAAA,CAAA,EAAW,EAAA,EAAA,WAChB,KAAK,cAAA,CAAA,CAEf,WAAA,CAOH,OAAA,CACC,KAAK,cAAc,IAAI,MAAM,QAAA,CAAA,CAM9B,MAAA,CACC,KAAK,SAAA,CAAW,EAGjB,UAAA,CACC,KAAK,SAAA,CAAW,EAChB,KAAK,cACJ,IAAI,YAAkB,uBAAwB,CAC7C,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAKb,QAAA,CACC,MAAO,GAAA,IAAI;;;mBAGM,KAAK,SAAA;2BACH,CAChB,QAAS,KAAK,SAAW,IAAM,IAC/B,cAAe,KAAK,SAAW,OAAS,OAAA,CAAA,CAAA;;;;;;2BAOxB,CAChB,QAAS,KAAK,SAAW,IAAM,IAC/B,cAAe,KAAK,SAAW,OAAS,OAAA,CAAA,CAAA;;;;0BA7ElC,CAAE,KAAM,OAAQ,UAAW,eAAA,CAAA,CAAA,CAAiB,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAO5C,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKlB,CAAE,KAAM,QAAS,UAAW,mBAAA,CAAA,CAAA,CAAqB,EAAA,UAAA,kBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAEnD,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eA9CM,yBAAA,CAAA,CAAyB,EAAA"}
1
+ {"version":3,"file":"splash-screen-DuFJ0gbD.cjs","names":[],"sources":["../src/splash-screen/splash-screen.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { fromEvent, of, timer, zip } from 'rxjs'\nimport { take, takeUntil, tap } from 'rxjs/operators'\n\nexport type SchmancySplashScreenDoneEvent = CustomEvent<void>\n\n/**\n * Full-viewport splash overlay that dismisses once a minimum duration has\n * elapsed and (optionally) an external `ready` signal has fired. The splash\n * fades out while the underlying app content fades in.\n *\n * Bring-your-own visuals: the `splash` slot is empty by default so the\n * component pulls in no dependencies. Provide a logo, spinner, or\n * animation from the consumer side.\n *\n * @element schmancy-splash-screen\n * @slot splash - Content rendered on the splash layer (logo, spinner, etc.).\n * @slot - Default slot for the actual app content, revealed once dismissed.\n * @fires schmancy-splash-done - `CustomEvent<void>` when the splash dismisses.\n *\n * @example\n * ```html\n * <schmancy-splash-screen min-duration=\"1200\">\n * <my-logo slot=\"splash\"></my-logo>\n * <my-app></my-app>\n * </schmancy-splash-screen>\n * ```\n */\n@customElement('schmancy-splash-screen')\nexport default class SchmancySplashScreen extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t.splash-layer {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: 50;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbackground: var(\n\t\t\t--schmancy-splash-background,\n\t\t\tvar(--schmancy-sys-color-surface-containerLowest, #000)\n\t\t);\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-out;\n\t}\n\n\t.content-layer {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-in-out;\n\t}\n`) {\n\t/**\n\t * Minimum duration (ms) the splash layer stays visible. Prevents a flash\n\t * when the app loads faster than expected.\n\t */\n\t@property({ type: Number, attribute: 'min-duration' }) minDuration = 1500\n\n\t/**\n\t * When true, the splash dismisses on the `minDuration` timer alone.\n\t * When false (default), it additionally waits for an external ready signal\n\t * (a `ready` event on this element, or a call to `this.ready()`).\n\t */\n\t@property({ type: Boolean }) auto = false\n\n\t/**\n\t * When true, the splash starts hidden. Use this for imperative control.\n\t */\n\t@property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false\n\n\t@state() private _visible = true\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.initiallyHidden) {\n\t\t\tthis._visible = false\n\t\t\treturn\n\t\t}\n\n\t\tconst readySignal$ = this.auto ? of(null) : fromEvent<Event>(this, 'ready').pipe(take(1))\n\t\tconst minTimer$ = timer(this.minDuration)\n\n\t\tzip(readySignal$, minTimer$)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(() => this._dismiss()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Imperative API: signal that the app is ready and dismiss the splash\n\t * after the minimum duration has elapsed.\n\t */\n\tpublic ready(): void {\n\t\tthis.dispatchEvent(new Event('ready'))\n\t}\n\n\t/**\n\t * Force the splash to show again (e.g. between route transitions).\n\t */\n\tpublic show(): void {\n\t\tthis._visible = true\n\t}\n\n\tprivate _dismiss(): void {\n\t\tthis._visible = false\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<void>('schmancy-splash-done', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"splash-layer\"\n\t\t\t\taria-hidden=${!this._visible}\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '1' : '0',\n\t\t\t\t\tpointerEvents: this._visible ? 'auto' : 'none',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot name=\"splash\"></slot>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"content-layer\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '0' : '1',\n\t\t\t\t\tpointerEvents: this._visible ? 'none' : 'auto',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-splash-screen': SchmancySplashScreen\n\t}\n}\n"],"mappings":"mQAgCe,IAAA,EAAA,cAAmC,EAAA,EAAY,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;kDA+BK,KAAA,KAAA,KAAA,CAOjC,EAAA,KAAA,gBAAA,CAK0C,EAAA,KAAA,SAAA,CAElD,EAE5B,mBAAA,CACC,MAAM,mBAAA,CAEF,KAAK,gBACR,KAAK,SAAA,CAAW,GAOjB,EAAA,EAAA,KAHqB,KAAK,MAAA,EAAA,EAAA,IAAU,KAAA,EAAK,EAAA,EAAA,WAAoB,KAAM,QAAA,CAAS,MAAA,EAAA,EAAA,MAAU,EAAA,CAAA,EAAG,EAAA,EAAA,OACjE,KAAK,YAAA,CAAA,CAG3B,MAAA,EAAA,EAAA,MACK,EAAA,EAAE,EAAA,EAAA,SACG,KAAK,UAAA,CAAA,EAAW,EAAA,EAAA,WAChB,KAAK,cAAA,CAAA,CAEf,WAAA,CAOH,OAAA,CACC,KAAK,cAAc,IAAI,MAAM,QAAA,CAAA,CAM9B,MAAA,CACC,KAAK,SAAA,CAAW,EAGjB,UAAA,CACC,KAAK,SAAA,CAAW,EAChB,KAAK,cACJ,IAAI,YAAkB,uBAAwB,CAC7C,QAAA,CAAS,EACT,SAAA,CAAU,EAAA,CAAA,CAAA,CAKb,QAAA,CACC,MAAO,GAAA,IAAI;;;mBAGM,KAAK,SAAA;2BACH,CAChB,QAAS,KAAK,SAAW,IAAM,IAC/B,cAAe,KAAK,SAAW,OAAS,OAAA,CAAA,CAAA;;;;;;2BAOxB,CAChB,QAAS,KAAK,SAAW,IAAM,IAC/B,cAAe,KAAK,SAAW,OAAS,OAAA,CAAA,CAAA;;;;0BA7ElC,CAAE,KAAM,OAAQ,UAAW,eAAA,CAAA,CAAA,CAAiB,EAAA,UAAA,cAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAO5C,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKlB,CAAE,KAAM,QAAS,UAAW,mBAAA,CAAA,CAAA,CAAqB,EAAA,UAAA,kBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAEnD,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eA9CM,yBAAA,CAAA,CAAyB,EAAA"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./decorate-D_utPUsC.js";
2
- import { t } from "./litElement.mixin-CncaUoxz.js";
2
+ import { t } from "./litElement.mixin-D6ZHgGZv.js";
3
3
  import { fromEvent as n, of as r, timer as i, zip as a } from "rxjs";
4
4
  import { take as o, takeUntil as s, tap as c } from "rxjs/operators";
5
5
  import { styleMap as l } from "lit/directives/style-map.js";
@@ -1 +1 @@
1
- {"version":3,"file":"splash-screen-CvucPkpD.js","names":[],"sources":["../src/splash-screen/splash-screen.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { fromEvent, of, timer, zip } from 'rxjs'\nimport { take, takeUntil, tap } from 'rxjs/operators'\n\nexport type SchmancySplashScreenDoneEvent = CustomEvent<void>\n\n/**\n * Full-viewport splash overlay that dismisses once a minimum duration has\n * elapsed and (optionally) an external `ready` signal has fired. The splash\n * fades out while the underlying app content fades in.\n *\n * Bring-your-own visuals: the `splash` slot is empty by default so the\n * component pulls in no dependencies. Provide a logo, spinner, or\n * animation from the consumer side.\n *\n * @element schmancy-splash-screen\n * @slot splash - Content rendered on the splash layer (logo, spinner, etc.).\n * @slot - Default slot for the actual app content, revealed once dismissed.\n * @fires schmancy-splash-done - `CustomEvent<void>` when the splash dismisses.\n *\n * @example\n * ```html\n * <schmancy-splash-screen min-duration=\"1200\">\n * <my-logo slot=\"splash\"></my-logo>\n * <my-app></my-app>\n * </schmancy-splash-screen>\n * ```\n */\n@customElement('schmancy-splash-screen')\nexport default class SchmancySplashScreen extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t.splash-layer {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: 50;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbackground: var(\n\t\t\t--schmancy-splash-background,\n\t\t\tvar(--schmancy-sys-color-surface-containerLowest, #000)\n\t\t);\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-out;\n\t}\n\n\t.content-layer {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-in-out;\n\t}\n`) {\n\t/**\n\t * Minimum duration (ms) the splash layer stays visible. Prevents a flash\n\t * when the app loads faster than expected.\n\t */\n\t@property({ type: Number, attribute: 'min-duration' }) minDuration = 1500\n\n\t/**\n\t * When true, the splash dismisses on the `minDuration` timer alone.\n\t * When false (default), it additionally waits for an external ready signal\n\t * (a `ready` event on this element, or a call to `this.ready()`).\n\t */\n\t@property({ type: Boolean }) auto = false\n\n\t/**\n\t * When true, the splash starts hidden. Use this for imperative control.\n\t */\n\t@property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false\n\n\t@state() private _visible = true\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.initiallyHidden) {\n\t\t\tthis._visible = false\n\t\t\treturn\n\t\t}\n\n\t\tconst readySignal$ = this.auto ? of(null) : fromEvent<Event>(this, 'ready').pipe(take(1))\n\t\tconst minTimer$ = timer(this.minDuration)\n\n\t\tzip(readySignal$, minTimer$)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(() => this._dismiss()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Imperative API: signal that the app is ready and dismiss the splash\n\t * after the minimum duration has elapsed.\n\t */\n\tpublic ready(): void {\n\t\tthis.dispatchEvent(new Event('ready'))\n\t}\n\n\t/**\n\t * Force the splash to show again (e.g. between route transitions).\n\t */\n\tpublic show(): void {\n\t\tthis._visible = true\n\t}\n\n\tprivate _dismiss(): void {\n\t\tthis._visible = false\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<void>('schmancy-splash-done', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"splash-layer\"\n\t\t\t\taria-hidden=${!this._visible}\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '1' : '0',\n\t\t\t\t\tpointerEvents: this._visible ? 'auto' : 'none',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot name=\"splash\"></slot>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"content-layer\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '0' : '1',\n\t\t\t\t\tpointerEvents: this._visible ? 'none' : 'auto',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-splash-screen': SchmancySplashScreen\n\t}\n}\n"],"mappings":";;;;;;;AAgCe,IAAA,IAAA,cAAmC,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA+BK,MAAA,KAAA,OAAA,CAOjC,GAAA,KAAA,kBAAA,CAK0C,GAAA,KAAA,WAAA,CAElD;;CAE5B,oBAAA;AACC,QAAM,mBAAA,EAEF,KAAK,kBACR,KAAK,WAAA,CAAW,IAOjB,EAHqB,KAAK,OAAO,EAAG,KAAA,GAAQ,EAAiB,MAAM,QAAA,CAAS,KAAK,EAAK,EAAA,CAAA,EACpE,EAAM,KAAK,YAAA,CAAA,CAG3B,KACA,EAAK,EAAA,EACL,QAAU,KAAK,UAAA,CAAA,EACf,EAAU,KAAK,cAAA,CAAA,CAEf,WAAA;;CAOH,QAAA;AACC,OAAK,cAAc,IAAI,MAAM,QAAA,CAAA;;CAM9B,OAAA;AACC,OAAK,WAAA,CAAW;;CAGjB,WAAA;AACC,OAAK,WAAA,CAAW,GAChB,KAAK,cACJ,IAAI,YAAkB,wBAAwB;GAC7C,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAKb,SAAA;AACC,SAAO,CAAI;;;mBAGM,KAAK,SAAA;YACZ,EAAS;GAChB,SAAS,KAAK,WAAW,MAAM;GAC/B,eAAe,KAAK,WAAW,SAAS;GAAA,CAAA,CAAA;;;;;;YAOjC,EAAS;GAChB,SAAS,KAAK,WAAW,MAAM;GAC/B,eAAe,KAAK,WAAW,SAAS;GAAA,CAAA,CAAA;;;;;;;GA7E3C,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAA,CAAA,CAAA,EAAiB,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAOrD,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK3B,EAAS;CAAE,MAAM;CAAS,WAAW;CAAA,CAAA,CAAA,EAAqB,EAAA,WAAA,mBAAA,KAAA,EAAA,EAAA,EAAA,CAE1D,GAAA,CAAA,EAAO,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CA9CR,EAAc,yBAAA,CAAA,EAAyB,EAAA"}
1
+ {"version":3,"file":"splash-screen-M-v_jiLs.js","names":[],"sources":["../src/splash-screen/splash-screen.ts"],"sourcesContent":["import { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { fromEvent, of, timer, zip } from 'rxjs'\nimport { take, takeUntil, tap } from 'rxjs/operators'\n\nexport type SchmancySplashScreenDoneEvent = CustomEvent<void>\n\n/**\n * Full-viewport splash overlay that dismisses once a minimum duration has\n * elapsed and (optionally) an external `ready` signal has fired. The splash\n * fades out while the underlying app content fades in.\n *\n * Bring-your-own visuals: the `splash` slot is empty by default so the\n * component pulls in no dependencies. Provide a logo, spinner, or\n * animation from the consumer side.\n *\n * @element schmancy-splash-screen\n * @slot splash - Content rendered on the splash layer (logo, spinner, etc.).\n * @slot - Default slot for the actual app content, revealed once dismissed.\n * @fires schmancy-splash-done - `CustomEvent<void>` when the splash dismisses.\n *\n * @example\n * ```html\n * <schmancy-splash-screen min-duration=\"1200\">\n * <my-logo slot=\"splash\"></my-logo>\n * <my-app></my-app>\n * </schmancy-splash-screen>\n * ```\n */\n@customElement('schmancy-splash-screen')\nexport default class SchmancySplashScreen extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t.splash-layer {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: 50;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tbackground: var(\n\t\t\t--schmancy-splash-background,\n\t\t\tvar(--schmancy-sys-color-surface-containerLowest, #000)\n\t\t);\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-out;\n\t}\n\n\t.content-layer {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttransition: opacity var(--schmancy-splash-transition, 500ms) ease-in-out;\n\t}\n`) {\n\t/**\n\t * Minimum duration (ms) the splash layer stays visible. Prevents a flash\n\t * when the app loads faster than expected.\n\t */\n\t@property({ type: Number, attribute: 'min-duration' }) minDuration = 1500\n\n\t/**\n\t * When true, the splash dismisses on the `minDuration` timer alone.\n\t * When false (default), it additionally waits for an external ready signal\n\t * (a `ready` event on this element, or a call to `this.ready()`).\n\t */\n\t@property({ type: Boolean }) auto = false\n\n\t/**\n\t * When true, the splash starts hidden. Use this for imperative control.\n\t */\n\t@property({ type: Boolean, attribute: 'initially-hidden' }) initiallyHidden = false\n\n\t@state() private _visible = true\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.initiallyHidden) {\n\t\t\tthis._visible = false\n\t\t\treturn\n\t\t}\n\n\t\tconst readySignal$ = this.auto ? of(null) : fromEvent<Event>(this, 'ready').pipe(take(1))\n\t\tconst minTimer$ = timer(this.minDuration)\n\n\t\tzip(readySignal$, minTimer$)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(() => this._dismiss()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Imperative API: signal that the app is ready and dismiss the splash\n\t * after the minimum duration has elapsed.\n\t */\n\tpublic ready(): void {\n\t\tthis.dispatchEvent(new Event('ready'))\n\t}\n\n\t/**\n\t * Force the splash to show again (e.g. between route transitions).\n\t */\n\tpublic show(): void {\n\t\tthis._visible = true\n\t}\n\n\tprivate _dismiss(): void {\n\t\tthis._visible = false\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<void>('schmancy-splash-done', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"splash-layer\"\n\t\t\t\taria-hidden=${!this._visible}\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '1' : '0',\n\t\t\t\t\tpointerEvents: this._visible ? 'auto' : 'none',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot name=\"splash\"></slot>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"content-layer\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\topacity: this._visible ? '0' : '1',\n\t\t\t\t\tpointerEvents: this._visible ? 'none' : 'auto',\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-splash-screen': SchmancySplashScreen\n\t}\n}\n"],"mappings":";;;;;;;AAgCe,IAAA,IAAA,cAAmC,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA+BK,MAAA,KAAA,OAAA,CAOjC,GAAA,KAAA,kBAAA,CAK0C,GAAA,KAAA,WAAA,CAElD;;CAE5B,oBAAA;AACC,QAAM,mBAAA,EAEF,KAAK,kBACR,KAAK,WAAA,CAAW,IAOjB,EAHqB,KAAK,OAAO,EAAG,KAAA,GAAQ,EAAiB,MAAM,QAAA,CAAS,KAAK,EAAK,EAAA,CAAA,EACpE,EAAM,KAAK,YAAA,CAAA,CAG3B,KACA,EAAK,EAAA,EACL,QAAU,KAAK,UAAA,CAAA,EACf,EAAU,KAAK,cAAA,CAAA,CAEf,WAAA;;CAOH,QAAA;AACC,OAAK,cAAc,IAAI,MAAM,QAAA,CAAA;;CAM9B,OAAA;AACC,OAAK,WAAA,CAAW;;CAGjB,WAAA;AACC,OAAK,WAAA,CAAW,GAChB,KAAK,cACJ,IAAI,YAAkB,wBAAwB;GAC7C,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAKb,SAAA;AACC,SAAO,CAAI;;;mBAGM,KAAK,SAAA;YACZ,EAAS;GAChB,SAAS,KAAK,WAAW,MAAM;GAC/B,eAAe,KAAK,WAAW,SAAS;GAAA,CAAA,CAAA;;;;;;YAOjC,EAAS;GAChB,SAAS,KAAK,WAAW,MAAM;GAC/B,eAAe,KAAK,WAAW,SAAS;GAAA,CAAA,CAAA;;;;;;;GA7E3C,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAA,CAAA,CAAA,EAAiB,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAOrD,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK3B,EAAS;CAAE,MAAM;CAAS,WAAW;CAAA,CAAA,CAAA,EAAqB,EAAA,WAAA,mBAAA,KAAA,EAAA,EAAA,EAAA,CAE1D,GAAA,CAAA,EAAO,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CA9CR,EAAc,yBAAA,CAAA,EAAyB,EAAA"}
@@ -1 +1 @@
1
- require(`./splash-screen-CquyPP1C.cjs`);
1
+ require(`./splash-screen-DuFJ0gbD.cjs`);
@@ -1 +1 @@
1
- import "./splash-screen-CvucPkpD.js";
1
+ import "./splash-screen-M-v_jiLs.js";
@@ -1,4 +1,4 @@
1
- require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./provide-BZ9lq_Be.cjs`),n=require(`./decorate-F9CuyeHg.cjs`),r=require(`./litElement.mixin-Bj2q1yPw.cjs`);require(`./mixins.cjs`);const i=require(`./area-D9b9dHQr.cjs`);require(`./store-CO4nJyGj.cjs`),require(`./audio-DUVz7Ars.cjs`),require(`./autocomplete-AI2CCJmK.cjs`);const a=require(`./theme.service-ETiKUwVy.cjs`),o=require(`./directives.cjs`);require(`./boat-Bk4u-LzT.cjs`),require(`./busy-c_q_F8O0.cjs`),require(`./button.cjs`),require(`./card-C_E944_Z.cjs`),require(`./charts.cjs`),require(`./checkbox-ZqDoCagB.cjs`),require(`./chips-Cux635Qs.cjs`),require(`./code-highlight-C9lKek2p.cjs`),require(`./components-ByRyEzz5.cjs`),require(`./connectivity.cjs`),require(`./date-range-DJsavigf.cjs`);const s=require(`./sheet.service-Cr13Oo6G.cjs`);require(`./date-range-inline-De-M0VmL.cjs`),require(`./delay-BvVdfhAR.cjs`),require(`./details-Bhz8_whd.cjs`),require(`./dialog.cjs`),require(`./discovery.cjs`),require(`./divider-S0bHwCCS.cjs`),require(`./dropdown.cjs`),require(`./expand-Dr7TFXpl.cjs`),require(`./float-CSRW-Rrd.cjs`),require(`./window.cjs`),require(`./extra-BmZTXAp0.cjs`),require(`./form-CAY9GSCd.cjs`),require(`./icons-DPUeLS_Y.cjs`),require(`./iframe-Ct50FYXq.cjs`),require(`./input-DMjpf6V8.cjs`),require(`./notification-DKVWYhqs.cjs`),require(`./json.cjs`),require(`./layout-D7xOqMkJ.cjs`),require(`./lightbox-cXRnvHMN.cjs`),require(`./list-CmJ5h35b.cjs`),require(`./mailbox-BmChskZc.cjs`),require(`./map-DYEvlNl0.cjs`),require(`./menu-BlPTI6H9.cjs`),require(`./navigation-rail.cjs`),require(`./option-LtSDy2xf.cjs`),require(`./page.cjs`),require(`./progress.cjs`),require(`./qr-scanner.cjs`),require(`./radio-group-Cd9pZ2MR.cjs`),require(`./range.cjs`),require(`./rxjs-utils-hAgKC7vk.cjs`);const c=require(`./theme.interface-CM26m9te.cjs`);require(`./select-CWWuZ2iJ.cjs`),require(`./sheet-r0oEYIdi.cjs`),require(`./slider.cjs`),require(`./steps.cjs`),require(`./surface.cjs`),require(`./table-DWc1mkpj.cjs`),require(`./tabs-DGJEKuhC.cjs`),require(`./textarea-jmTOXrzl.cjs`),require(`./theme-CCKqaksQ.cjs`),require(`./theme-button-BsJcv-Zv.cjs`),require(`./tooltip.cjs`),require(`./tree.cjs`);const l=require(`./types.cjs`);require(`./typewriter-ByIL2Mh-.cjs`),require(`./typography.cjs`),require(`./utils-D2kE-6zc.cjs`),require(`./breadcrumb.cjs`),require(`./kbd.cjs`),require(`./skeleton.cjs`),require(`./splash-screen-CquyPP1C.cjs`),require(`./switch.cjs`),require(`./visually-hidden.cjs`);let u=require(`rxjs`),d=require(`rxjs/operators`),f=require(`lit/decorators.js`),p=require(`lit`),m=require(`lit/directives/when.js`);var h=class extends e.t(p.css`
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Bug3G6K6.cjs`),t=require(`./provide-Dsoh3FdP.cjs`),n=require(`./decorate-F9CuyeHg.cjs`),r=require(`./litElement.mixin-De5SG5z7.cjs`);require(`./mixins.cjs`);const i=require(`./area-BafkBc1f.cjs`);require(`./store-CO4nJyGj.cjs`),require(`./audio-DUVz7Ars.cjs`),require(`./autocomplete-BeLg4A3T.cjs`);const a=require(`./theme.service-ETiKUwVy.cjs`),o=require(`./directives.cjs`);require(`./boat-4hSLFsGy.cjs`),require(`./busy-C0qP0TiL.cjs`),require(`./button.cjs`),require(`./card-DUq_MsxC.cjs`),require(`./charts.cjs`),require(`./checkbox-qPH_5Viu.cjs`),require(`./chips-BI_kt5BS.cjs`),require(`./code-highlight-DGInmDAW.cjs`),require(`./components-7hOtFi_q.cjs`),require(`./connectivity.cjs`),require(`./date-range-B0kW9np7.cjs`);const s=require(`./sheet.service-l9jTUaot.cjs`);require(`./date-range-inline-De-M0VmL.cjs`),require(`./delay-k_HiVnhP.cjs`),require(`./details-CQIbCUY0.cjs`),require(`./dialog.cjs`),require(`./discovery.cjs`),require(`./divider-IX9sp29l.cjs`),require(`./dropdown.cjs`),require(`./expand-dIrDcH9Y.cjs`),require(`./float-CJ3SuEcG.cjs`),require(`./window.cjs`),require(`./extra-BFpPepJn.cjs`),require(`./form-CAY9GSCd.cjs`),require(`./icons-1AkKNd7O.cjs`),require(`./iframe-CtDetaw3.cjs`),require(`./input-DMjpf6V8.cjs`),require(`./notification-Xid-o7gi.cjs`),require(`./json.cjs`),require(`./layout-B1gXjlIO.cjs`),require(`./lightbox-BUuGltX9.cjs`),require(`./list-C1GMiAi_.cjs`),require(`./mailbox-D0iXsqyx.cjs`),require(`./map-uRYJeifl.cjs`),require(`./menu-CXFa_bk4.cjs`),require(`./navigation-rail.cjs`),require(`./option-CNWUeHW3.cjs`),require(`./page.cjs`),require(`./progress.cjs`),require(`./qr-scanner.cjs`),require(`./radio-group-D5t8f2Ob.cjs`),require(`./range.cjs`),require(`./rxjs-utils-hAgKC7vk.cjs`);const c=require(`./theme.interface-CM26m9te.cjs`);require(`./select-B1nN5Ac4.cjs`),require(`./sheet-BZRMpyXt.cjs`),require(`./slider.cjs`),require(`./steps.cjs`),require(`./surface.cjs`),require(`./table-CENjXiu-.cjs`),require(`./tabs-CRA9FMNl.cjs`),require(`./textarea-CfwGEIvf.cjs`),require(`./theme-BiM_CUpn.cjs`),require(`./theme-button-BwJs6N4k.cjs`),require(`./tooltip.cjs`),require(`./tree.cjs`);const l=require(`./types.cjs`);require(`./typewriter-BH7nsW7R.cjs`),require(`./typography.cjs`),require(`./utils-D2kE-6zc.cjs`),require(`./breadcrumb.cjs`),require(`./kbd.cjs`),require(`./skeleton.cjs`),require(`./splash-screen-DuFJ0gbD.cjs`),require(`./switch.cjs`),require(`./visually-hidden.cjs`);let u=require(`rxjs`),d=require(`rxjs/operators`),f=require(`lit/decorators.js`),p=require(`lit`),m=require(`lit/directives/when.js`);var h=class extends e.t(p.css`
2
2
  :host {
3
3
  display: inline-flex;
4
4
  width: fit-content;