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
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * snice v2.5.3
3
- * Imperative TypeScript framework for building vanilla web components with decorators, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v3.1.0
3
+ * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
@@ -36,6 +36,8 @@ const CHANNEL_HANDLERS = getSymbol('channel-handlers');
36
36
  // Internal element state symbols
37
37
  const READY_PROMISE = getSymbol('ready-promise');
38
38
  const READY_RESOLVE = getSymbol('ready-resolve');
39
+ const RENDERED_PROMISE = getSymbol('rendered-promise');
40
+ const RENDERED_RESOLVE = getSymbol('rendered-resolve');
39
41
  const CONTROLLER = getSymbol('controller');
40
42
  const INITIALIZED = getSymbol('initialized');
41
43
  // Event handler symbols
@@ -51,6 +53,7 @@ const CLEANUP = getSymbol('cleanup');
51
53
  // Property symbols
52
54
  const PROPERTIES = getSymbol('properties');
53
55
  const PROPERTY_VALUES = getSymbol('property-values');
56
+ const PRE_INIT_PROPERTY_VALUES = getSymbol('pre-init-property-values');
54
57
  const PROPERTIES_INITIALIZED = getSymbol('properties-initialized');
55
58
  const PROPERTY_WATCHERS = getSymbol('property-watchers');
56
59
  const EXPLICITLY_SET_PROPERTIES = getSymbol('explicitly-set-properties');
@@ -75,6 +78,27 @@ const MOVED_TIMERS = getSymbol('moved-timers');
75
78
  const ADOPTED_TIMERS = getSymbol('adopted-timers');
76
79
  // Dispatch timing symbols
77
80
  const DISPATCH_TIMERS = getSymbol('dispatch-timers');
81
+ // Render symbols (v3.0.0)
82
+ const RENDER_METHOD = getSymbol('render-method');
83
+ const RENDER_OPTIONS = getSymbol('render-options');
84
+ const RENDER_INSTANCE = getSymbol('render-instance');
85
+ const RENDER_SCHEDULED = getSymbol('render-scheduled');
86
+ const RENDER_TIMERS = getSymbol('render-timers');
87
+ const RENDER_CALLBACKS = getSymbol('render-callbacks');
88
+ const STYLES_METHOD = getSymbol('styles-method');
89
+ const STYLES_APPLIED = getSymbol('styles-applied');
90
+ // Navigation context symbols
91
+ const CONTEXT_HANDLER = getSymbol('context-handler');
92
+ const CONTEXT_METHOD_NAME = getSymbol('context-method-name');
93
+ const NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');
94
+ const REGISTERED_ELEMENTS = getSymbol('registered-elements');
95
+ const IS_UPDATING = getSymbol('is-updating');
96
+ const CONTEXT_REGISTER = getSymbol('context-register');
97
+ const CONTEXT_UNREGISTER = getSymbol('context-unregister');
98
+ const CONTEXT_NOTIFY_ELEMENT = getSymbol('context-notify-element');
99
+ const CONTEXT_OPTIONS = getSymbol('context-options');
100
+ const CONTEXT_TIMER = getSymbol('context-timer');
101
+ const CONTEXT_CALLED = getSymbol('context-called');
78
102
 
79
- export { ADOPTED_HANDLERS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_REQUEST_HANDLER, CONTROLLER, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, MOVED_HANDLERS, MOVED_TIMERS, NATIVE_CONTROLLER, OBSERVERS, ON_HANDLERS, PAGE_TRANSITION, PARTS, PART_TIMERS, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_PROMISE, READY_RESOLVE, ROUTER_CONTEXT, getSymbol };
103
+ export { ADOPTED_HANDLERS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_CALLED, CONTEXT_HANDLER, CONTEXT_METHOD_NAME, CONTEXT_NOTIFY_ELEMENT, CONTEXT_OPTIONS, CONTEXT_REGISTER, CONTEXT_REQUEST_HANDLER, CONTEXT_TIMER, CONTEXT_UNREGISTER, CONTROLLER, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, IS_UPDATING, MOVED_HANDLERS, MOVED_TIMERS, NATIVE_CONTROLLER, NAVIGATION_CONTEXT_INSTANCE, OBSERVERS, ON_HANDLERS, PAGE_TRANSITION, PARTS, PART_TIMERS, PRE_INIT_PROPERTY_VALUES, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_PROMISE, READY_RESOLVE, REGISTERED_ELEMENTS, RENDERED_PROMISE, RENDERED_RESOLVE, RENDER_CALLBACKS, RENDER_INSTANCE, RENDER_METHOD, RENDER_OPTIONS, RENDER_SCHEDULED, RENDER_TIMERS, ROUTER_CONTEXT, STYLES_APPLIED, STYLES_METHOD, getSymbol };
80
104
  //# sourceMappingURL=symbols.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;AAAA;AACA;AAKA;AACA,SAAS,mBAAmB,GAAA;AAC1B,IAAA,IAAI,CAAE,UAAkB,CAAC,KAAK,EAAE;QAC7B,UAAkB,CAAC,KAAK,GAAG;YAC1B,kBAAkB,EAAE,IAAI,GAAG,EAAE;AAC7B,YAAA,mBAAmB,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,GAAG;SACjB;IACH;IACA,OAAQ,UAAkB,CAAC,KAAK;AAClC;AAEA;AACO,MAAM,KAAK,GAAG,mBAAmB,EAAE;AAE1C;AACM,SAAU,SAAS,CAAC,IAAY,EAAA;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5B,QAAA,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC;IACA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE;AACjC;;AC3BA;AACA;MAMa,mBAAmB,GAAG,SAAS,CAAC,qBAAqB;MACrD,sBAAsB,GAAG,SAAS,CAAC,wBAAwB;MAC3D,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;AAE5D;MACa,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,UAAU,GAAG,SAAS,CAAC,YAAY;MACnC,WAAW,GAAG,SAAS,CAAC,aAAa;AAElD;MACa,WAAW,GAAG,SAAS,CAAC,aAAa;AAElD;MACa,cAAc,GAAG,SAAS,CAAC,gBAAgB;MAC3C,mBAAmB,GAAG,SAAS,CAAC,iBAAiB;MACjD,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,qBAAqB,GAAG,SAAS,CAAC,uBAAuB;MACzD,iBAAiB,GAAG,SAAS,CAAC,mBAAmB;AAE9D;MACa,OAAO,GAAG,SAAS,CAAC,SAAS;AAE1C;MACa,UAAU,GAAG,SAAS,CAAC,YAAY;MACnC,eAAe,GAAG,SAAS,CAAC,iBAAiB;MAC7C,sBAAsB,GAAG,SAAS,CAAC,wBAAwB;MAC3D,iBAAiB,GAAG,SAAS,CAAC,mBAAmB;MACjD,yBAAyB,GAAG,SAAS,CAAC,2BAA2B;AAE9E;MACa,cAAc,GAAG,SAAS,CAAC,gBAAgB;MAC3C,mBAAmB,GAAG,SAAS,CAAC,qBAAqB;MACrD,uBAAuB,GAAG,SAAS,CAAC,yBAAyB;MAC7D,eAAe,GAAG,SAAS,CAAC,iBAAiB;MAC7C,UAAU,GAAG,SAAS,CAAC,YAAY;AAEhD;MACa,cAAc,GAAG,SAAS,CAAC,gBAAgB;MAC3C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,cAAc,GAAG,SAAS,CAAC,gBAAgB;MAC3C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;AAE5D;MACa,SAAS,GAAG,SAAS,CAAC,WAAW;AAE9C;MACa,KAAK,GAAG,SAAS,CAAC,OAAO;MACzB,WAAW,GAAG,SAAS,CAAC,aAAa;AAElD;MACa,YAAY,GAAG,SAAS,CAAC,cAAc;MACvC,cAAc,GAAG,SAAS,CAAC,gBAAgB;AAExD;MACa,eAAe,GAAG,SAAS,CAAC,iBAAiB;;;;"}
1
+ {"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Template system for Snice v3.0.0
3
+ * Provides html`` and css`` tagged template processors with differential rendering
4
+ */
5
+ export declare const HTML_RESULT: unique symbol;
6
+ export declare const CSS_RESULT: unique symbol;
7
+ /**
8
+ * Result of html`` tagged template
9
+ * Contains static strings and dynamic values for differential rendering
10
+ */
11
+ export interface TemplateResult {
12
+ readonly _$litType$: typeof HTML_RESULT;
13
+ readonly strings: TemplateStringsArray;
14
+ readonly values: readonly any[];
15
+ }
16
+ /**
17
+ * Result of css`` tagged template
18
+ * Contains CSS text for style injection
19
+ */
20
+ export interface CSSResult {
21
+ readonly _$litType$: typeof CSS_RESULT;
22
+ readonly cssText: string;
23
+ styleSheet?: CSSStyleSheet;
24
+ }
25
+ /**
26
+ * Tagged template function for creating HTML templates
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * html`<div class="card">
31
+ * <h1>${this.title}</h1>
32
+ * <button @click=${this.handleClick}>Click me</button>
33
+ * </div>`
34
+ * ```
35
+ */
36
+ export declare function html(strings: TemplateStringsArray, ...values: any[]): TemplateResult;
37
+ /**
38
+ * Tagged template function for creating CSS
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * css`:host {
43
+ * display: block;
44
+ * padding: 1rem;
45
+ * }`
46
+ * ```
47
+ */
48
+ export declare function css(strings: TemplateStringsArray, ...values: any[]): CSSResult;
49
+ /**
50
+ * Check if a value is a TemplateResult
51
+ */
52
+ export declare function isTemplateResult(value: any): value is TemplateResult;
53
+ /**
54
+ * Check if a value is a CSSResult
55
+ */
56
+ export declare function isCSSResult(value: any): value is CSSResult;
57
+ /**
58
+ * Type guard for primitive values
59
+ */
60
+ export declare function isPrimitive(value: any): boolean;
61
+ /**
62
+ * Sanitize HTML to prevent XSS
63
+ * Only allows safe HTML, escapes dangerous content
64
+ */
65
+ export declare function sanitize(value: any): string;
66
+ /**
67
+ * Nothing - represents no value (different from null/undefined)
68
+ * Used to remove content from templates
69
+ */
70
+ export declare const nothing: unique symbol;
71
+ /**
72
+ * Type for template values that represent "no content"
73
+ */
74
+ export type Nothing = typeof nothing;
75
+ declare const UNSAFE_HTML: unique symbol;
76
+ /**
77
+ * Wrapper for raw HTML strings that should not be escaped
78
+ * WARNING: Only use with sanitized/trusted content to prevent XSS
79
+ */
80
+ export interface UnsafeHTML {
81
+ readonly _$litType$: typeof UNSAFE_HTML;
82
+ readonly html: string;
83
+ }
84
+ /**
85
+ * Mark a string as raw HTML that should not be escaped
86
+ * WARNING: Only use with sanitized content - using user input can lead to XSS!
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const htmlString = '<span class="bold">Hello</span>';
91
+ * html`<div>${unsafeHTML(htmlString)}</div>`
92
+ * ```
93
+ */
94
+ export declare function unsafeHTML(html: string): UnsafeHTML;
95
+ /**
96
+ * Check if a value is an UnsafeHTML wrapper
97
+ */
98
+ export declare function isUnsafeHTML(value: any): value is UnsafeHTML;
99
+ export {};
@@ -0,0 +1,219 @@
1
+ /*!
2
+ * snice v3.1.0
3
+ * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
+ * (c) 2024
5
+ * Released under the MIT License.
6
+ */
7
+ 'use strict';
8
+
9
+ /**
10
+ * Generic transition system for animating between elements
11
+ */
12
+ /**
13
+ * Parse CSS property string into an object
14
+ */
15
+ function parseStyles(styleString) {
16
+ const styles = {};
17
+ styleString.split(';').forEach(rule => {
18
+ const [prop, value] = rule.split(':').map(s => s.trim());
19
+ if (prop && value) {
20
+ styles[prop] = value;
21
+ }
22
+ });
23
+ return styles;
24
+ }
25
+ /**
26
+ * Perform a transition between two elements
27
+ */
28
+ async function performTransition(container, oldElement, newElement, transition = {}) {
29
+ const outDuration = transition.outDuration || 300;
30
+ const inDuration = transition.inDuration || 300;
31
+ const mode = transition.mode || 'sequential';
32
+ // Default transitions
33
+ const outStyles = transition.out ? parseStyles(transition.out) : { opacity: '0' };
34
+ const inStartStyles = { opacity: '0' }; // Always start invisible
35
+ const inEndStyles = transition.in ? parseStyles(transition.in) : { opacity: '1' };
36
+ // Set container to relative positioning to allow absolute positioning
37
+ // Skip for layout elements to avoid jumpy transitions
38
+ const containerStyle = container.style;
39
+ const originalPosition = containerStyle.position;
40
+ const isLayoutElement = container.tagName.includes('-') && container.shadowRoot;
41
+ if (!isLayoutElement) {
42
+ containerStyle.position = 'relative';
43
+ }
44
+ // Check if elements are slotted (inside a layout)
45
+ const isSlottedTransition = oldElement.hasAttribute('slot') || newElement.hasAttribute('slot');
46
+ if (isSlottedTransition) {
47
+ // For slotted elements, use absolute with width/height for crossfade
48
+ oldElement.style.position = 'absolute';
49
+ oldElement.style.width = '100%';
50
+ oldElement.style.height = '100%';
51
+ oldElement.style.transition = `opacity ${outDuration}ms ease-in-out`;
52
+ newElement.style.position = 'absolute';
53
+ newElement.style.width = '100%';
54
+ newElement.style.height = '100%';
55
+ newElement.style.transition = `opacity ${inDuration}ms ease-in-out`;
56
+ }
57
+ else {
58
+ // Original absolute positioning for non-slotted elements
59
+ oldElement.style.position = 'absolute';
60
+ oldElement.style.top = '0';
61
+ oldElement.style.left = '0';
62
+ oldElement.style.width = '100%';
63
+ oldElement.style.transition = `all ${outDuration}ms ease-in-out`;
64
+ newElement.style.position = 'absolute';
65
+ newElement.style.top = '0';
66
+ newElement.style.left = '0';
67
+ newElement.style.width = '100%';
68
+ }
69
+ Object.assign(newElement.style, inStartStyles);
70
+ newElement.style.transition = `all ${inDuration}ms ease-in-out`;
71
+ // Add new element to container
72
+ container.appendChild(newElement);
73
+ // Force browser to calculate styles
74
+ void newElement.offsetHeight;
75
+ if (mode === 'simultaneous') {
76
+ // Start both transitions at once
77
+ Object.assign(oldElement.style, outStyles);
78
+ Object.assign(newElement.style, inEndStyles);
79
+ // Wait for both transitions to complete
80
+ await new Promise(resolve => setTimeout(resolve, Math.max(outDuration, inDuration)));
81
+ }
82
+ else {
83
+ // Sequential: transition out old, then transition in new
84
+ Object.assign(oldElement.style, outStyles);
85
+ await new Promise(resolve => setTimeout(resolve, outDuration));
86
+ Object.assign(newElement.style, inEndStyles);
87
+ await new Promise(resolve => setTimeout(resolve, inDuration));
88
+ }
89
+ // Cleanup
90
+ oldElement.remove();
91
+ if (isSlottedTransition) {
92
+ // Cleanup for slotted elements
93
+ newElement.style.position = '';
94
+ newElement.style.width = '';
95
+ newElement.style.height = '';
96
+ newElement.style.transition = '';
97
+ }
98
+ else {
99
+ // Cleanup for non-slotted elements
100
+ newElement.style.position = '';
101
+ newElement.style.top = '';
102
+ newElement.style.left = '';
103
+ newElement.style.width = '';
104
+ newElement.style.transition = '';
105
+ }
106
+ // Reset any transition styles
107
+ Object.keys({ ...inStartStyles, ...inEndStyles }).forEach(prop => {
108
+ newElement.style[prop] = '';
109
+ });
110
+ if (!isLayoutElement) {
111
+ containerStyle.position = originalPosition;
112
+ }
113
+ }
114
+ /**
115
+ * Predefined transitions
116
+ */
117
+ // Fade transition
118
+ const fadeTransition = {
119
+ name: 'fade',
120
+ outDuration: 200,
121
+ inDuration: 200,
122
+ out: 'opacity: 0',
123
+ in: 'opacity: 1',
124
+ mode: 'simultaneous'
125
+ };
126
+ // Slide transition (from left)
127
+ const slideTransition = {
128
+ name: 'slide',
129
+ outDuration: 300,
130
+ inDuration: 300,
131
+ out: 'transform: translateX(-100%)',
132
+ in: 'transform: translateX(0)',
133
+ mode: 'sequential'
134
+ };
135
+ // Slide from right
136
+ const slideRightTransition = {
137
+ name: 'slide-right',
138
+ outDuration: 300,
139
+ inDuration: 300,
140
+ out: 'transform: translateX(100%)',
141
+ in: 'transform: translateX(0)',
142
+ mode: 'sequential'
143
+ };
144
+ // Slide from top
145
+ const slideUpTransition = {
146
+ name: 'slide-up',
147
+ outDuration: 300,
148
+ inDuration: 300,
149
+ out: 'transform: translateY(-100%)',
150
+ in: 'transform: translateY(0)',
151
+ mode: 'sequential'
152
+ };
153
+ // Slide from bottom
154
+ const slideDownTransition = {
155
+ name: 'slide-down',
156
+ outDuration: 300,
157
+ inDuration: 300,
158
+ out: 'transform: translateY(100%)',
159
+ in: 'transform: translateY(0)',
160
+ mode: 'sequential'
161
+ };
162
+ // Scale transition
163
+ const scaleTransition = {
164
+ name: 'scale',
165
+ outDuration: 250,
166
+ inDuration: 250,
167
+ out: 'transform: scale(0.9); opacity: 0',
168
+ in: 'transform: scale(1); opacity: 1',
169
+ mode: 'simultaneous'
170
+ };
171
+ // Rotate transition
172
+ const rotateTransition = {
173
+ name: 'rotate',
174
+ outDuration: 400,
175
+ inDuration: 400,
176
+ out: 'transform: rotate(180deg) scale(0.5); opacity: 0',
177
+ in: 'transform: rotate(0) scale(1); opacity: 1',
178
+ mode: 'simultaneous'
179
+ };
180
+ // Flip transition
181
+ const flipTransition = {
182
+ name: 'flip',
183
+ outDuration: 400,
184
+ inDuration: 400,
185
+ out: 'transform: rotateY(180deg); opacity: 0',
186
+ in: 'transform: rotateY(0); opacity: 1',
187
+ mode: 'sequential'
188
+ };
189
+ // Zoom transition
190
+ const zoomTransition = {
191
+ name: 'zoom',
192
+ outDuration: 300,
193
+ inDuration: 300,
194
+ out: 'transform: scale(2); opacity: 0',
195
+ in: 'transform: scale(1); opacity: 1',
196
+ mode: 'simultaneous'
197
+ };
198
+ // None transition (instant swap)
199
+ const noneTransition = {
200
+ name: 'none',
201
+ outDuration: 0,
202
+ inDuration: 0,
203
+ out: '',
204
+ in: '',
205
+ mode: 'simultaneous'
206
+ };
207
+
208
+ exports.fadeTransition = fadeTransition;
209
+ exports.flipTransition = flipTransition;
210
+ exports.noneTransition = noneTransition;
211
+ exports.performTransition = performTransition;
212
+ exports.rotateTransition = rotateTransition;
213
+ exports.scaleTransition = scaleTransition;
214
+ exports.slideDownTransition = slideDownTransition;
215
+ exports.slideRightTransition = slideRightTransition;
216
+ exports.slideTransition = slideTransition;
217
+ exports.slideUpTransition = slideUpTransition;
218
+ exports.zoomTransition = zoomTransition;
219
+ //# sourceMappingURL=transitions.cjs.map
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * snice v2.5.3
3
- * Imperative TypeScript framework for building vanilla web components with decorators, routing, and controllers. No virtual DOM, no build complexity.
2
+ * snice v3.1.0
3
+ * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
@@ -0,0 +1,48 @@
1
+ import { AppContext } from './app-context';
2
+ import { NavContext } from './nav-context';
3
+ import { Placard } from './placard';
4
+ import { RouteParams } from './route-params';
5
+ import { REGISTERED_ELEMENTS, IS_UPDATING, CONTEXT_REGISTER, CONTEXT_UNREGISTER, CONTEXT_NOTIFY_ELEMENT } from '../symbols';
6
+ declare const REGISTERED_ELEMENTS_SET: unique symbol;
7
+ /**
8
+ * Represents the bundled router state that can notify registered elements of changes
9
+ */
10
+ export declare class Context {
11
+ [REGISTERED_ELEMENTS]: WeakMap<HTMLElement, string>;
12
+ [IS_UPDATING]: boolean;
13
+ /**
14
+ * Register an element to receive context updates
15
+ * @internal Used by @context decorator
16
+ */
17
+ [CONTEXT_REGISTER]: (element: HTMLElement, methodName: string) => void;
18
+ /**
19
+ * Unregister an element from receiving context updates
20
+ * @internal Used by @context decorator cleanup
21
+ */
22
+ [CONTEXT_UNREGISTER]: (element: HTMLElement) => void;
23
+ /**
24
+ * Notify a specific element of the current context state
25
+ * @internal Used by @context decorator
26
+ */
27
+ [CONTEXT_NOTIFY_ELEMENT]: (element: HTMLElement) => void;
28
+ private [REGISTERED_ELEMENTS_SET];
29
+ /**
30
+ * Unique immutable identifier for this context instance
31
+ */
32
+ readonly id: number;
33
+ /**
34
+ * Application context (theme, auth, config, etc.)
35
+ */
36
+ application: AppContext;
37
+ /**
38
+ * Navigation state
39
+ */
40
+ navigation: NavContext;
41
+ constructor(context?: AppContext, placards?: Placard[], currentRoute?: string, routeParams?: RouteParams);
42
+ /**
43
+ * Update the context and notify all registered elements
44
+ * Prevents infinite loops by tracking update state
45
+ */
46
+ update(context: AppContext, placards: Placard[], currentRoute: string, routeParams: RouteParams): void;
47
+ }
48
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Options for configuring custom elements via the @element decorator
3
+ */
4
+ export interface ElementOptions {
5
+ /**
6
+ * Whether this element is form-associated.
7
+ * Form-associated elements can participate in form submission and validation.
8
+ * When true, the element will have access to ElementInternals for form integration.
9
+ *
10
+ * @default false
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * @element('my-input', { formAssociated: true })
15
+ * class MyInput extends HTMLElement {
16
+ * private internals!: ElementInternals;
17
+ *
18
+ * constructor() {
19
+ * super();
20
+ * this.internals = this.attachInternals();
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ formAssociated?: boolean;
26
+ }
@@ -1,9 +1,25 @@
1
- export { element, layout, property, query, queryAll, watch, context, applyElementFunctionality, ready, dispose, moved, adopted, part } from './element';
2
- export type { Layout } from './element';
3
- export { Router } from './router';
4
- export { controller, useNativeElementControllers } from './controller';
5
- export { on, dispatch } from './events';
6
- export { observe } from './observe';
7
- export { request, respond } from './request-response';
8
- export { IS_CONTROLLER_INSTANCE, getSymbol } from './symbols';
9
- export * from './types';
1
+ export * from './query-options';
2
+ export * from './property-options';
3
+ export * from './property-converter';
4
+ export * from './snice-element';
5
+ export * from './part-options';
6
+ export * from './moved-options';
7
+ export * from './adopted-options';
8
+ export * from './element-options';
9
+ export * from './simple-array';
10
+ export * from './router-options';
11
+ export * from './page-options';
12
+ export * from './router-instance';
13
+ export * from './on-options';
14
+ export * from './dispatch-options';
15
+ export * from './i-controller';
16
+ export * from './transition';
17
+ export * from './observe-options';
18
+ export * from './request-options';
19
+ export * from './respond-options';
20
+ export * from './snice-global';
21
+ export * from './placard';
22
+ export * from './guard';
23
+ export * from './route-params';
24
+ export * from './app-context';
25
+ export * from './context';
@@ -0,0 +1,19 @@
1
+ import { Placard } from './placard';
2
+ import { RouteParams } from './route-params';
3
+ /**
4
+ * Navigation context containing route state
5
+ */
6
+ export interface NavContext {
7
+ /**
8
+ * All registered placards from pages
9
+ */
10
+ placards: Placard[];
11
+ /**
12
+ * Current route path
13
+ */
14
+ route: string;
15
+ /**
16
+ * Route parameters extracted from current route
17
+ */
18
+ params: RouteParams;
19
+ }
@@ -13,4 +13,6 @@ export interface OnOptions {
13
13
  debounce?: number;
14
14
  /** Throttle the handler by specified milliseconds */
15
15
  throttle?: number;
16
+ /** CSS selector to target specific elements within shadow root */
17
+ target?: string;
16
18
  }
@@ -77,7 +77,6 @@ export interface Placard<T = any> {
77
77
  show?: boolean;
78
78
  /**
79
79
  * Guard functions that determine if the page should appear in navigation.
80
- * Reuses the same guard system as route protection.
81
80
  * @example [isAuthenticated, hasAdminRole]
82
81
  */
83
82
  visibleOn?: Guard<T> | Guard<T>[];
@@ -0,0 +1,26 @@
1
+ # AI-Optimized Documentation
2
+
3
+ Token-efficient reference docs for AI assistants. Same content as human docs, minimal verbosity.
4
+
5
+ **Format:**
6
+ - Type signatures over prose
7
+ - Bullet points over paragraphs
8
+ - Code over explanations
9
+ - No tutorials, pure reference
10
+
11
+ **Files:**
12
+ - `api.md` - Complete API reference
13
+ - `patterns.md` - Common usage patterns
14
+ - `architecture.md` - System design
15
+ - `components/*.md` - Component reference (DO NOT read all upfront - read only as needed)
16
+
17
+ Read these instead of `/docs/*.md` for faster context loading.
18
+
19
+ ## Available Components
20
+
21
+ **IMPORTANT:** Do NOT read all component docs. Only read a component's doc when you need to use or reference it.
22
+
23
+ **Implemented Components:**
24
+ - accordion, accordion-item, alert, avatar, badge, banner, breadcrumbs, button, card, checkbox, chip, color-display, color-picker, date-picker, divider, drawer, empty-state, file-upload, image, input, login, modal, nav, progress, radio, select, skeleton, slider, spinner, switch, table, tabs, tab, textarea, timeline, tooltip
25
+
26
+ **To use a component:** Read `docs/ai/components/{component-name}.md` only when needed.