@mhmo91/schmancy 0.10.6 → 0.10.8

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 (394) hide show
  1. package/README.md +11 -0
  2. package/custom-elements.json +11 -880
  3. package/dist/agent/{flow-3RrZM-e7.js.map → flow-CvG1fLW5.js.map} +1 -1
  4. package/dist/agent/schmancy.agent.js +5223 -10404
  5. package/dist/agent/schmancy.agent.js.map +1 -1
  6. package/dist/agent/schmancy.manifest.json +4 -537
  7. package/dist/agent/{vendor-material-color-33Mj762T.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
  8. package/dist/{area-oZjYJlUy.cjs → area-8IBAXzbC.cjs} +1 -1
  9. package/dist/{area-oZjYJlUy.cjs.map → area-8IBAXzbC.cjs.map} +1 -1
  10. package/dist/{area-CIZZ5tbB.js → area-DSW_LYXQ.js} +1 -1
  11. package/dist/{area-CIZZ5tbB.js.map → area-DSW_LYXQ.js.map} +1 -1
  12. package/dist/area.cjs +1 -1
  13. package/dist/area.js +1 -1
  14. package/dist/{autocomplete-X20i6D62.cjs → autocomplete-9PLjlFYt.cjs} +1 -1
  15. package/dist/{autocomplete-X20i6D62.cjs.map → autocomplete-9PLjlFYt.cjs.map} +1 -1
  16. package/dist/{autocomplete-C1oDLuol.js → autocomplete-CXwwmUbC.js} +2 -2
  17. package/dist/{autocomplete-C1oDLuol.js.map → autocomplete-CXwwmUbC.js.map} +1 -1
  18. package/dist/autocomplete.cjs +1 -1
  19. package/dist/autocomplete.js +1 -1
  20. package/dist/avatar.cjs +1 -1
  21. package/dist/avatar.js +2 -2
  22. package/dist/badge.cjs +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/{boat-CUx58Gwe.cjs → boat-CpGNeWav.cjs} +1 -1
  25. package/dist/{boat-CUx58Gwe.cjs.map → boat-CpGNeWav.cjs.map} +1 -1
  26. package/dist/{boat-CpE0yAlK.js → boat-Dwn5oXd8.js} +1 -1
  27. package/dist/{boat-CpE0yAlK.js.map → boat-Dwn5oXd8.js.map} +1 -1
  28. package/dist/boat.cjs +1 -1
  29. package/dist/boat.js +1 -1
  30. package/dist/breadcrumb.cjs +1 -1
  31. package/dist/breadcrumb.js +1 -1
  32. package/dist/{busy-D1DKZhgV.cjs → busy-CUUgvimY.cjs} +1 -1
  33. package/dist/{busy-D1DKZhgV.cjs.map → busy-CUUgvimY.cjs.map} +1 -1
  34. package/dist/{busy-C9n-DUY4.js → busy-Cjm1BYVC.js} +1 -1
  35. package/dist/{busy-C9n-DUY4.js.map → busy-Cjm1BYVC.js.map} +1 -1
  36. package/dist/busy.cjs +1 -1
  37. package/dist/busy.js +1 -1
  38. package/dist/button.cjs +1 -1
  39. package/dist/button.js +1 -1
  40. package/dist/{card-B3hN-qzk.js → card-BR22oYCL.js} +1 -1
  41. package/dist/{card-B3hN-qzk.js.map → card-BR22oYCL.js.map} +1 -1
  42. package/dist/{card-DZJ7qjf2.cjs → card-BjZ_WRr3.cjs} +1 -1
  43. package/dist/{card-DZJ7qjf2.cjs.map → card-BjZ_WRr3.cjs.map} +1 -1
  44. package/dist/card.cjs +1 -1
  45. package/dist/card.js +1 -1
  46. package/dist/{checkbox-DapdzDow.cjs → checkbox-2e8v7CNg.cjs} +1 -1
  47. package/dist/{checkbox-DapdzDow.cjs.map → checkbox-2e8v7CNg.cjs.map} +1 -1
  48. package/dist/{checkbox-CvmB1ev9.js → checkbox-CsADwyfu.js} +1 -1
  49. package/dist/{checkbox-CvmB1ev9.js.map → checkbox-CsADwyfu.js.map} +1 -1
  50. package/dist/checkbox.cjs +1 -1
  51. package/dist/checkbox.js +1 -1
  52. package/dist/{chips-C8Y3_3ke.js → chips-C9HwVbGT.js} +2 -2
  53. package/dist/{chips-C8Y3_3ke.js.map → chips-C9HwVbGT.js.map} +1 -1
  54. package/dist/{chips-7g6mWRuh.cjs → chips-DPCcO55o.cjs} +1 -1
  55. package/dist/{chips-7g6mWRuh.cjs.map → chips-DPCcO55o.cjs.map} +1 -1
  56. package/dist/chips.cjs +1 -1
  57. package/dist/chips.js +2 -2
  58. package/dist/connectivity.cjs +1 -1
  59. package/dist/connectivity.js +1 -1
  60. package/dist/content-drawer.cjs +1 -1
  61. package/dist/content-drawer.js +1 -1
  62. package/dist/{date-range-ZfUl4duV.cjs → date-range-63-FC7gD.cjs} +1 -1
  63. package/dist/{date-range-ZfUl4duV.cjs.map → date-range-63-FC7gD.cjs.map} +1 -1
  64. package/dist/{date-range-DdcaPX7C.js → date-range-CFaP-8Os.js} +2 -2
  65. package/dist/{date-range-DdcaPX7C.js.map → date-range-CFaP-8Os.js.map} +1 -1
  66. package/dist/{date-range-inline-QQmIWhZ4.js → date-range-inline-BCuK_XCv.js} +1 -1
  67. package/dist/{date-range-inline-QQmIWhZ4.js.map → date-range-inline-BCuK_XCv.js.map} +1 -1
  68. package/dist/{date-range-inline-D-d7N6bh.cjs → date-range-inline-Cpdqd-8B.cjs} +1 -1
  69. package/dist/{date-range-inline-D-d7N6bh.cjs.map → date-range-inline-Cpdqd-8B.cjs.map} +1 -1
  70. package/dist/date-range-inline.cjs +1 -1
  71. package/dist/date-range-inline.js +1 -1
  72. package/dist/date-range.cjs +1 -1
  73. package/dist/date-range.js +1 -1
  74. package/dist/delay.cjs +1 -1
  75. package/dist/delay.js +1 -1
  76. package/dist/{details-Dpjh-XnJ.js → details-0dOlqHHL.js} +1 -1
  77. package/dist/{details-Dpjh-XnJ.js.map → details-0dOlqHHL.js.map} +1 -1
  78. package/dist/{details-3rL6UQU8.cjs → details-qKikJIyH.cjs} +1 -1
  79. package/dist/{details-3rL6UQU8.cjs.map → details-qKikJIyH.cjs.map} +1 -1
  80. package/dist/details.cjs +1 -1
  81. package/dist/details.js +1 -1
  82. package/dist/{divider-BdfEKQsH.js → divider-BxkIl0H1.js} +1 -1
  83. package/dist/{divider-BdfEKQsH.js.map → divider-BxkIl0H1.js.map} +1 -1
  84. package/dist/{divider-CutXDz3F.cjs → divider-CX9mmWZ8.cjs} +1 -1
  85. package/dist/{divider-CutXDz3F.cjs.map → divider-CX9mmWZ8.cjs.map} +1 -1
  86. package/dist/divider.cjs +1 -1
  87. package/dist/divider.js +1 -1
  88. package/dist/dropdown.cjs +1 -1
  89. package/dist/dropdown.js +1 -1
  90. package/dist/{expand-DM6zfZf7.cjs → expand-891JuQuN.cjs} +1 -1
  91. package/dist/{expand-DM6zfZf7.cjs.map → expand-891JuQuN.cjs.map} +1 -1
  92. package/dist/{expand-DrgMPJbu.js → expand-BeAx94MP.js} +2 -2
  93. package/dist/{expand-DrgMPJbu.js.map → expand-BeAx94MP.js.map} +1 -1
  94. package/dist/expand.cjs +1 -1
  95. package/dist/expand.js +1 -1
  96. package/dist/{float-1iihPek5.js → float-BPF2WO4L.js} +1 -1
  97. package/dist/{float-1iihPek5.js.map → float-BPF2WO4L.js.map} +1 -1
  98. package/dist/{float-Ckyk85XG.cjs → float-D7vvODxx.cjs} +1 -1
  99. package/dist/{float-Ckyk85XG.cjs.map → float-D7vvODxx.cjs.map} +1 -1
  100. package/dist/float.cjs +1 -1
  101. package/dist/float.js +1 -1
  102. package/dist/{form-BF1c3Dk1.js.map → form-CFvwnfuJ.js.map} +1 -1
  103. package/dist/{form-DeO5XX3b.cjs.map → form-Ceijw1aA.cjs.map} +1 -1
  104. package/dist/form.cjs +1 -1
  105. package/dist/form.js +1 -1
  106. package/dist/handover/agent-runtime-followups.md +1 -1
  107. package/dist/handover/agent-runtime-v1.md +3 -3
  108. package/dist/{icons-DUkcTZAY.js → icons-BKxW_7QR.js} +1 -1
  109. package/dist/{icons-DUkcTZAY.js.map → icons-BKxW_7QR.js.map} +1 -1
  110. package/dist/{icons-CV-fiGcW.cjs → icons-QSdo-8h9.cjs} +1 -1
  111. package/dist/{icons-CV-fiGcW.cjs.map → icons-QSdo-8h9.cjs.map} +1 -1
  112. package/dist/icons.cjs +1 -1
  113. package/dist/icons.js +1 -1
  114. package/dist/{iframe-C9tj7F6Y.js → iframe-BxvbhyTS.js} +1 -1
  115. package/dist/{iframe-C9tj7F6Y.js.map → iframe-BxvbhyTS.js.map} +1 -1
  116. package/dist/{iframe-DF97oGtZ.cjs → iframe-CMKV-bm8.cjs} +1 -1
  117. package/dist/{iframe-DF97oGtZ.cjs.map → iframe-CMKV-bm8.cjs.map} +1 -1
  118. package/dist/iframe.cjs +1 -1
  119. package/dist/iframe.js +1 -1
  120. package/dist/index.cjs +1 -1
  121. package/dist/index.js +52 -58
  122. package/dist/{input-TW9G3n7X.cjs → input-BFhJU74_.cjs} +1 -1
  123. package/dist/{input-TW9G3n7X.cjs.map → input-BFhJU74_.cjs.map} +1 -1
  124. package/dist/{input-DE7x223Y.js → input-DIqaR8Mr.js} +1 -1
  125. package/dist/{input-DE7x223Y.js.map → input-DIqaR8Mr.js.map} +1 -1
  126. package/dist/{input-chip-BdoaVw_D.js → input-chip-D9tlSk_2.js} +1 -1
  127. package/dist/{input-chip-BdoaVw_D.js.map → input-chip-D9tlSk_2.js.map} +1 -1
  128. package/dist/{input-chip-Do48eI5r.cjs → input-chip-w09qTt7J.cjs} +1 -1
  129. package/dist/{input-chip-Do48eI5r.cjs.map → input-chip-w09qTt7J.cjs.map} +1 -1
  130. package/dist/input.cjs +1 -1
  131. package/dist/input.js +1 -1
  132. package/dist/json.cjs +1 -1
  133. package/dist/json.js +2 -2
  134. package/dist/kbd.cjs +1 -1
  135. package/dist/kbd.js +1 -1
  136. package/dist/layout.cjs +1 -1
  137. package/dist/layout.js +1 -1
  138. package/dist/{lightbox-sPfnYzjJ.cjs → lightbox-CK035jsx.cjs} +1 -1
  139. package/dist/{lightbox-sPfnYzjJ.cjs.map → lightbox-CK035jsx.cjs.map} +1 -1
  140. package/dist/{lightbox-DcutIyjx.js → lightbox-GChmL3Ff.js} +1 -1
  141. package/dist/{lightbox-DcutIyjx.js.map → lightbox-GChmL3Ff.js.map} +1 -1
  142. package/dist/lightbox.cjs +1 -1
  143. package/dist/lightbox.js +1 -1
  144. package/dist/{list-C4vasUly.cjs → list-B3P37zlH.cjs} +1 -1
  145. package/dist/{list-C4vasUly.cjs.map → list-B3P37zlH.cjs.map} +1 -1
  146. package/dist/{list-BWrtrdgs.js → list-J-Fz24Z1.js} +1 -1
  147. package/dist/{list-BWrtrdgs.js.map → list-J-Fz24Z1.js.map} +1 -1
  148. package/dist/list.cjs +1 -1
  149. package/dist/list.js +1 -1
  150. package/dist/{menu-3yXDZusj.cjs → menu-BnFd8CwU.cjs} +1 -1
  151. package/dist/{menu-3yXDZusj.cjs.map → menu-BnFd8CwU.cjs.map} +1 -1
  152. package/dist/{menu-CxChOxWT.js → menu-DHTlUwXS.js} +2 -2
  153. package/dist/{menu-CxChOxWT.js.map → menu-DHTlUwXS.js.map} +1 -1
  154. package/dist/menu.cjs +1 -1
  155. package/dist/menu.js +1 -1
  156. package/dist/mixins-47_CZk7q.cjs +298 -0
  157. package/dist/{mixins-Db7gjDah.cjs.map → mixins-47_CZk7q.cjs.map} +1 -1
  158. package/dist/mixins-PBJJGiiP.js +627 -0
  159. package/dist/{mixins-Dw6hVfy-.js.map → mixins-PBJJGiiP.js.map} +1 -1
  160. package/dist/mixins.cjs +1 -1
  161. package/dist/mixins.js +1 -1
  162. package/dist/nav-drawer.cjs +1 -1
  163. package/dist/nav-drawer.js +1 -1
  164. package/dist/navigation-bar.cjs +1 -1
  165. package/dist/navigation-bar.js +1 -1
  166. package/dist/navigation-rail.cjs +1 -1
  167. package/dist/navigation-rail.js +1 -1
  168. package/dist/{notification-DKYy9qVe.cjs → notification-B6YBL0hx.cjs} +1 -1
  169. package/dist/{notification-DKYy9qVe.cjs.map → notification-B6YBL0hx.cjs.map} +1 -1
  170. package/dist/{notification-ycbUBbOu.js → notification-C-5Bv3vj.js} +2 -2
  171. package/dist/{notification-ycbUBbOu.js.map → notification-C-5Bv3vj.js.map} +1 -1
  172. package/dist/notification.cjs +1 -1
  173. package/dist/notification.js +1 -1
  174. package/dist/{option-DtOhMd3k.js → option-B7q6VXCu.js} +1 -1
  175. package/dist/{option-DtOhMd3k.js.map → option-B7q6VXCu.js.map} +1 -1
  176. package/dist/{option-zgVge3BH.cjs → option-DVQRa3nr.cjs} +1 -1
  177. package/dist/{option-zgVge3BH.cjs.map → option-DVQRa3nr.cjs.map} +1 -1
  178. package/dist/option.cjs +1 -1
  179. package/dist/option.js +1 -1
  180. package/dist/overlay.cjs +1 -1
  181. package/dist/{overlay.confirm-body-AFqYBqrI.js → overlay.confirm-body-CAY5xK1n.js} +1 -1
  182. package/dist/{overlay.confirm-body-AFqYBqrI.js.map → overlay.confirm-body-CAY5xK1n.js.map} +1 -1
  183. package/dist/{overlay.confirm-body-DctQLDao.cjs → overlay.confirm-body-XZtErofy.cjs} +1 -1
  184. package/dist/{overlay.confirm-body-DctQLDao.cjs.map → overlay.confirm-body-XZtErofy.cjs.map} +1 -1
  185. package/dist/overlay.js +3 -3
  186. package/dist/{overlay.service-B9On2-Aa.js → overlay.service-BZE_lwKO.js} +2 -2
  187. package/dist/{overlay.service-B9On2-Aa.js.map → overlay.service-BZE_lwKO.js.map} +1 -1
  188. package/dist/{overlay.service-k2nCE4pi.cjs → overlay.service-Oyjrw831.cjs} +1 -1
  189. package/dist/{overlay.service-k2nCE4pi.cjs.map → overlay.service-Oyjrw831.cjs.map} +1 -1
  190. package/dist/page.cjs +1 -1
  191. package/dist/page.js +2 -2
  192. package/dist/{progress-BFWzmTlz.js → progress-BHXLYs9i.js} +1 -1
  193. package/dist/{progress-BFWzmTlz.js.map → progress-BHXLYs9i.js.map} +1 -1
  194. package/dist/{progress-C4TGG2eN.cjs → progress-D99bumkC.cjs} +1 -1
  195. package/dist/{progress-C4TGG2eN.cjs.map → progress-D99bumkC.cjs.map} +1 -1
  196. package/dist/progress.cjs +1 -1
  197. package/dist/progress.js +1 -1
  198. package/dist/{radio-group-DTNAW5dd.js → radio-group-BYra5_q1.js} +1 -1
  199. package/dist/{radio-group-DTNAW5dd.js.map → radio-group-BYra5_q1.js.map} +1 -1
  200. package/dist/{radio-group-xLRp1g57.cjs → radio-group-DYsycLmD.cjs} +1 -1
  201. package/dist/{radio-group-xLRp1g57.cjs.map → radio-group-DYsycLmD.cjs.map} +1 -1
  202. package/dist/radio-group.cjs +1 -1
  203. package/dist/radio-group.js +1 -1
  204. package/dist/range.cjs +1 -1
  205. package/dist/range.js +1 -1
  206. package/dist/{rxjs-utils-BK8VMe3K.js.map → rxjs-utils-CVeJQ9KG.js.map} +1 -1
  207. package/dist/{rxjs-utils-DhOKenkS.cjs.map → rxjs-utils-DCUHg_Ml.cjs.map} +1 -1
  208. package/dist/rxjs-utils.cjs +1 -1
  209. package/dist/rxjs-utils.js +1 -1
  210. package/dist/{scroll-BCmdqSQU.js → scroll-TqNWZ0lo.js} +1 -1
  211. package/dist/{scroll-BCmdqSQU.js.map → scroll-TqNWZ0lo.js.map} +1 -1
  212. package/dist/{scroll-Bdgb-vRy.cjs → scroll-cayCBOrq.cjs} +1 -1
  213. package/dist/{scroll-Bdgb-vRy.cjs.map → scroll-cayCBOrq.cjs.map} +1 -1
  214. package/dist/{select-Cv5t_PT3.cjs → select-CRdSmlLq.cjs} +1 -1
  215. package/dist/{select-Cv5t_PT3.cjs.map → select-CRdSmlLq.cjs.map} +1 -1
  216. package/dist/{select-COGARE0b.js → select-nzq0qFlF.js} +2 -2
  217. package/dist/{select-COGARE0b.js.map → select-nzq0qFlF.js.map} +1 -1
  218. package/dist/select.cjs +1 -1
  219. package/dist/select.js +1 -1
  220. package/dist/skeleton.cjs +1 -1
  221. package/dist/skeleton.js +1 -1
  222. package/dist/skills/INDEX.md +9 -3
  223. package/dist/skills/schmancy/INDEX.md +9 -3
  224. package/dist/slider.cjs +1 -1
  225. package/dist/slider.js +1 -1
  226. package/dist/{splash-screen-DbGbGttg.js → splash-screen-BJeIiJ_e.js} +1 -1
  227. package/dist/{splash-screen-DbGbGttg.js.map → splash-screen-BJeIiJ_e.js.map} +1 -1
  228. package/dist/{splash-screen-B8rFbjqT.cjs → splash-screen-BMLQXzDq.cjs} +1 -1
  229. package/dist/{splash-screen-B8rFbjqT.cjs.map → splash-screen-BMLQXzDq.cjs.map} +1 -1
  230. package/dist/splash-screen.cjs +1 -1
  231. package/dist/splash-screen.js +1 -1
  232. package/dist/{src-b8D-Ec-Q.cjs → src-DE11tq2Q.cjs} +1 -1
  233. package/dist/{src-b8D-Ec-Q.cjs.map → src-DE11tq2Q.cjs.map} +1 -1
  234. package/dist/{src-YRir9pOP.js → src-qvWlNoMO.js} +34 -40
  235. package/dist/{src-YRir9pOP.js.map → src-qvWlNoMO.js.map} +1 -1
  236. package/dist/steps.cjs +1 -1
  237. package/dist/steps.js +1 -1
  238. package/dist/{surface-BvudRtf5.cjs → surface-D426MFLR.cjs} +1 -1
  239. package/dist/{surface-BvudRtf5.cjs.map → surface-D426MFLR.cjs.map} +1 -1
  240. package/dist/{surface-BE7sGTBt.js → surface-DG7Cmm9V.js} +1 -1
  241. package/dist/{surface-BE7sGTBt.js.map → surface-DG7Cmm9V.js.map} +1 -1
  242. package/dist/surface.cjs +1 -1
  243. package/dist/surface.js +1 -1
  244. package/dist/switch.cjs +1 -1
  245. package/dist/switch.js +1 -1
  246. package/dist/table.cjs +1 -1
  247. package/dist/table.js +1 -1
  248. package/dist/{tabs-DIzCRsA3.js → tabs-B7siJkM5.js} +1 -1
  249. package/dist/{tabs-DIzCRsA3.js.map → tabs-B7siJkM5.js.map} +1 -1
  250. package/dist/{tabs-C0XKld1Z.cjs → tabs-t3nMfg1F.cjs} +1 -1
  251. package/dist/{tabs-C0XKld1Z.cjs.map → tabs-t3nMfg1F.cjs.map} +1 -1
  252. package/dist/tabs.cjs +1 -1
  253. package/dist/tabs.js +1 -1
  254. package/dist/teleport.cjs +1 -1
  255. package/dist/teleport.js +1 -1
  256. package/dist/{textarea-UbZzBwqm.js → textarea-DSxHCCle.js} +1 -1
  257. package/dist/{textarea-UbZzBwqm.js.map → textarea-DSxHCCle.js.map} +1 -1
  258. package/dist/{textarea-BCDCGCJd.cjs → textarea-o9vysorM.cjs} +1 -1
  259. package/dist/{textarea-BCDCGCJd.cjs.map → textarea-o9vysorM.cjs.map} +1 -1
  260. package/dist/textarea.cjs +1 -1
  261. package/dist/textarea.js +1 -1
  262. package/dist/{theme-CIsI-sFj.cjs → theme-Ce9eIP05.cjs} +1 -1
  263. package/dist/{theme-CIsI-sFj.cjs.map → theme-Ce9eIP05.cjs.map} +1 -1
  264. package/dist/{theme-Qh-yPEPL.js → theme-XO3nHDbW.js} +2 -2
  265. package/dist/{theme-Qh-yPEPL.js.map → theme-XO3nHDbW.js.map} +1 -1
  266. package/dist/{theme-button-CjTnfs9x.js → theme-button-DNutDO1j.js} +1 -1
  267. package/dist/{theme-button-CjTnfs9x.js.map → theme-button-DNutDO1j.js.map} +1 -1
  268. package/dist/{theme-button-Dv1D_Vil.cjs → theme-button-H7PRz_bg.cjs} +1 -1
  269. package/dist/{theme-button-Dv1D_Vil.cjs.map → theme-button-H7PRz_bg.cjs.map} +1 -1
  270. package/dist/theme-button.cjs +1 -1
  271. package/dist/theme-button.js +1 -1
  272. package/dist/theme.cjs +1 -1
  273. package/dist/{theme.interface-v7SkAnDH.js.map → theme.interface-B9TjbSBF.js.map} +1 -1
  274. package/dist/{theme.interface-BeW-sz_g.cjs.map → theme.interface-BujperTo.cjs.map} +1 -1
  275. package/dist/theme.js +3 -3
  276. package/dist/tree.cjs +1 -1
  277. package/dist/tree.js +1 -1
  278. package/dist/typography.cjs +1 -1
  279. package/dist/typography.js +1 -1
  280. package/dist/{utils-CJ9y2Jz9.cjs.map → utils-Dt5PpmaQ.cjs.map} +1 -1
  281. package/dist/{utils-BfOze6Tk.js.map → utils-kND2Z9Xg.js.map} +1 -1
  282. package/dist/utils.cjs +1 -1
  283. package/dist/utils.js +1 -1
  284. package/dist/visually-hidden.cjs +1 -1
  285. package/dist/visually-hidden.js +1 -1
  286. package/dist/{window-9HOUXrTU.cjs → window-BaoSwgGE.cjs} +1 -1
  287. package/dist/{window-9HOUXrTU.cjs.map → window-BaoSwgGE.cjs.map} +1 -1
  288. package/dist/{window-B_55dzk0.js → window-KnLWhQ3S.js} +1 -1
  289. package/dist/{window-B_55dzk0.js.map → window-KnLWhQ3S.js.map} +1 -1
  290. package/dist/window.cjs +1 -1
  291. package/dist/window.js +1 -1
  292. package/package.json +4 -4
  293. package/skills/schmancy/INDEX.md +9 -3
  294. package/src/index.ts +0 -6
  295. package/types/src/index.d.ts +0 -6
  296. package/dist/agent/vendor-jsqr-BUVwyoGC.js +0 -10212
  297. package/dist/agent/vendor-jsqr-BUVwyoGC.js.map +0 -1
  298. package/dist/charts.cjs +0 -112
  299. package/dist/charts.cjs.map +0 -1
  300. package/dist/charts.js +0 -374
  301. package/dist/charts.js.map +0 -1
  302. package/dist/extra-B6gFu4_1.js +0 -3440
  303. package/dist/extra-B6gFu4_1.js.map +0 -1
  304. package/dist/extra-DJRYaOXe.cjs +0 -31
  305. package/dist/extra-DJRYaOXe.cjs.map +0 -1
  306. package/dist/extra.cjs +0 -1
  307. package/dist/extra.js +0 -2
  308. package/dist/map-BAQ9FEB6.cjs +0 -80
  309. package/dist/map-BAQ9FEB6.cjs.map +0 -1
  310. package/dist/map-CEreveeI.js +0 -208
  311. package/dist/map-CEreveeI.js.map +0 -1
  312. package/dist/map.cjs +0 -1
  313. package/dist/map.js +0 -2
  314. package/dist/mixins-Db7gjDah.cjs +0 -298
  315. package/dist/mixins-Dw6hVfy-.js +0 -627
  316. package/dist/payment-card-form-Be1-OVlL.js +0 -729
  317. package/dist/payment-card-form-Be1-OVlL.js.map +0 -1
  318. package/dist/payment-card-form-CNnGePG4.cjs +0 -73
  319. package/dist/payment-card-form-CNnGePG4.cjs.map +0 -1
  320. package/dist/payment-card-form.cjs +0 -1
  321. package/dist/payment-card-form.js +0 -2
  322. package/dist/qr-scanner.cjs +0 -35
  323. package/dist/qr-scanner.cjs.map +0 -1
  324. package/dist/qr-scanner.js +0 -123
  325. package/dist/qr-scanner.js.map +0 -1
  326. package/dist/skills/charts.md +0 -93
  327. package/dist/skills/extra.md +0 -59
  328. package/dist/skills/map.md +0 -55
  329. package/dist/skills/qr-scanner.md +0 -51
  330. package/dist/skills/schmancy/charts.md +0 -93
  331. package/dist/skills/schmancy/extra.md +0 -59
  332. package/dist/skills/schmancy/map.md +0 -55
  333. package/dist/skills/schmancy/qr-scanner.md +0 -51
  334. package/dist/skills/schmancy/timeline-tile.md +0 -95
  335. package/dist/skills/timeline-tile.md +0 -95
  336. package/dist/timeline.cjs +0 -277
  337. package/dist/timeline.cjs.map +0 -1
  338. package/dist/timeline.js +0 -326
  339. package/dist/timeline.js.map +0 -1
  340. package/skills/schmancy/charts.md +0 -93
  341. package/skills/schmancy/extra.md +0 -59
  342. package/skills/schmancy/map.md +0 -55
  343. package/skills/schmancy/qr-scanner.md +0 -51
  344. package/skills/schmancy/timeline-tile.md +0 -95
  345. package/src/charts/area-chart.ts +0 -498
  346. package/src/charts/index.ts +0 -4
  347. package/src/charts/pills.ts +0 -352
  348. package/src/charts/types.ts +0 -66
  349. package/src/charts/utils.ts +0 -65
  350. package/src/extra/countries/countries.data.ts +0 -196
  351. package/src/extra/countries/countries.ts +0 -109
  352. package/src/extra/countries/index.ts +0 -2
  353. package/src/extra/index.ts +0 -2
  354. package/src/extra/timezone/index.ts +0 -2
  355. package/src/extra/timezone/timezone.ts +0 -118
  356. package/src/extra/timezone/timezones.data.ts +0 -2546
  357. package/src/map/index.ts +0 -1
  358. package/src/map/map.ts +0 -485
  359. package/src/payment-card-form/index.ts +0 -1
  360. package/src/payment-card-form/payment-card-form.ts +0 -331
  361. package/src/qr-scanner/index.ts +0 -1
  362. package/src/qr-scanner/qr-scanner.ts +0 -242
  363. package/src/timeline/index.ts +0 -1
  364. package/src/timeline/timeline-tile.ts +0 -431
  365. package/types/src/charts/area-chart.d.ts +0 -58
  366. package/types/src/charts/index.d.ts +0 -4
  367. package/types/src/charts/pills.d.ts +0 -51
  368. package/types/src/charts/types.d.ts +0 -62
  369. package/types/src/charts/utils.d.ts +0 -28
  370. package/types/src/extra/countries/countries.d.ts +0 -26
  371. package/types/src/extra/countries/countries.data.d.ts +0 -5
  372. package/types/src/extra/countries/index.d.ts +0 -2
  373. package/types/src/extra/index.d.ts +0 -2
  374. package/types/src/extra/timezone/index.d.ts +0 -2
  375. package/types/src/extra/timezone/timezone.d.ts +0 -34
  376. package/types/src/extra/timezone/timezones.data.d.ts +0 -7
  377. package/types/src/map/index.d.ts +0 -1
  378. package/types/src/map/map.d.ts +0 -130
  379. package/types/src/payment-card-form/index.d.ts +0 -1
  380. package/types/src/payment-card-form/payment-card-form.d.ts +0 -85
  381. package/types/src/qr-scanner/index.d.ts +0 -1
  382. package/types/src/qr-scanner/qr-scanner.d.ts +0 -26
  383. package/types/src/timeline/index.d.ts +0 -1
  384. package/types/src/timeline/timeline-tile.d.ts +0 -44
  385. /package/dist/agent/{flow-3RrZM-e7.js → flow-CvG1fLW5.js} +0 -0
  386. /package/dist/agent/{vendor-material-color-33Mj762T.js → vendor-material-color-DcL7ZPxx.js} +0 -0
  387. /package/dist/{form-BF1c3Dk1.js → form-CFvwnfuJ.js} +0 -0
  388. /package/dist/{form-DeO5XX3b.cjs → form-Ceijw1aA.cjs} +0 -0
  389. /package/dist/{rxjs-utils-BK8VMe3K.js → rxjs-utils-CVeJQ9KG.js} +0 -0
  390. /package/dist/{rxjs-utils-DhOKenkS.cjs → rxjs-utils-DCUHg_Ml.cjs} +0 -0
  391. /package/dist/{theme.interface-v7SkAnDH.js → theme.interface-B9TjbSBF.js} +0 -0
  392. /package/dist/{theme.interface-BeW-sz_g.cjs → theme.interface-BujperTo.cjs} +0 -0
  393. /package/dist/{utils-CJ9y2Jz9.cjs → utils-Dt5PpmaQ.cjs} +0 -0
  394. /package/dist/{utils-BfOze6Tk.js → utils-kND2Z9Xg.js} +0 -0
@@ -1,95 +0,0 @@
1
- # schmancy-timeline-tile
2
-
3
- > One cell in a procurement-stage timeline rail. Renders an empty / filled / stacked paper-card tile with a 2-letter glyph label, optional tooltip + caption, and a built-in fan-on-hover orchestration for stacked variants.
4
-
5
- ## Usage
6
-
7
- ```html
8
- <!-- Empty cell (placeholder for a missing stage doc) -->
9
- <schmancy-timeline-tile state="empty" glyph="PO"></schmancy-timeline-tile>
10
-
11
- <!-- Single filled cell with tooltip + caption -->
12
- <schmancy-timeline-tile
13
- state="filled"
14
- glyph="IN"
15
- tooltip="INV-2025-0001"
16
- caption="EUR 12,400"
17
- @tile-click=${(e) => openInspect(e.detail)}
18
- ></schmancy-timeline-tile>
19
-
20
- <!-- Stack of N revisions: wrapper carries `data-stack-id` + `--fan-count`,
21
- stack-top sits on top with the ×N badge, siblings reveal on hover.
22
- The wrapper toggles `data-fanned` automatically — no consumer
23
- pointer wiring required. -->
24
- <div
25
- data-stack-id="po-123"
26
- style="position: relative; width: 32px; height: 40px; --fan-count: 3;"
27
- >
28
- <schmancy-timeline-tile state="stack-sibling" glyph="PO" .index=${0}></schmancy-timeline-tile>
29
- <schmancy-timeline-tile state="stack-sibling" glyph="PO" .index=${1}></schmancy-timeline-tile>
30
- <schmancy-timeline-tile
31
- state="stack-top"
32
- glyph="PO"
33
- .index=${2}
34
- .stackCount=${3}
35
- tooltip="PO-2025-0007 · rev 3"
36
- caption="EUR 12,400"
37
- ></schmancy-timeline-tile>
38
- </div>
39
- ```
40
-
41
- ## Properties
42
-
43
- | Property | Type | Default | Description |
44
- |----------|------|---------|-------------|
45
- | `state` | `'empty' \| 'filled' \| 'stack-top' \| 'stack-sibling'` | `'empty'` | Render mode (reflected) |
46
- | `glyph` | `string` | `''` | 2-letter stage label (e.g. `RQ`, `PO`, `OC`, `DN`, `IN`) |
47
- | `stackCount` | `number?` | `undefined` | When `state="stack-top"` and > 1, renders the ×N badge |
48
- | `index` | `number?` | `undefined` | Sibling position in the stack (drives `--i` for fan offset; reflected) |
49
- | `tooltip` | `string?` | `undefined` | Tooltip text shown on hover / focus |
50
- | `caption` | `string?` | `undefined` | Caption rendered below the tile (hidden on `stack-sibling`) |
51
-
52
- ## Events
53
-
54
- | Event | Detail | Description |
55
- |-------|--------|-------------|
56
- | `tile-click` | `{ glyph, state }` | Fires on click for any non-`empty` state. Bubbles + composed. |
57
-
58
- ## Stack fan orchestration
59
-
60
- When `state="stack-top"`, the component subscribes a `pointerover` pipe to its parent element (the stack wrapper). The pipe is hover-intent: `pointerover` events with a target that closest-matches `[data-stack-id]` immediately set `data-fanned` on the wrapper; leaving the wrapper waits 800 ms before clearing the attribute, so the cursor can cross the gap between fanned siblings without collapsing the stack. The attribute lifetime IS the fanned state — sibling tiles read it via the `:host-context([data-fanned])` selector and translate edge-to-edge.
61
-
62
- The consumer's wrapper element MUST carry:
63
- - `data-stack-id="<unique>"` so the pointerover pipe can match the target
64
- - `position: relative` so the absolutely-positioned tiles align to it
65
- - `width` + `height` matching `--schmancy-tile-w` / `--schmancy-tile-h` (default `32px` / `40px`)
66
- - `--fan-count: <N>` so each tile knows the total stack size
67
-
68
- `stack-sibling` tiles set `pointer-events: none` until the wrapper is fanned, then re-enable so the user can click any revision.
69
-
70
- ## Slots
71
-
72
- None. Glyph and caption are props, not slot content — keeps the tile self-contained and addressable from a `repeat()` template.
73
-
74
- ## Accessibility
75
-
76
- - Filled / stack tiles render a native `<button type="button">` with `tabindex="0"` and `role="button"`.
77
- - `aria-label` is composed from `glyph`, `caption`, and `tooltip`.
78
- - Empty tiles set `tabindex="-1"` and `aria-label="<glyph> · empty"`.
79
- - Focus shows a 2px ring in `--schmancy-sys-color-primary-default` with a 3px offset.
80
-
81
- ## Tokens consumed
82
-
83
- | Custom property | Source |
84
- |-----------------|--------|
85
- | `--schmancy-sys-color-outline` | dashed border, paper-card lines, sibling outline |
86
- | `--schmancy-sys-color-surface-containerLowest` | filled-card background, tooltip background |
87
- | `--schmancy-sys-color-surface-on` | tooltip + caption text |
88
- | `--schmancy-sys-color-surface-onVariant` | empty-state glyph |
89
- | `--schmancy-sys-color-primary-default` | hover border, focus ring, top-edge tint, ×N badge background |
90
- | `--schmancy-sys-color-primary-on` | ×N badge text |
91
- | `--schmancy-sys-color-primary-onContainer` | filled-state glyph color |
92
- | `--schmancy-tile-w`, `--schmancy-tile-h` | host width / height (defaults `32px` / `40px`) |
93
- | `--fan-count`, `--i` | wrapper-driven fan layout (consumer or component-set) |
94
-
95
- Theme overrides cascade from any ancestor `<schmancy-theme>` — wrap the timeline in a tinted theme block to recolor the rail without touching the component.
@@ -1,498 +0,0 @@
1
- import { html, css, PropertyValues } from 'lit'
2
- import { customElement, property, state } from 'lit/decorators.js'
3
- import { ref, createRef, Ref } from 'lit/directives/ref.js'
4
- import { SchmancyElement } from '@mixins/index'
5
- import type { ChartDataPoint, ChartTheme, ProcessedDataPoint } from './types'
6
- import { catmullRomSpline, hexToRgba, easeOutCubic } from './utils'
7
-
8
- interface TooltipData {
9
- visible: boolean
10
- x: number
11
- y: number
12
- label: string
13
- value: number
14
- metadata?: Record<string, unknown>
15
- }
16
-
17
- @customElement('schmancy-area-chart')
18
- export class SchmancyAreaChart extends SchmancyElement {
19
- static styles = [css`
20
- :host {
21
- display: block;
22
- }
23
- `]
24
-
25
- /** Chart data points */
26
- @property({ type: Array })
27
- data: ChartDataPoint[] = []
28
-
29
- /** Chart height in pixels */
30
- @property({ type: Number })
31
- height = 200
32
-
33
- /** Show grid lines */
34
- @property({ type: Boolean })
35
- showGrid = true
36
-
37
- /** Show x-axis labels */
38
- @property({ type: Boolean })
39
- showLabels = true
40
-
41
- /** Enable tooltips */
42
- @property({ type: Boolean })
43
- showTooltip = true
44
-
45
- /** Number of peaks to highlight */
46
- @property({ type: Number })
47
- peakCount = 3
48
-
49
- /** Animation duration in milliseconds */
50
- @property({ type: Number })
51
- animationDuration = 800
52
-
53
- /** Enable entrance animation */
54
- @property({ type: Boolean })
55
- animated = true
56
-
57
- /** Prefix for values (e.g., "EUR ") */
58
- @property({ type: String })
59
- valuePrefix = ''
60
-
61
- /** Suffix for values (e.g., "%") */
62
- @property({ type: String })
63
- valueSuffix = ''
64
-
65
- /** Decimal places for value display */
66
- @property({ type: Number })
67
- valueDecimals = 2
68
-
69
- /** Theme overrides */
70
- @property({ type: Object })
71
- theme: Partial<ChartTheme> = {}
72
-
73
- @state() private tooltipData: TooltipData = {
74
- visible: false,
75
- x: 0,
76
- y: 0,
77
- label: '',
78
- value: 0,
79
- }
80
-
81
- @state() private animationProgress = 0
82
- @state() private isVisible = false
83
-
84
- private canvasRef: Ref<HTMLCanvasElement> = createRef()
85
- private containerRef: Ref<HTMLDivElement> = createRef()
86
- private animationFrameId: number | null = null
87
- private observer: IntersectionObserver | null = null
88
- private processedData: ProcessedDataPoint[] = []
89
- private resizeObserver: ResizeObserver | null = null
90
-
91
- connectedCallback() {
92
- super.connectedCallback()
93
- this.setupIntersectionObserver()
94
- }
95
-
96
- disconnectedCallback() {
97
- super.disconnectedCallback()
98
- this.cleanup()
99
- }
100
-
101
- private cleanup() {
102
- if (this.animationFrameId !== null) {
103
- cancelAnimationFrame(this.animationFrameId)
104
- this.animationFrameId = null
105
- }
106
- if (this.observer) {
107
- this.observer.disconnect()
108
- this.observer = null
109
- }
110
- if (this.resizeObserver) {
111
- this.resizeObserver.disconnect()
112
- this.resizeObserver = null
113
- }
114
- }
115
-
116
- private setupIntersectionObserver() {
117
- this.observer = new IntersectionObserver(
118
- entries => {
119
- const entry = entries[0]
120
- if (entry.isIntersecting && !this.isVisible) {
121
- this.isVisible = true
122
- if (this.animated) {
123
- this.startAnimation()
124
- } else {
125
- this.animationProgress = 1
126
- this.drawChart()
127
- }
128
- } else if (!entry.isIntersecting) {
129
- this.isVisible = false
130
- if (this.animationFrameId !== null) {
131
- cancelAnimationFrame(this.animationFrameId)
132
- this.animationFrameId = null
133
- }
134
- }
135
- },
136
- { threshold: 0.1 }
137
- )
138
- }
139
-
140
- protected updated(changedProperties: PropertyValues) {
141
- super.updated(changedProperties)
142
-
143
- if (this.containerRef.value && this.observer) {
144
- this.observer.observe(this.containerRef.value)
145
- }
146
-
147
- if (this.canvasRef.value && !this.resizeObserver) {
148
- this.resizeObserver = new ResizeObserver(() => {
149
- this.drawChart()
150
- })
151
- this.resizeObserver.observe(this.canvasRef.value)
152
- }
153
-
154
- // Redraw when data changes
155
- if (changedProperties.has('data') && this.isVisible) {
156
- if (this.animated) {
157
- this.animationProgress = 0
158
- this.startAnimation()
159
- } else {
160
- this.animationProgress = 1
161
- this.drawChart()
162
- }
163
- }
164
-
165
- // Redraw on theme or config changes
166
- if (
167
- (changedProperties.has('theme') ||
168
- changedProperties.has('showGrid') ||
169
- changedProperties.has('showLabels') ||
170
- changedProperties.has('peakCount')) &&
171
- this.isVisible
172
- ) {
173
- this.drawChart()
174
- }
175
- }
176
-
177
- private startAnimation() {
178
- const startTime = performance.now()
179
- const duration = this.animationDuration
180
-
181
- const animateFrame = (currentTime: number) => {
182
- const elapsed = currentTime - startTime
183
- const progress = Math.min(elapsed / duration, 1)
184
-
185
- this.animationProgress = easeOutCubic(progress)
186
- this.drawChart()
187
-
188
- if (progress < 1 && this.isVisible) {
189
- this.animationFrameId = requestAnimationFrame(animateFrame)
190
- }
191
- }
192
-
193
- this.animationFrameId = requestAnimationFrame(animateFrame)
194
- }
195
-
196
- private processData(): ProcessedDataPoint[] {
197
- if (!this.data || this.data.length === 0) return []
198
-
199
- // Find top N peak values
200
- const sortedByValue = [...this.data].toSorted((a, b) => b.value - a.value)
201
- const peakLabels = new Set(sortedByValue.slice(0, this.peakCount).map(d => d.label))
202
-
203
- return this.data.map(d => ({
204
- ...d,
205
- x: 0, // Will be calculated during draw
206
- y: 0, // Will be calculated during draw
207
- isPeak: peakLabels.has(d.label),
208
- }))
209
- }
210
-
211
- private getThemeValue<K extends keyof ChartTheme>(
212
- key: K,
213
- defaultValue: NonNullable<ChartTheme[K]>
214
- ): NonNullable<ChartTheme[K]> {
215
- return (this.theme[key] as NonNullable<ChartTheme[K]>) ?? defaultValue
216
- }
217
-
218
- private drawChart() {
219
- const canvas = this.canvasRef.value
220
- if (!canvas) return
221
-
222
- const ctx = canvas.getContext('2d')
223
- if (!ctx) return
224
-
225
- const dpr = window.devicePixelRatio || 1
226
- const rect = canvas.getBoundingClientRect()
227
- const width = rect.width
228
- const height = rect.height
229
-
230
- // Set canvas size for high DPI
231
- canvas.width = width * dpr
232
- canvas.height = height * dpr
233
- ctx.scale(dpr, dpr)
234
-
235
- // Clear canvas
236
- ctx.clearRect(0, 0, width, height)
237
-
238
- const data = this.processData()
239
- if (data.length === 0) return
240
-
241
- const padding = { top: 20, right: 20, bottom: this.showLabels ? 40 : 20, left: 20 }
242
- const chartWidth = width - padding.left - padding.right
243
- const chartHeight = height - padding.top - padding.bottom
244
-
245
- // Find max value for scaling
246
- const maxValue = Math.max(...data.map(d => d.value), 1)
247
-
248
- // Calculate positions
249
- // oxlint-disable-next-line oxc/no-map-spread
250
- const points = data.map((d, i) => ({
251
- ...d,
252
- x: padding.left + (data.length > 1 ? (i / (data.length - 1)) * chartWidth : chartWidth / 2),
253
- y: padding.top + chartHeight - (d.value / maxValue) * chartHeight,
254
- }))
255
-
256
- this.processedData = points
257
-
258
- // Get primary color from CSS or theme
259
- const computedStyle = getComputedStyle(this)
260
- const defaultPrimaryColor =
261
- computedStyle.getPropertyValue('--schmancy-sys-color-primary').trim() || '#6750A4'
262
- const primaryColor = this.getThemeValue('primaryColor', defaultPrimaryColor)
263
- const [gradientOpacityTop, gradientOpacityBottom] = this.getThemeValue('gradientOpacity', [0.4, 0.05])
264
- const strokeWidth = this.getThemeValue('strokeWidth', 2)
265
- const pointRadius = this.getThemeValue('pointRadius', 4)
266
- const peakRadius = this.getThemeValue('peakRadius', 6)
267
-
268
- // Draw grid lines
269
- if (this.showGrid) {
270
- ctx.strokeStyle = 'rgba(128, 128, 128, 0.15)'
271
- ctx.lineWidth = 1
272
- ctx.setLineDash([4, 4])
273
-
274
- for (let i = 1; i <= 3; i++) {
275
- const y = padding.top + (chartHeight * i) / 4
276
- ctx.beginPath()
277
- ctx.moveTo(padding.left, y)
278
- ctx.lineTo(width - padding.right, y)
279
- ctx.stroke()
280
- }
281
-
282
- ctx.setLineDash([])
283
- }
284
-
285
- // Create smooth curve path using Catmull-Rom spline
286
- const curvePath = new Path2D()
287
- const areaPath = new Path2D()
288
-
289
- if (points.length >= 2) {
290
- // Start area path from bottom left
291
- areaPath.moveTo(points[0].x, padding.top + chartHeight)
292
- curvePath.moveTo(points[0].x, points[0].y)
293
- areaPath.lineTo(points[0].x, points[0].y)
294
-
295
- for (let i = 0; i < points.length - 1; i++) {
296
- const p0 = points[Math.max(0, i - 1)]
297
- const p1 = points[i]
298
- const p2 = points[Math.min(points.length - 1, i + 1)]
299
- const p3 = points[Math.min(points.length - 1, i + 2)]
300
-
301
- // Draw curve segments
302
- const segments = 16
303
- for (let j = 1; j <= segments; j++) {
304
- const t = j / segments
305
- const point = catmullRomSpline(p0, p1, p2, p3, t)
306
- curvePath.lineTo(point.x, point.y)
307
- areaPath.lineTo(point.x, point.y)
308
- }
309
- }
310
-
311
- // Close area path
312
- areaPath.lineTo(points[points.length - 1].x, padding.top + chartHeight)
313
- areaPath.closePath()
314
- } else if (points.length === 1) {
315
- // Single point - draw a dot
316
- curvePath.arc(points[0].x, points[0].y, pointRadius, 0, Math.PI * 2)
317
- }
318
-
319
- // Apply animation clipping
320
- ctx.save()
321
- ctx.beginPath()
322
- ctx.rect(0, 0, padding.left + chartWidth * this.animationProgress, height)
323
- ctx.clip()
324
-
325
- // Draw gradient fill
326
- if (points.length >= 2) {
327
- const gradient = ctx.createLinearGradient(0, padding.top, 0, padding.top + chartHeight)
328
- gradient.addColorStop(0, hexToRgba(primaryColor, gradientOpacityTop))
329
- gradient.addColorStop(1, hexToRgba(primaryColor, gradientOpacityBottom))
330
-
331
- ctx.fillStyle = gradient
332
- ctx.fill(areaPath)
333
- }
334
-
335
- // Draw stroke
336
- ctx.strokeStyle = primaryColor
337
- ctx.lineWidth = strokeWidth
338
- ctx.lineCap = 'round'
339
- ctx.lineJoin = 'round'
340
- ctx.stroke(curvePath)
341
-
342
- // Draw data points
343
- points.forEach((point, index) => {
344
- const pointProgress = (index / (points.length - 1 || 1)) * this.animationProgress
345
- if (pointProgress < index / (points.length || 1)) return
346
-
347
- const radius = point.isPeak ? peakRadius - 1 : pointRadius - 1
348
- const outerRadius = point.isPeak ? peakRadius + 4 : pointRadius + 2
349
-
350
- // Outer glow for peaks
351
- if (point.isPeak) {
352
- ctx.beginPath()
353
- ctx.arc(point.x, point.y, outerRadius, 0, Math.PI * 2)
354
- ctx.fillStyle = hexToRgba(primaryColor, 0.2)
355
- ctx.fill()
356
- }
357
-
358
- // Inner dot
359
- ctx.beginPath()
360
- ctx.arc(point.x, point.y, radius, 0, Math.PI * 2)
361
- ctx.fillStyle = primaryColor
362
- ctx.fill()
363
-
364
- // White center for peaks
365
- if (point.isPeak) {
366
- ctx.beginPath()
367
- ctx.arc(point.x, point.y, 2, 0, Math.PI * 2)
368
- ctx.fillStyle = 'white'
369
- ctx.fill()
370
- }
371
- })
372
-
373
- ctx.restore()
374
-
375
- // Draw labels
376
- if (this.showLabels && points.length > 0) {
377
- ctx.fillStyle = 'rgba(128, 128, 128, 0.8)'
378
- ctx.font = '11px system-ui, sans-serif'
379
- ctx.textAlign = 'center'
380
- ctx.textBaseline = 'top'
381
-
382
- // Show fewer labels on narrow charts
383
- const labelStep = width < 400 ? 3 : width < 600 ? 2 : 1
384
- points.forEach((point, index) => {
385
- if (index % labelStep === 0) {
386
- ctx.fillText(point.label, point.x, height - padding.bottom + 8)
387
- }
388
- })
389
- }
390
- }
391
-
392
- private formatValue(value: number): string {
393
- const formatted = value.toFixed(this.valueDecimals)
394
- return `${this.valuePrefix}${formatted}${this.valueSuffix}`
395
- }
396
-
397
- private handlePointerMove = (e: PointerEvent) => {
398
- if (this.processedData.length === 0 || !this.showTooltip) return
399
-
400
- const canvas = this.canvasRef.value
401
- if (!canvas) return
402
-
403
- const rect = canvas.getBoundingClientRect()
404
- const x = e.clientX - rect.left
405
-
406
- // Find closest data point
407
- let closestPoint: ProcessedDataPoint | null = null
408
- let minDistance = Infinity
409
-
410
- this.processedData.forEach(point => {
411
- const distance = Math.abs(point.x - x)
412
- if (distance < minDistance) {
413
- minDistance = distance
414
- closestPoint = point
415
- }
416
- })
417
-
418
- if (closestPoint && minDistance < 30) {
419
- this.tooltipData = {
420
- visible: true,
421
- x: closestPoint.x,
422
- y: closestPoint.y,
423
- label: closestPoint.label,
424
- value: closestPoint.value,
425
- metadata: closestPoint.metadata,
426
- }
427
- } else {
428
- this.tooltipData = { ...this.tooltipData, visible: false }
429
- }
430
- }
431
-
432
- private handlePointerLeave = () => {
433
- this.tooltipData = { ...this.tooltipData, visible: false }
434
- }
435
-
436
- private renderMetadata() {
437
- if (!this.tooltipData.metadata) return ''
438
- return Object.entries(this.tooltipData.metadata).map(
439
- ([key, value]) => html`
440
- <schmancy-typography type="body" token="sm" class="text-surface-onVariant">
441
- ${key}: ${String(value)}
442
- </schmancy-typography>
443
- `
444
- )
445
- }
446
-
447
- render() {
448
- if (!this.data || this.data.length === 0) {
449
- return html``
450
- }
451
-
452
- return html`
453
- <div ${ref(this.containerRef)} class="relative">
454
- <div class="relative" style="height: ${this.height}px; touch-action: pan-y;">
455
- <canvas
456
- ${ref(this.canvasRef)}
457
- class="w-full h-full"
458
- style="display: block;"
459
- @pointermove=${this.handlePointerMove}
460
- @pointerleave=${this.handlePointerLeave}
461
- ></canvas>
462
-
463
- <!-- Tooltip -->
464
- ${this.showTooltip
465
- ? html`
466
- <div
467
- class="absolute pointer-events-none transition-opacity duration-150 ${this.tooltipData.visible
468
- ? 'opacity-100'
469
- : 'opacity-0'}"
470
- style="
471
- left: ${this.tooltipData.x}px;
472
- top: ${this.tooltipData.y - 60}px;
473
- transform: translateX(-50%);
474
- "
475
- >
476
- <schmancy-surface elevation="3" rounded="all" class="px-3 py-2 min-w-max">
477
- <schmancy-typography type="label" token="sm" class="text-surface-onVariant">
478
- ${this.tooltipData.label}
479
- </schmancy-typography>
480
- <schmancy-typography type="title" token="md" class="text-surface-on font-semibold">
481
- ${this.formatValue(this.tooltipData.value)}
482
- </schmancy-typography>
483
- ${this.renderMetadata()}
484
- </schmancy-surface>
485
- </div>
486
- `
487
- : ''}
488
- </div>
489
- </div>
490
- `
491
- }
492
- }
493
-
494
- declare global {
495
- interface HTMLElementTagNameMap {
496
- 'schmancy-area-chart': SchmancyAreaChart
497
- }
498
- }
@@ -1,4 +0,0 @@
1
- export * from './types'
2
- export * from './utils'
3
- export * from './area-chart'
4
- export * from './pills'