snice 2.5.4 → 3.2.0

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 (411) hide show
  1. package/README.md +537 -869
  2. package/bin/templates/base/src/components/counter-button.ts +13 -26
  3. package/bin/templates/base/src/controllers/counter-controller.ts +3 -3
  4. package/dist/components/accordion/snice-accordion-item.d.ts +4 -5
  5. package/dist/components/accordion/snice-accordion-item.js +37 -39
  6. package/dist/components/accordion/snice-accordion-item.js.map +1 -1
  7. package/dist/components/accordion/snice-accordion.d.ts +5 -11
  8. package/dist/components/accordion/snice-accordion.js +51 -52
  9. package/dist/components/accordion/snice-accordion.js.map +1 -1
  10. package/dist/components/alert/snice-alert.d.ts +2 -6
  11. package/dist/components/alert/snice-alert.js +41 -56
  12. package/dist/components/alert/snice-alert.js.map +1 -1
  13. package/dist/components/avatar/snice-avatar.d.ts +2 -6
  14. package/dist/components/avatar/snice-avatar.js +64 -71
  15. package/dist/components/avatar/snice-avatar.js.map +1 -1
  16. package/dist/components/badge/snice-badge.d.ts +2 -3
  17. package/dist/components/badge/snice-badge.js +22 -23
  18. package/dist/components/badge/snice-badge.js.map +1 -1
  19. package/dist/components/banner/snice-banner.d.ts +22 -0
  20. package/dist/components/banner/snice-banner.js +180 -0
  21. package/dist/components/banner/snice-banner.js.map +1 -0
  22. package/dist/components/banner/snice-banner.types.d.ts +14 -0
  23. package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +5 -12
  24. package/dist/components/breadcrumbs/snice-breadcrumbs.js +88 -89
  25. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  26. package/dist/components/button/snice-button.d.ts +3 -7
  27. package/dist/components/button/snice-button.js +37 -58
  28. package/dist/components/button/snice-button.js.map +1 -1
  29. package/dist/components/card/snice-card.d.ts +5 -8
  30. package/dist/components/card/snice-card.js +71 -56
  31. package/dist/components/card/snice-card.js.map +1 -1
  32. package/dist/components/checkbox/snice-checkbox.d.ts +4 -13
  33. package/dist/components/checkbox/snice-checkbox.js +66 -137
  34. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  35. package/dist/components/chip/snice-chip.d.ts +5 -11
  36. package/dist/components/chip/snice-chip.js +44 -47
  37. package/dist/components/chip/snice-chip.js.map +1 -1
  38. package/dist/components/color-display/snice-color-display.d.ts +14 -0
  39. package/dist/components/color-display/snice-color-display.js +151 -0
  40. package/dist/components/color-display/snice-color-display.js.map +1 -0
  41. package/dist/components/color-display/snice-color-display.types.d.ts +10 -0
  42. package/dist/components/color-picker/snice-color-picker.d.ts +50 -0
  43. package/dist/components/color-picker/snice-color-picker.js +489 -0
  44. package/dist/components/color-picker/snice-color-picker.js.map +1 -0
  45. package/dist/components/color-picker/snice-color-picker.types.d.ts +19 -0
  46. package/dist/components/date-picker/snice-date-picker.d.ts +11 -11
  47. package/dist/components/date-picker/snice-date-picker.js +134 -133
  48. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  49. package/dist/components/divider/snice-divider.d.ts +2 -4
  50. package/dist/components/divider/snice-divider.js +14 -22
  51. package/dist/components/divider/snice-divider.js.map +1 -1
  52. package/dist/components/drawer/snice-drawer.d.ts +4 -4
  53. package/dist/components/drawer/snice-drawer.js +25 -19
  54. package/dist/components/drawer/snice-drawer.js.map +1 -1
  55. package/dist/components/empty-state/snice-empty-state.d.ts +13 -0
  56. package/dist/components/empty-state/snice-empty-state.js +121 -0
  57. package/dist/components/empty-state/snice-empty-state.js.map +1 -0
  58. package/dist/components/empty-state/snice-empty-state.types.d.ts +9 -0
  59. package/dist/components/file-upload/snice-file-upload.d.ts +45 -0
  60. package/dist/components/file-upload/snice-file-upload.js +394 -0
  61. package/dist/components/file-upload/snice-file-upload.js.map +1 -0
  62. package/dist/components/file-upload/snice-file-upload.types.d.ts +22 -0
  63. package/dist/components/image/snice-image.d.ts +22 -0
  64. package/dist/components/image/snice-image.js +201 -0
  65. package/dist/components/image/snice-image.js.map +1 -0
  66. package/dist/components/image/snice-image.types.d.ts +17 -0
  67. package/dist/components/input/snice-input.d.ts +8 -6
  68. package/dist/components/input/snice-input.js +122 -105
  69. package/dist/components/input/snice-input.js.map +1 -1
  70. package/dist/components/kpi/snice-kpi.d.ts +16 -0
  71. package/dist/components/kpi/snice-kpi.js +162 -0
  72. package/dist/components/kpi/snice-kpi.js.map +1 -0
  73. package/dist/components/kpi/snice-kpi.types.d.ts +12 -0
  74. package/dist/components/layout/snice-layout-blog.d.ts +4 -4
  75. package/dist/components/layout/snice-layout-blog.js +21 -19
  76. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  77. package/dist/components/layout/snice-layout-card.d.ts +2 -2
  78. package/dist/components/layout/snice-layout-card.js +16 -9
  79. package/dist/components/layout/snice-layout-card.js.map +1 -1
  80. package/dist/components/layout/snice-layout-centered.d.ts +2 -2
  81. package/dist/components/layout/snice-layout-centered.js +14 -7
  82. package/dist/components/layout/snice-layout-centered.js.map +1 -1
  83. package/dist/components/layout/snice-layout-dashboard.d.ts +5 -5
  84. package/dist/components/layout/snice-layout-dashboard.js +38 -30
  85. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  86. package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
  87. package/dist/components/layout/snice-layout-fullscreen.js +17 -10
  88. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
  89. package/dist/components/layout/snice-layout-landing.d.ts +4 -4
  90. package/dist/components/layout/snice-layout-landing.js +21 -19
  91. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  92. package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
  93. package/dist/components/layout/snice-layout-minimal.js +17 -6
  94. package/dist/components/layout/snice-layout-minimal.js.map +1 -1
  95. package/dist/components/layout/snice-layout-sidebar.d.ts +5 -4
  96. package/dist/components/layout/snice-layout-sidebar.js +42 -20
  97. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  98. package/dist/components/layout/snice-layout-split.d.ts +2 -2
  99. package/dist/components/layout/snice-layout-split.js +14 -7
  100. package/dist/components/layout/snice-layout-split.js.map +1 -1
  101. package/dist/components/layout/snice-layout.d.ts +4 -4
  102. package/dist/components/layout/snice-layout.js +16 -10
  103. package/dist/components/layout/snice-layout.js.map +1 -1
  104. package/dist/components/link/snice-link.d.ts +13 -0
  105. package/dist/components/link/snice-link.js +137 -0
  106. package/dist/components/link/snice-link.js.map +1 -0
  107. package/dist/components/link/snice-link.types.d.ts +11 -0
  108. package/dist/components/login/snice-login.d.ts +6 -11
  109. package/dist/components/login/snice-login.js +97 -71
  110. package/dist/components/login/snice-login.js.map +1 -1
  111. package/dist/components/modal/snice-modal.d.ts +5 -9
  112. package/dist/components/modal/snice-modal.js +47 -78
  113. package/dist/components/modal/snice-modal.js.map +1 -1
  114. package/dist/components/nav/snice-nav.d.ts +13 -7
  115. package/dist/components/nav/snice-nav.js +191 -100
  116. package/dist/components/nav/snice-nav.js.map +1 -1
  117. package/dist/components/nav/snice-nav.types.d.ts +3 -3
  118. package/dist/components/pagination/snice-pagination.d.ts +6 -7
  119. package/dist/components/pagination/snice-pagination.js +94 -81
  120. package/dist/components/pagination/snice-pagination.js.map +1 -1
  121. package/dist/components/progress/snice-progress.d.ts +2 -7
  122. package/dist/components/progress/snice-progress.js +41 -98
  123. package/dist/components/progress/snice-progress.js.map +1 -1
  124. package/dist/components/radio/snice-radio.d.ts +4 -4
  125. package/dist/components/radio/snice-radio.js +52 -44
  126. package/dist/components/radio/snice-radio.js.map +1 -1
  127. package/dist/components/select/snice-option.d.ts +2 -1
  128. package/dist/components/select/snice-option.js +12 -5
  129. package/dist/components/select/snice-option.js.map +1 -1
  130. package/dist/components/select/snice-select.d.ts +9 -21
  131. package/dist/components/select/snice-select.js +98 -170
  132. package/dist/components/select/snice-select.js.map +1 -1
  133. package/dist/components/skeleton/snice-skeleton.d.ts +2 -6
  134. package/dist/components/skeleton/snice-skeleton.js +18 -49
  135. package/dist/components/skeleton/snice-skeleton.js.map +1 -1
  136. package/dist/components/slider/snice-slider.d.ts +53 -0
  137. package/dist/components/slider/snice-slider.js +479 -0
  138. package/dist/components/slider/snice-slider.js.map +1 -0
  139. package/dist/components/slider/snice-slider.types.d.ts +26 -0
  140. package/dist/components/snice-cell-C0slgOpe.js +4 -0
  141. package/dist/components/snice-cell-C0slgOpe.js.map +1 -0
  142. package/dist/components/sparkline/snice-sparkline.d.ts +21 -0
  143. package/dist/components/sparkline/snice-sparkline.js +228 -0
  144. package/dist/components/sparkline/snice-sparkline.js.map +1 -0
  145. package/dist/components/sparkline/snice-sparkline.types.d.ts +16 -0
  146. package/dist/components/spinner/snice-spinner.d.ts +10 -0
  147. package/dist/components/spinner/snice-spinner.js +109 -0
  148. package/dist/components/spinner/snice-spinner.js.map +1 -0
  149. package/dist/components/spinner/snice-spinner.types.d.ts +8 -0
  150. package/dist/components/stepper/snice-stepper-panel.d.ts +8 -0
  151. package/dist/components/stepper/snice-stepper-panel.js +70 -0
  152. package/dist/components/stepper/snice-stepper-panel.js.map +1 -0
  153. package/dist/components/stepper/snice-stepper-panel.types.d.ts +4 -0
  154. package/dist/components/stepper/snice-stepper.d.ts +15 -0
  155. package/dist/components/stepper/snice-stepper.js +163 -0
  156. package/dist/components/stepper/snice-stepper.js.map +1 -0
  157. package/dist/components/stepper/snice-stepper.types.d.ts +13 -0
  158. package/dist/components/switch/snice-switch.d.ts +2 -2
  159. package/dist/components/switch/snice-switch.js +38 -26
  160. package/dist/components/switch/snice-switch.js.map +1 -1
  161. package/dist/components/table/snice-cell-actions.d.ts +24 -0
  162. package/dist/components/table/snice-cell-actions.js +149 -0
  163. package/dist/components/table/snice-cell-actions.js.map +1 -0
  164. package/dist/components/table/snice-cell-boolean.d.ts +2 -2
  165. package/dist/components/table/snice-cell-boolean.js +13 -7
  166. package/dist/components/table/snice-cell-boolean.js.map +1 -1
  167. package/dist/components/table/snice-cell-color.d.ts +18 -0
  168. package/dist/components/table/snice-cell-color.js +149 -0
  169. package/dist/components/table/snice-cell-color.js.map +1 -0
  170. package/dist/components/table/snice-cell-currency.d.ts +24 -0
  171. package/dist/components/table/snice-cell-currency.js +235 -0
  172. package/dist/components/table/snice-cell-currency.js.map +1 -0
  173. package/dist/components/table/snice-cell-date.d.ts +2 -2
  174. package/dist/components/table/snice-cell-date.js +14 -8
  175. package/dist/components/table/snice-cell-date.js.map +1 -1
  176. package/dist/components/table/snice-cell-duration.d.ts +2 -2
  177. package/dist/components/table/snice-cell-duration.js +12 -6
  178. package/dist/components/table/snice-cell-duration.js.map +1 -1
  179. package/dist/components/table/snice-cell-email.d.ts +15 -0
  180. package/dist/components/table/snice-cell-email.js +125 -0
  181. package/dist/components/table/snice-cell-email.js.map +1 -0
  182. package/dist/components/table/snice-cell-filesize.d.ts +2 -2
  183. package/dist/components/table/snice-cell-filesize.js +12 -6
  184. package/dist/components/table/snice-cell-filesize.js.map +1 -1
  185. package/dist/components/table/snice-cell-image.d.ts +20 -0
  186. package/dist/components/table/snice-cell-image.js +162 -0
  187. package/dist/components/table/snice-cell-image.js.map +1 -0
  188. package/dist/components/table/snice-cell-json.d.ts +20 -0
  189. package/dist/components/table/snice-cell-json.js +186 -0
  190. package/dist/components/table/snice-cell-json.js.map +1 -0
  191. package/dist/components/table/snice-cell-link.d.ts +17 -0
  192. package/dist/components/table/snice-cell-link.js +142 -0
  193. package/dist/components/table/snice-cell-link.js.map +1 -0
  194. package/dist/components/table/snice-cell-location.d.ts +19 -0
  195. package/dist/components/table/snice-cell-location.js +185 -0
  196. package/dist/components/table/snice-cell-location.js.map +1 -0
  197. package/dist/components/table/snice-cell-number.d.ts +2 -2
  198. package/dist/components/table/snice-cell-number.js +12 -6
  199. package/dist/components/table/snice-cell-number.js.map +1 -1
  200. package/dist/components/table/snice-cell-percentage.d.ts +22 -0
  201. package/dist/components/table/snice-cell-percentage.js +208 -0
  202. package/dist/components/table/snice-cell-percentage.js.map +1 -0
  203. package/dist/components/table/snice-cell-phone.d.ts +18 -0
  204. package/dist/components/table/snice-cell-phone.js +153 -0
  205. package/dist/components/table/snice-cell-phone.js.map +1 -0
  206. package/dist/components/table/snice-cell-progress.d.ts +2 -2
  207. package/dist/components/table/snice-cell-progress.js +12 -6
  208. package/dist/components/table/snice-cell-progress.js.map +1 -1
  209. package/dist/components/table/snice-cell-rating.d.ts +2 -2
  210. package/dist/components/table/snice-cell-rating.js +12 -6
  211. package/dist/components/table/snice-cell-rating.js.map +1 -1
  212. package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
  213. package/dist/components/table/snice-cell-sparkline.js +13 -7
  214. package/dist/components/table/snice-cell-sparkline.js.map +1 -1
  215. package/dist/components/table/snice-cell-status.d.ts +17 -0
  216. package/dist/components/table/snice-cell-status.js +144 -0
  217. package/dist/components/table/snice-cell-status.js.map +1 -0
  218. package/dist/components/table/snice-cell-tag.d.ts +16 -0
  219. package/dist/components/table/snice-cell-tag.js +131 -0
  220. package/dist/components/table/snice-cell-tag.js.map +1 -0
  221. package/dist/components/table/snice-cell-text.d.ts +2 -2
  222. package/dist/components/table/snice-cell-text.js +14 -8
  223. package/dist/components/table/snice-cell-text.js.map +1 -1
  224. package/dist/components/table/snice-cell.d.ts +2 -2
  225. package/dist/components/table/snice-cell.js +12 -6
  226. package/dist/components/table/snice-cell.js.map +1 -1
  227. package/dist/components/table/snice-column.d.ts +1 -1
  228. package/dist/components/table/snice-column.js +6 -3
  229. package/dist/components/table/snice-column.js.map +1 -1
  230. package/dist/components/table/snice-header.d.ts +5 -5
  231. package/dist/components/table/snice-header.js +60 -50
  232. package/dist/components/table/snice-header.js.map +1 -1
  233. package/dist/components/table/snice-progress.d.ts +2 -2
  234. package/dist/components/table/snice-progress.js +18 -11
  235. package/dist/components/table/snice-progress.js.map +1 -1
  236. package/dist/components/table/snice-rating.d.ts +2 -2
  237. package/dist/components/table/snice-rating.js +15 -8
  238. package/dist/components/table/snice-rating.js.map +1 -1
  239. package/dist/components/table/snice-row.d.ts +17 -6
  240. package/dist/components/table/snice-row.js +95 -44
  241. package/dist/components/table/snice-row.js.map +1 -1
  242. package/dist/components/table/snice-table.d.ts +18 -10
  243. package/dist/components/table/snice-table.js +355 -173
  244. package/dist/components/table/snice-table.js.map +1 -1
  245. package/dist/components/table/snice-table.types.d.ts +101 -2
  246. package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
  247. package/dist/components/tabs/snice-tab-panel.js +12 -6
  248. package/dist/components/tabs/snice-tab-panel.js.map +1 -1
  249. package/dist/components/tabs/snice-tab.d.ts +6 -5
  250. package/dist/components/tabs/snice-tab.js +36 -19
  251. package/dist/components/tabs/snice-tab.js.map +1 -1
  252. package/dist/components/tabs/snice-tabs.d.ts +5 -5
  253. package/dist/components/tabs/snice-tabs.js +38 -28
  254. package/dist/components/tabs/snice-tabs.js.map +1 -1
  255. package/dist/components/textarea/snice-textarea.d.ts +52 -0
  256. package/dist/components/textarea/snice-textarea.js +407 -0
  257. package/dist/components/textarea/snice-textarea.js.map +1 -0
  258. package/dist/components/textarea/snice-textarea.types.d.ts +30 -0
  259. package/dist/components/timeline/snice-timeline.d.ts +11 -0
  260. package/dist/components/timeline/snice-timeline.js +112 -0
  261. package/dist/components/timeline/snice-timeline.js.map +1 -0
  262. package/dist/components/timeline/snice-timeline.types.d.ts +16 -0
  263. package/dist/components/toast/snice-toast-container.d.ts +7 -7
  264. package/dist/components/toast/snice-toast-container.js +19 -12
  265. package/dist/components/toast/snice-toast-container.js.map +1 -1
  266. package/dist/components/toast/snice-toast.d.ts +3 -15
  267. package/dist/components/toast/snice-toast.js +49 -108
  268. package/dist/components/toast/snice-toast.js.map +1 -1
  269. package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
  270. package/dist/components/tooltip/snice-tooltip.js +15 -8
  271. package/dist/components/tooltip/snice-tooltip.js.map +1 -1
  272. package/dist/context.d.ts +44 -0
  273. package/dist/element-ready.d.ts +40 -0
  274. package/dist/{types/element.d.ts → element.d.ts} +2 -8
  275. package/dist/{types/events.d.ts → events.d.ts} +0 -4
  276. package/dist/index.cjs +2556 -605
  277. package/dist/index.cjs.map +1 -1
  278. package/dist/index.d.ts +21 -0
  279. package/dist/index.esm.js +2535 -604
  280. package/dist/index.esm.js.map +1 -1
  281. package/dist/index.iife.js +2556 -605
  282. package/dist/index.iife.js.map +1 -1
  283. package/dist/method-decorators.d.ts +121 -0
  284. package/dist/on.d.ts +59 -0
  285. package/dist/parts.d.ts +156 -0
  286. package/dist/render-debug.d.ts +27 -0
  287. package/dist/render-tracker.d.ts +14 -0
  288. package/dist/render.d.ts +96 -0
  289. package/dist/symbols.cjs +163 -0
  290. package/dist/symbols.cjs.map +1 -1
  291. package/dist/{types/symbols.d.ts → symbols.d.ts} +22 -0
  292. package/dist/symbols.esm.js +27 -3
  293. package/dist/symbols.esm.js.map +1 -1
  294. package/dist/template.d.ts +99 -0
  295. package/dist/transitions.cjs +219 -0
  296. package/dist/transitions.esm.js +2 -2
  297. package/dist/types/context.d.ts +48 -0
  298. package/dist/types/element-options.d.ts +26 -0
  299. package/dist/types/index.d.ts +25 -9
  300. package/dist/types/nav-context.d.ts +19 -0
  301. package/dist/types/{types/on-options.d.ts → on-options.d.ts} +2 -0
  302. package/dist/types/{types/placard.d.ts → placard.d.ts} +0 -1
  303. package/docs/ai/README.md +26 -0
  304. package/docs/ai/api.md +175 -0
  305. package/docs/ai/architecture.md +160 -0
  306. package/docs/ai/components/accordion.md +174 -0
  307. package/docs/ai/components/alert.md +77 -0
  308. package/docs/ai/components/avatar.md +61 -0
  309. package/docs/ai/components/badge.md +69 -0
  310. package/docs/ai/components/banner.md +84 -0
  311. package/docs/ai/components/breadcrumbs.md +74 -0
  312. package/docs/ai/components/button.md +75 -0
  313. package/docs/ai/components/card.md +61 -0
  314. package/docs/ai/components/checkbox.md +74 -0
  315. package/docs/ai/components/chip.md +73 -0
  316. package/docs/ai/components/color-display.md +48 -0
  317. package/docs/ai/components/color-picker.md +75 -0
  318. package/docs/ai/components/date-picker.md +75 -0
  319. package/docs/ai/components/divider.md +66 -0
  320. package/docs/ai/components/drawer.md +80 -0
  321. package/docs/ai/components/empty-state.md +72 -0
  322. package/docs/ai/components/file-upload.md +93 -0
  323. package/docs/ai/components/image.md +60 -0
  324. package/docs/ai/components/input.md +111 -0
  325. package/docs/ai/components/kpi.md +158 -0
  326. package/docs/ai/components/link.md +77 -0
  327. package/docs/ai/components/login.md +109 -0
  328. package/docs/ai/components/modal.md +67 -0
  329. package/docs/ai/components/nav.md +76 -0
  330. package/docs/ai/components/pagination.md +55 -0
  331. package/docs/ai/components/progress.md +72 -0
  332. package/docs/ai/components/radio.md +79 -0
  333. package/docs/ai/components/select.md +92 -0
  334. package/docs/ai/components/skeleton.md +57 -0
  335. package/docs/ai/components/slider.md +87 -0
  336. package/docs/ai/components/sparkline.md +168 -0
  337. package/docs/ai/components/spinner.md +47 -0
  338. package/docs/ai/components/stepper.md +216 -0
  339. package/docs/ai/components/switch.md +53 -0
  340. package/docs/ai/components/table.md +227 -0
  341. package/docs/ai/components/tabs.md +83 -0
  342. package/docs/ai/components/textarea.md +87 -0
  343. package/docs/ai/components/timeline.md +77 -0
  344. package/docs/ai/components/toast.md +140 -0
  345. package/docs/ai/components/tooltip.md +146 -0
  346. package/docs/ai/patterns.md +244 -0
  347. package/docs/components/accordion.md +558 -0
  348. package/docs/components/banner.md +106 -0
  349. package/docs/components/color-display.md +96 -0
  350. package/docs/components/color-picker.md +81 -0
  351. package/docs/components/drawer.md +602 -0
  352. package/docs/components/empty-state.md +79 -0
  353. package/docs/components/file-upload.md +263 -0
  354. package/docs/components/image.md +110 -0
  355. package/docs/components/kpi.md +251 -0
  356. package/docs/components/link.md +229 -0
  357. package/docs/components/modal.md +558 -0
  358. package/docs/components/nav.md +239 -0
  359. package/docs/components/pagination.md +289 -0
  360. package/docs/components/select.md +599 -0
  361. package/docs/components/slider.md +297 -0
  362. package/docs/components/sparkline.md +293 -0
  363. package/docs/components/spinner.md +63 -0
  364. package/docs/components/stepper.md +410 -0
  365. package/docs/components/switch.md +354 -0
  366. package/docs/components/tabs.md +546 -0
  367. package/docs/components/textarea.md +235 -0
  368. package/docs/components/timeline.md +192 -0
  369. package/docs/components/toast.md +506 -0
  370. package/docs/components/tooltip.md +523 -0
  371. package/docs/controllers.md +744 -0
  372. package/docs/elements.md +855 -0
  373. package/docs/events.md +807 -0
  374. package/docs/migration-v2-to-v3.md +569 -0
  375. package/docs/observe.md +588 -0
  376. package/docs/placards.md +401 -0
  377. package/docs/request-response.md +852 -0
  378. package/docs/routing.md +1186 -0
  379. package/package.json +11 -11
  380. package/dist/components/snice-cell-C9N6yGxQ.js +0 -4
  381. package/dist/components/snice-cell-C9N6yGxQ.js.map +0 -1
  382. package/dist/types/types/index.d.ts +0 -23
  383. /package/dist/{types/controller.d.ts → controller.d.ts} +0 -0
  384. /package/dist/{types/global.d.ts → global.d.ts} +0 -0
  385. /package/dist/{types/observe.d.ts → observe.d.ts} +0 -0
  386. /package/dist/{types/request-response.d.ts → request-response.d.ts} +0 -0
  387. /package/dist/{types/router.d.ts → router.d.ts} +0 -0
  388. /package/dist/{types/testing.d.ts → testing.d.ts} +0 -0
  389. /package/dist/{types/transitions.d.ts → transitions.d.ts} +0 -0
  390. /package/dist/types/{types/adopted-options.d.ts → adopted-options.d.ts} +0 -0
  391. /package/dist/types/{types/app-context.d.ts → app-context.d.ts} +0 -0
  392. /package/dist/types/{types/dispatch-options.d.ts → dispatch-options.d.ts} +0 -0
  393. /package/dist/types/{types/guard.d.ts → guard.d.ts} +0 -0
  394. /package/dist/types/{types/i-controller.d.ts → i-controller.d.ts} +0 -0
  395. /package/dist/types/{types/moved-options.d.ts → moved-options.d.ts} +0 -0
  396. /package/dist/types/{types/observe-options.d.ts → observe-options.d.ts} +0 -0
  397. /package/dist/types/{types/page-options.d.ts → page-options.d.ts} +0 -0
  398. /package/dist/types/{types/part-options.d.ts → part-options.d.ts} +0 -0
  399. /package/dist/types/{types/property-converter.d.ts → property-converter.d.ts} +0 -0
  400. /package/dist/types/{types/property-options.d.ts → property-options.d.ts} +0 -0
  401. /package/dist/types/{types/query-options.d.ts → query-options.d.ts} +0 -0
  402. /package/dist/types/{types/request-options.d.ts → request-options.d.ts} +0 -0
  403. /package/dist/types/{types/respond-options.d.ts → respond-options.d.ts} +0 -0
  404. /package/dist/types/{types/route-params.d.ts → route-params.d.ts} +0 -0
  405. /package/dist/types/{types/router-instance.d.ts → router-instance.d.ts} +0 -0
  406. /package/dist/types/{types/router-options.d.ts → router-options.d.ts} +0 -0
  407. /package/dist/types/{types/simple-array.d.ts → simple-array.d.ts} +0 -0
  408. /package/dist/types/{types/snice-element.d.ts → snice-element.d.ts} +0 -0
  409. /package/dist/types/{types/snice-global.d.ts → snice-global.d.ts} +0 -0
  410. /package/dist/types/{types/transition.d.ts → transition.d.ts} +0 -0
  411. /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
@@ -0,0 +1,92 @@
1
+ # snice-select
2
+
3
+ Customizable dropdown selection with single/multiple selection, search, and icons.
4
+
5
+ ## Components
6
+
7
+ ### snice-select (Container)
8
+
9
+ ```typescript
10
+ value: string = ''; // Selected value (comma-separated for multiple)
11
+ disabled: boolean = false; // Disabled state
12
+ required: boolean = false; // Required for form validation
13
+ invalid: boolean = false; // Invalid state styling
14
+ readonly: boolean = false; // Readonly state
15
+ multiple: boolean = false; // Allow multiple selection
16
+ searchable: boolean = false; // Show search input
17
+ clearable: boolean = false; // Show clear button
18
+ open: boolean = false; // Dropdown open state
19
+ size: 'small'|'medium'|'large' = 'medium';
20
+ name: string = ''; // Form field name
21
+ label: string = ''; // Label text
22
+ placeholder: string = 'Select an option';
23
+ maxHeight: string = '200px'; // Max dropdown height
24
+ ```
25
+
26
+ **Methods:**
27
+ ```typescript
28
+ selectOption(value: string) // Select option by value
29
+ clear() // Clear selection
30
+ openDropdown() // Open dropdown
31
+ closeDropdown() // Close dropdown
32
+ toggleDropdown() // Toggle dropdown
33
+ focus() // Focus trigger
34
+ blur() // Blur and close
35
+ ```
36
+
37
+ **Events:**
38
+ ```typescript
39
+ '@snice/select-change' // { value, option, select }
40
+ '@snice/select-open' // { select }
41
+ '@snice/select-close' // { select }
42
+ ```
43
+
44
+ ### snice-option (Option Item)
45
+
46
+ ```typescript
47
+ value: string = ''; // Option value (defaults to label)
48
+ label: string = ''; // Option label (defaults to textContent)
49
+ disabled: boolean = false; // Disabled state
50
+ selected: boolean = false; // Initially selected
51
+ icon: string = ''; // Icon URL
52
+ ```
53
+
54
+ **Getter:**
55
+ ```typescript
56
+ optionData // { value, label, disabled, selected, icon }
57
+ ```
58
+
59
+ ## Usage
60
+
61
+ ```html
62
+ <snice-select label="Choose" name="choice">
63
+ <snice-option value="1">Option 1</snice-option>
64
+ <snice-option value="2">Option 2</snice-option>
65
+ </snice-select>
66
+ ```
67
+
68
+ ```typescript
69
+ select.addEventListener('@snice/select-change', (e) => {
70
+ console.log(e.detail.value);
71
+ });
72
+
73
+ select.selectOption('1');
74
+ ```
75
+
76
+ ## Features
77
+
78
+ - Single and multiple selection
79
+ - Search filtering
80
+ - Keyboard navigation
81
+ - Form integration
82
+ - Icons in options
83
+ - Clearable selection
84
+ - Disabled options
85
+
86
+ ## Notes
87
+
88
+ - Options must be direct children of select
89
+ - Multiple selection values are comma-separated
90
+ - Hidden native select for form submission
91
+ - Dropdown closes outside click
92
+ - Search shows in dropdown when open
@@ -0,0 +1,57 @@
1
+ # snice-skeleton
2
+
3
+ Loading placeholder with animated shimmer effect.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ variant: 'text'|'circular'|'rectangular'|'rounded' = 'text';
9
+ width: string = '';
10
+ height: string = '';
11
+ animation: 'pulse'|'wave'|'none' = 'pulse';
12
+ count: number = 1;
13
+ spacing: string = '8px';
14
+ ```
15
+
16
+ ## Usage
17
+
18
+ ```html
19
+ <!-- Text placeholder -->
20
+ <snice-skeleton variant="text"></snice-skeleton>
21
+ <snice-skeleton variant="text" width="200px"></snice-skeleton>
22
+
23
+ <!-- Circular (avatar) -->
24
+ <snice-skeleton variant="circular" width="40px" height="40px"></snice-skeleton>
25
+
26
+ <!-- Rectangular -->
27
+ <snice-skeleton variant="rectangular" width="100%" height="200px"></snice-skeleton>
28
+
29
+ <!-- Rounded (card) -->
30
+ <snice-skeleton variant="rounded" width="300px" height="150px"></snice-skeleton>
31
+
32
+ <!-- Multiple lines -->
33
+ <snice-skeleton variant="text" count="3"></snice-skeleton>
34
+ <snice-skeleton variant="text" count="5" spacing="12px"></snice-skeleton>
35
+
36
+ <!-- Animation types -->
37
+ <snice-skeleton animation="pulse"></snice-skeleton>
38
+ <snice-skeleton animation="wave"></snice-skeleton>
39
+ <snice-skeleton animation="none"></snice-skeleton>
40
+
41
+ <!-- Complex layout -->
42
+ <div style="display: flex; gap: 16px;">
43
+ <snice-skeleton variant="circular" width="48px" height="48px"></snice-skeleton>
44
+ <div style="flex: 1;">
45
+ <snice-skeleton variant="text" width="40%"></snice-skeleton>
46
+ <snice-skeleton variant="text" width="60%"></snice-skeleton>
47
+ </div>
48
+ </div>
49
+ ```
50
+
51
+ ## Features
52
+
53
+ - 4 shape variants (text/circular/rectangular/rounded)
54
+ - 3 animation styles (pulse/wave/none)
55
+ - Custom dimensions
56
+ - Multiple skeleton elements with spacing
57
+ - Mimics loading content shapes
@@ -0,0 +1,87 @@
1
+ # snice-slider
2
+
3
+ Range slider for numeric value selection.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ value: number = 0;
9
+ min: number = 0;
10
+ max: number = 100;
11
+ step: number = 1;
12
+ variant: 'default'|'primary'|'success'|'warning'|'danger' = 'default';
13
+ size: 'small'|'medium'|'large' = 'medium';
14
+ disabled: boolean = false;
15
+ required: boolean = false;
16
+ invalid: boolean = false;
17
+ readonly: boolean = false;
18
+ label: string = '';
19
+ helperText: string = '';
20
+ errorText: string = '';
21
+ name: string = '';
22
+ showValue: boolean = false;
23
+ showTicks: boolean = false;
24
+ vertical: boolean = false;
25
+ ```
26
+
27
+ ## Methods
28
+
29
+ - `focus()` - Focus slider thumb
30
+ - `blur()` - Blur slider thumb
31
+
32
+ ## Events
33
+
34
+ - `input` - {value, slider} - During drag
35
+ - `change` - {value, slider} - After drag complete
36
+
37
+ ## Usage
38
+
39
+ ```html
40
+ <!-- Basic -->
41
+ <snice-slider label="Volume" min="0" max="100"></snice-slider>
42
+
43
+ <!-- With value display -->
44
+ <snice-slider show-value value="50"></snice-slider>
45
+
46
+ <!-- With ticks -->
47
+ <snice-slider show-ticks min="0" max="10" step="1"></snice-slider>
48
+
49
+ <!-- Variants -->
50
+ <snice-slider variant="primary"></snice-slider>
51
+ <snice-slider variant="success"></snice-slider>
52
+ <snice-slider variant="warning"></snice-slider>
53
+ <snice-slider variant="danger"></snice-slider>
54
+
55
+ <!-- Sizes -->
56
+ <snice-slider size="small"></snice-slider>
57
+ <snice-slider size="medium"></snice-slider>
58
+ <snice-slider size="large"></snice-slider>
59
+
60
+ <!-- Vertical -->
61
+ <snice-slider vertical></snice-slider>
62
+
63
+ <!-- Step increments -->
64
+ <snice-slider min="0" max="100" step="5" value="50"></snice-slider>
65
+
66
+ <!-- Events -->
67
+ <snice-slider id="slider"></snice-slider>
68
+ <script>
69
+ const slider = document.querySelector('#slider');
70
+ slider.addEventListener('@snice/slider-change', (e) => {
71
+ console.log('Value:', e.detail.value);
72
+ });
73
+ </script>
74
+ ```
75
+
76
+ ## Features
77
+
78
+ - Form-associated custom element
79
+ - Mouse and touch support
80
+ - Keyboard navigation (arrows, home/end, page up/down)
81
+ - 5 color variants
82
+ - 3 sizes
83
+ - Vertical orientation
84
+ - Optional value display
85
+ - Optional tick marks
86
+ - Step increments
87
+ - Accessible
@@ -0,0 +1,168 @@
1
+ # snice-sparkline
2
+
3
+ Compact inline chart for visualizing trends and patterns. For dashboards, tables, data-dense interfaces.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ data: number[] = [] // Values to visualize
9
+ type: SparklineType = 'line' // 'line' | 'bar' | 'area'
10
+ color: SparklineColor = 'primary' // 'primary' | 'success' | 'warning' | 'danger' | 'muted'
11
+ customColor?: string // Any CSS color (overrides color)
12
+ width: number = 100 // Chart width in pixels
13
+ height: number = 30 // Chart height in pixels
14
+ strokeWidth: number = 2 // Line/dot stroke width
15
+ showDots: boolean = false // Show dots on data points (line charts)
16
+ showArea: boolean = false // Show area fill (line charts)
17
+ smooth: boolean = false // Use smooth bezier curves
18
+ min?: number // Min value for scaling (auto if unset)
19
+ max?: number // Max value for scaling (auto if unset)
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ ```html
25
+ <!-- Basic -->
26
+ <snice-sparkline id="chart"></snice-sparkline>
27
+ <script>
28
+ document.getElementById('chart').data = [10, 20, 15, 25, 30];
29
+ </script>
30
+
31
+ <!-- Line chart -->
32
+ <snice-sparkline id="line" type="line"></snice-sparkline>
33
+
34
+ <!-- Bar chart -->
35
+ <snice-sparkline id="bar" type="bar"></snice-sparkline>
36
+
37
+ <!-- Area chart -->
38
+ <snice-sparkline id="area" type="area"></snice-sparkline>
39
+
40
+ <!-- Smooth curves -->
41
+ <snice-sparkline id="smooth" smooth></snice-sparkline>
42
+
43
+ <!-- With dots -->
44
+ <snice-sparkline id="dots" show-dots></snice-sparkline>
45
+
46
+ <!-- With area fill -->
47
+ <snice-sparkline id="fill" show-area></snice-sparkline>
48
+
49
+ <!-- Colors -->
50
+ <snice-sparkline color="primary"></snice-sparkline>
51
+ <snice-sparkline color="success"></snice-sparkline>
52
+ <snice-sparkline color="warning"></snice-sparkline>
53
+ <snice-sparkline color="danger"></snice-sparkline>
54
+ <snice-sparkline color="muted"></snice-sparkline>
55
+
56
+ <!-- Custom colors -->
57
+ <snice-sparkline custom-color="#9333ea"></snice-sparkline>
58
+ <snice-sparkline custom-color="rgb(147, 51, 234)"></snice-sparkline>
59
+ <snice-sparkline custom-color="hsl(270, 80%, 60%)"></snice-sparkline>
60
+
61
+ <!-- Sizing -->
62
+ <snice-sparkline width="200" height="50"></snice-sparkline>
63
+
64
+ <!-- Custom scale -->
65
+ <snice-sparkline min="0" max="100"></snice-sparkline>
66
+
67
+ <!-- Combined features -->
68
+ <snice-sparkline
69
+ id="advanced"
70
+ type="line"
71
+ color="primary"
72
+ width="150"
73
+ height="40"
74
+ smooth
75
+ show-area
76
+ min="0">
77
+ </snice-sparkline>
78
+ ```
79
+
80
+ ## CSS Parts
81
+
82
+ ```css
83
+ ::part(container) /* Container div */
84
+ ::part(svg) /* SVG element */
85
+ ::part(line) /* Line/path element */
86
+ ::part(area) /* Area polygon/path */
87
+ ::part(bar) /* Bar rect */
88
+ ::part(dot) /* Dot circle */
89
+ ```
90
+
91
+ ## Styling
92
+
93
+ ```css
94
+ --snice-color-primary
95
+ --snice-color-success
96
+ --snice-color-warning
97
+ --snice-color-danger
98
+ --snice-color-text-secondary
99
+ ```
100
+
101
+ ## In Tables
102
+
103
+ ```html
104
+ <snice-table id="table"></snice-table>
105
+ <script>
106
+ document.getElementById('table').data = [
107
+ {
108
+ product: 'A',
109
+ trend: [10, 15, 12, 18, 22, 25]
110
+ }
111
+ ];
112
+
113
+ document.getElementById('table').columns = [
114
+ { key: 'product', label: 'Product' },
115
+ {
116
+ key: 'trend',
117
+ label: 'Trend',
118
+ render: (value) => {
119
+ const sparkline = document.createElement('snice-sparkline');
120
+ sparkline.data = value;
121
+ sparkline.width = 80;
122
+ sparkline.height = 25;
123
+ sparkline.color = 'primary';
124
+ return sparkline;
125
+ }
126
+ }
127
+ ];
128
+ </script>
129
+ ```
130
+
131
+ ## Common Patterns
132
+
133
+ ```html
134
+ <!-- Website traffic -->
135
+ <snice-sparkline
136
+ id="traffic"
137
+ color="primary"
138
+ width="150"
139
+ height="40"
140
+ smooth
141
+ show-area>
142
+ </snice-sparkline>
143
+
144
+ <!-- Sales bars -->
145
+ <snice-sparkline
146
+ id="sales"
147
+ type="bar"
148
+ color="success"
149
+ width="150"
150
+ height="40">
151
+ </snice-sparkline>
152
+
153
+ <!-- Response time with dots -->
154
+ <snice-sparkline
155
+ id="response"
156
+ color="warning"
157
+ smooth
158
+ show-dots>
159
+ </snice-sparkline>
160
+
161
+ <!-- Error rate -->
162
+ <snice-sparkline
163
+ id="errors"
164
+ type="area"
165
+ color="danger"
166
+ min="0">
167
+ </snice-sparkline>
168
+ ```
@@ -0,0 +1,47 @@
1
+ # snice-spinner
2
+
3
+ Animated loading spinner.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ size: 'small'|'medium'|'large'|'xl' = 'medium';
9
+ color: 'primary'|'success'|'warning'|'error'|'info' = 'primary';
10
+ label: string = '';
11
+ thickness: number = 4;
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ```html
17
+ <!-- Basic -->
18
+ <snice-spinner></snice-spinner>
19
+
20
+ <!-- Sizes -->
21
+ <snice-spinner size="small"></snice-spinner>
22
+ <snice-spinner size="medium"></snice-spinner>
23
+ <snice-spinner size="large"></snice-spinner>
24
+ <snice-spinner size="xl"></snice-spinner>
25
+
26
+ <!-- Colors -->
27
+ <snice-spinner color="primary"></snice-spinner>
28
+ <snice-spinner color="success"></snice-spinner>
29
+ <snice-spinner color="warning"></snice-spinner>
30
+ <snice-spinner color="error"></snice-spinner>
31
+ <snice-spinner color="info"></snice-spinner>
32
+
33
+ <!-- With label -->
34
+ <snice-spinner label="Loading..."></snice-spinner>
35
+
36
+ <!-- Custom thickness -->
37
+ <snice-spinner thickness="6"></snice-spinner>
38
+ ```
39
+
40
+ ## Features
41
+
42
+ - Smooth circular animation
43
+ - 4 sizes
44
+ - 5 color variants
45
+ - Optional label
46
+ - Accessible (role=status, aria-label)
47
+ - Lightweight SVG-based
@@ -0,0 +1,216 @@
1
+ # snice-stepper
2
+
3
+ Step indicator for multi-step processes, wizards, workflows. Shows progress with pending/active/completed/error states.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ steps: Step[] = [] // Array of step objects
9
+ currentStep: number = 0 // Current active step index
10
+ orientation: StepperOrientation = 'horizontal' // 'horizontal' | 'vertical'
11
+ clickable: boolean = false // Enable click navigation
12
+
13
+ // Step object:
14
+ {
15
+ label: string; // Step label (required)
16
+ description?: string; // Optional description
17
+ status?: StepStatus; // Override auto status: 'pending' | 'active' | 'completed' | 'error'
18
+ }
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```html
24
+ <!-- Basic horizontal -->
25
+ <snice-stepper id="basic"></snice-stepper>
26
+ <script>
27
+ document.getElementById('basic').steps = [
28
+ { label: 'Step 1' },
29
+ { label: 'Step 2' },
30
+ { label: 'Step 3' }
31
+ ];
32
+ document.getElementById('basic').currentStep = 1;
33
+ </script>
34
+
35
+ <!-- With panels (auto show/hide) -->
36
+ <snice-stepper id="wizard" clickable></snice-stepper>
37
+ <snice-stepper-panel>Step 1 content</snice-stepper-panel>
38
+ <snice-stepper-panel>Step 2 content</snice-stepper-panel>
39
+ <snice-stepper-panel>Step 3 content</snice-stepper-panel>
40
+ <script>
41
+ document.getElementById('wizard').steps = [
42
+ { label: 'Account' },
43
+ { label: 'Profile' },
44
+ { label: 'Complete' }
45
+ ];
46
+ </script>
47
+
48
+ <!-- Vertical with descriptions -->
49
+ <snice-stepper id="vertical" orientation="vertical"></snice-stepper>
50
+ <script>
51
+ document.getElementById('vertical').steps = [
52
+ { label: 'Account', description: 'Create your account' },
53
+ { label: 'Profile', description: 'Personal info' },
54
+ { label: 'Complete', description: 'Finish setup' }
55
+ ];
56
+ </script>
57
+
58
+ <!-- Clickable navigation -->
59
+ <snice-stepper id="wizard" clickable></snice-stepper>
60
+ <script>
61
+ const wizard = document.getElementById('wizard');
62
+ wizard.steps = [
63
+ { label: 'Cart' },
64
+ { label: 'Delivery' },
65
+ { label: 'Payment' },
66
+ { label: 'Confirm' }
67
+ ];
68
+
69
+ wizard.addEventListener('step-change', (e) => {
70
+ console.log(e.detail.previousStep); // Previous step index
71
+ console.log(e.detail.currentStep); // New step index
72
+ console.log(e.detail.step); // Step object
73
+ // e.preventDefault(); to cancel navigation
74
+ });
75
+ </script>
76
+
77
+ <!-- Error state -->
78
+ <snice-stepper id="validation"></snice-stepper>
79
+ <script>
80
+ document.getElementById('validation').steps = [
81
+ { label: 'Upload', status: 'completed' },
82
+ { label: 'Validate', status: 'error' },
83
+ { label: 'Process', status: 'pending' }
84
+ ];
85
+ </script>
86
+
87
+ <!-- Programmatic navigation -->
88
+ <script>
89
+ const stepper = document.getElementById('my-stepper');
90
+ stepper.currentStep++; // Next
91
+ stepper.currentStep--; // Previous
92
+ stepper.currentStep = 2; // Go to step 3
93
+ </script>
94
+ ```
95
+
96
+ ## Events
97
+
98
+ ```javascript
99
+ // step-change (only in clickable mode)
100
+ stepper.addEventListener('step-change', (e) => {
101
+ const { previousStep, currentStep, step } = e.detail;
102
+ e.preventDefault(); // Cancel navigation if needed
103
+ });
104
+ ```
105
+
106
+ ## CSS Parts
107
+
108
+ ```css
109
+ ::part(container) /* Main container */
110
+ ::part(step) /* Individual step */
111
+ ::part(step-indicator) /* Circular indicator */
112
+ ::part(step-content) /* Label + description wrapper */
113
+ ::part(step-label) /* Step label text */
114
+ ::part(step-description) /* Description text */
115
+ ::part(step-connector) /* Line between steps */
116
+ ```
117
+
118
+ ## Styling
119
+
120
+ ```css
121
+ --snice-color-primary /* Active state */
122
+ --snice-color-success /* Completed state */
123
+ --snice-color-danger /* Error state */
124
+ --snice-color-text
125
+ --snice-color-text-secondary /* Pending state */
126
+ --snice-color-text-inverse /* Indicator text */
127
+ --snice-color-background
128
+ --snice-color-border
129
+ --snice-spacing-xs
130
+ --snice-spacing-sm
131
+ --snice-spacing-md
132
+ --snice-spacing-lg
133
+ --snice-font-size-xs
134
+ --snice-font-size-sm
135
+ --snice-font-weight-medium
136
+ --snice-font-weight-semibold
137
+ --snice-transition-fast
138
+ ```
139
+
140
+ ## Common Patterns
141
+
142
+ ```html
143
+ <!-- Checkout flow -->
144
+ <snice-stepper id="checkout" clickable></snice-stepper>
145
+ <button onclick="document.getElementById('checkout').currentStep--">Back</button>
146
+ <button onclick="document.getElementById('checkout').currentStep++">Next</button>
147
+ <script>
148
+ document.getElementById('checkout').steps = [
149
+ { label: 'Cart', description: 'Review items' },
150
+ { label: 'Delivery', description: 'Shipping address' },
151
+ { label: 'Payment', description: 'Billing info' },
152
+ { label: 'Confirm', description: 'Place order' }
153
+ ];
154
+ </script>
155
+
156
+ <!-- Onboarding wizard (vertical) -->
157
+ <snice-stepper id="onboarding" orientation="vertical" clickable></snice-stepper>
158
+ <script>
159
+ document.getElementById('onboarding').steps = [
160
+ { label: 'Welcome' },
161
+ { label: 'Profile Setup' },
162
+ { label: 'Preferences' },
163
+ { label: 'Get Started' }
164
+ ];
165
+ </script>
166
+
167
+ <!-- Form validation -->
168
+ <snice-stepper id="form"></snice-stepper>
169
+ <script>
170
+ document.getElementById('form').steps = [
171
+ { label: 'Personal Info', status: 'completed' },
172
+ { label: 'Address', status: 'error' }, // Has validation error
173
+ { label: 'Review', status: 'pending' }
174
+ ];
175
+ </script>
176
+
177
+ <!-- Progress tracker -->
178
+ <snice-stepper id="upload"></snice-stepper>
179
+ <script>
180
+ const upload = document.getElementById('upload');
181
+ upload.steps = [
182
+ { label: 'Upload', status: 'completed' },
183
+ { label: 'Process', status: 'active' },
184
+ { label: 'Complete', status: 'pending' }
185
+ ];
186
+ upload.currentStep = 1;
187
+ </script>
188
+ ```
189
+
190
+ ## Stepper Panels
191
+
192
+ ```html
193
+ <!-- Panels auto show/hide based on currentStep -->
194
+ <snice-stepper id="wizard"></snice-stepper>
195
+ <snice-stepper-panel>Content for step 0</snice-stepper-panel>
196
+ <snice-stepper-panel>Content for step 1</snice-stepper-panel>
197
+ <snice-stepper-panel>Content for step 2</snice-stepper-panel>
198
+ ```
199
+
200
+ - Panels must be direct children of stepper
201
+ - Panel index matches order (first panel = step 0, etc.)
202
+ - Automatically activated when stepper.currentStep changes
203
+ - Only active panel is visible (display: block), others hidden
204
+
205
+ ## Notes
206
+
207
+ - Status auto-computed from currentStep if not explicitly set:
208
+ - Steps before currentStep: 'completed' (shows ✓)
209
+ - Step at currentStep: 'active'
210
+ - Steps after currentStep: 'pending'
211
+ - Completed steps show checkmark (✓) instead of number
212
+ - Connector lines auto-hidden on last step
213
+ - Click events only work when clickable=true
214
+ - step-change event is cancelable via preventDefault()
215
+ - Orientation affects layout but not behavior
216
+ - Panels sync automatically via @watch decorator on currentStep