@mhmo91/schmancy 0.10.23 → 0.10.25

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 (438) hide show
  1. package/dist/agent/{overlay.confirm-body-xfOh5Q28.js → overlay.confirm-body-DozUyDYx.js} +242 -242
  2. package/dist/agent/{overlay.confirm-body-xfOh5Q28.js.map → overlay.confirm-body-DozUyDYx.js.map} +1 -1
  3. package/dist/agent/schmancy.agent.js +5670 -2939
  4. package/dist/agent/schmancy.agent.js.map +1 -1
  5. package/dist/{area-Ddk7P5wD.js → area-1EG1LrkX.js} +1 -1
  6. package/dist/{area-Ddk7P5wD.js.map → area-1EG1LrkX.js.map} +1 -1
  7. package/dist/{area-Cbkt0NX4.cjs → area-DrVE5pXW.cjs} +1 -1
  8. package/dist/{area-Cbkt0NX4.cjs.map → area-DrVE5pXW.cjs.map} +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/area.js +1 -1
  11. package/dist/{autocomplete-CfBFDSc3.cjs → autocomplete-6pdZxEab.cjs} +1 -1
  12. package/dist/{autocomplete-CfBFDSc3.cjs.map → autocomplete-6pdZxEab.cjs.map} +1 -1
  13. package/dist/{autocomplete-Ds3Q2cwR.js → autocomplete-nrIcCilw.js} +2 -2
  14. package/dist/{autocomplete-Ds3Q2cwR.js.map → autocomplete-nrIcCilw.js.map} +1 -1
  15. package/dist/autocomplete.cjs +1 -1
  16. package/dist/autocomplete.js +1 -1
  17. package/dist/avatar.cjs +2 -2
  18. package/dist/avatar.cjs.map +1 -1
  19. package/dist/avatar.js +3 -3
  20. package/dist/badge.cjs +1 -1
  21. package/dist/badge.js +1 -1
  22. package/dist/{boat-BF5P6p_f.js → boat--fLgbDAE.js} +3 -3
  23. package/dist/{boat-BF5P6p_f.js.map → boat--fLgbDAE.js.map} +1 -1
  24. package/dist/{boat-BPN8HLzZ.cjs → boat-BIB-gPqy.cjs} +1 -1
  25. package/dist/{boat-BPN8HLzZ.cjs.map → boat-BIB-gPqy.cjs.map} +1 -1
  26. package/dist/boat.cjs +1 -1
  27. package/dist/boat.js +1 -1
  28. package/dist/breadcrumb.cjs +1 -1
  29. package/dist/breadcrumb.js +1 -1
  30. package/dist/{busy-C7ejPa-Q.cjs → busy-DVCIxBVf.cjs} +1 -1
  31. package/dist/{busy-C7ejPa-Q.cjs.map → busy-DVCIxBVf.cjs.map} +1 -1
  32. package/dist/{busy-BuACDJy6.js → busy-DshZcVZ4.js} +1 -1
  33. package/dist/{busy-BuACDJy6.js.map → busy-DshZcVZ4.js.map} +1 -1
  34. package/dist/busy.cjs +1 -1
  35. package/dist/busy.js +1 -1
  36. package/dist/{button-C1IMGS6M.js → button-D9UJ7I6Z.js} +5 -5
  37. package/dist/{button-C1IMGS6M.js.map → button-D9UJ7I6Z.js.map} +1 -1
  38. package/dist/{button-CWNbPPq-.cjs → button-JrTMzwHY.cjs} +4 -4
  39. package/dist/{button-CWNbPPq-.cjs.map → button-JrTMzwHY.cjs.map} +1 -1
  40. package/dist/button.cjs +1 -1
  41. package/dist/button.js +1 -1
  42. package/dist/{card-CgQwXO8L.js → card-BvCFuX3J.js} +2 -2
  43. package/dist/{card-CgQwXO8L.js.map → card-BvCFuX3J.js.map} +1 -1
  44. package/dist/{card-BIzaLuEg.cjs → card-CTotavhH.cjs} +1 -1
  45. package/dist/{card-BIzaLuEg.cjs.map → card-CTotavhH.cjs.map} +1 -1
  46. package/dist/card.cjs +1 -1
  47. package/dist/card.js +1 -1
  48. package/dist/{checkbox-BAqE3sTx.cjs → checkbox-By4fFmjt.cjs} +1 -1
  49. package/dist/{checkbox-BAqE3sTx.cjs.map → checkbox-By4fFmjt.cjs.map} +1 -1
  50. package/dist/{checkbox-BNdg57Om.js → checkbox-GPsdCUbs.js} +1 -1
  51. package/dist/{checkbox-BNdg57Om.js.map → checkbox-GPsdCUbs.js.map} +1 -1
  52. package/dist/checkbox.cjs +1 -1
  53. package/dist/checkbox.js +1 -1
  54. package/dist/{chips-DnqLaOb1.js → chips-27umqnat.js} +4 -4
  55. package/dist/{chips-DnqLaOb1.js.map → chips-27umqnat.js.map} +1 -1
  56. package/dist/{chips-DS3y4Lbn.cjs → chips-BZf9sGA8.cjs} +1 -1
  57. package/dist/{chips-DS3y4Lbn.cjs.map → chips-BZf9sGA8.cjs.map} +1 -1
  58. package/dist/chips.cjs +1 -1
  59. package/dist/chips.js +2 -2
  60. package/dist/connectivity.cjs +1 -1
  61. package/dist/connectivity.js +1 -1
  62. package/dist/content-drawer.cjs +1 -1
  63. package/dist/content-drawer.js +1 -1
  64. package/dist/{cursor-glow-Cs2XLDB9.js → cursor-glow-Ah7VXSj7.js} +1 -1
  65. package/dist/{cursor-glow-Cs2XLDB9.js.map → cursor-glow-Ah7VXSj7.js.map} +1 -1
  66. package/dist/{cursor-glow-C8LgCxpI.cjs → cursor-glow-Bulq-38P.cjs} +1 -1
  67. package/dist/{cursor-glow-C8LgCxpI.cjs.map → cursor-glow-Bulq-38P.cjs.map} +1 -1
  68. package/dist/{date-range-VA1mi1N7.cjs → date-range-BJnLWCRF.cjs} +1 -1
  69. package/dist/{date-range-VA1mi1N7.cjs.map → date-range-BJnLWCRF.cjs.map} +1 -1
  70. package/dist/{date-range-inline-CAa0_4EI.cjs → date-range-inline-B6uKUliV.cjs} +1 -1
  71. package/dist/{date-range-inline-CAa0_4EI.cjs.map → date-range-inline-B6uKUliV.cjs.map} +1 -1
  72. package/dist/{date-range-inline-PeRt1iIF.js → date-range-inline-BNbbRfIA.js} +1 -1
  73. package/dist/{date-range-inline-PeRt1iIF.js.map → date-range-inline-BNbbRfIA.js.map} +1 -1
  74. package/dist/date-range-inline.cjs +1 -1
  75. package/dist/date-range-inline.js +1 -1
  76. package/dist/{date-range-CAqB-B0M.js → date-range-wDVHcr0u.js} +2 -2
  77. package/dist/{date-range-CAqB-B0M.js.map → date-range-wDVHcr0u.js.map} +1 -1
  78. package/dist/date-range.cjs +1 -1
  79. package/dist/date-range.js +1 -1
  80. package/dist/delay.cjs +1 -1
  81. package/dist/delay.js +2 -2
  82. package/dist/{details-BpFjVclg.js → details-Ckxpwacj.js} +4 -4
  83. package/dist/{details-BpFjVclg.js.map → details-Ckxpwacj.js.map} +1 -1
  84. package/dist/{details-BnXbDpt7.cjs → details-DNrWIes6.cjs} +1 -1
  85. package/dist/{details-BnXbDpt7.cjs.map → details-DNrWIes6.cjs.map} +1 -1
  86. package/dist/details.cjs +1 -1
  87. package/dist/details.js +1 -1
  88. package/dist/directives-BBMqe8x3.js +4082 -0
  89. package/dist/directives-BBMqe8x3.js.map +1 -0
  90. package/dist/directives-F15SJZUR.cjs +348 -0
  91. package/dist/directives-F15SJZUR.cjs.map +1 -0
  92. package/dist/directives.cjs +1 -99
  93. package/dist/directives.js +6 -1363
  94. package/dist/discovery.cjs +1 -1
  95. package/dist/discovery.js +2 -61
  96. package/dist/discovery.service-COmbHaoI.js +61 -0
  97. package/dist/discovery.service-COmbHaoI.js.map +1 -0
  98. package/dist/discovery.service-CVDXO9rH.cjs +1 -0
  99. package/dist/discovery.service-CVDXO9rH.cjs.map +1 -0
  100. package/dist/{divider-D8cBBkdG.js → divider-BzcZGo4S.js} +1 -1
  101. package/dist/{divider-D8cBBkdG.js.map → divider-BzcZGo4S.js.map} +1 -1
  102. package/dist/{divider-B84lt1A3.cjs → divider-Cde33ivs.cjs} +1 -1
  103. package/dist/{divider-B84lt1A3.cjs.map → divider-Cde33ivs.cjs.map} +1 -1
  104. package/dist/divider.cjs +1 -1
  105. package/dist/divider.js +1 -1
  106. package/dist/dropdown.cjs +1 -1
  107. package/dist/dropdown.js +1 -1
  108. package/dist/{expand-BJiKggfg.js → expand-DI144OzN.js} +3 -3
  109. package/dist/{expand-BJiKggfg.js.map → expand-DI144OzN.js.map} +1 -1
  110. package/dist/{expand-DK-O37-j.cjs → expand-Db4V0jj-.cjs} +1 -1
  111. package/dist/{expand-DK-O37-j.cjs.map → expand-Db4V0jj-.cjs.map} +1 -1
  112. package/dist/expand.cjs +1 -1
  113. package/dist/expand.js +1 -1
  114. package/dist/{float-RWR6Q1Hh.cjs → float--RScf9BZ.cjs} +1 -1
  115. package/dist/{float-RWR6Q1Hh.cjs.map → float--RScf9BZ.cjs.map} +1 -1
  116. package/dist/{float-B4FDN40h.js → float-DIyzy1c2.js} +1 -1
  117. package/dist/{float-B4FDN40h.js.map → float-DIyzy1c2.js.map} +1 -1
  118. package/dist/float.cjs +1 -1
  119. package/dist/float.js +1 -1
  120. package/dist/{form-ha3df3K7.cjs → form-DWNpOsIU.cjs} +1 -1
  121. package/dist/{form-ha3df3K7.cjs.map → form-DWNpOsIU.cjs.map} +1 -1
  122. package/dist/{form-B-Sm6u25.js → form-RtXH8UHQ.js} +8 -8
  123. package/dist/{form-B-Sm6u25.js.map → form-RtXH8UHQ.js.map} +1 -1
  124. package/dist/form.cjs +1 -1
  125. package/dist/form.js +6 -6
  126. package/dist/handover/agent-runtime-followups.md +1 -1
  127. package/dist/handover/agent-runtime-v1.md +3 -3
  128. package/dist/{hashContent-dJrI-9sc.js.map → hashContent-Dgmzc32o.js.map} +1 -1
  129. package/dist/{hashContent-Ck6laKlk.cjs.map → hashContent-Dh1VzIAb.cjs.map} +1 -1
  130. package/dist/icons-DXanGDZ_.js +52 -0
  131. package/dist/icons-DXanGDZ_.js.map +1 -0
  132. package/dist/icons-bNxlWLlk.cjs +24 -0
  133. package/dist/icons-bNxlWLlk.cjs.map +1 -0
  134. package/dist/icons.cjs +1 -1
  135. package/dist/icons.js +1 -1
  136. package/dist/{iframe-BXe1TPx1.cjs → iframe-B1XWRaLC.cjs} +1 -1
  137. package/dist/{iframe-BXe1TPx1.cjs.map → iframe-B1XWRaLC.cjs.map} +1 -1
  138. package/dist/{iframe-CByrVlZy.js → iframe-BlHK0cjy.js} +1 -1
  139. package/dist/{iframe-CByrVlZy.js.map → iframe-BlHK0cjy.js.map} +1 -1
  140. package/dist/iframe.cjs +1 -1
  141. package/dist/iframe.js +1 -1
  142. package/dist/index.cjs +1 -1
  143. package/dist/index.js +60 -60
  144. package/dist/{input-BY9OCQWr.cjs → input-C-_XU9AX.cjs} +1 -1
  145. package/dist/{input-BY9OCQWr.cjs.map → input-C-_XU9AX.cjs.map} +1 -1
  146. package/dist/{input-Q0fm34Co.js → input-CiGa8Dkl.js} +1 -1
  147. package/dist/{input-Q0fm34Co.js.map → input-CiGa8Dkl.js.map} +1 -1
  148. package/dist/{input-chip-BwNf3GD0.cjs → input-chip-5aYnuRZ_.cjs} +1 -1
  149. package/dist/{input-chip-BwNf3GD0.cjs.map → input-chip-5aYnuRZ_.cjs.map} +1 -1
  150. package/dist/{input-chip-CytUirVS.js → input-chip-l--zCMGR.js} +1 -1
  151. package/dist/{input-chip-CytUirVS.js.map → input-chip-l--zCMGR.js.map} +1 -1
  152. package/dist/input.cjs +1 -1
  153. package/dist/input.js +1 -1
  154. package/dist/json.cjs +2 -2
  155. package/dist/json.cjs.map +1 -1
  156. package/dist/json.js +3 -3
  157. package/dist/json.js.map +1 -1
  158. package/dist/kbd.cjs +1 -1
  159. package/dist/kbd.js +1 -1
  160. package/dist/{layout-Dq2oeOTS.js → layout-DSAjo92m.js} +1 -1
  161. package/dist/{layout-Dq2oeOTS.js.map → layout-DSAjo92m.js.map} +1 -1
  162. package/dist/{layout-BbCIfIgo.cjs → layout-eXb9wjDh.cjs} +1 -1
  163. package/dist/{layout-BbCIfIgo.cjs.map → layout-eXb9wjDh.cjs.map} +1 -1
  164. package/dist/layout.cjs +1 -1
  165. package/dist/layout.js +1 -1
  166. package/dist/{lightbox-p2E0oVR0.cjs → lightbox-CfRDkeeb.cjs} +2 -2
  167. package/dist/{lightbox-p2E0oVR0.cjs.map → lightbox-CfRDkeeb.cjs.map} +1 -1
  168. package/dist/{lightbox-Ckvn5YNF.js → lightbox-D9oiu1Nv.js} +2 -2
  169. package/dist/{lightbox-Ckvn5YNF.js.map → lightbox-D9oiu1Nv.js.map} +1 -1
  170. package/dist/lightbox.cjs +1 -1
  171. package/dist/lightbox.js +1 -1
  172. package/dist/{list-CsrPVvmm.js → list-BOlRka4v.js} +1 -1
  173. package/dist/{list-CsrPVvmm.js.map → list-BOlRka4v.js.map} +1 -1
  174. package/dist/{list-r57UFHu3.cjs → list-CDJi3_Ut.cjs} +1 -1
  175. package/dist/{list-r57UFHu3.cjs.map → list-CDJi3_Ut.cjs.map} +1 -1
  176. package/dist/list.cjs +1 -1
  177. package/dist/list.js +1 -1
  178. package/dist/{magnetic-Bgh7aHHI.cjs → magnetic-D-ph029G.cjs} +1 -1
  179. package/dist/{magnetic-Bgh7aHHI.cjs.map → magnetic-D-ph029G.cjs.map} +1 -1
  180. package/dist/{magnetic-DxvoEz8_.js → magnetic-mHXl54Z8.js} +1 -1
  181. package/dist/{magnetic-DxvoEz8_.js.map → magnetic-mHXl54Z8.js.map} +1 -1
  182. package/dist/{menu-DBuZiPyW.cjs → menu-CJaDL2cd.cjs} +1 -1
  183. package/dist/{menu-DBuZiPyW.cjs.map → menu-CJaDL2cd.cjs.map} +1 -1
  184. package/dist/{menu-Csm6Fg88.js → menu-XyrLmCi_.js} +2 -2
  185. package/dist/{menu-Csm6Fg88.js.map → menu-XyrLmCi_.js.map} +1 -1
  186. package/dist/menu.cjs +1 -1
  187. package/dist/menu.js +1 -1
  188. package/dist/mixins-CsYsIJOI.cjs +254 -0
  189. package/dist/mixins-CsYsIJOI.cjs.map +1 -0
  190. package/dist/mixins-DySzfmal.js +642 -0
  191. package/dist/mixins-DySzfmal.js.map +1 -0
  192. package/dist/mixins.cjs +1 -1
  193. package/dist/mixins.js +2 -2
  194. package/dist/nav-drawer.cjs +1 -1
  195. package/dist/nav-drawer.js +1 -1
  196. package/dist/navigation-bar.cjs +1 -1
  197. package/dist/navigation-bar.js +1 -1
  198. package/dist/navigation-rail.cjs +5 -9
  199. package/dist/navigation-rail.cjs.map +1 -1
  200. package/dist/navigation-rail.js +5 -11
  201. package/dist/navigation-rail.js.map +1 -1
  202. package/dist/{notification-CgTBiAdf.js → notification-CHrEY4u8.js} +2 -2
  203. package/dist/{notification-CgTBiAdf.js.map → notification-CHrEY4u8.js.map} +1 -1
  204. package/dist/{notification-58tkVys8.cjs → notification-DKp4tjaB.cjs} +1 -1
  205. package/dist/{notification-58tkVys8.cjs.map → notification-DKp4tjaB.cjs.map} +1 -1
  206. package/dist/notification.cjs +1 -1
  207. package/dist/notification.js +1 -1
  208. package/dist/{option-Bicf6xpI.js → option-Vpy4UQ-D.js} +1 -1
  209. package/dist/{option-Bicf6xpI.js.map → option-Vpy4UQ-D.js.map} +1 -1
  210. package/dist/{option-61YE3gub.cjs → option-nRk4MuXH.cjs} +1 -1
  211. package/dist/{option-61YE3gub.cjs.map → option-nRk4MuXH.cjs.map} +1 -1
  212. package/dist/option.cjs +1 -1
  213. package/dist/option.js +1 -1
  214. package/dist/{overlay-CpvmytrQ.cjs → overlay-HNrWZ4sB.cjs} +1 -1
  215. package/dist/{overlay-CpvmytrQ.cjs.map → overlay-HNrWZ4sB.cjs.map} +1 -1
  216. package/dist/{overlay-CAI2FAp7.js → overlay-jlkcrt8F.js} +5 -5
  217. package/dist/{overlay-CAI2FAp7.js.map → overlay-jlkcrt8F.js.map} +1 -1
  218. package/dist/{overlay-stack-Dk0xETTy.cjs.map → overlay-stack-Bdr9lOqi.cjs.map} +1 -1
  219. package/dist/{overlay-stack-BR4iYivO.js.map → overlay-stack-D2rgxQLh.js.map} +1 -1
  220. package/dist/overlay.cjs +1 -1
  221. package/dist/{overlay.confirm-body-QD-5cj3_.cjs → overlay.confirm-body-B8dFI3cj.cjs} +1 -1
  222. package/dist/{overlay.confirm-body-QD-5cj3_.cjs.map → overlay.confirm-body-B8dFI3cj.cjs.map} +1 -1
  223. package/dist/{overlay.confirm-body-Cq25CkTw.js → overlay.confirm-body-CYShkjI6.js} +1 -1
  224. package/dist/{overlay.confirm-body-Cq25CkTw.js.map → overlay.confirm-body-CYShkjI6.js.map} +1 -1
  225. package/dist/overlay.js +3 -3
  226. package/dist/{overlay.service-BG0bqPwJ.cjs → overlay.service-BTPn7Uv7.cjs} +1 -1
  227. package/dist/{overlay.service-BG0bqPwJ.cjs.map → overlay.service-BTPn7Uv7.cjs.map} +1 -1
  228. package/dist/{overlay.service-Bpjrhaxh.js → overlay.service-BqhhxVJp.js} +2 -2
  229. package/dist/{overlay.service-Bpjrhaxh.js.map → overlay.service-BqhhxVJp.js.map} +1 -1
  230. package/dist/{progress-Zqx-S9NZ.js → progress-8Bn88GK_.js} +1 -1
  231. package/dist/{progress-Zqx-S9NZ.js.map → progress-8Bn88GK_.js.map} +1 -1
  232. package/dist/{progress-D8XZJVl5.cjs → progress-CAp_4jtq.cjs} +1 -1
  233. package/dist/{progress-D8XZJVl5.cjs.map → progress-CAp_4jtq.cjs.map} +1 -1
  234. package/dist/progress.cjs +1 -1
  235. package/dist/progress.js +1 -1
  236. package/dist/{radio-group-bl8K4Gls.cjs → radio-group-CN44mAoc.cjs} +1 -1
  237. package/dist/{radio-group-bl8K4Gls.cjs.map → radio-group-CN44mAoc.cjs.map} +1 -1
  238. package/dist/{radio-group-D9MU1Mxz.js → radio-group-GNHA7qJR.js} +1 -1
  239. package/dist/{radio-group-D9MU1Mxz.js.map → radio-group-GNHA7qJR.js.map} +1 -1
  240. package/dist/radio-group.cjs +1 -1
  241. package/dist/radio-group.js +1 -1
  242. package/dist/range.cjs +1 -1
  243. package/dist/range.js +1 -1
  244. package/dist/{reduced-motion-D7LqTUMn.js.map → reduced-motion-D-L12p7G.js.map} +1 -1
  245. package/dist/{reduced-motion-Dzfp_w5x.cjs.map → reduced-motion-Ds-HjMzn.cjs.map} +1 -1
  246. package/dist/{rxjs-utils-BK8VMe3K.js.map → rxjs-utils-BXpvHN4-.js.map} +1 -1
  247. package/dist/{rxjs-utils-DhOKenkS.cjs.map → rxjs-utils-CaC-tdot.cjs.map} +1 -1
  248. package/dist/rxjs-utils.cjs +1 -1
  249. package/dist/rxjs-utils.js +1 -1
  250. package/dist/{select-CMwkl-D6.js → select-BnuXRHS4.js} +3 -3
  251. package/dist/{select-CMwkl-D6.js.map → select-BnuXRHS4.js.map} +1 -1
  252. package/dist/{select-COIfVtZl.cjs → select-DZNns5Pa.cjs} +2 -2
  253. package/dist/{select-COIfVtZl.cjs.map → select-DZNns5Pa.cjs.map} +1 -1
  254. package/dist/select.cjs +1 -1
  255. package/dist/select.js +1 -1
  256. package/dist/skeleton.cjs +1 -1
  257. package/dist/skeleton.js +1 -1
  258. package/dist/skills/INDEX.md +2 -1
  259. package/dist/skills/SKILL.md +33 -23
  260. package/dist/skills/area.md +5 -4
  261. package/dist/skills/connectivity.md +1 -3
  262. package/dist/skills/directives.md +36 -0
  263. package/dist/skills/icons.md +95 -31
  264. package/dist/skills/layout.md +36 -53
  265. package/dist/skills/mixins.md +26 -5
  266. package/dist/skills/schmancy/INDEX.md +2 -1
  267. package/dist/skills/schmancy/SKILL.md +33 -23
  268. package/dist/skills/schmancy/area.md +5 -4
  269. package/dist/skills/schmancy/connectivity.md +1 -3
  270. package/dist/skills/schmancy/directives.md +36 -0
  271. package/dist/skills/schmancy/icons.md +95 -31
  272. package/dist/skills/schmancy/layout.md +36 -53
  273. package/dist/skills/schmancy/mixins.md +26 -5
  274. package/dist/slider.cjs +1 -1
  275. package/dist/slider.js +1 -1
  276. package/dist/{splash-screen-xrMNpzkm.js → splash-screen-CUP_elaT.js} +1 -1
  277. package/dist/{splash-screen-xrMNpzkm.js.map → splash-screen-CUP_elaT.js.map} +1 -1
  278. package/dist/{splash-screen-2hxq8Sft.cjs → splash-screen-DeoPRrOu.cjs} +1 -1
  279. package/dist/{splash-screen-2hxq8Sft.cjs.map → splash-screen-DeoPRrOu.cjs.map} +1 -1
  280. package/dist/splash-screen.cjs +1 -1
  281. package/dist/splash-screen.js +1 -1
  282. package/dist/{src-B15R32Sp.js → src-B1VkLX3l.js} +159 -159
  283. package/dist/src-B1VkLX3l.js.map +1 -0
  284. package/dist/{src-BWQvtOOf.cjs → src-DQ4wr0qq.cjs} +13 -13
  285. package/dist/src-DQ4wr0qq.cjs.map +1 -0
  286. package/dist/steps.cjs +1 -1
  287. package/dist/steps.js +1 -1
  288. package/dist/{surface-BkQ44Wuo.cjs → surface-LkaZQXZn.cjs} +1 -1
  289. package/dist/{surface-BkQ44Wuo.cjs.map → surface-LkaZQXZn.cjs.map} +1 -1
  290. package/dist/{surface-3nnvlxeE.js → surface-hOvkrjGN.js} +1 -1
  291. package/dist/{surface-3nnvlxeE.js.map → surface-hOvkrjGN.js.map} +1 -1
  292. package/dist/surface.cjs +1 -1
  293. package/dist/surface.js +1 -1
  294. package/dist/switch.cjs +1 -1
  295. package/dist/switch.js +1 -1
  296. package/dist/table.cjs +2 -2
  297. package/dist/table.cjs.map +1 -1
  298. package/dist/table.js +2 -2
  299. package/dist/table.js.map +1 -1
  300. package/dist/{tabs-CnLIe8nE.js → tabs-CfwIHhHo.js} +1 -1
  301. package/dist/{tabs-CnLIe8nE.js.map → tabs-CfwIHhHo.js.map} +1 -1
  302. package/dist/{tabs-Dql0rcqZ.cjs → tabs-bplzstz6.cjs} +1 -1
  303. package/dist/{tabs-Dql0rcqZ.cjs.map → tabs-bplzstz6.cjs.map} +1 -1
  304. package/dist/tabs.cjs +1 -1
  305. package/dist/tabs.js +1 -1
  306. package/dist/teleport.cjs +1 -1
  307. package/dist/teleport.js +1 -1
  308. package/dist/{textarea-BAogS_Ff.js → textarea-C1A5xuw9.js} +1 -1
  309. package/dist/{textarea-BAogS_Ff.js.map → textarea-C1A5xuw9.js.map} +1 -1
  310. package/dist/{textarea-CGD6lAEe.cjs → textarea-hrDp5gQq.cjs} +1 -1
  311. package/dist/{textarea-CGD6lAEe.cjs.map → textarea-hrDp5gQq.cjs.map} +1 -1
  312. package/dist/textarea.cjs +1 -1
  313. package/dist/textarea.js +1 -1
  314. package/dist/{theme-CUK0HrS3.js → theme-BniFOMEo.js} +4 -4
  315. package/dist/{theme-CUK0HrS3.js.map → theme-BniFOMEo.js.map} +1 -1
  316. package/dist/{theme-DKrrQ-ic.cjs → theme-DmR6PKV8.cjs} +3 -3
  317. package/dist/{theme-DKrrQ-ic.cjs.map → theme-DmR6PKV8.cjs.map} +1 -1
  318. package/dist/{theme-button-Bb8qW2IH.js → theme-button--ruZIb0T.js} +1 -1
  319. package/dist/{theme-button-Bb8qW2IH.js.map → theme-button--ruZIb0T.js.map} +1 -1
  320. package/dist/{theme-button-CmTwFm3l.cjs → theme-button-a0LgZ7hQ.cjs} +1 -1
  321. package/dist/{theme-button-CmTwFm3l.cjs.map → theme-button-a0LgZ7hQ.cjs.map} +1 -1
  322. package/dist/theme-button.cjs +1 -1
  323. package/dist/theme-button.js +1 -1
  324. package/dist/theme.cjs +1 -1
  325. package/dist/{theme.interface-D4NeufQA.cjs.map → theme.interface-B5xjEk74.cjs.map} +1 -1
  326. package/dist/{theme.interface-C2XNgsLB.js.map → theme.interface-DVEw3s8m.js.map} +1 -1
  327. package/dist/theme.js +4 -4
  328. package/dist/{theme.service-CSzNkqBB.js.map → theme.service-Bh08uOSJ.js.map} +1 -1
  329. package/dist/{theme.service-CnFUmUpc.cjs.map → theme.service-Y-e8b331.cjs.map} +1 -1
  330. package/dist/tree.cjs +1 -1
  331. package/dist/tree.js +1 -1
  332. package/dist/typography.cjs +1 -1
  333. package/dist/typography.js +1 -1
  334. package/dist/{utils-Cxg0Kfy5.js → utils-578eFTx4.js} +1 -1
  335. package/dist/{utils-Cxg0Kfy5.js.map → utils-578eFTx4.js.map} +1 -1
  336. package/dist/{utils-aCJYAGUr.cjs → utils-CVWUrECT.cjs} +1 -1
  337. package/dist/{utils-aCJYAGUr.cjs.map → utils-CVWUrECT.cjs.map} +1 -1
  338. package/dist/utils.cjs +1 -1
  339. package/dist/utils.js +2 -2
  340. package/dist/visually-hidden.cjs +1 -1
  341. package/dist/visually-hidden.js +1 -1
  342. package/dist/{window-DuDAQa6y.js → window-BT9JecWy.js} +5 -5
  343. package/dist/{window-DuDAQa6y.js.map → window-BT9JecWy.js.map} +1 -1
  344. package/dist/{window-BbWlaPZv.cjs → window-Bp7zWZpu.cjs} +1 -1
  345. package/dist/{window-BbWlaPZv.cjs.map → window-Bp7zWZpu.cjs.map} +1 -1
  346. package/dist/window.cjs +1 -1
  347. package/dist/window.js +1 -1
  348. package/package.json +1 -1
  349. package/skills/schmancy/INDEX.md +2 -1
  350. package/skills/schmancy/SKILL.md +33 -23
  351. package/skills/schmancy/area.md +5 -4
  352. package/skills/schmancy/connectivity.md +1 -3
  353. package/skills/schmancy/directives.md +36 -0
  354. package/skills/schmancy/icons.md +95 -31
  355. package/skills/schmancy/layout.md +36 -53
  356. package/skills/schmancy/mixins.md +26 -5
  357. package/src/badge/badge.ts +7 -11
  358. package/src/button/icon-button.ts +3 -4
  359. package/src/directives/ai-badge.ts +95 -0
  360. package/src/directives/art/art.directive.ts +228 -0
  361. package/src/directives/art/effects/error.ts +192 -0
  362. package/src/directives/art/effects/funkhaus.ts +121 -0
  363. package/src/directives/art/effects/howl.ts +203 -0
  364. package/src/directives/art/effects/samwa.ts +228 -0
  365. package/src/directives/art/effects/snow.ts +207 -0
  366. package/src/directives/art/effects/starfield.ts +107 -0
  367. package/src/directives/art/index.ts +2 -0
  368. package/src/directives/art/particle-pool.ts +40 -0
  369. package/src/directives/art/types.ts +129 -0
  370. package/src/directives/art/utils.ts +35 -0
  371. package/src/directives/battery.ts +1014 -0
  372. package/src/directives/beta.ts +44 -0
  373. package/src/directives/fill.ts +32 -60
  374. package/src/directives/fyi.ts +551 -0
  375. package/src/directives/hummingbird.ts +1712 -0
  376. package/src/directives/index.ts +9 -0
  377. package/src/directives/missed-punch.ts +407 -0
  378. package/src/directives/urgent.ts +660 -0
  379. package/src/directives/working-snake.ts +294 -0
  380. package/src/icons/icon.ts +53 -30
  381. package/src/json/json.ts +1 -1
  382. package/src/navigation-rail/navigation-rail-item.ts +7 -12
  383. package/src/navigation-rail/navigation-rail.ts +0 -2
  384. package/src/table/table.ts +2 -2
  385. package/src/theme/theme-audio-player.ts +1 -1
  386. package/types/mixins/SchmancyElement.d.ts +31 -0
  387. package/types/src/badge/badge.d.ts +1 -1
  388. package/types/src/directives/ai-badge.d.ts +15 -0
  389. package/types/src/directives/art/art.directive.d.ts +19 -0
  390. package/types/src/directives/art/effects/error.d.ts +7 -0
  391. package/types/src/directives/art/effects/funkhaus.d.ts +7 -0
  392. package/types/src/directives/art/effects/howl.d.ts +7 -0
  393. package/types/src/directives/art/effects/samwa.d.ts +7 -0
  394. package/types/src/directives/art/effects/snow.d.ts +7 -0
  395. package/types/src/directives/art/effects/starfield.d.ts +10 -0
  396. package/types/src/directives/art/index.d.ts +2 -0
  397. package/types/src/directives/art/particle-pool.d.ts +16 -0
  398. package/types/src/directives/art/types.d.ts +126 -0
  399. package/types/src/directives/art/utils.d.ts +5 -0
  400. package/types/src/directives/battery.d.ts +96 -0
  401. package/types/src/directives/beta.d.ts +33 -0
  402. package/types/src/directives/fill.d.ts +4 -11
  403. package/types/src/directives/fyi.d.ts +76 -0
  404. package/types/src/directives/hummingbird.d.ts +180 -0
  405. package/types/src/directives/index.d.ts +9 -0
  406. package/types/src/directives/missed-punch.d.ts +28 -0
  407. package/types/src/directives/urgent.d.ts +88 -0
  408. package/types/src/directives/working-snake.d.ts +46 -0
  409. package/types/src/icons/icon.d.ts +22 -0
  410. package/dist/directives.cjs.map +0 -1
  411. package/dist/directives.js.map +0 -1
  412. package/dist/discovery.cjs.map +0 -1
  413. package/dist/discovery.js.map +0 -1
  414. package/dist/icons-DJuXwn8D.js +0 -48
  415. package/dist/icons-DJuXwn8D.js.map +0 -1
  416. package/dist/icons-oNRUCAEY.cjs +0 -33
  417. package/dist/icons-oNRUCAEY.cjs.map +0 -1
  418. package/dist/mixins-DTCHPEd4.cjs +0 -254
  419. package/dist/mixins-DTCHPEd4.cjs.map +0 -1
  420. package/dist/mixins-pU53qf6R.js +0 -636
  421. package/dist/mixins-pU53qf6R.js.map +0 -1
  422. package/dist/skills/page.md +0 -84
  423. package/dist/skills/schmancy/page.md +0 -84
  424. package/dist/src-B15R32Sp.js.map +0 -1
  425. package/dist/src-BWQvtOOf.cjs.map +0 -1
  426. package/skills/schmancy/page.md +0 -84
  427. /package/dist/{hashContent-dJrI-9sc.js → hashContent-Dgmzc32o.js} +0 -0
  428. /package/dist/{hashContent-Ck6laKlk.cjs → hashContent-Dh1VzIAb.cjs} +0 -0
  429. /package/dist/{overlay-stack-Dk0xETTy.cjs → overlay-stack-Bdr9lOqi.cjs} +0 -0
  430. /package/dist/{overlay-stack-BR4iYivO.js → overlay-stack-D2rgxQLh.js} +0 -0
  431. /package/dist/{reduced-motion-D7LqTUMn.js → reduced-motion-D-L12p7G.js} +0 -0
  432. /package/dist/{reduced-motion-Dzfp_w5x.cjs → reduced-motion-Ds-HjMzn.cjs} +0 -0
  433. /package/dist/{rxjs-utils-BK8VMe3K.js → rxjs-utils-BXpvHN4-.js} +0 -0
  434. /package/dist/{rxjs-utils-DhOKenkS.cjs → rxjs-utils-CaC-tdot.cjs} +0 -0
  435. /package/dist/{theme.interface-D4NeufQA.cjs → theme.interface-B5xjEk74.cjs} +0 -0
  436. /package/dist/{theme.interface-C2XNgsLB.js → theme.interface-DVEw3s8m.js} +0 -0
  437. /package/dist/{theme.service-CSzNkqBB.js → theme.service-Bh08uOSJ.js} +0 -0
  438. /package/dist/{theme.service-CnFUmUpc.cjs → theme.service-Y-e8b331.cjs} +0 -0
@@ -0,0 +1,1014 @@
1
+ /**
2
+ * Futuristic Battery Fill Directive
3
+ *
4
+ * A next-gen energy indicator with holographic effects, scan lines, and sci-fi aesthetics.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * html`<div ${futureCell({ percent: 75, variant: 'cyber' })}>POWER CORE</div>`
9
+ * html`<div ${futureCell({ percent: 50, variant: 'hologram' })}>ENERGY CELL</div>`
10
+ * ```
11
+ */
12
+
13
+ import { noChange } from 'lit'
14
+ import { AsyncDirective, directive } from 'lit/async-directive.js'
15
+ import type { ElementPart } from 'lit'
16
+
17
+ // ============================================================================
18
+ // TYPES
19
+ // ============================================================================
20
+
21
+ export type FutureCellVariant = 'cyber' | 'hologram' | 'plasma' | 'quantum' | 'matrix' | 'neon' | 'success' | 'warning' | 'danger'
22
+
23
+ export interface FutureCellOptions {
24
+ /** Fill percentage (0-100+) */
25
+ percent: number
26
+ /** Visual variant */
27
+ variant?: FutureCellVariant
28
+ /** Auto-select variant based on inventory status (≥80% = success/green, 50-79% = warning/yellow, <50% = danger/red) */
29
+ autoVariant?: boolean
30
+ /** Custom accent color */
31
+ accentColor?: string
32
+ /** Show digital readout */
33
+ showReadout?: boolean
34
+ /** Show scan lines */
35
+ showScanLines?: boolean
36
+ /** Show particles */
37
+ showParticles?: boolean
38
+ /** Show hexagonal grid */
39
+ showGrid?: boolean
40
+ /** Show glitch effects */
41
+ showGlitch?: boolean
42
+ /** Intensity of effects (0-1) */
43
+ intensity?: number
44
+ /** Animation speed multiplier */
45
+ speed?: number
46
+ /** Enable critical state animations (when low or overfill) */
47
+ criticalEffects?: boolean
48
+ /** Glass container effect */
49
+ glassEffect?: boolean
50
+ /** Animation duration for fill transitions (ms) */
51
+ duration?: number
52
+ }
53
+
54
+ interface VariantConfig {
55
+ primary: string
56
+ secondary: string
57
+ glow: string
58
+ particle: string
59
+ scanLine: string
60
+ gridColor: string
61
+ }
62
+
63
+ interface Particle {
64
+ x: number
65
+ y: number
66
+ vx: number
67
+ vy: number
68
+ size: number
69
+ opacity: number
70
+ hue: number
71
+ life: number
72
+ }
73
+
74
+ // ============================================================================
75
+ // VARIANT CONFIGURATIONS
76
+ // ============================================================================
77
+
78
+ const VARIANTS: Record<FutureCellVariant, VariantConfig> = {
79
+ cyber: {
80
+ primary: '#00f0ff',
81
+ secondary: '#0099ff',
82
+ glow: '#00f0ff',
83
+ particle: '#00f0ff',
84
+ scanLine: '#00f0ff',
85
+ gridColor: '#00f0ff',
86
+ },
87
+ hologram: {
88
+ primary: '#00ff88',
89
+ secondary: '#00cc66',
90
+ glow: '#00ff88',
91
+ particle: '#00ff88',
92
+ scanLine: '#00ff88',
93
+ gridColor: '#00ff88',
94
+ },
95
+ plasma: {
96
+ primary: '#ff00ff',
97
+ secondary: '#cc00ff',
98
+ glow: '#ff00ff',
99
+ particle: '#ff00ff',
100
+ scanLine: '#ff00ff',
101
+ gridColor: '#ff00ff',
102
+ },
103
+ quantum: {
104
+ primary: '#8800ff',
105
+ secondary: '#6600cc',
106
+ glow: '#8800ff',
107
+ particle: '#8800ff',
108
+ scanLine: '#8800ff',
109
+ gridColor: '#8800ff',
110
+ },
111
+ matrix: {
112
+ primary: '#00ff00',
113
+ secondary: '#00cc00',
114
+ glow: '#00ff00',
115
+ particle: '#00ff00',
116
+ scanLine: '#00ff00',
117
+ gridColor: '#00ff00',
118
+ },
119
+ neon: {
120
+ primary: '#ff0080',
121
+ secondary: '#cc0066',
122
+ glow: '#ff0080',
123
+ particle: '#ff0080',
124
+ scanLine: '#ff0080',
125
+ gridColor: '#ff0080',
126
+ },
127
+ success: {
128
+ primary: '#00ff88',
129
+ secondary: '#00cc66',
130
+ glow: '#00ff88',
131
+ particle: '#00ff88',
132
+ scanLine: '#00ff88',
133
+ gridColor: '#00ff88',
134
+ },
135
+ warning: {
136
+ primary: '#ffaa00',
137
+ secondary: '#ff8800',
138
+ glow: '#ffaa00',
139
+ particle: '#ffaa00',
140
+ scanLine: '#ffaa00',
141
+ gridColor: '#ffaa00',
142
+ },
143
+ danger: {
144
+ primary: '#ff3366',
145
+ secondary: '#ff0044',
146
+ glow: '#ff3366',
147
+ particle: '#ff3366',
148
+ scanLine: '#ff3366',
149
+ gridColor: '#ff3366',
150
+ },
151
+ }
152
+
153
+ // ============================================================================
154
+ // ANIMATIONS & STYLES
155
+ // ============================================================================
156
+
157
+ const KEYFRAMES = `
158
+ @keyframes future-fill-pulse {
159
+ 0%, 100% { opacity: 0.85; }
160
+ 50% { opacity: 1; }
161
+ }
162
+
163
+ @keyframes future-glow-pulse {
164
+ 0%, 100% {
165
+ filter: drop-shadow(0 0 4px var(--glow-color))
166
+ drop-shadow(0 0 8px var(--glow-color));
167
+ }
168
+ 50% {
169
+ filter: drop-shadow(0 0 8px var(--glow-color))
170
+ drop-shadow(0 0 16px var(--glow-color));
171
+ }
172
+ }
173
+
174
+ @keyframes scan-line-move {
175
+ 0% { transform: translateY(-100%); }
176
+ 100% { transform: translateY(200%); }
177
+ }
178
+
179
+ @keyframes energy-wave {
180
+ 0% {
181
+ transform: translateY(0) scaleX(1);
182
+ opacity: 0.6;
183
+ }
184
+ 50% {
185
+ transform: translateY(-10px) scaleX(1.1);
186
+ opacity: 1;
187
+ }
188
+ 100% {
189
+ transform: translateY(0) scaleX(1);
190
+ opacity: 0.6;
191
+ }
192
+ }
193
+
194
+ @keyframes data-stream {
195
+ 0% {
196
+ transform: translateY(100%);
197
+ opacity: 0;
198
+ }
199
+ 10% {
200
+ opacity: 1;
201
+ }
202
+ 90% {
203
+ opacity: 1;
204
+ }
205
+ 100% {
206
+ transform: translateY(-100%);
207
+ opacity: 0;
208
+ }
209
+ }
210
+
211
+ @keyframes hologram-flicker {
212
+ 0%, 100% { opacity: 1; }
213
+ 2% { opacity: 0.8; }
214
+ 4% { opacity: 1; }
215
+ 8% { opacity: 0.9; }
216
+ 10% { opacity: 1; }
217
+ 50% { opacity: 0.95; }
218
+ 51% { opacity: 1; }
219
+ }
220
+
221
+ @keyframes glitch-shift {
222
+ 0%, 100% {
223
+ transform: translate(0, 0);
224
+ filter: hue-rotate(0deg);
225
+ }
226
+ 20% {
227
+ transform: translate(-2px, 1px);
228
+ filter: hue-rotate(90deg);
229
+ }
230
+ 40% {
231
+ transform: translate(2px, -1px);
232
+ filter: hue-rotate(180deg);
233
+ }
234
+ 60% {
235
+ transform: translate(-1px, -2px);
236
+ filter: hue-rotate(270deg);
237
+ }
238
+ 80% {
239
+ transform: translate(1px, 2px);
240
+ filter: hue-rotate(360deg);
241
+ }
242
+ }
243
+
244
+ @keyframes hex-grid-pulse {
245
+ 0%, 100% { opacity: 0.15; }
246
+ 50% { opacity: 0.35; }
247
+ }
248
+
249
+ @keyframes chromatic-aberration {
250
+ 0%, 100% {
251
+ text-shadow:
252
+ -0.5px 0 0 rgba(255, 0, 0, 0.3),
253
+ 0.5px 0 0 rgba(0, 255, 255, 0.3);
254
+ }
255
+ 50% {
256
+ text-shadow:
257
+ -1px 0 0 rgba(255, 0, 0, 0.5),
258
+ 1px 0 0 rgba(0, 255, 255, 0.5);
259
+ }
260
+ }
261
+
262
+ @keyframes critical-flash {
263
+ 0%, 100% { opacity: 1; }
264
+ 50% { opacity: 0.5; }
265
+ }
266
+
267
+ @keyframes overfill-surge {
268
+ 0%, 100% {
269
+ transform: scale(1);
270
+ filter: brightness(1);
271
+ }
272
+ 50% {
273
+ transform: scale(1.01);
274
+ filter: brightness(1.15);
275
+ }
276
+ }
277
+
278
+ `
279
+
280
+ // ============================================================================
281
+ // DIRECTIVE
282
+ // ============================================================================
283
+
284
+ class FutureCellDirective extends AsyncDirective {
285
+ private element: HTMLElement | null = null
286
+ private container: HTMLElement | null = null
287
+ private fillElement: HTMLElement | null = null
288
+ private energyWave: HTMLElement | null = null
289
+ private scanLine: HTMLElement | null = null
290
+ private particlesCanvas: HTMLCanvasElement | null = null
291
+ private particlesCtx: CanvasRenderingContext2D | null = null
292
+ private hexGrid: HTMLElement | null = null
293
+ private readout: HTMLElement | null = null
294
+ private dataStreams: HTMLElement | null = null
295
+ private glitchLayer: HTMLElement | null = null
296
+ private styleElement: HTMLStyleElement | null = null
297
+
298
+ private options: FutureCellOptions = { percent: 0 }
299
+ private variant: VariantConfig = VARIANTS.cyber
300
+ private currentVariantName: FutureCellVariant = 'cyber'
301
+ private particles: Particle[] = []
302
+ private animationFrame: number | null = null
303
+ private lastTime = 0
304
+ private currentPercent = 0
305
+
306
+ // Original styles backup
307
+ private originalStyles: Record<string, string> = {}
308
+
309
+ // ResizeObserver for canvas updates
310
+ private resizeObserver: ResizeObserver | null = null
311
+
312
+ /** Effective speed scales with fill %: low fill = calm, high fill = vivid */
313
+ private getEffectiveSpeed(): number {
314
+ const base = this.options.speed ?? 1
315
+ const pct = Math.min(Math.max(this.currentPercent, 0), 100) / 100
316
+ // Range: 0.15 at 0% → 1.0 at 100%
317
+ return base * (0.15 + pct * 0.85)
318
+ }
319
+
320
+ render(_options: FutureCellOptions) {
321
+ return noChange
322
+ }
323
+
324
+ override update(part: ElementPart, [options]: [FutureCellOptions]) {
325
+ const element = part.element as HTMLElement
326
+
327
+ if (!this.element) {
328
+ this.element = element
329
+ this.options = {
330
+ variant: 'cyber',
331
+ autoVariant: false,
332
+ showReadout: true,
333
+ showScanLines: true,
334
+ showParticles: true,
335
+ showGrid: true,
336
+ showGlitch: false,
337
+ intensity: 1,
338
+ speed: 1,
339
+ criticalEffects: true,
340
+ glassEffect: true,
341
+ duration: 600,
342
+ ...options
343
+ }
344
+ this.variant = VARIANTS[this.options.variant!]
345
+ this.currentVariantName = this.options.variant!
346
+ this.storeOriginalStyles()
347
+ this.setupElement()
348
+ this.createStructure()
349
+ this.setupResizeObserver()
350
+ this.startAnimation()
351
+ }
352
+
353
+ // Auto-select variant based on inventory status (gastronomy industry standards)
354
+ let newVariantName: FutureCellVariant
355
+ if (options.autoVariant) {
356
+ const percent = options.percent
357
+ if (percent >= 80) {
358
+ newVariantName = 'success' // GREEN - Well stocked, optimal
359
+ } else if (percent >= 50) {
360
+ newVariantName = 'warning' // YELLOW - Getting low, plan reorder
361
+ } else {
362
+ newVariantName = 'danger' // RED - Critical, reorder immediately
363
+ }
364
+ } else {
365
+ newVariantName = options.variant ?? 'cyber'
366
+ }
367
+
368
+ // Detect variant change and update colors
369
+ if (newVariantName !== this.currentVariantName) {
370
+ this.currentVariantName = newVariantName
371
+ this.variant = VARIANTS[newVariantName]
372
+ this.updateColors()
373
+ }
374
+
375
+ this.options = { ...this.options, ...options }
376
+ this.variant = VARIANTS[newVariantName]
377
+ this.updateFill()
378
+
379
+ return noChange
380
+ }
381
+
382
+ // ========================================================================
383
+ // INITIALIZATION
384
+ // ========================================================================
385
+
386
+ private storeOriginalStyles(): void {
387
+ if (!this.element) return
388
+ const style = this.element.style
389
+ this.originalStyles = {
390
+ position: style.position,
391
+ overflow: style.overflow,
392
+ border: style.border,
393
+ background: style.background,
394
+ boxShadow: style.boxShadow,
395
+ backdropFilter: style.backdropFilter,
396
+ borderRadius: style.borderRadius,
397
+ }
398
+ }
399
+
400
+ private setupElement(): void {
401
+ if (!this.element) return
402
+
403
+ // Only set position if it's static
404
+ const currentPosition = getComputedStyle(this.element).position
405
+ if (currentPosition === 'static') {
406
+ this.element.style.position = 'relative'
407
+ }
408
+ this.element.style.overflow = 'hidden'
409
+
410
+ // Glass effect with vivid border for contrast
411
+ if (this.options.glassEffect !== false) {
412
+ Object.assign(this.element.style, {
413
+ background: 'rgba(10, 10, 20, 0.9)',
414
+ backdropFilter: 'blur(16px) saturate(130%)',
415
+ border: `1.5px solid ${this.variant.primary}30`,
416
+ boxShadow: `
417
+ 0 2px 8px rgba(0, 0, 0, 0.4),
418
+ 0 8px 32px rgba(0, 0, 0, 0.25),
419
+ inset 0 1px 0 rgba(255, 255, 255, 0.06),
420
+ 0 0 0 1px rgba(0, 0, 0, 0.3)
421
+ `,
422
+ borderRadius: '12px',
423
+ })
424
+ }
425
+ }
426
+
427
+ private createStructure(): void {
428
+ if (!this.element) return
429
+
430
+ // Inject keyframes
431
+ this.styleElement = document.createElement('style')
432
+ this.styleElement.textContent = KEYFRAMES
433
+ this.element.appendChild(this.styleElement)
434
+
435
+ // Main container
436
+ this.container = document.createElement('div')
437
+ Object.assign(this.container.style, {
438
+ position: 'absolute',
439
+ inset: '0',
440
+ pointerEvents: 'none',
441
+ zIndex: '0',
442
+ overflow: 'hidden',
443
+ borderRadius: 'inherit',
444
+ background: 'rgba(0, 0, 0, 0.3)',
445
+ })
446
+ this.element.insertBefore(this.container, this.element.firstChild)
447
+
448
+ // Create fill first, then add effects inside it
449
+ this.createFill()
450
+ this.createHexGrid() // Inside fill
451
+ this.createEnergyWave() // Inside fill
452
+ this.createScanLines() // Inside fill
453
+ this.createDataStreams() // Inside fill
454
+ this.createGlitchLayer() // Inside fill
455
+ this.createParticles() // Inside fill
456
+ this.createReadout()
457
+ }
458
+
459
+ // ========================================================================
460
+ // ELEMENT CREATION
461
+ // ========================================================================
462
+
463
+ private createFill(): void {
464
+ if (!this.container) return
465
+
466
+ const duration = this.options.duration ?? 600
467
+ const speed = this.getEffectiveSpeed()
468
+ const pulseDur = 4 / speed // slow pulse at low %, fast at high %
469
+
470
+ this.fillElement = document.createElement('div')
471
+ Object.assign(this.fillElement.style, {
472
+ position: 'absolute',
473
+ left: '0',
474
+ right: '0',
475
+ bottom: '0',
476
+ height: '0%',
477
+ background: `linear-gradient(180deg,
478
+ ${this.variant.primary}00 0%,
479
+ ${this.variant.primary}25 20%,
480
+ ${this.variant.primary}50 60%,
481
+ ${this.variant.secondary}cc 100%
482
+ )`,
483
+ transition: `height ${duration}ms cubic-bezier(0.4, 0, 0.2, 1)`,
484
+ boxShadow: `
485
+ inset 0 0 30px ${this.variant.glow}30,
486
+ inset 0 -10px 20px ${this.variant.glow}20,
487
+ 0 0 15px ${this.variant.glow}25
488
+ `,
489
+ overflow: 'hidden',
490
+ '--glow-color': this.variant.glow,
491
+ animation: `future-fill-pulse ${pulseDur}s ease-in-out infinite`,
492
+ })
493
+ this.container.appendChild(this.fillElement)
494
+ }
495
+
496
+ private createEnergyWave(): void {
497
+ if (!this.fillElement) return
498
+
499
+ const speed = this.getEffectiveSpeed()
500
+ this.energyWave = document.createElement('div')
501
+ Object.assign(this.energyWave.style, {
502
+ position: 'absolute',
503
+ left: '-10%',
504
+ top: '-12px',
505
+ width: '120%',
506
+ height: '24px',
507
+ background: `radial-gradient(ellipse at center,
508
+ ${this.variant.primary}90 0%,
509
+ ${this.variant.primary}40 30%,
510
+ transparent 70%
511
+ )`,
512
+ filter: `blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`,
513
+ animation: `energy-wave ${3 / speed}s ease-in-out infinite`,
514
+ })
515
+ this.fillElement.appendChild(this.energyWave)
516
+ }
517
+
518
+ private createHexGrid(): void {
519
+ if (!this.fillElement || !this.options.showGrid) return
520
+
521
+ const speed = this.getEffectiveSpeed()
522
+ this.hexGrid = document.createElement('div')
523
+ Object.assign(this.hexGrid.style, {
524
+ position: 'absolute',
525
+ inset: '0',
526
+ background: this.createHexPattern(),
527
+ opacity: '0.08',
528
+ animation: `hex-grid-pulse ${5 / speed}s ease-in-out infinite`,
529
+ mixBlendMode: 'screen',
530
+ })
531
+ this.fillElement.appendChild(this.hexGrid)
532
+ }
533
+
534
+ private createHexPattern(): string {
535
+ const size = 40
536
+ const color = this.variant.gridColor
537
+ return `
538
+ repeating-linear-gradient(
539
+ 0deg,
540
+ ${color}00 0px,
541
+ ${color}40 1px,
542
+ ${color}00 2px,
543
+ ${color}00 ${size}px
544
+ ),
545
+ repeating-linear-gradient(
546
+ 60deg,
547
+ ${color}00 0px,
548
+ ${color}40 1px,
549
+ ${color}00 2px,
550
+ ${color}00 ${size}px
551
+ ),
552
+ repeating-linear-gradient(
553
+ 120deg,
554
+ ${color}00 0px,
555
+ ${color}40 1px,
556
+ ${color}00 2px,
557
+ ${color}00 ${size}px
558
+ )
559
+ `
560
+ }
561
+
562
+ private createScanLines(): void {
563
+ if (!this.fillElement || !this.options.showScanLines) return
564
+
565
+ const speed = this.getEffectiveSpeed()
566
+
567
+ // Horizontal scan lines overlay (very subtle)
568
+ const scanLinesOverlay = document.createElement('div')
569
+ Object.assign(scanLinesOverlay.style, {
570
+ position: 'absolute',
571
+ inset: '0',
572
+ background: `repeating-linear-gradient(
573
+ 0deg,
574
+ transparent 0px,
575
+ ${this.variant.scanLine}08 1px,
576
+ transparent 2px,
577
+ transparent 4px
578
+ )`,
579
+ opacity: '0.15',
580
+ pointerEvents: 'none',
581
+ })
582
+ this.fillElement.appendChild(scanLinesOverlay)
583
+
584
+ // Moving scan line
585
+ this.scanLine = document.createElement('div')
586
+ Object.assign(this.scanLine.style, {
587
+ position: 'absolute',
588
+ left: '0',
589
+ right: '0',
590
+ top: '-1px',
591
+ height: '1px',
592
+ background: `linear-gradient(90deg,
593
+ transparent 0%,
594
+ ${this.variant.scanLine}cc 50%,
595
+ transparent 100%
596
+ )`,
597
+ boxShadow: `0 0 8px ${this.variant.glow}60`,
598
+ animation: `scan-line-move ${6 / speed}s linear infinite`,
599
+ opacity: '0.35',
600
+ })
601
+ this.fillElement.appendChild(this.scanLine)
602
+ }
603
+
604
+ private createParticles(): void {
605
+ if (!this.fillElement || !this.options.showParticles) return
606
+
607
+ this.particlesCanvas = document.createElement('canvas')
608
+ Object.assign(this.particlesCanvas.style, {
609
+ position: 'absolute',
610
+ left: '0',
611
+ bottom: '0',
612
+ width: '100%',
613
+ height: '100%',
614
+ pointerEvents: 'none',
615
+ zIndex: '5',
616
+ })
617
+ this.fillElement.appendChild(this.particlesCanvas)
618
+ this.particlesCtx = this.particlesCanvas.getContext('2d')
619
+
620
+ this.resizeCanvas()
621
+ this.initParticles()
622
+ }
623
+
624
+ private resizeCanvas(): void {
625
+ if (!this.particlesCanvas || !this.fillElement) return
626
+ const rect = this.fillElement.getBoundingClientRect()
627
+ this.particlesCanvas.width = rect.width
628
+ this.particlesCanvas.height = rect.height
629
+ }
630
+
631
+ private setupResizeObserver(): void {
632
+ if (!this.element || typeof ResizeObserver === 'undefined') return
633
+
634
+ this.resizeObserver = new ResizeObserver(() => {
635
+ this.resizeCanvas()
636
+ })
637
+
638
+ this.resizeObserver.observe(this.element)
639
+ }
640
+
641
+ private initParticles(): void {
642
+ const count = Math.floor(12 * (this.options.intensity ?? 1))
643
+ for (let i = 0; i < count; i++) {
644
+ this.spawnParticle()
645
+ }
646
+ }
647
+
648
+ private spawnParticle(): void {
649
+ if (!this.particlesCanvas) return
650
+
651
+ const w = this.particlesCanvas.width
652
+ const h = this.particlesCanvas.height
653
+ const speed = this.getEffectiveSpeed()
654
+
655
+ this.particles.push({
656
+ x: Math.random() * w,
657
+ y: h + Math.random() * 30,
658
+ vx: (Math.random() - 0.5) * 0.5,
659
+ vy: (-0.4 - Math.random() * 1.2) * speed,
660
+ size: 0.8 + Math.random() * 1.2,
661
+ opacity: 0.2 + Math.random() * 0.4,
662
+ hue: Math.random() * 60 - 30,
663
+ life: 0,
664
+ })
665
+ }
666
+
667
+ private createDataStreams(): void {
668
+ if (!this.fillElement) return
669
+
670
+ const speed = this.getEffectiveSpeed()
671
+
672
+ this.dataStreams = document.createElement('div')
673
+ Object.assign(this.dataStreams.style, {
674
+ position: 'absolute',
675
+ inset: '0',
676
+ overflow: 'hidden',
677
+ opacity: '0.18',
678
+ zIndex: '3',
679
+ })
680
+ this.fillElement.appendChild(this.dataStreams)
681
+
682
+ // Fewer, subtler data streams
683
+ for (let i = 0; i < 3; i++) {
684
+ const stream = document.createElement('div')
685
+ const leftPos = 15 + i * 30
686
+ const delay = Math.random() * 4
687
+ const duration = 3 + Math.random() * 2
688
+
689
+ Object.assign(stream.style, {
690
+ position: 'absolute',
691
+ left: `${leftPos}%`,
692
+ top: '0',
693
+ width: '1px',
694
+ height: '100%',
695
+ background: `linear-gradient(180deg,
696
+ transparent 0%,
697
+ ${this.variant.primary}cc 50%,
698
+ transparent 100%
699
+ )`,
700
+ animation: `data-stream ${duration / speed}s linear infinite`,
701
+ animationDelay: `${delay}s`,
702
+ boxShadow: `0 0 4px ${this.variant.glow}40`,
703
+ })
704
+
705
+ this.dataStreams.appendChild(stream)
706
+ }
707
+ }
708
+
709
+ private createGlitchLayer(): void {
710
+ if (!this.fillElement || !this.options.showGlitch) return
711
+
712
+ this.glitchLayer = document.createElement('div')
713
+ Object.assign(this.glitchLayer.style, {
714
+ position: 'absolute',
715
+ inset: '0',
716
+ background: `linear-gradient(90deg,
717
+ ${this.variant.primary}20 0%,
718
+ transparent 50%,
719
+ ${this.variant.secondary}20 100%
720
+ )`,
721
+ opacity: '0.3',
722
+ animation: 'glitch-shift 0.3s steps(1) infinite',
723
+ mixBlendMode: 'overlay',
724
+ })
725
+ this.fillElement.appendChild(this.glitchLayer)
726
+ }
727
+
728
+ private createReadout(): void {
729
+ if (!this.element || !this.options.showReadout) return
730
+
731
+ const speed = this.getEffectiveSpeed()
732
+ this.readout = document.createElement('div')
733
+ Object.assign(this.readout.style, {
734
+ position: 'absolute',
735
+ top: '10px',
736
+ right: '10px',
737
+ fontFamily: 'monospace',
738
+ fontSize: '1rem',
739
+ fontWeight: '600',
740
+ color: this.variant.primary,
741
+ textShadow: `
742
+ 0 0 6px ${this.variant.glow}80,
743
+ 0 2px 4px rgba(0, 0, 0, 0.8)
744
+ `,
745
+ zIndex: '10',
746
+ pointerEvents: 'none',
747
+ letterSpacing: '0.08em',
748
+ animation: `hologram-flicker ${8 / speed}s ease-in-out infinite`,
749
+ })
750
+ this.element.appendChild(this.readout)
751
+
752
+ // Add units label
753
+ const units = document.createElement('span')
754
+ units.textContent = ' PWR'
755
+ units.style.opacity = '0.6'
756
+ units.style.fontSize = '0.7em'
757
+ this.readout.appendChild(units)
758
+ }
759
+
760
+ // ========================================================================
761
+ // COLOR UPDATES
762
+ // ========================================================================
763
+
764
+ private updateColors(): void {
765
+ // Update fill (subtle glow)
766
+ if (this.fillElement) {
767
+ this.fillElement.style.background = `linear-gradient(180deg,
768
+ ${this.variant.primary}00 0%,
769
+ ${this.variant.primary}25 20%,
770
+ ${this.variant.primary}50 60%,
771
+ ${this.variant.secondary}cc 100%
772
+ )`
773
+ this.fillElement.style.boxShadow = `
774
+ inset 0 0 30px ${this.variant.glow}30,
775
+ inset 0 -10px 20px ${this.variant.glow}20,
776
+ 0 0 15px ${this.variant.glow}25
777
+ `
778
+ this.fillElement.style.setProperty('--glow-color', this.variant.glow)
779
+ }
780
+
781
+ // Update energy wave
782
+ if (this.energyWave) {
783
+ this.energyWave.style.background = `radial-gradient(ellipse at center,
784
+ ${this.variant.primary}90 0%,
785
+ ${this.variant.primary}40 30%,
786
+ transparent 70%
787
+ )`
788
+ this.energyWave.style.filter = `blur(6px) drop-shadow(0 0 6px ${this.variant.glow}80)`
789
+ }
790
+
791
+ // Update hex grid
792
+ if (this.hexGrid) {
793
+ this.hexGrid.style.background = this.createHexPattern()
794
+ }
795
+
796
+ // Update data streams
797
+ if (this.dataStreams) {
798
+ const streams = this.dataStreams.querySelectorAll('div')
799
+ streams.forEach(stream => {
800
+ const el = stream as HTMLElement
801
+ el.style.background = `linear-gradient(180deg,
802
+ transparent 0%,
803
+ ${this.variant.primary}cc 50%,
804
+ transparent 100%
805
+ )`
806
+ el.style.boxShadow = `0 0 4px ${this.variant.glow}40`
807
+ })
808
+ }
809
+
810
+ // Update glitch layer
811
+ if (this.glitchLayer) {
812
+ this.glitchLayer.style.background = `linear-gradient(90deg,
813
+ ${this.variant.primary}20 0%,
814
+ transparent 50%,
815
+ ${this.variant.secondary}20 100%
816
+ )`
817
+ }
818
+
819
+ // Update readout
820
+ if (this.readout) {
821
+ this.readout.style.color = this.variant.primary
822
+ this.readout.style.textShadow = `
823
+ 0 0 6px ${this.variant.glow}80,
824
+ 0 2px 4px rgba(0, 0, 0, 0.8)
825
+ `
826
+ }
827
+
828
+ // Update container border color
829
+ if (this.element && this.options.glassEffect !== false) {
830
+ this.element.style.border = `1.5px solid ${this.variant.primary}30`
831
+ }
832
+ }
833
+
834
+ // ========================================================================
835
+ // ANIMATION
836
+ // ========================================================================
837
+
838
+ private startAnimation(): void {
839
+ this.lastTime = performance.now()
840
+ this.animate(this.lastTime)
841
+ }
842
+
843
+ private animate = (currentTime: number): void => {
844
+ const deltaTime = (currentTime - this.lastTime) / 1000
845
+ this.lastTime = currentTime
846
+
847
+ this.updateParticles(deltaTime)
848
+
849
+ this.animationFrame = requestAnimationFrame(this.animate)
850
+ }
851
+
852
+ private updateParticles(deltaTime: number): void {
853
+ if (!this.particlesCanvas || !this.particlesCtx || !this.options.showParticles) return
854
+
855
+ const ctx = this.particlesCtx
856
+ const w = this.particlesCanvas.width
857
+ const h = this.particlesCanvas.height
858
+
859
+ ctx.clearRect(0, 0, w, h)
860
+
861
+ // Update and draw particles (all within fill area now)
862
+ for (let i = this.particles.length - 1; i >= 0; i--) {
863
+ const p = this.particles[i]
864
+
865
+ // Update position (speed scales with fill %)
866
+ const speed = this.getEffectiveSpeed()
867
+ p.x += p.vx * deltaTime * 60 * speed
868
+ p.y += p.vy * deltaTime * 60 * speed
869
+ p.life += deltaTime
870
+
871
+ // Fade out over time
872
+ if (p.life > 2) {
873
+ p.opacity *= 0.95
874
+ }
875
+
876
+ // Remove dead particles
877
+ if (p.opacity < 0.01 || p.y < -50) {
878
+ this.particles.splice(i, 1)
879
+ this.spawnParticle()
880
+ continue
881
+ }
882
+
883
+ // Draw particle with soft glow
884
+ const gradient = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, p.size * 2.5)
885
+ gradient.addColorStop(0, this.hexToRGBA(this.variant.particle, p.opacity * 0.8))
886
+ gradient.addColorStop(0.5, this.hexToRGBA(this.variant.particle, p.opacity * 0.15))
887
+ gradient.addColorStop(1, this.hexToRGBA(this.variant.particle, 0))
888
+
889
+ ctx.fillStyle = gradient
890
+ ctx.beginPath()
891
+ ctx.arc(p.x, p.y, p.size * 2.5, 0, Math.PI * 2)
892
+ ctx.fill()
893
+
894
+ // Core
895
+ ctx.fillStyle = this.hexToRGBA(this.variant.particle, p.opacity * 0.7)
896
+ ctx.beginPath()
897
+ ctx.arc(p.x, p.y, p.size * 0.8, 0, Math.PI * 2)
898
+ ctx.fill()
899
+ }
900
+ }
901
+
902
+ private hexToRGBA(hex: string, alpha: number): string {
903
+ const r = parseInt(hex.slice(1, 3), 16)
904
+ const g = parseInt(hex.slice(3, 5), 16)
905
+ const b = parseInt(hex.slice(5, 7), 16)
906
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`
907
+ }
908
+
909
+ // ========================================================================
910
+ // UPDATE
911
+ // ========================================================================
912
+
913
+ private updateFill(): void {
914
+ const percent = Math.max(0, this.options.percent)
915
+ const displayPercent = Math.min(percent, 100)
916
+ const isCriticalLow = percent < 20
917
+ const isOverfill = percent > 100
918
+
919
+ // Update tracked percent (drives effective speed)
920
+ this.currentPercent = displayPercent
921
+ const speed = this.getEffectiveSpeed()
922
+
923
+ // Update fill height
924
+ if (this.fillElement) {
925
+ this.fillElement.style.height = `${displayPercent}%`
926
+
927
+ // Update transition duration
928
+ const duration = this.options.duration ?? 600
929
+ this.fillElement.style.transition = `height ${duration}ms cubic-bezier(0.4, 0, 0.2, 1)`
930
+ }
931
+
932
+ // Update readout
933
+ if (this.readout) {
934
+ const value = Math.round(percent)
935
+ this.readout.firstChild!.textContent = value.toString().padStart(3, '0')
936
+
937
+ if (this.options.criticalEffects) {
938
+ if (isCriticalLow) {
939
+ this.readout.style.animation = 'critical-flash 1s ease-in-out infinite'
940
+ } else if (isOverfill) {
941
+ this.readout.style.animation = 'overfill-surge 1.5s ease-in-out infinite'
942
+ } else {
943
+ this.readout.style.animation = `hologram-flicker ${8 / speed}s ease-in-out infinite`
944
+ }
945
+ }
946
+ }
947
+
948
+ // Speed-aware animations on fill
949
+ if (this.fillElement) {
950
+ const pulseDur = 4 / speed
951
+ if (this.options.criticalEffects && isCriticalLow) {
952
+ this.fillElement.style.animation = `future-fill-pulse 1s ease-in-out infinite, critical-flash 1.5s ease-in-out infinite`
953
+ } else if (this.options.criticalEffects && isOverfill) {
954
+ this.fillElement.style.animation = `future-fill-pulse 1.2s ease-in-out infinite, overfill-surge 1.5s ease-in-out infinite`
955
+ } else {
956
+ this.fillElement.style.animation = `future-fill-pulse ${pulseDur}s ease-in-out infinite`
957
+ }
958
+ }
959
+
960
+ // Update speed-dependent child animations
961
+ if (this.energyWave) {
962
+ this.energyWave.style.animation = `energy-wave ${3 / speed}s ease-in-out infinite`
963
+ }
964
+ if (this.scanLine) {
965
+ this.scanLine.style.animation = `scan-line-move ${6 / speed}s linear infinite`
966
+ }
967
+ if (this.hexGrid) {
968
+ this.hexGrid.style.animation = `hex-grid-pulse ${5 / speed}s ease-in-out infinite`
969
+ }
970
+ }
971
+
972
+ // ========================================================================
973
+ // CLEANUP
974
+ // ========================================================================
975
+
976
+ override disconnected(): void {
977
+ if (this.animationFrame) {
978
+ cancelAnimationFrame(this.animationFrame)
979
+ }
980
+
981
+ if (this.resizeObserver) {
982
+ this.resizeObserver.disconnect()
983
+ }
984
+
985
+ this.styleElement?.remove()
986
+ this.container?.remove()
987
+ this.readout?.remove()
988
+
989
+ // Restore original styles
990
+ if (this.element) {
991
+ Object.assign(this.element.style, this.originalStyles)
992
+ }
993
+
994
+ this.element = null
995
+ this.container = null
996
+ this.fillElement = null
997
+ this.energyWave = null
998
+ this.scanLine = null
999
+ this.particlesCanvas = null
1000
+ this.particlesCtx = null
1001
+ this.hexGrid = null
1002
+ this.readout = null
1003
+ this.dataStreams = null
1004
+ this.glitchLayer = null
1005
+ this.particles = []
1006
+ this.resizeObserver = null
1007
+ }
1008
+ }
1009
+
1010
+ // ============================================================================
1011
+ // EXPORT
1012
+ // ============================================================================
1013
+
1014
+ export const futureCell = directive(FutureCellDirective)