@mhmo91/schmancy 0.7.5 → 0.7.7

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 (399) hide show
  1. package/ai/details.md +309 -44
  2. package/ai/directives.md +214 -7
  3. package/ai/typewriter.md +151 -33
  4. package/dist/ai/details.md +309 -44
  5. package/dist/ai/directives.md +214 -7
  6. package/dist/ai/typewriter.md +151 -33
  7. package/dist/{animated-text-DnFenRS1.cjs → animated-text-Be290e6l.cjs} +2 -2
  8. package/dist/{animated-text-DnFenRS1.cjs.map → animated-text-Be290e6l.cjs.map} +1 -1
  9. package/dist/{animated-text-YBgWXuVJ.js → animated-text-DuLrWJ6O.js} +3 -3
  10. package/dist/{animated-text-YBgWXuVJ.js.map → animated-text-DuLrWJ6O.js.map} +1 -1
  11. package/dist/animated-text.cjs +1 -1
  12. package/dist/animated-text.js +1 -1
  13. package/dist/area.cjs +1 -1
  14. package/dist/{area.component-C_nUxyiY.js → area.component-BzjJiNTJ.js} +47 -39
  15. package/dist/area.component-BzjJiNTJ.js.map +1 -0
  16. package/dist/{area.component-BojFAcRk.cjs → area.component-FL_IUylM.cjs} +4 -4
  17. package/dist/area.component-FL_IUylM.cjs.map +1 -0
  18. package/dist/area.js +1 -1
  19. package/dist/{autocomplete-B8oOdRsV.cjs → autocomplete-CHmGhBNt.cjs} +2 -2
  20. package/dist/{autocomplete-B8oOdRsV.cjs.map → autocomplete-CHmGhBNt.cjs.map} +1 -1
  21. package/dist/{autocomplete-B-X_D8MC.js → autocomplete-FLkd9ju8.js} +5 -5
  22. package/dist/{autocomplete-B-X_D8MC.js.map → autocomplete-FLkd9ju8.js.map} +1 -1
  23. package/dist/autocomplete.cjs +1 -1
  24. package/dist/autocomplete.js +1 -1
  25. package/dist/{avatar-DBdyON6Y.cjs → avatar-B_uJN9WV.cjs} +2 -2
  26. package/dist/{avatar-DBdyON6Y.cjs.map → avatar-B_uJN9WV.cjs.map} +1 -1
  27. package/dist/{avatar-Cro3M4Lw.js → avatar-C8P4lVfa.js} +52 -52
  28. package/dist/{avatar-Cro3M4Lw.js.map → avatar-C8P4lVfa.js.map} +1 -1
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/boat-Ma6LW-ny.js +301 -0
  32. package/dist/boat-Ma6LW-ny.js.map +1 -0
  33. package/dist/boat-kYOUec8f.cjs +97 -0
  34. package/dist/boat-kYOUec8f.cjs.map +1 -0
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/busy.cjs +1 -1
  38. package/dist/busy.js +1 -1
  39. package/dist/button.cjs +1 -1
  40. package/dist/button.js +1 -1
  41. package/dist/card.cjs +1 -1
  42. package/dist/card.js +1 -1
  43. package/dist/{checkbox-DMfwDgYx.cjs → checkbox-DLZkKaon.cjs} +2 -2
  44. package/dist/{checkbox-DMfwDgYx.cjs.map → checkbox-DLZkKaon.cjs.map} +1 -1
  45. package/dist/{checkbox-BOmazo-k.js → checkbox-x46L-XTG.js} +2 -2
  46. package/dist/{checkbox-BOmazo-k.js.map → checkbox-x46L-XTG.js.map} +1 -1
  47. package/dist/checkbox.cjs +1 -1
  48. package/dist/checkbox.js +1 -1
  49. package/dist/chips.cjs +1 -1
  50. package/dist/chips.js +2 -2
  51. package/dist/code-highlight.cjs +1 -1
  52. package/dist/code-highlight.js +1 -1
  53. package/dist/{code-preview-CbZzYTk2.cjs → code-preview-BsQq77nu.cjs} +2 -2
  54. package/dist/{code-preview-CbZzYTk2.cjs.map → code-preview-BsQq77nu.cjs.map} +1 -1
  55. package/dist/{code-preview-DgyY3Jlw.js → code-preview-C3DLglSl.js} +2 -2
  56. package/dist/{code-preview-DgyY3Jlw.js.map → code-preview-C3DLglSl.js.map} +1 -1
  57. package/dist/components.cjs +1 -1
  58. package/dist/components.js +1 -1
  59. package/dist/content-drawer.cjs +1 -1
  60. package/dist/content-drawer.js +1 -1
  61. package/dist/{date-range-BV0479CW.js → date-range-Cm0TCfwu.js} +3 -3
  62. package/dist/{date-range-BV0479CW.js.map → date-range-Cm0TCfwu.js.map} +1 -1
  63. package/dist/{date-range-47SnbVM6.cjs → date-range-Cy97kOP_.cjs} +2 -2
  64. package/dist/{date-range-47SnbVM6.cjs.map → date-range-Cy97kOP_.cjs.map} +1 -1
  65. package/dist/{date-range-inline-GfLao0NN.js → date-range-inline-CfDu-lIo.js} +3 -3
  66. package/dist/{date-range-inline-GfLao0NN.js.map → date-range-inline-CfDu-lIo.js.map} +1 -1
  67. package/dist/{date-range-inline-HNDLTnYi.cjs → date-range-inline-cGptw0hr.cjs} +2 -2
  68. package/dist/{date-range-inline-HNDLTnYi.cjs.map → date-range-inline-cGptw0hr.cjs.map} +1 -1
  69. package/dist/date-range-inline.cjs +1 -1
  70. package/dist/date-range-inline.js +1 -1
  71. package/dist/date-range.cjs +1 -1
  72. package/dist/date-range.js +1 -1
  73. package/dist/{delay-B40l99jW.js → delay-BINGOQ7f.js} +2 -2
  74. package/dist/{delay-B40l99jW.js.map → delay-BINGOQ7f.js.map} +1 -1
  75. package/dist/{delay-Dr3Fr5YB.cjs → delay-CXFIM6qK.cjs} +2 -2
  76. package/dist/{delay-Dr3Fr5YB.cjs.map → delay-CXFIM6qK.cjs.map} +1 -1
  77. package/dist/delay.cjs +1 -1
  78. package/dist/delay.js +1 -1
  79. package/dist/details-CLRikV4s.cjs +64 -0
  80. package/dist/details-CLRikV4s.cjs.map +1 -0
  81. package/dist/details-bgq2X_hO.js +115 -0
  82. package/dist/details-bgq2X_hO.js.map +1 -0
  83. package/dist/details.cjs +1 -1
  84. package/dist/details.js +1 -1
  85. package/dist/{dialog-content-Emd7BLQA.cjs → dialog-content-B59ekS_y.cjs} +2 -2
  86. package/dist/{dialog-content-Emd7BLQA.cjs.map → dialog-content-B59ekS_y.cjs.map} +1 -1
  87. package/dist/{dialog-content-B_amCfq7.js → dialog-content-Cu7fqN8Y.js} +3 -3
  88. package/dist/{dialog-content-B_amCfq7.js.map → dialog-content-Cu7fqN8Y.js.map} +1 -1
  89. package/dist/dialog.cjs +1 -1
  90. package/dist/dialog.js +1 -1
  91. package/dist/directives.cjs +1 -1
  92. package/dist/directives.js +10 -6
  93. package/dist/divider-8tk2mDbL.cjs +58 -0
  94. package/dist/divider-8tk2mDbL.cjs.map +1 -0
  95. package/dist/divider-Bu6tzwGl.js +84 -0
  96. package/dist/divider-Bu6tzwGl.js.map +1 -0
  97. package/dist/divider.cjs +1 -1
  98. package/dist/divider.js +1 -1
  99. package/dist/{dropdown-content-BpJq8Q1u.cjs → dropdown-content-DFb07S8x.cjs} +2 -2
  100. package/dist/{dropdown-content-BpJq8Q1u.cjs.map → dropdown-content-DFb07S8x.cjs.map} +1 -1
  101. package/dist/{dropdown-content-Bw9jnfCR.js → dropdown-content-fVhnEKdY.js} +3 -3
  102. package/dist/{dropdown-content-Bw9jnfCR.js.map → dropdown-content-fVhnEKdY.js.map} +1 -1
  103. package/dist/dropdown.cjs +1 -1
  104. package/dist/dropdown.js +1 -1
  105. package/dist/{email-recipients-Bxvu6zi9.cjs → email-recipients-BG3GxJvc.cjs} +2 -2
  106. package/dist/{email-recipients-Bxvu6zi9.cjs.map → email-recipients-BG3GxJvc.cjs.map} +1 -1
  107. package/dist/{email-recipients-DZGMhyg4.js → email-recipients-OG52RGiH.js} +6 -6
  108. package/dist/{email-recipients-DZGMhyg4.js.map → email-recipients-OG52RGiH.js.map} +1 -1
  109. package/dist/extra.cjs +1 -1
  110. package/dist/extra.js +1 -1
  111. package/dist/{flex-DUgMxT_9.js → flex-CYQU6Pf8.js} +2 -2
  112. package/dist/{flex-DUgMxT_9.js.map → flex-CYQU6Pf8.js.map} +1 -1
  113. package/dist/{flex-DakK9gco.cjs → flex-DytMcHmq.cjs} +2 -2
  114. package/dist/{flex-DakK9gco.cjs.map → flex-DytMcHmq.cjs.map} +1 -1
  115. package/dist/{form-CPmMvWvE.cjs → form-cWJBcwc6.cjs} +2 -2
  116. package/dist/{form-CPmMvWvE.cjs.map → form-cWJBcwc6.cjs.map} +1 -1
  117. package/dist/{form-yZ1fh3h9.js → form-tpyd1nsT.js} +2 -2
  118. package/dist/{form-yZ1fh3h9.js.map → form-tpyd1nsT.js.map} +1 -1
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/{formField.mixin-Cmb9YpmX.js → formField.mixin-Mx5CwYUh.js} +2 -2
  122. package/dist/{formField.mixin-Cmb9YpmX.js.map → formField.mixin-Mx5CwYUh.js.map} +1 -1
  123. package/dist/{formField.mixin-D51klHq7.cjs → formField.mixin-XlN2pAL0.cjs} +2 -2
  124. package/dist/{formField.mixin-D51klHq7.cjs.map → formField.mixin-XlN2pAL0.cjs.map} +1 -1
  125. package/dist/{icon-Dsa_BddL.cjs → icon-C8Q_XMtJ.cjs} +2 -2
  126. package/dist/{icon-Dsa_BddL.cjs.map → icon-C8Q_XMtJ.cjs.map} +1 -1
  127. package/dist/{icon-DHT8YsE3.js → icon-Y2qLOFqe.js} +2 -2
  128. package/dist/{icon-DHT8YsE3.js.map → icon-Y2qLOFqe.js.map} +1 -1
  129. package/dist/{icon-button-PpRHFLCj.js → icon-button-CJ6AVTv9.js} +19 -19
  130. package/dist/icon-button-CJ6AVTv9.js.map +1 -0
  131. package/dist/{icon-button-BRcfLsJL.cjs → icon-button-IdG1NVgA.cjs} +8 -8
  132. package/dist/icon-button-IdG1NVgA.cjs.map +1 -0
  133. package/dist/icons.cjs +1 -1
  134. package/dist/icons.js +1 -1
  135. package/dist/index.cjs +1 -1
  136. package/dist/index.js +196 -192
  137. package/dist/{input-CYGSlByl.js → input-DDCFZ3cr.js} +4 -4
  138. package/dist/{input-CYGSlByl.js.map → input-DDCFZ3cr.js.map} +1 -1
  139. package/dist/input-UyknNHNr.cjs +51 -0
  140. package/dist/{input-DB269a2X.cjs.map → input-UyknNHNr.cjs.map} +1 -1
  141. package/dist/{input-chip-CKYO8Lww.cjs → input-chip-Bht9MU9G.cjs} +2 -2
  142. package/dist/{input-chip-CKYO8Lww.cjs.map → input-chip-Bht9MU9G.cjs.map} +1 -1
  143. package/dist/{input-chip-CTKPIRVA.js → input-chip-DVE4_1wn.js} +2 -2
  144. package/dist/{input-chip-CTKPIRVA.js.map → input-chip-DVE4_1wn.js.map} +1 -1
  145. package/dist/input.cjs +1 -1
  146. package/dist/input.js +1 -1
  147. package/dist/layout.cjs +1 -1
  148. package/dist/layout.js +1 -1
  149. package/dist/{list-BbzeVuby.js → list-BO1gnjmc.js} +2 -2
  150. package/dist/{list-BbzeVuby.js.map → list-BO1gnjmc.js.map} +1 -1
  151. package/dist/{list-BQVTFNkq.cjs → list-Bac329kq.cjs} +2 -2
  152. package/dist/{list-BQVTFNkq.cjs.map → list-Bac329kq.cjs.map} +1 -1
  153. package/dist/list.cjs +1 -1
  154. package/dist/list.js +1 -1
  155. package/dist/{litElement.mixin-DzCpXwcY.cjs → litElement.mixin-B1WTI3WY.cjs} +2 -2
  156. package/dist/{litElement.mixin-DzCpXwcY.cjs.map → litElement.mixin-B1WTI3WY.cjs.map} +1 -1
  157. package/dist/{litElement.mixin-BzbZQbxa.js → litElement.mixin-CVje6z-M.js} +2 -2
  158. package/dist/{litElement.mixin-BzbZQbxa.js.map → litElement.mixin-CVje6z-M.js.map} +1 -1
  159. package/dist/mailbox.cjs +1 -1
  160. package/dist/mailbox.js +1 -1
  161. package/dist/{map-DuTFI2lm.cjs → map-BlmS6Zfx.cjs} +2 -2
  162. package/dist/{map-DuTFI2lm.cjs.map → map-BlmS6Zfx.cjs.map} +1 -1
  163. package/dist/{map-CgwU5Px4.js → map-C1jVMhlF.js} +2 -2
  164. package/dist/{map-CgwU5Px4.js.map → map-C1jVMhlF.js.map} +1 -1
  165. package/dist/map.cjs +1 -1
  166. package/dist/map.js +1 -1
  167. package/dist/{media-BnktmFRW.js → media-CNMZbEJe.js} +2 -2
  168. package/dist/{media-BnktmFRW.js.map → media-CNMZbEJe.js.map} +1 -1
  169. package/dist/{media-gtpSHRFx.cjs → media-CxfrOjie.cjs} +2 -2
  170. package/dist/{media-gtpSHRFx.cjs.map → media-CxfrOjie.cjs.map} +1 -1
  171. package/dist/menu-CUKV4pVJ.js +61 -0
  172. package/dist/menu-CUKV4pVJ.js.map +1 -0
  173. package/dist/menu-DEa2K7Pk.cjs +26 -0
  174. package/dist/menu-DEa2K7Pk.cjs.map +1 -0
  175. package/dist/menu.cjs +1 -1
  176. package/dist/menu.js +1 -1
  177. package/dist/mixins.cjs +1 -1
  178. package/dist/mixins.js +3 -3
  179. package/dist/nav-drawer.cjs +1 -1
  180. package/dist/nav-drawer.js +1 -1
  181. package/dist/navigation-bar.cjs +1 -1
  182. package/dist/navigation-bar.js +1 -1
  183. package/dist/{navigation-rail-CUMNSz0h.js → navigation-rail-CYKfvZs9.js} +3 -3
  184. package/dist/{navigation-rail-CUMNSz0h.js.map → navigation-rail-CYKfvZs9.js.map} +1 -1
  185. package/dist/{navigation-rail-D8otIR2P.cjs → navigation-rail-DXr4NJnN.cjs} +2 -2
  186. package/dist/{navigation-rail-D8otIR2P.cjs.map → navigation-rail-DXr4NJnN.cjs.map} +1 -1
  187. package/dist/navigation-rail.cjs +1 -1
  188. package/dist/navigation-rail.js +1 -1
  189. package/dist/{notification-service-E16lPsiT.js → notification-service-CZ56fXew.js} +5 -5
  190. package/dist/{notification-service-E16lPsiT.js.map → notification-service-CZ56fXew.js.map} +1 -1
  191. package/dist/{notification-service-CP6kGXVL.cjs → notification-service-DQGs9O0f.cjs} +2 -2
  192. package/dist/{notification-service-CP6kGXVL.cjs.map → notification-service-DQGs9O0f.cjs.map} +1 -1
  193. package/dist/notification.cjs +1 -1
  194. package/dist/notification.js +2 -2
  195. package/dist/{notify-D865xIlu.js → notify-KvHZ-8z9.js} +2 -2
  196. package/dist/{notify-D865xIlu.js.map → notify-KvHZ-8z9.js.map} +1 -1
  197. package/dist/{notify-Czdp7BbG.cjs → notify-VkDx6hMZ.cjs} +2 -2
  198. package/dist/{notify-Czdp7BbG.cjs.map → notify-VkDx6hMZ.cjs.map} +1 -1
  199. package/dist/{option-cJ8fM5qJ.js → option-DnRdbsTb.js} +2 -2
  200. package/dist/{option-cJ8fM5qJ.js.map → option-DnRdbsTb.js.map} +1 -1
  201. package/dist/{option-B1r0hb3H.cjs → option-Eh2AXe-Z.cjs} +2 -2
  202. package/dist/{option-B1r0hb3H.cjs.map → option-Eh2AXe-Z.cjs.map} +1 -1
  203. package/dist/option.cjs +1 -1
  204. package/dist/option.js +1 -1
  205. package/dist/{payment-card-form-EO3auDS8.cjs → payment-card-form-8a4Nqqhy.cjs} +2 -2
  206. package/dist/{payment-card-form-EO3auDS8.cjs.map → payment-card-form-8a4Nqqhy.cjs.map} +1 -1
  207. package/dist/{payment-card-form-RBjpMc2m.js → payment-card-form-EVQEb5OX.js} +3 -3
  208. package/dist/{payment-card-form-RBjpMc2m.js.map → payment-card-form-EVQEb5OX.js.map} +1 -1
  209. package/dist/{progress-4v9FzvOT.js → progress-D5kgn2Fg.js} +2 -2
  210. package/dist/{progress-4v9FzvOT.js.map → progress-D5kgn2Fg.js.map} +1 -1
  211. package/dist/{progress-DnhvJMz_.cjs → progress-yFxoJDYf.cjs} +2 -2
  212. package/dist/{progress-DnhvJMz_.cjs.map → progress-yFxoJDYf.cjs.map} +1 -1
  213. package/dist/progress.cjs +1 -1
  214. package/dist/progress.js +1 -1
  215. package/dist/{radio-button-BVegeFKE.cjs → radio-button-BTdqEOSJ.cjs} +2 -2
  216. package/dist/{radio-button-BVegeFKE.cjs.map → radio-button-BTdqEOSJ.cjs.map} +1 -1
  217. package/dist/{radio-button-DDavzgCz.js → radio-button-QCukBJLy.js} +3 -3
  218. package/dist/{radio-button-DDavzgCz.js.map → radio-button-QCukBJLy.js.map} +1 -1
  219. package/dist/radio-group.cjs +1 -1
  220. package/dist/radio-group.js +1 -1
  221. package/dist/ripple-QoNZUUw_.js +148 -0
  222. package/dist/ripple-QoNZUUw_.js.map +1 -0
  223. package/dist/ripple-Ujq_REH4.cjs +16 -0
  224. package/dist/ripple-Ujq_REH4.cjs.map +1 -0
  225. package/dist/{schmancy-steps-container-s6kZWhcr.cjs → schmancy-steps-container-CtwqkRBU.cjs} +2 -2
  226. package/dist/{schmancy-steps-container-s6kZWhcr.cjs.map → schmancy-steps-container-CtwqkRBU.cjs.map} +1 -1
  227. package/dist/{schmancy-steps-container-DN9c-HeX.js → schmancy-steps-container-NZOamraF.js} +2 -2
  228. package/dist/{schmancy-steps-container-DN9c-HeX.js.map → schmancy-steps-container-NZOamraF.js.map} +1 -1
  229. package/dist/search-B1s7thB0.cjs +2 -0
  230. package/dist/search-B1s7thB0.cjs.map +1 -0
  231. package/dist/search-DxxnLa5u.js +95 -0
  232. package/dist/search-DxxnLa5u.js.map +1 -0
  233. package/dist/{select-DVT_kFNR.cjs → select-C-Kv7ey_.cjs} +2 -2
  234. package/dist/{select-DVT_kFNR.cjs.map → select-C-Kv7ey_.cjs.map} +1 -1
  235. package/dist/{select--D6l5ru7.js → select-DSTQ-Zau.js} +4 -4
  236. package/dist/{select--D6l5ru7.js.map → select-DSTQ-Zau.js.map} +1 -1
  237. package/dist/select.cjs +1 -1
  238. package/dist/select.js +1 -1
  239. package/dist/selector-hook-Cok22ifx.cjs +2 -0
  240. package/dist/selector-hook-Cok22ifx.cjs.map +1 -0
  241. package/dist/selector-hook-l2fe2UO5.js +319 -0
  242. package/dist/selector-hook-l2fe2UO5.js.map +1 -0
  243. package/dist/{sheet-CNn_huhz.js → sheet-DY-z5_tm.js} +14 -14
  244. package/dist/sheet-DY-z5_tm.js.map +1 -0
  245. package/dist/{sheet-Bza5jVS2.cjs → sheet-IzYy3H8n.cjs} +4 -4
  246. package/dist/sheet-IzYy3H8n.cjs.map +1 -0
  247. package/dist/sheet.cjs +1 -1
  248. package/dist/sheet.js +2 -2
  249. package/dist/{sheet.service--zUgftN3.cjs → sheet.service-BNz-ird-.cjs} +2 -2
  250. package/dist/{sheet.service--zUgftN3.cjs.map → sheet.service-BNz-ird-.cjs.map} +1 -1
  251. package/dist/{sheet.service-CmNDL4f6.js → sheet.service-DuVcXyOB.js} +2 -2
  252. package/dist/{sheet.service-CmNDL4f6.js.map → sheet.service-DuVcXyOB.js.map} +1 -1
  253. package/dist/{slider-DPxBmmFD.js → slider-CFtbSQ9Y.js} +3 -3
  254. package/dist/{slider-DPxBmmFD.js.map → slider-CFtbSQ9Y.js.map} +1 -1
  255. package/dist/{slider-Cf0pED-U.cjs → slider-CGE_Qeok.cjs} +2 -2
  256. package/dist/{slider-Cf0pED-U.cjs.map → slider-CGE_Qeok.cjs.map} +1 -1
  257. package/dist/slider.cjs +1 -1
  258. package/dist/slider.js +1 -1
  259. package/dist/{spinner-BDSDxr_W.cjs → spinner-CSPJs8CL.cjs} +3 -3
  260. package/dist/spinner-CSPJs8CL.cjs.map +1 -0
  261. package/dist/{spinner-Dyz6HBFa.js → spinner-DAF-hCvQ.js} +3 -3
  262. package/dist/spinner-DAF-hCvQ.js.map +1 -0
  263. package/dist/steps.cjs +1 -1
  264. package/dist/steps.js +1 -1
  265. package/dist/store.cjs +1 -1
  266. package/dist/store.js +1 -1
  267. package/dist/{suggestion-chip-CCW8g_3S.js → suggestion-chip-CYu-4xrL.js} +3 -3
  268. package/dist/{suggestion-chip-CCW8g_3S.js.map → suggestion-chip-CYu-4xrL.js.map} +1 -1
  269. package/dist/{suggestion-chip-B7COqb4l.cjs → suggestion-chip-Cj8gwZqq.cjs} +2 -2
  270. package/dist/{suggestion-chip-B7COqb4l.cjs.map → suggestion-chip-Cj8gwZqq.cjs.map} +1 -1
  271. package/dist/{surface-B4CxtF38.js → surface-DTOK-0E4.js} +34 -10
  272. package/dist/{surface-B4CxtF38.js.map → surface-DTOK-0E4.js.map} +1 -1
  273. package/dist/{surface-CkzbeSYN.cjs → surface-VX_THUHv.cjs} +27 -3
  274. package/dist/{surface-CkzbeSYN.cjs.map → surface-VX_THUHv.cjs.map} +1 -1
  275. package/dist/surface.cjs +1 -1
  276. package/dist/surface.js +1 -1
  277. package/dist/{table-D-g4ZBys.cjs → table-BV0-o9Wi.cjs} +4 -3
  278. package/dist/{table-D-g4ZBys.cjs.map → table-BV0-o9Wi.cjs.map} +1 -1
  279. package/dist/{table-KPNVMJtn.js → table-CkXbXqi9.js} +14 -10
  280. package/dist/{table-KPNVMJtn.js.map → table-CkXbXqi9.js.map} +1 -1
  281. package/dist/table.cjs +1 -1
  282. package/dist/table.js +1 -1
  283. package/dist/{tabs-compatibility-xUK4vD1M.js → tabs-compatibility-D_BBW655.js} +2 -2
  284. package/dist/{tabs-compatibility-xUK4vD1M.js.map → tabs-compatibility-D_BBW655.js.map} +1 -1
  285. package/dist/{tabs-compatibility-sMoQP12I.cjs → tabs-compatibility-DsfD60U_.cjs} +2 -2
  286. package/dist/{tabs-compatibility-sMoQP12I.cjs.map → tabs-compatibility-DsfD60U_.cjs.map} +1 -1
  287. package/dist/tabs.cjs +1 -1
  288. package/dist/tabs.js +1 -1
  289. package/dist/tailwind.mixin-JFXu3GSo.cjs +2 -0
  290. package/dist/{tailwind.mixin-scDxsqaX.cjs.map → tailwind.mixin-JFXu3GSo.cjs.map} +1 -1
  291. package/dist/tailwind.mixin-wLaKUxf1.js +67 -0
  292. package/dist/{tailwind.mixin-xIIxrXd8.js.map → tailwind.mixin-wLaKUxf1.js.map} +1 -1
  293. package/dist/teleport.cjs +1 -1
  294. package/dist/teleport.js +1 -1
  295. package/dist/{textarea-BSBYVs99.cjs → textarea-B6LDhRed.cjs} +2 -2
  296. package/dist/{textarea-BSBYVs99.cjs.map → textarea-B6LDhRed.cjs.map} +1 -1
  297. package/dist/{textarea-CFrirT5y.js → textarea-TeVnUeIJ.js} +3 -3
  298. package/dist/{textarea-CFrirT5y.js.map → textarea-TeVnUeIJ.js.map} +1 -1
  299. package/dist/textarea.cjs +1 -1
  300. package/dist/textarea.js +1 -1
  301. package/dist/{theme-button-D-LTPh88.js → theme-button-BXXqAu2Y.js} +2 -2
  302. package/dist/{theme-button-D-LTPh88.js.map → theme-button-BXXqAu2Y.js.map} +1 -1
  303. package/dist/{theme-button-B8Xqrz1M.cjs → theme-button-DxMbO3yP.cjs} +2 -2
  304. package/dist/{theme-button-B8Xqrz1M.cjs.map → theme-button-DxMbO3yP.cjs.map} +1 -1
  305. package/dist/theme-button.cjs +1 -1
  306. package/dist/theme-button.js +1 -1
  307. package/dist/{theme-controller-boat-C2F-qRyu.cjs → theme-controller-boat-CCBNOGxF.cjs} +2 -2
  308. package/dist/{theme-controller-boat-C2F-qRyu.cjs.map → theme-controller-boat-CCBNOGxF.cjs.map} +1 -1
  309. package/dist/{theme-controller-boat-BOddzVdU.js → theme-controller-boat-CVS77gnH.js} +3 -3
  310. package/dist/{theme-controller-boat-BOddzVdU.js.map → theme-controller-boat-CVS77gnH.js.map} +1 -1
  311. package/dist/theme.cjs +1 -1
  312. package/dist/theme.js +1 -1
  313. package/dist/{timezone-xHmnktrm.cjs → timezone-D7YOMM8G.cjs} +2 -2
  314. package/dist/{timezone-xHmnktrm.cjs.map → timezone-D7YOMM8G.cjs.map} +1 -1
  315. package/dist/{timezone-BvOWa9Nt.js → timezone-RBV74f85.js} +3 -3
  316. package/dist/{timezone-BvOWa9Nt.js.map → timezone-RBV74f85.js.map} +1 -1
  317. package/dist/{tooltip-D24v5bvM.cjs → tooltip-BH_RLoZI.cjs} +2 -2
  318. package/dist/{tooltip-D24v5bvM.cjs.map → tooltip-BH_RLoZI.cjs.map} +1 -1
  319. package/dist/{tooltip-D3ZZJEAk.js → tooltip-DssL6Qfx.js} +2 -2
  320. package/dist/{tooltip-D3ZZJEAk.js.map → tooltip-DssL6Qfx.js.map} +1 -1
  321. package/dist/tooltip.cjs +1 -1
  322. package/dist/tooltip.js +1 -1
  323. package/dist/{tree-DC_jbDRu.cjs → tree-7Zz1sJKl.cjs} +2 -2
  324. package/dist/{tree-DC_jbDRu.cjs.map → tree-7Zz1sJKl.cjs.map} +1 -1
  325. package/dist/{tree-CfVyhRIH.js → tree-C33t9-0j.js} +2 -2
  326. package/dist/{tree-CfVyhRIH.js.map → tree-C33t9-0j.js.map} +1 -1
  327. package/dist/tree.cjs +1 -1
  328. package/dist/tree.js +1 -1
  329. package/dist/{typewriter-By-3T0Jm.js → typewriter-Dt1Js2lP.js} +247 -118
  330. package/dist/typewriter-Dt1Js2lP.js.map +1 -0
  331. package/dist/typewriter-WbYqfXO7.cjs +124 -0
  332. package/dist/typewriter-WbYqfXO7.cjs.map +1 -0
  333. package/dist/typewriter.cjs +1 -1
  334. package/dist/typewriter.js +1 -1
  335. package/dist/{typography-9lVCjAbj.cjs → typography-Ck-OdI83.cjs} +2 -2
  336. package/dist/{typography-9lVCjAbj.cjs.map → typography-Ck-OdI83.cjs.map} +1 -1
  337. package/dist/{typography-B7kvO8iJ.js → typography-DdG9aEAg.js} +2 -2
  338. package/dist/{typography-B7kvO8iJ.js.map → typography-DdG9aEAg.js.map} +1 -1
  339. package/dist/typography.cjs +1 -1
  340. package/dist/typography.js +1 -1
  341. package/dist/utils.cjs +1 -1
  342. package/dist/utils.js +1 -1
  343. package/package.json +1 -1
  344. package/types/src/area/router.types.d.ts +1 -0
  345. package/types/src/boat/boat.d.ts +0 -1
  346. package/types/src/button/button.d.ts +8 -0
  347. package/types/src/details/details.d.ts +12 -11
  348. package/types/src/directives/drag.d.ts +30 -0
  349. package/types/src/directives/index.d.ts +1 -0
  350. package/types/src/divider/divider.d.ts +6 -1
  351. package/types/src/menu/menu-item.d.ts +0 -1
  352. package/types/src/store/filter-directive.d.ts +1 -1
  353. package/types/src/surface/surface.d.ts +2 -1
  354. package/types/src/types/surface.d.ts +1 -1
  355. package/types/src/typewriter/typewriter.d.ts +15 -0
  356. package/types/src/utils/index.d.ts +4 -4
  357. package/types/src/utils/search.d.ts +39 -1
  358. package/dist/area.component-BojFAcRk.cjs.map +0 -1
  359. package/dist/area.component-C_nUxyiY.js.map +0 -1
  360. package/dist/boat-B7AKN6Ge.js +0 -276
  361. package/dist/boat-B7AKN6Ge.js.map +0 -1
  362. package/dist/boat-BhAuteUk.cjs +0 -93
  363. package/dist/boat-BhAuteUk.cjs.map +0 -1
  364. package/dist/details-CQPpI_la.js +0 -211
  365. package/dist/details-CQPpI_la.js.map +0 -1
  366. package/dist/details-DydvHvfw.cjs +0 -143
  367. package/dist/details-DydvHvfw.cjs.map +0 -1
  368. package/dist/divider-BF9xljgI.cjs +0 -2
  369. package/dist/divider-BF9xljgI.cjs.map +0 -1
  370. package/dist/divider-BHruVdsE.js +0 -23
  371. package/dist/divider-BHruVdsE.js.map +0 -1
  372. package/dist/icon-button-BRcfLsJL.cjs.map +0 -1
  373. package/dist/icon-button-PpRHFLCj.js.map +0 -1
  374. package/dist/input-DB269a2X.cjs +0 -51
  375. package/dist/menu-DA2pO48m.cjs +0 -26
  376. package/dist/menu-DA2pO48m.cjs.map +0 -1
  377. package/dist/menu-DwFriXTu.js +0 -63
  378. package/dist/menu-DwFriXTu.js.map +0 -1
  379. package/dist/ripple-Cy-nvO8W.js +0 -80
  380. package/dist/ripple-Cy-nvO8W.js.map +0 -1
  381. package/dist/ripple-DqQrvaTe.cjs +0 -16
  382. package/dist/ripple-DqQrvaTe.cjs.map +0 -1
  383. package/dist/search-BeEqIiuO.js +0 -53
  384. package/dist/search-BeEqIiuO.js.map +0 -1
  385. package/dist/search-bfOHCuHZ.cjs +0 -2
  386. package/dist/search-bfOHCuHZ.cjs.map +0 -1
  387. package/dist/selector-hook-BG6g_IEN.cjs +0 -2
  388. package/dist/selector-hook-BG6g_IEN.cjs.map +0 -1
  389. package/dist/selector-hook-CrwQCPxL.js +0 -313
  390. package/dist/selector-hook-CrwQCPxL.js.map +0 -1
  391. package/dist/sheet-Bza5jVS2.cjs.map +0 -1
  392. package/dist/sheet-CNn_huhz.js.map +0 -1
  393. package/dist/spinner-BDSDxr_W.cjs.map +0 -1
  394. package/dist/spinner-Dyz6HBFa.js.map +0 -1
  395. package/dist/tailwind.mixin-scDxsqaX.cjs +0 -2
  396. package/dist/tailwind.mixin-xIIxrXd8.js +0 -67
  397. package/dist/typewriter-By-3T0Jm.js.map +0 -1
  398. package/dist/typewriter-vit0P1N1.cjs +0 -9
  399. package/dist/typewriter-vit0P1N1.cjs.map +0 -1
package/ai/directives.md CHANGED
@@ -3,8 +3,11 @@
3
3
  ## Quick Start
4
4
 
5
5
  ```typescript
6
- import { ripple, color, height, visibility } from '@schmancy/index'
7
- // Or specific import: import { ripple, color, height, visibility } from '@schmancy/directives'
6
+ import { ripple, color, height, visibility, drag, drop } from '@schmancy/index'
7
+ // Or specific import: import { ripple, color, height, visibility, drag, drop } from '@schmancy/directives'
8
+
9
+ // Import types
10
+ import type { SchmancyDropEvent } from '@schmancy/index'
8
11
  ```
9
12
 
10
13
  ## Directives Overview
@@ -60,6 +63,28 @@ Lit directives that add common UI behaviors and styling capabilities to any elem
60
63
  // When true, removes display style
61
64
  ```
62
65
 
66
+ ### Drag & Drop Directives
67
+
68
+ ```typescript
69
+ // Make element draggable
70
+ <div ${drag(id: string)}></div>
71
+
72
+ // Make element a drop zone
73
+ <div ${drop(destinationId: string)} @drop=${handleDrop}></div>
74
+
75
+ // Drop event type
76
+ export type SchmancyDropEvent = CustomEvent<{
77
+ source: string; // ID of dragged element
78
+ destination: string; // ID of drop zone
79
+ }>
80
+
81
+ // Handle drop event
82
+ const handleDrop = (e: SchmancyDropEvent) => {
83
+ const { source, destination } = e.detail
84
+ // Handle the drop...
85
+ }
86
+ ```
87
+
63
88
  ## Examples
64
89
 
65
90
  ### Basic Usage
@@ -100,12 +125,25 @@ Lit directives that add common UI behaviors and styling capabilities to any elem
100
125
  </div>
101
126
 
102
127
  // Animated drawer
103
- <div
128
+ <div
104
129
  ${height(isOpen ? '300px' : '0')}
105
130
  ${visibility(isOpen)}
106
131
  class="transition-all duration-300 overflow-hidden">
107
132
  Drawer Content
108
133
  </div>
134
+
135
+ // Drag and drop list items
136
+ <div class="space-y-2">
137
+ ${items.map(item => html`
138
+ <div
139
+ ${drag(item.id)}
140
+ ${drop(item.id)}
141
+ @drop=${handleReorder}
142
+ class="p-4 bg-surface-container rounded cursor-grab">
143
+ ${item.name}
144
+ </div>
145
+ `)}
146
+ </div>
109
147
  ```
110
148
 
111
149
  ### Real-World Examples
@@ -155,10 +193,10 @@ render() {
155
193
  render() {
156
194
  const isDark = this.theme === 'dark'
157
195
  return html`
158
- <div
196
+ <div
159
197
  ${color({
160
- bgColor: isDark
161
- ? 'var(--schmancy-sys-color-surface-dim)'
198
+ bgColor: isDark
199
+ ? 'var(--schmancy-sys-color-surface-dim)'
162
200
  : 'var(--schmancy-sys-color-surface-bright)',
163
201
  color: 'var(--schmancy-sys-color-on-surface)'
164
202
  })}
@@ -167,6 +205,109 @@ render() {
167
205
  </div>
168
206
  `
169
207
  }
208
+
209
+ // Warehouse hierarchy management with drag & drop
210
+ @customElement('warehouse-manager')
211
+ class WarehouseManager extends $LitElement() {
212
+ @state()
213
+ warehouses: Warehouse[] = []
214
+
215
+ private handleWarehouseReparent = (e: SchmancyDropEvent) => {
216
+ const { source, destination } = e.detail
217
+
218
+ // Find the warehouse being dragged and the new parent
219
+ const warehouse = this.warehouses.find(w => w.id === source)
220
+ const newParent = this.warehouses.find(w => w.id === destination)
221
+
222
+ if (!warehouse || !newParent) return
223
+
224
+ // Update the warehouse's parent
225
+ warehouse.parentID = newParent.id
226
+
227
+ // Save to database
228
+ this.saveWarehouse(warehouse)
229
+
230
+ // Notify user
231
+ this.dispatchEvent(new CustomEvent('warehouse-moved', {
232
+ detail: { warehouse, newParent }
233
+ }))
234
+ }
235
+
236
+ render() {
237
+ return html`
238
+ <div class="space-y-2">
239
+ ${repeat(
240
+ this.warehouses,
241
+ w => w.id,
242
+ w => html`
243
+ <schmancy-surface
244
+ ${drag(w.id)}
245
+ ${drop(w.id)}
246
+ @drop=${this.handleWarehouseReparent}
247
+ type="containerLow"
248
+ class="p-4 cursor-grab active:cursor-grabbing">
249
+ <div class="flex items-center gap-3">
250
+ <span>${w.emoji || '📦'}</span>
251
+ <span>${w.name}</span>
252
+ </div>
253
+ </schmancy-surface>
254
+ `
255
+ )}
256
+ </div>
257
+ `
258
+ }
259
+ }
260
+
261
+ // Sortable task list
262
+ @customElement('task-list')
263
+ class TaskList extends $LitElement() {
264
+ @state()
265
+ tasks: Task[] = []
266
+
267
+ private handleTaskReorder = (e: SchmancyDropEvent) => {
268
+ const { source, destination } = e.detail
269
+
270
+ // Find indices
271
+ const sourceIndex = this.tasks.findIndex(t => t.id === source)
272
+ const destIndex = this.tasks.findIndex(t => t.id === destination)
273
+
274
+ if (sourceIndex === -1 || destIndex === -1) return
275
+
276
+ // Reorder array
277
+ const [movedTask] = this.tasks.splice(sourceIndex, 1)
278
+ this.tasks.splice(destIndex, 0, movedTask)
279
+
280
+ // Trigger re-render
281
+ this.tasks = [...this.tasks]
282
+
283
+ // Persist order
284
+ this.saveTasks()
285
+ }
286
+
287
+ render() {
288
+ return html`
289
+ <div class="space-y-2">
290
+ ${repeat(
291
+ this.tasks,
292
+ t => t.id,
293
+ t => html`
294
+ <div
295
+ ${drag(t.id)}
296
+ ${drop(t.id)}
297
+ @drop=${this.handleTaskReorder}
298
+ class="p-4 bg-surface-container rounded cursor-grab hover:bg-surface-containerHigh transition-colors">
299
+ <schmancy-checkbox
300
+ ?checked=${t.completed}
301
+ @change=${() => this.toggleTask(t)}>
302
+ ${t.title}
303
+ </schmancy-checkbox>
304
+ </div>
305
+ `
306
+ )}
307
+ </div>
308
+ `
309
+ }
310
+ }
170
311
  ```
171
312
 
172
313
  ## Implementation Details
@@ -196,6 +337,42 @@ render() {
196
337
  - When true: removes display style
197
338
  - Preserves other display values
198
339
 
340
+ ### Drag & Drop Directives
341
+
342
+ **Drag Directive:**
343
+ - Sets `draggable="true"` on the element
344
+ - Sets cursor to `grab` (changes to `grabbing` during drag)
345
+ - Uses HTML5 Drag and Drop API
346
+ - Stores dragged element ID in global variable for access by drop zones
347
+ - Transfers data via `dataTransfer` API
348
+ - Implements `dragstart` and `dragend` event handlers
349
+ - Uses RxJS for event handling with automatic cleanup
350
+ - Prevents event bubbling with `stopPropagation()`
351
+
352
+ **Drop Directive:**
353
+ - Enables element as a drop zone
354
+ - Provides visual feedback during drag-over:
355
+ - Dashed outline in tertiary color
356
+ - Drop shadow effect for emphasis
357
+ - Prevents dropping element onto itself
358
+ - Cleans up visual feedback on drag leave
359
+ - Dispatches custom `SchmancyDropEvent` with source and destination IDs
360
+ - Event bubbles up for easy handling
361
+ - Uses RxJS to manage `dragover`, `dragleave`, and `drop` events
362
+ - Automatically calls `preventDefault()` to enable dropping
363
+
364
+ **Global State Management:**
365
+ - Uses module-level `currentDragSourceId` variable
366
+ - Tracks which element is being dragged
367
+ - Allows drop zones to prevent self-drop
368
+ - Cleared automatically when drag ends
369
+
370
+ **RxJS Integration:**
371
+ - All event listeners use RxJS `fromEvent()`
372
+ - Cleanup via `takeUntil(this.destroy$)` in `disconnected()`
373
+ - Combines multiple event streams with `merge()`
374
+ - Proper memory management and no event listener leaks
375
+
199
376
  ## Best Practices
200
377
 
201
378
  1. **Ripple Usage**: Best on interactive elements (buttons, cards, list items)
@@ -203,6 +380,13 @@ render() {
203
380
  3. **Height Animations**: Combine with CSS transitions for smooth effects
204
381
  4. **Visibility**: Use for simple show/hide; consider v-show for more control
205
382
  5. **Performance**: Directives are lightweight but avoid excessive updates
383
+ 6. **Drag IDs**: Always use unique, stable IDs (not array indices that can change)
384
+ 7. **Drop Zones**: Make drop zones visually distinct so users know where to drop
385
+ 8. **Accessibility**: Drag & drop isn't accessible - provide alternative keyboard navigation
386
+ 9. **Touch Devices**: HTML5 drag/drop has limited mobile support - consider alternatives for mobile
387
+ 10. **Visual Feedback**: Use cursor changes and hover states to indicate draggable elements
388
+ 11. **Prevent Self-Drop**: Both directives automatically prevent dropping onto self
389
+ 12. **Event Bubbling**: Drop events bubble up - handle at parent level if needed
206
390
 
207
391
  ## Common Pitfalls
208
392
 
@@ -210,6 +394,14 @@ render() {
210
394
  - **Color Specificity**: Inline styles from color directive override CSS classes
211
395
  - **Height Auto**: Transitioning to/from 'auto' requires special handling
212
396
  - **Visibility vs Display**: Visibility directive uses display, not visibility property
397
+ - **Drag Ghost Image**: Browser creates default ghost image - customize with `setDragImage()`
398
+ - **Mobile Support**: Touch events don't trigger HTML5 drag/drop - polyfill required
399
+ - **Z-Index Issues**: Dragged element may appear behind other elements
400
+ - **Drop Validation**: Always validate source/destination IDs before processing
401
+ - **Memory Leaks**: Directives handle cleanup automatically via RxJS `takeUntil()`
402
+ - **Multiple Drops**: If element has both `drag()` and `drop()`, ensure IDs match intent
403
+ - **Event Order**: `dragstart` → `dragover` (repeated) → `drop` → `dragend`
404
+ - **DataTransfer**: Data is only accessible in `drop` event, not `dragover`
213
405
 
214
406
  ## Related Components
215
407
 
@@ -230,9 +422,24 @@ color(config: {
230
422
  color?: string;
231
423
  }): DirectiveResult
232
424
 
233
- // Height directive
425
+ // Height directive
234
426
  height(value: string | number): DirectiveResult
235
427
 
236
428
  // Visibility directive
237
429
  visibility(isVisible: boolean): DirectiveResult
430
+
431
+ // Drag directive
432
+ drag(id: string): DirectiveResult
433
+
434
+ // Drop directive
435
+ drop(destinationId: string): DirectiveResult
436
+
437
+ // Drop event type
438
+ export type SchmancyDropEvent = CustomEvent<{
439
+ source: string; // ID of the dragged element
440
+ destination: string; // ID of the drop zone
441
+ }>
442
+
443
+ // Example event handler signature
444
+ type DropHandler = (e: SchmancyDropEvent) => void
238
445
  ```
package/ai/typewriter.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Typewriter Component
2
2
 
3
- An engaging text animation component that simulates typing effects with customizable speed, delays, and advanced sequencing capabilities.
3
+ An engaging text animation component that simulates typing effects with customizable speed, delays, and advanced sequencing capabilities. Features a simple API for cycling through text with automatic character deletion.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -10,18 +10,20 @@ An engaging text animation component that simulates typing effects with customiz
10
10
  Hello, World! This text will be typed out character by character.
11
11
  </schmancy-typewriter>
12
12
 
13
- <!-- With custom speed -->
14
- <schmancy-typewriter speed="30" delay="500">
15
- Fast typing with a delay before starting.
13
+ <!-- Cycling through words (auto-calculates delete counts) -->
14
+ <schmancy-typewriter>
15
+ We are <span cycle="developers | designers | innovators"></span>
16
16
  </schmancy-typewriter>
17
17
 
18
- <!-- With actions -->
19
- <schmancy-typewriter>
20
- Type this first.
21
- <span action="pause" value="1000"></span>
22
- Then type this after a pause.
23
- <span action="delete" value="10"></span>
24
- And finally this!
18
+ <!-- With custom speed and cursor -->
19
+ <schmancy-typewriter speed="30" delay="500" cursorChar="|">
20
+ Fast typing with a blinking cursor.
21
+ </schmancy-typewriter>
22
+
23
+ <!-- Infinite loop -->
24
+ <schmancy-typewriter loop>
25
+ This will type and delete forever!
26
+ <span cycle="Amazing | Incredible | Fantastic"></span>
25
27
  </schmancy-typewriter>
26
28
  ```
27
29
 
@@ -32,9 +34,11 @@ An engaging text animation component that simulates typing effects with customiz
32
34
  | `speed` | `number` | `50` | Typing speed (ms per character) |
33
35
  | `delay` | `number` | `0` | Initial delay before typing starts |
34
36
  | `autoStart` | `boolean` | `true` | Start typing automatically |
35
- | `cursorChar` | `string` | `''` | Custom cursor character |
37
+ | `cursorChar` | `string` | `''` | Custom cursor character (empty = no cursor) |
36
38
  | `deleteSpeed` | `number` | `25` | Speed for deletion (ms per character) |
39
+ | `cyclePause` | `number` | `1500` | Default pause between cycle items (ms) |
37
40
  | `once` | `boolean` | `true` | Only animate once per session |
41
+ | `loop` | `boolean` | `false` | Loop animation infinitely (overrides `once`) |
38
42
 
39
43
  ## Events
40
44
 
@@ -49,12 +53,12 @@ element.addEventListener('typeit-complete', () => {
49
53
 
50
54
  ## Examples
51
55
 
52
- ### Hero Section
56
+ ### Hero Section with Cycling
53
57
  ```html
54
58
  <div class="hero">
55
59
  <h1>
56
60
  <schmancy-typewriter speed="100" delay="300">
57
- Welcome to the Future
61
+ Welcome to the <span cycle="Future | Innovation | Revolution"></span>
58
62
  </schmancy-typewriter>
59
63
  </h1>
60
64
  <p>
@@ -65,6 +69,17 @@ element.addEventListener('typeit-complete', () => {
65
69
  </div>
66
70
  ```
67
71
 
72
+ ### Rotating Value Propositions
73
+ ```html
74
+ <schmancy-typewriter speed="80" cyclePause="1200">
75
+ Building systems that are
76
+ <br />
77
+ <span cycle="Trustless | Permissionless | Transparent | Borderless | Resilient" pause="1500"></span>
78
+ <br />
79
+ empowering everyone to operate freely.
80
+ </schmancy-typewriter>
81
+ ```
82
+
68
83
  ### Multi-line Typing
69
84
  ```html
70
85
  <schmancy-typewriter speed="60">
@@ -87,21 +102,20 @@ element.addEventListener('typeit-complete', () => {
87
102
  </div>
88
103
  ```
89
104
 
90
- ### Dynamic Typing Sequence
105
+ ### Product Features Carousel
91
106
  ```html
92
- <schmancy-typewriter>
93
- We are
94
- <span action="pause" value="500"></span>
95
- developers
96
- <span action="delete" value="10"></span>
97
- designers
98
- <span action="delete" value="9"></span>
99
- innovators
100
- <span action="pause" value="1000"></span>
101
- !
107
+ <schmancy-typewriter loop cursorChar="_">
108
+ <span cycle="Lightning Fast ⚡ | Fully Typed 📘 | Zero Config 🎯 | Production Ready 🚀"></span>
102
109
  </schmancy-typewriter>
103
110
  ```
104
111
 
112
+ ### Dynamic Job Titles
113
+ ```html
114
+ <h2>
115
+ We're hiring <span cycle="Frontend Developers | Backend Engineers | UI/UX Designers | DevOps Specialists"></span>
116
+ </h2>
117
+ ```
118
+
105
119
  ### Code Tutorial
106
120
  ```html
107
121
  <schmancy-typewriter speed="40">
@@ -115,20 +129,72 @@ element.addEventListener('typeit-complete', () => {
115
129
  </schmancy-typewriter>
116
130
  ```
117
131
 
132
+ ## Cycling API (NEW!)
133
+
134
+ The `cycle` attribute makes it effortless to rotate through text with **automatic character deletion**. No need to manually count characters!
135
+
136
+ ### Basic Usage
137
+
138
+ ```html
139
+ <!-- Simple cycling -->
140
+ <span cycle="Option 1 | Option 2 | Option 3"></span>
141
+
142
+ <!-- With custom pause duration -->
143
+ <span cycle="Fast | Quick | Rapid" pause="800"></span>
144
+
145
+ <!-- In context -->
146
+ <schmancy-typewriter>
147
+ We are <span cycle="developers | designers | innovators"></span>
148
+ </schmancy-typewriter>
149
+ ```
150
+
151
+ ### Cycle Attributes
152
+
153
+ | Attribute | Type | Description |
154
+ |-----------|------|-------------|
155
+ | `cycle` | `string` | Pipe-separated list of text items to cycle through |
156
+ | `pause` | `number` | Override default pause between items (milliseconds) |
157
+
158
+ ### Benefits
159
+
160
+ - ✅ **Auto-calculated deletes** - no manual character counting
161
+ - ✅ **Clean syntax** - just list your items with `|` separator
162
+ - ✅ **Consistent timing** - uses `cyclePause` property or custom `pause`
163
+ - ✅ **Works with `loop`** - infinite cycling made simple
164
+
165
+ ### Advanced Cycling
166
+
167
+ ```html
168
+ <!-- Hero headline that cycles forever -->
169
+ <schmancy-typewriter loop cyclePause="2000">
170
+ <h1>Welcome to <span cycle="the Future | Innovation | Tomorrow"></span></h1>
171
+ </schmancy-typewriter>
172
+
173
+ <!-- Mixed static and cycling text -->
174
+ <schmancy-typewriter>
175
+ Our product is
176
+ <span action="pause" value="500"></span>
177
+ <span cycle="Fast ⚡ | Secure 🔒 | Reliable ✅ | Modern 🚀" pause="1800"></span>
178
+ for your business.
179
+ </schmancy-typewriter>
180
+ ```
181
+
118
182
  ## Actions System
119
183
 
120
- Special action elements control typing behavior:
184
+ Special action elements for fine-grained control:
121
185
 
122
186
  | Action | Value | Description |
123
187
  |--------|-------|-------------|
124
188
  | `pause` | milliseconds | Pause typing for specified duration |
125
- | `delete` | character count | Delete specified number of characters |
189
+ | `delete` | character count | Delete specified number of characters (manual) |
126
190
 
127
191
  ```html
128
192
  <span action="pause" value="1000"></span> <!-- 1 second pause -->
129
- <span action="delete" value="5"></span> <!-- Delete 5 characters -->
193
+ <span action="delete" value="5"></span> <!-- Delete 5 characters manually -->
130
194
  ```
131
195
 
196
+ **Note:** For cycling text with automatic deletion, use the `cycle` attribute instead!
197
+
132
198
  ## Features
133
199
 
134
200
  ### Session Memory
@@ -210,8 +276,60 @@ const typeItOptions = {
210
276
 
211
277
  ## Use Cases
212
278
 
213
- 1. **Landing Pages**: Engaging hero text
214
- 2. **Tutorials**: Step-by-step code examples
215
- 3. **Storytelling**: Narrative experiences
216
- 4. **Loading States**: Entertaining wait messages
217
- 5. **Terminal UIs**: Command-line interfaces
279
+ ### Perfect for:
280
+
281
+ 1. **Hero Headlines**: Rotating value propositions and key messages
282
+ ```html
283
+ <span cycle="Fast | Secure | Reliable"></span>
284
+ ```
285
+
286
+ 2. **Product Features**: Cycling through benefits and capabilities
287
+ ```html
288
+ <span cycle="Zero Config 🎯 | Type-Safe 📘 | Lightning Fast ⚡"></span>
289
+ ```
290
+
291
+ 3. **Job Postings**: Dynamic role descriptions
292
+ ```html
293
+ We're hiring <span cycle="Developers | Designers | Engineers"></span>
294
+ ```
295
+
296
+ 4. **Testimonials**: Rotating customer quotes
297
+ ```html
298
+ <span cycle="Amazing product! | Best tool ever! | Game changer!"></span>
299
+ ```
300
+
301
+ 5. **Tutorials**: Step-by-step code examples with timing
302
+ 6. **Storytelling**: Narrative experiences with dramatic pauses
303
+ 7. **Loading States**: Entertaining wait messages that cycle
304
+ 8. **Terminal UIs**: Command-line interface simulations
305
+
306
+ ## Migration Guide
307
+
308
+ ### From Manual Deletes to Cycle API
309
+
310
+ **Before (Manual counting - error prone!):**
311
+ ```html
312
+ <schmancy-typewriter>
313
+ We are
314
+ developers
315
+ <span action="delete" value="10"></span>
316
+ designers
317
+ <span action="delete" value="9"></span>
318
+ innovators
319
+ </schmancy-typewriter>
320
+ ```
321
+
322
+ **After (Automatic - clean & simple!):**
323
+ ```html
324
+ <schmancy-typewriter>
325
+ We are <span cycle="developers | designers | innovators"></span>
326
+ </schmancy-typewriter>
327
+ ```
328
+
329
+ ### Benefits of the New API
330
+
331
+ - 🚫 **No more counting characters** - automatic deletion
332
+ - ✨ **Cleaner markup** - one line instead of many
333
+ - 🛡️ **Less error-prone** - no typos in character counts
334
+ - 🔄 **Easy updates** - just add/remove words from the list
335
+ - 🎨 **Better readability** - see all options at a glance