@mhmo91/schmancy 0.10.42 → 0.10.43

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 (759) hide show
  1. package/custom-elements.json +264 -79
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4031 -3891
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +215 -58
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
  36. package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
  38. package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +53 -35
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +55 -37
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-CVAWMdar.cjs +138 -0
  92. package/dist/date-range-CVAWMdar.cjs.map +1 -0
  93. package/dist/date-range-D2NZU5Yg.js +433 -0
  94. package/dist/date-range-D2NZU5Yg.js.map +1 -0
  95. package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +38 -22
  302. package/dist/skills/surface.md +38 -22
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-DGDTkOvC.js → src-DAtcPmCb.js} +173 -175
  318. package/dist/src-DAtcPmCb.js.map +1 -0
  319. package/dist/src-DuRvYagm.cjs +237 -0
  320. package/dist/src-DuRvYagm.cjs.map +1 -0
  321. package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +38 -22
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +15 -12
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +1 -1
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +90 -62
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +141 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +359 -122
  507. package/src/form/fields/date-range/date-range.ts +319 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +53 -104
  593. package/src/surface/surface.ts +10 -8
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +143 -108
  626. package/types/src/calendar/calendar.d.ts +108 -0
  627. package/types/src/calendar/calendar.test.d.ts +1 -0
  628. package/types/src/calendar/index.d.ts +2 -0
  629. package/types/src/directives/cursor-glow.d.ts +1 -1
  630. package/types/src/directives/hummingbird.d.ts +3 -3
  631. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  632. package/types/src/form/fields/date-range/date-range.d.ts +35 -66
  633. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  634. package/types/src/form/fields/date-range/index.d.ts +1 -1
  635. package/types/src/index.d.ts +1 -0
  636. package/types/src/surface/surface.styles.d.ts +13 -6
  637. package/types/src/types/surface.d.ts +17 -22
  638. package/types/src/utils/number.d.ts +1 -1
  639. package/dist/SchmancyElement-OG71FtNv.js +0 -286
  640. package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
  641. package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
  642. package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
  643. package/dist/area-CaEI33G0.cjs +0 -21
  644. package/dist/area-CaEI33G0.cjs.map +0 -1
  645. package/dist/area-DtCNCb8w.js.map +0 -1
  646. package/dist/audio-B924fI5N.cjs.map +0 -1
  647. package/dist/audio-DdN76ikW.js.map +0 -1
  648. package/dist/autocomplete-Dq3BkitV.cjs +0 -115
  649. package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
  650. package/dist/autocomplete-UNOknYUz.js.map +0 -1
  651. package/dist/busy--WqiXKnl.cjs +0 -134
  652. package/dist/busy--WqiXKnl.cjs.map +0 -1
  653. package/dist/busy-DzXyO0z6.js +0 -173
  654. package/dist/busy-DzXyO0z6.js.map +0 -1
  655. package/dist/button-CTvS5YX4.cjs.map +0 -1
  656. package/dist/button-DgoDfcJx.js.map +0 -1
  657. package/dist/card-C6ijJZpF.js.map +0 -1
  658. package/dist/card-Ci3_9Dd4.cjs +0 -177
  659. package/dist/card-Ci3_9Dd4.cjs.map +0 -1
  660. package/dist/chips-9eG-96_D.cjs.map +0 -1
  661. package/dist/chips-DF7akwz7.js.map +0 -1
  662. package/dist/date-range-C13_R3OA.js +0 -966
  663. package/dist/date-range-C13_R3OA.js.map +0 -1
  664. package/dist/date-range-Q2xj5Syc.cjs +0 -142
  665. package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
  666. package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
  667. package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
  668. package/dist/details-B2-jECBh.cjs.map +0 -1
  669. package/dist/details-ByF66CyY.js.map +0 -1
  670. package/dist/directives-BL7mzVsA.js.map +0 -1
  671. package/dist/directives-DCb_LA9R.cjs.map +0 -1
  672. package/dist/divider-Bv2QiOZL.cjs +0 -57
  673. package/dist/divider-Bv2QiOZL.cjs.map +0 -1
  674. package/dist/divider-gYuz0zDU.js +0 -89
  675. package/dist/divider-gYuz0zDU.js.map +0 -1
  676. package/dist/expand-B9IUGVtc.cjs +0 -141
  677. package/dist/expand-B9IUGVtc.cjs.map +0 -1
  678. package/dist/expand-cZ8rfCWP.js.map +0 -1
  679. package/dist/form-DowzVsgI.cjs.map +0 -1
  680. package/dist/form-tG7LwDm4.js.map +0 -1
  681. package/dist/icons-BZeCloP9.cjs +0 -24
  682. package/dist/icons-BZeCloP9.cjs.map +0 -1
  683. package/dist/icons-Dup5skuk.js.map +0 -1
  684. package/dist/iframe-CDJjnNmo.cjs.map +0 -1
  685. package/dist/iframe-Xc3EPMZT.js.map +0 -1
  686. package/dist/input-DnmC6J1T.cjs.map +0 -1
  687. package/dist/input-cTyDxW9L.js.map +0 -1
  688. package/dist/input-chip-CV91URyU.cjs +0 -146
  689. package/dist/input-chip-CV91URyU.cjs.map +0 -1
  690. package/dist/input-chip-CYI17YOq.js.map +0 -1
  691. package/dist/layout-CNlZSJFU.cjs.map +0 -1
  692. package/dist/layout-DDxw0EwL.js.map +0 -1
  693. package/dist/lightbox-CH-y3rYB.js.map +0 -1
  694. package/dist/lightbox-CvtqoInF.cjs.map +0 -1
  695. package/dist/list-Dl8KfxrF.cjs +0 -40
  696. package/dist/list-Dl8KfxrF.cjs.map +0 -1
  697. package/dist/list-DrsawQ5R.js.map +0 -1
  698. package/dist/menu-BFRcTe3o.cjs.map +0 -1
  699. package/dist/menu-CsY5lMqY.js.map +0 -1
  700. package/dist/mixins-BoMURWag.cjs.map +0 -1
  701. package/dist/mixins-bCEXbwJV.js.map +0 -1
  702. package/dist/notification-DFKRMmSq.js.map +0 -1
  703. package/dist/notification-FBf3Mb2e.cjs.map +0 -1
  704. package/dist/option-Ct0lGdH3.js.map +0 -1
  705. package/dist/option-Il1KpU8M.cjs +0 -43
  706. package/dist/option-Il1KpU8M.cjs.map +0 -1
  707. package/dist/overlay-Bh8Q_R01.js.map +0 -1
  708. package/dist/overlay-sRXiMkjn.cjs.map +0 -1
  709. package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
  710. package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
  711. package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
  712. package/dist/overlay.service-BXPgS7ay.js.map +0 -1
  713. package/dist/progress-CWC5XYZ_.cjs +0 -51
  714. package/dist/progress-CWC5XYZ_.cjs.map +0 -1
  715. package/dist/progress-CYLshdo2.js.map +0 -1
  716. package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
  717. package/dist/radio-group-bZtZHOj_.js.map +0 -1
  718. package/dist/select-CU3X-PIa.js.map +0 -1
  719. package/dist/select-MXsF8KsU.cjs +0 -56
  720. package/dist/select-MXsF8KsU.cjs.map +0 -1
  721. package/dist/sound.service-B4ZmXpH9.js.map +0 -1
  722. package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
  723. package/dist/splash-screen-CN9dZcqC.cjs +0 -41
  724. package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
  725. package/dist/splash-screen-emCLYoVl.js.map +0 -1
  726. package/dist/src-DGDTkOvC.js.map +0 -1
  727. package/dist/src-DK3111z_.cjs +0 -240
  728. package/dist/src-DK3111z_.cjs.map +0 -1
  729. package/dist/state-CumAEPQH.cjs.map +0 -1
  730. package/dist/state-DMd_FUeA.js.map +0 -1
  731. package/dist/surface-DGI-FBoi.cjs +0 -7
  732. package/dist/surface-DGI-FBoi.cjs.map +0 -1
  733. package/dist/tabs-4T_4kCf-.js.map +0 -1
  734. package/dist/tabs-Byxxt-AH.cjs.map +0 -1
  735. package/dist/textarea-BwYwH9fu.cjs.map +0 -1
  736. package/dist/textarea-kkYNk1ET.js.map +0 -1
  737. package/dist/theme.service-Dv_55nfE.js.map +0 -1
  738. package/dist/theme.service-pjkTM209.cjs.map +0 -1
  739. package/dist/typography-BVkU11_q.js +0 -358
  740. package/dist/typography-BVkU11_q.js.map +0 -1
  741. package/dist/typography-aaQaIcNc.cjs +0 -282
  742. package/dist/typography-aaQaIcNc.cjs.map +0 -1
  743. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  744. package/dist/utils-H8wNknWC.js.map +0 -1
  745. package/dist/window-C76zstbV.js.map +0 -1
  746. package/dist/window-CmB9XZzT.cjs +0 -58
  747. package/dist/window-CmB9XZzT.cjs.map +0 -1
  748. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  749. package/src/form/fields/date-range/date-utils.ts +0 -58
  750. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  751. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  752. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  753. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  754. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  755. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  756. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  757. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  758. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  759. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -1,16 +1,16 @@
1
1
  import {
2
- BehaviorSubject,
3
- Observable,
4
- fromEvent,
5
- timer,
6
- map,
7
- takeUntil,
8
- defaultIfEmpty,
9
- distinctUntilChanged,
10
- shareReplay,
11
- tap,
12
- switchMap,
13
- of
2
+ BehaviorSubject,
3
+ Observable,
4
+ fromEvent,
5
+ timer,
6
+ map,
7
+ takeUntil,
8
+ defaultIfEmpty,
9
+ distinctUntilChanged,
10
+ shareReplay,
11
+ tap,
12
+ switchMap,
13
+ of,
14
14
  } from 'rxjs'
15
15
  import { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from './theme.events'
16
16
  import type { SchmancyThemeComponent } from './theme.component'
@@ -18,14 +18,14 @@ import type { TSchmancyTheme } from './theme.interface'
18
18
  import { state } from '../state'
19
19
 
20
20
  interface ThemeSettings {
21
- scheme: 'dark' | 'light' | 'auto'
22
- color: string
21
+ scheme: 'dark' | 'light' | 'auto'
22
+ color: string
23
23
  }
24
24
 
25
25
  // Theme settings — persists to localStorage under namespace `schmancy/theme`.
26
26
  const ThemeContext = state<ThemeSettings>('schmancy/theme').local({
27
- scheme: 'auto',
28
- color: '#6200ee',
27
+ scheme: 'auto',
28
+ color: '#6200ee',
29
29
  })
30
30
 
31
31
  /**
@@ -60,457 +60,442 @@ const ThemeContext = state<ThemeSettings>('schmancy/theme').local({
60
60
  * ```
61
61
  */
62
62
  class ThemeService {
63
- private static instance: ThemeService
64
-
65
- // Observable properties for theme values
66
- #theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})
67
- #themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)
68
- #fullscreen$ = new BehaviorSubject<boolean>(false)
69
- #bottomOffset$ = new BehaviorSubject<number>(0)
70
-
71
- // Public observables derived from context
72
- public readonly scheme$ = ThemeContext.$.pipe(
73
- map(settings => settings.scheme),
74
- distinctUntilChanged(),
75
- shareReplay(1)
76
- )
77
-
78
- public readonly color$ = ThemeContext.$.pipe(
79
- map(settings => settings.color),
80
- distinctUntilChanged(),
81
- shareReplay(1)
82
- )
83
-
84
- public readonly theme$ = this.#theme$.asObservable().pipe(
85
- distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),
86
- shareReplay(1)
87
- )
88
-
89
- public readonly themeComponent$ = this.#themeComponent$.asObservable().pipe(
90
- distinctUntilChanged(),
91
- shareReplay(1)
92
- )
93
-
94
- public readonly fullscreen$ = this.#fullscreen$.asObservable().pipe(
95
- distinctUntilChanged(),
96
- shareReplay(1)
97
- )
98
-
99
- public readonly bottomOffset$ = this.#bottomOffset$.asObservable().pipe(
100
- distinctUntilChanged(),
101
- shareReplay(1)
102
- )
103
-
104
- // Getters for synchronous access to current values
105
- get scheme(): 'dark' | 'light' | 'auto' {
106
- return ThemeContext.value.scheme
107
- }
108
-
109
- get color(): string {
110
- return ThemeContext.value.color
111
- }
112
-
113
- get theme(): Partial<TSchmancyTheme> {
114
- return this.#theme$.getValue()
115
- }
116
-
117
- get themeComponent(): SchmancyThemeComponent | null {
118
- return this.#themeComponent$.getValue()
119
- }
120
-
121
- get fullscreen(): boolean {
122
- return this.#fullscreen$.getValue()
123
- }
124
-
125
- get bottomOffset(): number {
126
- return this.#bottomOffset$.getValue()
127
- }
128
-
129
- // Computed observable for actual scheme (resolving 'auto')
130
- public readonly resolvedScheme$ = this.scheme$.pipe(
131
- switchMap(scheme => {
132
- if (scheme === 'auto') {
133
- // Listen to system preference changes
134
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
135
- return new Observable<'dark' | 'light'>(subscriber => {
136
- const handler = (e: MediaQueryListEvent) => {
137
- subscriber.next(e.matches ? 'dark' : 'light')
138
- }
139
- mediaQuery.addEventListener('change', handler)
140
-
141
- // Emit initial value
142
- subscriber.next(mediaQuery.matches ? 'dark' : 'light')
143
-
144
- // Cleanup
145
- return () => mediaQuery.removeEventListener('change', handler)
146
- })
147
- }
148
- return of(scheme as 'dark' | 'light')
149
- }),
150
- distinctUntilChanged(),
151
- shareReplay(1)
152
- )
153
-
154
- constructor() {
155
- this.discoverTheme()
156
- }
157
-
158
- /**
159
- * Discover the nearest theme component in the DOM.
160
- * This method can be called to refresh the theme discovery process.
161
- *
162
- * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null
163
- *
164
- * @example
165
- * ```typescript
166
- * theme.discoverTheme().subscribe(component => {
167
- * if (component) {
168
- * console.log('Theme component found:', component)
169
- * } else {
170
- * console.log('No theme component found')
171
- * }
172
- * })
173
- * ```
174
- */
175
- public discoverTheme(): Observable<SchmancyThemeComponent | null> {
176
- // Dispatch discovery event and wait for response
177
- return fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(
178
- takeUntil(timer(100)), // Wait up to 100ms for response
179
- map(e => e.detail.theme as SchmancyThemeComponent),
180
- defaultIfEmpty(null),
181
- tap(themeComponent => {
182
- if (themeComponent) {
183
- this.registerThemeComponent(themeComponent)
184
- }
185
- })
186
- ).pipe(
187
- tap(() => {
188
- // Trigger theme discovery
189
- window.dispatchEvent(
190
- new CustomEvent(ThemeWhereAreYou, {
191
- bubbles: true,
192
- composed: true,
193
- })
194
- )
195
- }),
196
- switchMap(() =>
197
- fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(
198
- takeUntil(timer(100)),
199
- map(e => e.detail.theme as SchmancyThemeComponent),
200
- defaultIfEmpty(null),
201
- tap(themeComponent => {
202
- if (themeComponent) {
203
- this.registerThemeComponent(themeComponent)
204
- }
205
- })
206
- )
207
- )
208
- )
209
- }
210
-
211
- /**
212
- * Register a theme component and subscribe to its changes.
213
- * This is typically called internally by theme components when they mount or update.
214
- *
215
- * @param {SchmancyThemeComponent} component - The theme component to register
216
- *
217
- * @internal
218
- */
219
- public registerThemeComponent(component: SchmancyThemeComponent): void {
220
- this.#themeComponent$.next(component)
221
-
222
- // Update values from the component
223
- ThemeContext.set({ scheme: component.scheme, color: component.color })
224
- this.#theme$.next(component.theme)
225
- }
226
-
227
- /**
228
- * Update theme values. Usually called internally by theme components.
229
- *
230
- * @param {Object} values - Theme values to update
231
- * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set
232
- * @param {string} [values.color] - Primary color in hex format
233
- * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object
234
- *
235
- * @internal
236
- */
237
- public updateTheme(values: {
238
- scheme?: 'dark' | 'light' | 'auto'
239
- color?: string
240
- theme?: Partial<TSchmancyTheme>
241
- }): void {
242
- const updates: Partial<ThemeSettings> = {}
243
- if (values.scheme !== undefined) {
244
- updates.scheme = values.scheme
245
- }
246
- if (values.color !== undefined) {
247
- updates.color = values.color
248
- }
249
- if (Object.keys(updates).length > 0) {
250
- ThemeContext.set(updates)
251
- }
252
- if (values.theme !== undefined) {
253
- this.#theme$.next(values.theme)
254
- }
255
- }
256
-
257
- /**
258
- * Set the color scheme for the application.
259
- *
260
- * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set
261
- *
262
- * @example
263
- * ```typescript
264
- * // Set to dark mode
265
- * theme.setScheme('dark')
266
- *
267
- * // Set to auto (follows system preference)
268
- * theme.setScheme('auto')
269
- * ```
270
- */
271
- public setScheme(scheme: 'dark' | 'light' | 'auto'): void {
272
- const component = this.themeComponent
273
- if (component) {
274
- component.scheme = scheme
275
- ThemeContext.set({ scheme })
276
- } else {
277
- console.warn('No theme component found. Scheme change may not persist.')
278
- ThemeContext.set({ scheme })
279
- }
280
- }
281
-
282
- /**
283
- * Set the primary color for the theme.
284
- *
285
- * @param {string} color - Primary color in hex format (e.g., '#6200ee')
286
- *
287
- * @example
288
- * ```typescript
289
- * // Set primary color to purple
290
- * theme.setColor('#6200ee')
291
- *
292
- * // Set primary color to blue
293
- * theme.setColor('#2196f3')
294
- * ```
295
- */
296
- public setColor(color: string): void {
297
- const component = this.themeComponent
298
- if (component) {
299
- component.color = color
300
- ThemeContext.set({ color })
301
- } else {
302
- console.warn('No theme component found. Color change may not persist.')
303
- ThemeContext.set({ color })
304
- }
305
- }
306
-
307
- /**
308
- * Check if dark mode is currently active.
309
- * This resolves 'auto' scheme to the actual value based on system preference.
310
- *
311
- * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise
312
- *
313
- * @example
314
- * ```typescript
315
- * theme.isDarkMode().subscribe(isDark => {
316
- * if (isDark) {
317
- * console.log('Dark mode is active')
318
- * } else {
319
- * console.log('Light mode is active')
320
- * }
321
- * })
322
- * ```
323
- */
324
- public isDarkMode(): Observable<boolean> {
325
- return this.resolvedScheme$.pipe(
326
- map(scheme => scheme === 'dark')
327
- )
328
- }
329
-
330
- /**
331
- * Toggle between light and dark mode.
332
- * If currently in 'auto' mode, defaults to 'light'.
333
- *
334
- * @example
335
- * ```typescript
336
- * // Toggle theme on button click
337
- * button.addEventListener('click', () => {
338
- * theme.toggleScheme()
339
- * })
340
- * ```
341
- */
342
- public toggleScheme(): void {
343
- const currentScheme = this.scheme
344
- const newScheme = currentScheme === 'dark' ? 'light' :
345
- currentScheme === 'light' ? 'dark' :
346
- 'light' // If 'auto', default to 'light'
347
- this.setScheme(newScheme)
348
- }
349
-
350
- /**
351
- * Get the current value of a CSS variable from the theme.
352
- *
353
- * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)
354
- * @returns {string} The CSS variable value or empty string if not found
355
- *
356
- * @example
357
- * ```typescript
358
- * // Get primary color variable
359
- * const primaryColor = theme.getCSSVariable('color-primary')
360
- *
361
- * // Get surface color
362
- * const surfaceColor = theme.getCSSVariable('color-surface')
363
- * ```
364
- */
365
- public getCSSVariable(variableName: string): string {
366
- const component = this.themeComponent
367
- if (component) {
368
- const host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)
369
- if (host) {
370
- return getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()
371
- }
372
- }
373
- return ''
374
- }
375
-
376
- /**
377
- * Subscribe to changes of a specific CSS variable.
378
- *
379
- * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)
380
- * @returns {Observable<string>} Observable that emits the CSS variable value when it changes
381
- *
382
- * @example
383
- * ```typescript
384
- * // Watch for primary color changes
385
- * theme.watchCSSVariable('color-primary').subscribe(color => {
386
- * console.log('Primary color changed to:', color)
387
- * })
388
- *
389
- * // Watch for surface color changes
390
- * theme.watchCSSVariable('color-surface').subscribe(color => {
391
- * console.log('Surface color changed to:', color)
392
- * })
393
- * ```
394
- */
395
- public watchCSSVariable(variableName: string): Observable<string> {
396
- return this.theme$.pipe(
397
- map(() => this.getCSSVariable(variableName)),
398
- distinctUntilChanged()
399
- )
400
- }
401
-
402
- /**
403
- * Set the fullscreen state for the application.
404
- * This emits a custom event that navigation components can listen to.
405
- *
406
- * @param {boolean} value - Whether fullscreen mode is active
407
- *
408
- * @example
409
- * ```typescript
410
- * // Enter fullscreen mode
411
- * theme.setFullscreen(true)
412
- *
413
- * // Exit fullscreen mode
414
- * theme.setFullscreen(false)
415
- * ```
416
- */
417
- public setFullscreen(value: boolean): void {
418
- this.#fullscreen$.next(value)
419
-
420
- // Emit custom event for components to listen to
421
- window.dispatchEvent(
422
- new CustomEvent('fullscreen', {
423
- detail: value,
424
- bubbles: true,
425
- composed: true
426
- })
427
- )
428
- }
429
-
430
- /**
431
- * Toggle fullscreen mode.
432
- *
433
- * @example
434
- * ```typescript
435
- * // Toggle fullscreen mode on button click
436
- * button.addEventListener('click', () => {
437
- * theme.toggleFullscreen()
438
- * })
439
- * ```
440
- */
441
- public toggleFullscreen(): void {
442
- this.setFullscreen(!this.fullscreen)
443
- }
444
-
445
- /**
446
- * Set the bottom offset for viewport calculations.
447
- * Used by navigation bars to inform fullHeight directive of reserved space.
448
- *
449
- * @param {number} value - Bottom offset in pixels
450
- *
451
- * @example
452
- * ```typescript
453
- * // Set bottom offset when nav bar is visible
454
- * theme.setBottomOffset(80)
455
- *
456
- * // Clear bottom offset when nav bar is hidden
457
- * theme.setBottomOffset(0)
458
- * ```
459
- */
460
- public setBottomOffset(value: number): void {
461
- this.#bottomOffset$.next(value)
462
- }
463
-
464
- /**
465
- * Convenience method to update theme state including fullscreen.
466
- * Can be called with next() like syntax for familiarity.
467
- *
468
- * @param {Object} values - Theme values to update
469
- * @param {boolean} [values.fullscreen] - Fullscreen state
470
- * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme
471
- * @param {string} [values.color] - Primary color
472
- *
473
- * @example
474
- * ```typescript
475
- * // Set fullscreen mode
476
- * theme.next({ fullscreen: true })
477
- *
478
- * // Update multiple values
479
- * theme.next({
480
- * fullscreen: true,
481
- * scheme: 'dark'
482
- * })
483
- * ```
484
- */
485
- public next(values: {
486
- fullscreen?: boolean
487
- scheme?: 'dark' | 'light' | 'auto'
488
- color?: string
489
- }): void {
490
- if (values.fullscreen !== undefined) {
491
- this.setFullscreen(values.fullscreen)
492
- }
493
- if (values.scheme !== undefined) {
494
- this.setScheme(values.scheme)
495
- }
496
- if (values.color !== undefined) {
497
- this.setColor(values.color)
498
- }
499
- }
500
-
501
- /**
502
- * Get the singleton instance of ThemeService.
503
- *
504
- * @returns {ThemeService} The singleton ThemeService instance
505
- *
506
- * @internal
507
- */
508
- static getInstance(): ThemeService {
509
- if (!ThemeService.instance) {
510
- ThemeService.instance = new ThemeService()
511
- }
512
- return ThemeService.instance
513
- }
63
+ private static instance: ThemeService
64
+
65
+ // Observable properties for theme values
66
+ #theme$ = new BehaviorSubject<Partial<TSchmancyTheme>>({})
67
+ #themeComponent$ = new BehaviorSubject<SchmancyThemeComponent | null>(null)
68
+ #fullscreen$ = new BehaviorSubject<boolean>(false)
69
+ #bottomOffset$ = new BehaviorSubject<number>(0)
70
+
71
+ // Public observables derived from context
72
+ public readonly scheme$ = ThemeContext.$.pipe(
73
+ map(settings => settings.scheme),
74
+ distinctUntilChanged(),
75
+ shareReplay(1),
76
+ )
77
+
78
+ public readonly color$ = ThemeContext.$.pipe(
79
+ map(settings => settings.color),
80
+ distinctUntilChanged(),
81
+ shareReplay(1),
82
+ )
83
+
84
+ public readonly theme$ = this.#theme$.asObservable().pipe(
85
+ distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),
86
+ shareReplay(1),
87
+ )
88
+
89
+ public readonly themeComponent$ = this.#themeComponent$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))
90
+
91
+ public readonly fullscreen$ = this.#fullscreen$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))
92
+
93
+ public readonly bottomOffset$ = this.#bottomOffset$.asObservable().pipe(distinctUntilChanged(), shareReplay(1))
94
+
95
+ // Getters for synchronous access to current values
96
+ get scheme(): 'dark' | 'light' | 'auto' {
97
+ return ThemeContext.value.scheme
98
+ }
99
+
100
+ get color(): string {
101
+ return ThemeContext.value.color
102
+ }
103
+
104
+ get theme(): Partial<TSchmancyTheme> {
105
+ return this.#theme$.getValue()
106
+ }
107
+
108
+ get themeComponent(): SchmancyThemeComponent | null {
109
+ return this.#themeComponent$.getValue()
110
+ }
111
+
112
+ get fullscreen(): boolean {
113
+ return this.#fullscreen$.getValue()
114
+ }
115
+
116
+ get bottomOffset(): number {
117
+ return this.#bottomOffset$.getValue()
118
+ }
119
+
120
+ // Computed observable for actual scheme (resolving 'auto')
121
+ public readonly resolvedScheme$ = this.scheme$.pipe(
122
+ switchMap(scheme => {
123
+ if (scheme === 'auto') {
124
+ // Listen to system preference changes
125
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
126
+ return new Observable<'dark' | 'light'>(subscriber => {
127
+ const handler = (e: MediaQueryListEvent) => {
128
+ subscriber.next(e.matches ? 'dark' : 'light')
129
+ }
130
+ mediaQuery.addEventListener('change', handler)
131
+
132
+ // Emit initial value
133
+ subscriber.next(mediaQuery.matches ? 'dark' : 'light')
134
+
135
+ // Cleanup
136
+ return () => mediaQuery.removeEventListener('change', handler)
137
+ })
138
+ }
139
+ return of(scheme as 'dark' | 'light')
140
+ }),
141
+ distinctUntilChanged(),
142
+ shareReplay(1),
143
+ )
144
+
145
+ constructor() {
146
+ this.discoverTheme()
147
+ }
148
+
149
+ /**
150
+ * Discover the nearest theme component in the DOM.
151
+ * This method can be called to refresh the theme discovery process.
152
+ *
153
+ * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * theme.discoverTheme().subscribe(component => {
158
+ * if (component) {
159
+ * console.log('Theme component found:', component)
160
+ * } else {
161
+ * console.log('No theme component found')
162
+ * }
163
+ * })
164
+ * ```
165
+ */
166
+ public discoverTheme(): Observable<SchmancyThemeComponent | null> {
167
+ // Dispatch discovery event and wait for response
168
+ return fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm)
169
+ .pipe(
170
+ takeUntil(timer(100)), // Wait up to 100ms for response
171
+ map(e => e.detail.theme as SchmancyThemeComponent),
172
+ defaultIfEmpty(null),
173
+ tap(themeComponent => {
174
+ if (themeComponent) {
175
+ this.registerThemeComponent(themeComponent)
176
+ }
177
+ }),
178
+ )
179
+ .pipe(
180
+ tap(() => {
181
+ // Trigger theme discovery
182
+ window.dispatchEvent(
183
+ new CustomEvent(ThemeWhereAreYou, {
184
+ bubbles: true,
185
+ composed: true,
186
+ }),
187
+ )
188
+ }),
189
+ switchMap(() =>
190
+ fromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(
191
+ takeUntil(timer(100)),
192
+ map(e => e.detail.theme as SchmancyThemeComponent),
193
+ defaultIfEmpty(null),
194
+ tap(themeComponent => {
195
+ if (themeComponent) {
196
+ this.registerThemeComponent(themeComponent)
197
+ }
198
+ }),
199
+ ),
200
+ ),
201
+ )
202
+ }
203
+
204
+ /**
205
+ * Register a theme component and subscribe to its changes.
206
+ * This is typically called internally by theme components when they mount or update.
207
+ *
208
+ * @param {SchmancyThemeComponent} component - The theme component to register
209
+ *
210
+ * @internal
211
+ */
212
+ public registerThemeComponent(component: SchmancyThemeComponent): void {
213
+ this.#themeComponent$.next(component)
214
+
215
+ // Update values from the component
216
+ ThemeContext.set({ scheme: component.scheme, color: component.color })
217
+ this.#theme$.next(component.theme)
218
+ }
219
+
220
+ /**
221
+ * Update theme values. Usually called internally by theme components.
222
+ *
223
+ * @param {Object} values - Theme values to update
224
+ * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set
225
+ * @param {string} [values.color] - Primary color in hex format
226
+ * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object
227
+ *
228
+ * @internal
229
+ */
230
+ public updateTheme(values: {
231
+ scheme?: 'dark' | 'light' | 'auto'
232
+ color?: string
233
+ theme?: Partial<TSchmancyTheme>
234
+ }): void {
235
+ const updates: Partial<ThemeSettings> = {}
236
+ if (values.scheme !== undefined) {
237
+ updates.scheme = values.scheme
238
+ }
239
+ if (values.color !== undefined) {
240
+ updates.color = values.color
241
+ }
242
+ if (Object.keys(updates).length > 0) {
243
+ ThemeContext.set(updates)
244
+ }
245
+ if (values.theme !== undefined) {
246
+ this.#theme$.next(values.theme)
247
+ }
248
+ }
249
+
250
+ /**
251
+ * Set the color scheme for the application.
252
+ *
253
+ * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * // Set to dark mode
258
+ * theme.setScheme('dark')
259
+ *
260
+ * // Set to auto (follows system preference)
261
+ * theme.setScheme('auto')
262
+ * ```
263
+ */
264
+ public setScheme(scheme: 'dark' | 'light' | 'auto'): void {
265
+ const component = this.themeComponent
266
+ if (component) {
267
+ component.scheme = scheme
268
+ ThemeContext.set({ scheme })
269
+ } else {
270
+ console.warn('No theme component found. Scheme change may not persist.')
271
+ ThemeContext.set({ scheme })
272
+ }
273
+ }
274
+
275
+ /**
276
+ * Set the primary color for the theme.
277
+ *
278
+ * @param {string} color - Primary color in hex format (e.g., '#6200ee')
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * // Set primary color to purple
283
+ * theme.setColor('#6200ee')
284
+ *
285
+ * // Set primary color to blue
286
+ * theme.setColor('#2196f3')
287
+ * ```
288
+ */
289
+ public setColor(color: string): void {
290
+ const component = this.themeComponent
291
+ if (component) {
292
+ component.color = color
293
+ ThemeContext.set({ color })
294
+ } else {
295
+ console.warn('No theme component found. Color change may not persist.')
296
+ ThemeContext.set({ color })
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Check if dark mode is currently active.
302
+ * This resolves 'auto' scheme to the actual value based on system preference.
303
+ *
304
+ * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * theme.isDarkMode().subscribe(isDark => {
309
+ * if (isDark) {
310
+ * console.log('Dark mode is active')
311
+ * } else {
312
+ * console.log('Light mode is active')
313
+ * }
314
+ * })
315
+ * ```
316
+ */
317
+ public isDarkMode(): Observable<boolean> {
318
+ return this.resolvedScheme$.pipe(map(scheme => scheme === 'dark'))
319
+ }
320
+
321
+ /**
322
+ * Toggle between light and dark mode.
323
+ * If currently in 'auto' mode, defaults to 'light'.
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * // Toggle theme on button click
328
+ * button.addEventListener('click', () => {
329
+ * theme.toggleScheme()
330
+ * })
331
+ * ```
332
+ */
333
+ public toggleScheme(): void {
334
+ const currentScheme = this.scheme
335
+ const newScheme = currentScheme === 'dark' ? 'light' : currentScheme === 'light' ? 'dark' : 'light' // If 'auto', default to 'light'
336
+ this.setScheme(newScheme)
337
+ }
338
+
339
+ /**
340
+ * Get the current value of a CSS variable from the theme.
341
+ *
342
+ * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)
343
+ * @returns {string} The CSS variable value or empty string if not found
344
+ *
345
+ * @example
346
+ * ```typescript
347
+ * // Get primary color variable
348
+ * const primaryColor = theme.getCSSVariable('color-primary')
349
+ *
350
+ * // Get surface color
351
+ * const surfaceColor = theme.getCSSVariable('color-surface')
352
+ * ```
353
+ */
354
+ public getCSSVariable(variableName: string): string {
355
+ const component = this.themeComponent
356
+ if (component) {
357
+ const host = component.root ? document.body : (component.shadowRoot?.host as HTMLElement)
358
+ if (host) {
359
+ return getComputedStyle(host).getPropertyValue(`--schmancy-${variableName}`).trim()
360
+ }
361
+ }
362
+ return ''
363
+ }
364
+
365
+ /**
366
+ * Subscribe to changes of a specific CSS variable.
367
+ *
368
+ * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)
369
+ * @returns {Observable<string>} Observable that emits the CSS variable value when it changes
370
+ *
371
+ * @example
372
+ * ```typescript
373
+ * // Watch for primary color changes
374
+ * theme.watchCSSVariable('color-primary').subscribe(color => {
375
+ * console.log('Primary color changed to:', color)
376
+ * })
377
+ *
378
+ * // Watch for surface color changes
379
+ * theme.watchCSSVariable('color-surface').subscribe(color => {
380
+ * console.log('Surface color changed to:', color)
381
+ * })
382
+ * ```
383
+ */
384
+ public watchCSSVariable(variableName: string): Observable<string> {
385
+ return this.theme$.pipe(
386
+ map(() => this.getCSSVariable(variableName)),
387
+ distinctUntilChanged(),
388
+ )
389
+ }
390
+
391
+ /**
392
+ * Set the fullscreen state for the application.
393
+ * This emits a custom event that navigation components can listen to.
394
+ *
395
+ * @param {boolean} value - Whether fullscreen mode is active
396
+ *
397
+ * @example
398
+ * ```typescript
399
+ * // Enter fullscreen mode
400
+ * theme.setFullscreen(true)
401
+ *
402
+ * // Exit fullscreen mode
403
+ * theme.setFullscreen(false)
404
+ * ```
405
+ */
406
+ public setFullscreen(value: boolean): void {
407
+ this.#fullscreen$.next(value)
408
+
409
+ // Emit custom event for components to listen to
410
+ window.dispatchEvent(
411
+ new CustomEvent('fullscreen', {
412
+ detail: value,
413
+ bubbles: true,
414
+ composed: true,
415
+ }),
416
+ )
417
+ }
418
+
419
+ /**
420
+ * Toggle fullscreen mode.
421
+ *
422
+ * @example
423
+ * ```typescript
424
+ * // Toggle fullscreen mode on button click
425
+ * button.addEventListener('click', () => {
426
+ * theme.toggleFullscreen()
427
+ * })
428
+ * ```
429
+ */
430
+ public toggleFullscreen(): void {
431
+ this.setFullscreen(!this.fullscreen)
432
+ }
433
+
434
+ /**
435
+ * Set the bottom offset for viewport calculations.
436
+ * Used by navigation bars to inform fullHeight directive of reserved space.
437
+ *
438
+ * @param {number} value - Bottom offset in pixels
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * // Set bottom offset when nav bar is visible
443
+ * theme.setBottomOffset(80)
444
+ *
445
+ * // Clear bottom offset when nav bar is hidden
446
+ * theme.setBottomOffset(0)
447
+ * ```
448
+ */
449
+ public setBottomOffset(value: number): void {
450
+ this.#bottomOffset$.next(value)
451
+ }
452
+
453
+ /**
454
+ * Convenience method to update theme state including fullscreen.
455
+ * Can be called with next() like syntax for familiarity.
456
+ *
457
+ * @param {Object} values - Theme values to update
458
+ * @param {boolean} [values.fullscreen] - Fullscreen state
459
+ * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme
460
+ * @param {string} [values.color] - Primary color
461
+ *
462
+ * @example
463
+ * ```typescript
464
+ * // Set fullscreen mode
465
+ * theme.next({ fullscreen: true })
466
+ *
467
+ * // Update multiple values
468
+ * theme.next({
469
+ * fullscreen: true,
470
+ * scheme: 'dark'
471
+ * })
472
+ * ```
473
+ */
474
+ public next(values: { fullscreen?: boolean; scheme?: 'dark' | 'light' | 'auto'; color?: string }): void {
475
+ if (values.fullscreen !== undefined) {
476
+ this.setFullscreen(values.fullscreen)
477
+ }
478
+ if (values.scheme !== undefined) {
479
+ this.setScheme(values.scheme)
480
+ }
481
+ if (values.color !== undefined) {
482
+ this.setColor(values.color)
483
+ }
484
+ }
485
+
486
+ /**
487
+ * Get the singleton instance of ThemeService.
488
+ *
489
+ * @returns {ThemeService} The singleton ThemeService instance
490
+ *
491
+ * @internal
492
+ */
493
+ static getInstance(): ThemeService {
494
+ if (!ThemeService.instance) {
495
+ ThemeService.instance = new ThemeService()
496
+ }
497
+ return ThemeService.instance
498
+ }
514
499
  }
515
500
 
516
501
  /**
@@ -526,4 +511,4 @@ class ThemeService {
526
511
  */
527
512
  export const theme = ThemeService.getInstance()
528
513
  export const schmancyTheme = theme // Alias for convenience
529
- export default theme
514
+ export default theme