@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,331 +0,0 @@
1
- import { SchmancyElement } from '@mixins/index'
2
- import SchmancyForm from '@schmancy/form/form'
3
- import { SchmancyInputChangeEvent } from '@schmancy/input'
4
- import SchmancyInput from '@schmancy/input/input'
5
- import Cleave from 'cleave.js'
6
- import { html } from 'lit'
7
- import { customElement, property, query, state } from 'lit/decorators.js'
8
-
9
- /**
10
- * @element schmancy-payment-card-form
11
- * A mobile-friendly payment card form component that provides real-time validation
12
- * and formatting for credit card information.
13
- *
14
- * @fires change - Fires when any field in the form changes
15
- * @slot - Default slot for any additional content
16
- */
17
- @customElement('schmancy-payment-card-form')
18
- export class SchmancyPaymentCardForm extends SchmancyElement {
19
- /**
20
- * The form data containing all payment card information
21
- */
22
- @property({ type: Object, reflect: true })
23
- public value: {
24
- cardName: string
25
- cardNumber: string
26
- expirationDate: string
27
- cvv: string
28
- } = {
29
- cardName: '',
30
- cardNumber: '',
31
- expirationDate: '',
32
- cvv: '',
33
- }
34
-
35
- /**
36
- * The detected card type (visa, mastercard, amex, etc.)
37
- * This is determined automatically by the Cleave.js library
38
- */
39
- @state() cardType: string = ''
40
-
41
- /**
42
- * Individual field values tracked with state properties for reactivity
43
- */
44
- @state() cardName: string | undefined
45
- @state() cardNumber: string | undefined
46
- @state() expirationDate: string | undefined
47
- @state() cvv: string | undefined
48
-
49
- /**
50
- * Field validity states for enhanced validation feedback
51
- */
52
- @state() isCardNameValid: boolean = true
53
- @state() isCardNumberValid: boolean = true
54
- @state() isExpirationDateValid: boolean = true
55
- @state() isCvvValid: boolean = true
56
-
57
- /**
58
- * Query selectors for the form elements
59
- */
60
- @query('#cardNumber') cardNumberInput!: SchmancyInput
61
- @query('#expirationDate') expirationDateInput!: SchmancyInput
62
- @query('#cvv') cvvInput!: SchmancyInput
63
- @query('#cardName') cardNameInput!: SchmancyInput
64
- @query('schmancy-form') form!: SchmancyForm
65
-
66
- /**
67
- * When the component is first updated, initialize the Cleave.js formatters
68
- * for the credit card fields with appropriate validations
69
- */
70
- firstUpdated(): void {
71
- // Credit card number formatter with type detection
72
- void new Cleave(this.cardNumberInput, {
73
- creditCard: true,
74
- creditCardStrictMode: true,
75
- onCreditCardTypeChanged: type => {
76
- this.cardType = type
77
-
78
- if (type === 'unknown') {
79
- this.isCardNumberValid = false
80
- this.cardNumberInput.setCustomValidity('Please enter a valid card number.')
81
- this.cardNumberInput.error = true
82
- } else {
83
- this.isCardNumberValid = true
84
- this.cardNumberInput.setCustomValidity('')
85
- this.cardNumberInput.error = false
86
-
87
- // Adjust CVV length based on card type
88
- if (type === 'amex') {
89
- this.cvvInput.maxlength = 4
90
- } else {
91
- this.cvvInput.maxlength = 3
92
- }
93
- }
94
- },
95
- })
96
-
97
- // Expiration date formatter (MM/YY)
98
- void new Cleave(this.expirationDateInput, {
99
- date: true,
100
- datePattern: ['m', 'y'],
101
- onValueChanged: e => {
102
- const value = e.target.value
103
-
104
- if (!value || value.length < 5) {
105
- this.isExpirationDateValid = false
106
- this.expirationDateInput.setCustomValidity('Please enter a valid expiration date (MM/YY).')
107
- this.expirationDateInput.error = true
108
- } else {
109
- // Validate expiration date is in the future
110
- const [month, year] = value.split('/')
111
- const now = new Date()
112
- const currentYear = now.getFullYear() % 100 // Get last two digits of year
113
- const currentMonth = now.getMonth() + 1 // JS months are 0-indexed
114
-
115
- const monthNum = parseInt(month, 10)
116
- const yearNum = parseInt(year, 10)
117
-
118
- // Check if the card is expired
119
- if (yearNum < currentYear || (yearNum === currentYear && monthNum < currentMonth)) {
120
- this.isExpirationDateValid = false
121
- this.expirationDateInput.setCustomValidity('Card has expired.')
122
- this.expirationDateInput.error = true
123
- } else {
124
- this.isExpirationDateValid = true
125
- this.expirationDateInput.setCustomValidity('')
126
- this.expirationDateInput.error = false
127
- }
128
- }
129
- },
130
- })
131
-
132
- // CVV formatter (numeric only)
133
- void new Cleave(this.cvvInput, {
134
- blocks: [4], // Maximum size for AMEX
135
- numericOnly: true,
136
- onValueChanged: e => {
137
- const minLength = this.cardType === 'amex' ? 4 : 3
138
-
139
- if (e.target.value.length < minLength) {
140
- this.isCvvValid = false
141
- this.cvvInput.setCustomValidity(`Please enter a valid ${minLength}-digit CVV.`)
142
- this.cvvInput.error = true
143
- } else {
144
- this.isCvvValid = true
145
- this.cvvInput.setCustomValidity('')
146
- this.cvvInput.error = false
147
- }
148
- },
149
- })
150
-
151
- // Card name formatter (uppercase)
152
- void new Cleave(this.cardNameInput, {
153
- uppercase: true,
154
- delimiter: ' ',
155
- onValueChanged: e => {
156
- // Basic name validation
157
- if (!e.target.value || e.target.value.length < 3) {
158
- this.isCardNameValid = false
159
- this.cardNameInput.setCustomValidity('Please enter the name as it appears on the card.')
160
- this.cardNameInput.error = true
161
- } else {
162
- this.isCardNameValid = true
163
- this.cardNameInput.setCustomValidity('')
164
- this.cardNameInput.error = false
165
- }
166
- },
167
- })
168
- }
169
-
170
- /**
171
- * Checks for validity of the entire form
172
- * @returns {boolean} True if the form is valid
173
- */
174
- public reportValidity() {
175
- return this.form.reportValidity()
176
- }
177
-
178
- /**
179
- * Checks for validity of the form
180
- * @returns {boolean} True if the form is valid
181
- */
182
- public checkValidity() {
183
- return !!this.form.reportValidity()
184
- }
185
-
186
- /**
187
- * Emit change event when any input value changes
188
- */
189
- private emitChange() {
190
- this.dispatchEvent(
191
- new CustomEvent('change', {
192
- detail: { ...this.value },
193
- bubbles: true,
194
- }),
195
- )
196
- }
197
-
198
- /**
199
- * Render the payment card form with a responsive grid layout
200
- */
201
- protected render() {
202
- // Determine icon based on card type
203
- const cardIcon = this.getCardIcon()
204
-
205
- return html`
206
- <schmancy-form
207
- @change=${e => {
208
- e.stopPropagation()
209
- e.preventDefault()
210
- }}
211
- >
212
- <div class="grid grid-flow-row auto-rows-max flex-1 gap-4 w-full">
213
- <!-- Card Name Field -->
214
- <schmancy-input
215
- autocomplete="cc-name"
216
- id="cardName"
217
- .value=${this.cardName ?? ''}
218
- .error=${!this.isCardNameValid}
219
- type="text"
220
- .label=${'Name on card'}
221
- .required=${true}
222
- .hint=${!this.isCardNameValid
223
- ? 'Please enter the name as it appears on the card'
224
- : 'Enter the name exactly as it appears on your card'}
225
- @change=${(e: SchmancyInputChangeEvent) => {
226
- this.cardName = e.detail.value
227
- this.value.cardName = e.detail.value
228
- this.emitChange()
229
- }}
230
- ></schmancy-input>
231
-
232
- <!-- Card Number Field with Card Type Indicator -->
233
- <div class="relative w-full">
234
- <schmancy-input
235
- autocomplete="cc-number"
236
- id="cardNumber"
237
- type="text"
238
- .label=${'Card number'}
239
- .error=${!this.isCardNumberValid}
240
- .required=${true}
241
- .hint=${!this.isCardNumberValid ? 'Please enter a valid card number' : 'Your 16-digit card number'}
242
- @change=${(e: SchmancyInputChangeEvent) => {
243
- this.cardNumber = e.detail.value
244
- this.value.cardNumber = e.detail.value
245
- this.emitChange()
246
- }}
247
- ></schmancy-input>
248
- ${cardIcon ? html`<div class="absolute right-3 top-1/2 transform -translate-y-1/4">${cardIcon}</div>` : ''}
249
- </div>
250
-
251
- <!-- Responsive grid for expiration date and CVV -->
252
- <div class="grid grid-cols-[1fr_1fr] gap-4 w-full">
253
- <schmancy-input
254
- autocomplete="cc-exp"
255
- id="expirationDate"
256
- @change=${(e: SchmancyInputChangeEvent) => {
257
- this.expirationDate = e.detail.value
258
- this.value.expirationDate = e.detail.value
259
- this.emitChange()
260
- }}
261
- type="text"
262
- .error=${!this.isExpirationDateValid}
263
- .label=${'Expiration date'}
264
- placeholder="MM/YY"
265
- .required=${true}
266
- .hint=${!this.isExpirationDateValid ? 'Invalid expiration date' : 'MM/YY format'}
267
- ></schmancy-input>
268
-
269
- <schmancy-input
270
- id="cvv"
271
- autocomplete="cc-csc"
272
- @change=${(e: SchmancyInputChangeEvent) => {
273
- this.cvv = e.detail.value
274
- this.value.cvv = e.detail.value
275
- this.emitChange()
276
- }}
277
- .label=${'CVV'}
278
- .error=${!this.isCvvValid}
279
- .required=${true}
280
- type="text"
281
- maxlength="${this.cardType === 'amex' ? '4' : '3'}"
282
- minlength="${this.cardType === 'amex' ? '4' : '3'}"
283
- .hint=${!this.isCvvValid ? 'Invalid security code' : 'Security code on back of card'}
284
- ></schmancy-input>
285
- </div>
286
-
287
- <!-- Show card acceptability notice -->
288
- <div class="text-sm text-secondary-onContainer mt-2">${this.renderSecurityNotice()}</div>
289
-
290
- <slot></slot>
291
- </div>
292
- </schmancy-form>
293
- `
294
- }
295
-
296
- /**
297
- * Helper method to render card type icon based on detected card type
298
- */
299
- private getCardIcon() {
300
- switch (this.cardType) {
301
- case 'visa':
302
- return html`<schmancy-icon>credit_card</schmancy-icon>`
303
- case 'mastercard':
304
- return html`<schmancy-icon>credit_card</schmancy-icon>`
305
- case 'amex':
306
- return html`<schmancy-icon>credit_card</schmancy-icon>`
307
- case 'discover':
308
- return html`<schmancy-icon>credit_card</schmancy-icon>`
309
- default:
310
- return this.cardNumber ? html`<schmancy-icon>credit_card</schmancy-icon>` : null
311
- }
312
- }
313
-
314
- /**
315
- * Helper method to render a security and acceptance notice
316
- */
317
- private renderSecurityNotice() {
318
- return html`
319
- <div class="flex items-center gap-2">
320
- <schmancy-icon size="18px">lock</schmancy-icon>
321
- <span>Your payment information is secure and encrypted</span>
322
- </div>
323
- `
324
- }
325
- }
326
-
327
- declare global {
328
- interface HTMLElementTagNameMap {
329
- 'schmancy-payment-card-form': SchmancyPaymentCardForm
330
- }
331
- }
@@ -1 +0,0 @@
1
- export * from './qr-scanner'
@@ -1,242 +0,0 @@
1
- import { SchmancyElement } from '@mixins/index'
2
- import jsQR from 'jsqr'
3
- import { css, html } from 'lit'
4
- import { customElement, property, state } from 'lit/decorators.js'
5
- import { when } from 'lit/directives/when.js'
6
- import { animationFrames, Subject, timer } from 'rxjs'
7
- import { distinctUntilChanged, filter, map, takeUntil, throttleTime } from 'rxjs/operators'
8
-
9
- interface QRScanResult {
10
- data: string
11
- timestamp: number
12
- }
13
-
14
- @customElement('schmancy-qr-scanner')
15
- export class SchmancyQRScanner extends SchmancyElement {
16
- static styles = [css`
17
- :host {
18
- display: block;
19
- width: 100%;
20
- height: 100%;
21
- min-height: 300px;
22
- }
23
- `]
24
-
25
- @property({ type: Boolean }) continuous = true
26
-
27
- @state() private hasPermission = false
28
- @state() private error = ''
29
- @state() private showSuccess = false
30
-
31
- private stream: MediaStream | null = null
32
- private destroy$ = new Subject<void>()
33
- private videoElement: HTMLVideoElement | null = null
34
-
35
- connectedCallback() {
36
- super.connectedCallback()
37
- this.startCamera()
38
- }
39
-
40
- private async startCamera(): Promise<void> {
41
- try {
42
- const constraints: MediaStreamConstraints = {
43
- video: {
44
- facingMode: 'environment',
45
- width: { ideal: 1280 },
46
- height: { ideal: 720 },
47
- },
48
- }
49
-
50
- this.stream = await navigator.mediaDevices.getUserMedia(constraints)
51
- this.hasPermission = true
52
- this.error = ''
53
-
54
- await this.updateComplete
55
-
56
- this.videoElement = this.shadowRoot?.querySelector('#video') as HTMLVideoElement
57
- if (this.videoElement) {
58
- this.videoElement.srcObject = this.stream
59
- await this.videoElement.play()
60
- this.startScanning()
61
- }
62
- } catch (error) {
63
- console.error('Camera access denied:', error)
64
- this.hasPermission = false
65
- this.error = 'Camera access is required to scan QR codes. Please allow camera access and try again.'
66
- }
67
- }
68
-
69
- private stopCamera(): void {
70
- this.destroy$.next()
71
-
72
- if (this.stream) {
73
- this.stream.getTracks().forEach(track => track.stop())
74
- this.stream = null
75
- }
76
-
77
- if (this.videoElement) {
78
- this.videoElement.srcObject = null
79
- this.videoElement = null
80
- }
81
-
82
- this.hasPermission = false
83
- this.error = ''
84
- this.showSuccess = false
85
- }
86
-
87
- private startScanning(): void {
88
- if (!this.videoElement || !this.hasPermission) {
89
- return
90
- }
91
-
92
- animationFrames()
93
- .pipe(
94
- map(() => this.scanFrame()),
95
- filter((result): result is QRScanResult => result !== null),
96
- distinctUntilChanged((prev, curr) => {
97
- if (prev.data !== curr.data) return false
98
- return curr.timestamp - prev.timestamp < 2000
99
- }),
100
- throttleTime(500),
101
- takeUntil(this.destroy$),
102
- )
103
- .subscribe({
104
- next: result => this.handleScanResult(result),
105
- error: error => {
106
- console.error('Scanning error:', error)
107
- },
108
- })
109
- }
110
-
111
- private scanFrame(): QRScanResult | null {
112
- if (!this.videoElement || this.videoElement.readyState !== HTMLMediaElement.HAVE_ENOUGH_DATA) {
113
- return null
114
- }
115
-
116
- try {
117
- const canvas = document.createElement('canvas')
118
- canvas.width = this.videoElement.videoWidth
119
- canvas.height = this.videoElement.videoHeight
120
-
121
- const ctx = canvas.getContext('2d')
122
- if (!ctx) return null
123
-
124
- ctx.drawImage(this.videoElement, 0, 0)
125
- const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
126
-
127
- const code = jsQR(imageData.data, imageData.width, imageData.height)
128
-
129
- if (code && code.data) {
130
- return {
131
- data: code.data,
132
- timestamp: Date.now(),
133
- }
134
- }
135
- } catch (error) {
136
- console.error('Frame scan error:', error)
137
- }
138
-
139
- return null
140
- }
141
-
142
- private handleScanResult(result: QRScanResult): void {
143
- this.showSuccessFlash()
144
-
145
- // Haptic feedback if available
146
- if (navigator.vibrate) {
147
- navigator.vibrate([100, 50, 100])
148
- }
149
-
150
- // Audio feedback
151
- this.playSuccessSound()
152
-
153
- // Dispatch scan result
154
- this.dispatchEvent(
155
- new CustomEvent('scan-result', {
156
- detail: { data: result.data, timestamp: result.timestamp },
157
- bubbles: true,
158
- composed: true,
159
- }),
160
- )
161
-
162
- }
163
-
164
- private showSuccessFlash(): void {
165
- this.showSuccess = true
166
- timer(500)
167
- .pipe(takeUntil(this.destroy$))
168
- .subscribe(() => {
169
- this.showSuccess = false
170
- })
171
- }
172
-
173
- private playSuccessSound(): void {
174
- try {
175
- const AudioContextClass = window.AudioContext || (window as unknown as { webkitAudioContext: typeof AudioContext }).webkitAudioContext
176
- const audioContext = new AudioContextClass()
177
- const oscillator = audioContext.createOscillator()
178
- const gainNode = audioContext.createGain()
179
-
180
- oscillator.connect(gainNode)
181
- gainNode.connect(audioContext.destination)
182
-
183
- oscillator.frequency.setValueAtTime(800, audioContext.currentTime)
184
- oscillator.frequency.setValueAtTime(1000, audioContext.currentTime + 0.1)
185
-
186
- gainNode.gain.setValueAtTime(0.3, audioContext.currentTime)
187
- gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2)
188
-
189
- oscillator.start(audioContext.currentTime)
190
- oscillator.stop(audioContext.currentTime + 0.2)
191
- } catch {
192
- // Audio feedback failed silently
193
- }
194
- }
195
-
196
- disconnectedCallback() {
197
- super.disconnectedCallback()
198
- this.stopCamera()
199
- this.destroy$.complete()
200
- }
201
-
202
- render() {
203
- if (this.error) {
204
- return html`
205
- <div class="w-full h-full flex flex-col items-center justify-center bg-black text-white text-center p-5">
206
- <schmancy-icon size="64" class="mb-4">camera_alt</schmancy-icon>
207
- <schmancy-typography type="headline" token="md" class="mb-4">Camera Permission Required</schmancy-typography>
208
- <schmancy-typography type="body" token="md" class="mb-6 max-w-sm">${this.error}</schmancy-typography>
209
- <schmancy-button variant="filled" @click=${() => window.location.reload()}>Retry</schmancy-button>
210
- </div>
211
- `
212
- }
213
-
214
- return html`
215
- <div class="relative w-full h-full bg-black overflow-hidden rounded-xl">
216
- <!-- Video Stream -->
217
- <video id="video" class="absolute inset-0 w-full h-full object-cover" autoplay muted playsinline></video>
218
-
219
- <!-- Success Flash -->
220
- ${when(this.showSuccess, () => html`<div class="absolute inset-0 bg-green-400/30 pointer-events-none"></div>`)}
221
-
222
- <!-- Minimal corner brackets - Apple style -->
223
- <div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[250px] h-[250px] pointer-events-none animate-pulse">
224
- <!-- Top-left corner -->
225
- <div class="absolute top-0 left-0 w-12 h-12 border-t-4 border-l-4 border-white rounded-tl-2xl"></div>
226
- <!-- Top-right corner -->
227
- <div class="absolute top-0 right-0 w-12 h-12 border-t-4 border-r-4 border-white rounded-tr-2xl"></div>
228
- <!-- Bottom-left corner -->
229
- <div class="absolute bottom-0 left-0 w-12 h-12 border-b-4 border-l-4 border-white rounded-bl-2xl"></div>
230
- <!-- Bottom-right corner -->
231
- <div class="absolute bottom-0 right-0 w-12 h-12 border-b-4 border-r-4 border-white rounded-br-2xl"></div>
232
- </div>
233
- </div>
234
- `
235
- }
236
- }
237
-
238
- declare global {
239
- interface HTMLElementTagNameMap {
240
- 'schmancy-qr-scanner': SchmancyQRScanner
241
- }
242
- }
@@ -1 +0,0 @@
1
- export * from './timeline-tile'