snice 3.1.0 → 3.3.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 (464) hide show
  1. package/README.md +90 -41
  2. package/dist/components/accordion/snice-accordion-item.d.ts +2 -2
  3. package/dist/components/accordion/snice-accordion-item.js +9 -9
  4. package/dist/components/accordion/snice-accordion-item.js.map +1 -1
  5. package/dist/components/accordion/snice-accordion.d.ts +2 -2
  6. package/dist/components/accordion/snice-accordion.js +9 -9
  7. package/dist/components/accordion/snice-accordion.js.map +1 -1
  8. package/dist/components/actions/snice-actions.d.ts +28 -0
  9. package/dist/components/actions/snice-actions.js +220 -0
  10. package/dist/components/actions/snice-actions.js.map +1 -0
  11. package/dist/components/actions/snice-actions.types.d.ts +27 -0
  12. package/dist/components/alert/snice-alert.d.ts +2 -2
  13. package/dist/components/alert/snice-alert.js +9 -9
  14. package/dist/components/alert/snice-alert.js.map +1 -1
  15. package/dist/components/audio-recorder/snice-audio-recorder.d.ts +58 -0
  16. package/dist/components/audio-recorder/snice-audio-recorder.js +413 -0
  17. package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -0
  18. package/dist/components/audio-recorder/snice-audio-recorder.types.d.ts +28 -0
  19. package/dist/components/avatar/snice-avatar.d.ts +2 -2
  20. package/dist/components/avatar/snice-avatar.js +9 -9
  21. package/dist/components/avatar/snice-avatar.js.map +1 -1
  22. package/dist/components/badge/snice-badge.d.ts +2 -2
  23. package/dist/components/badge/snice-badge.js +10 -10
  24. package/dist/components/badge/snice-badge.js.map +1 -1
  25. package/dist/components/banner/snice-banner.d.ts +22 -0
  26. package/dist/components/banner/snice-banner.js +180 -0
  27. package/dist/components/banner/snice-banner.js.map +1 -0
  28. package/dist/components/banner/snice-banner.types.d.ts +14 -0
  29. package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +2 -2
  30. package/dist/components/breadcrumbs/snice-breadcrumbs.js +9 -9
  31. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  32. package/dist/components/button/snice-button.d.ts +2 -2
  33. package/dist/components/button/snice-button.js +9 -9
  34. package/dist/components/button/snice-button.js.map +1 -1
  35. package/dist/components/calendar/snice-calendar.d.ts +46 -0
  36. package/dist/components/calendar/snice-calendar.js +294 -0
  37. package/dist/components/calendar/snice-calendar.js.map +1 -0
  38. package/dist/components/calendar/snice-calendar.types.d.ts +34 -0
  39. package/dist/components/camera/snice-camera.d.ts +39 -0
  40. package/dist/components/camera/snice-camera.js +286 -0
  41. package/dist/components/camera/snice-camera.js.map +1 -0
  42. package/dist/components/camera/snice-camera.types.d.ts +28 -0
  43. package/dist/components/card/snice-card.d.ts +2 -2
  44. package/dist/components/card/snice-card.js +9 -9
  45. package/dist/components/card/snice-card.js.map +1 -1
  46. package/dist/components/carousel/snice-carousel.d.ts +32 -0
  47. package/dist/components/carousel/snice-carousel.js +279 -0
  48. package/dist/components/carousel/snice-carousel.js.map +1 -0
  49. package/dist/components/carousel/snice-carousel.types.d.ts +22 -0
  50. package/dist/components/chart/snice-chart.d.ts +73 -0
  51. package/dist/components/chart/snice-chart.js +940 -0
  52. package/dist/components/chart/snice-chart.js.map +1 -0
  53. package/dist/components/chart/snice-chart.types.d.ts +71 -0
  54. package/dist/components/chat/snice-chat.d.ts +98 -0
  55. package/dist/components/chat/snice-chat.js +589 -0
  56. package/dist/components/chat/snice-chat.js.map +1 -0
  57. package/dist/components/chat/snice-chat.types.d.ts +141 -0
  58. package/dist/components/checkbox/snice-checkbox.d.ts +2 -2
  59. package/dist/components/checkbox/snice-checkbox.js +9 -9
  60. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  61. package/dist/components/chip/snice-chip.d.ts +2 -2
  62. package/dist/components/chip/snice-chip.js +9 -9
  63. package/dist/components/chip/snice-chip.js.map +1 -1
  64. package/dist/components/code-block/snice-code-block.d.ts +15 -0
  65. package/dist/components/code-block/snice-code-block.js +141 -0
  66. package/dist/components/code-block/snice-code-block.js.map +1 -0
  67. package/dist/components/code-block/snice-code-block.types.d.ts +15 -0
  68. package/dist/components/color-display/snice-color-display.d.ts +14 -0
  69. package/dist/components/color-display/snice-color-display.js +151 -0
  70. package/dist/components/color-display/snice-color-display.js.map +1 -0
  71. package/dist/components/color-display/snice-color-display.types.d.ts +10 -0
  72. package/dist/components/color-picker/snice-color-picker.d.ts +50 -0
  73. package/dist/components/color-picker/snice-color-picker.js +489 -0
  74. package/dist/components/color-picker/snice-color-picker.js.map +1 -0
  75. package/dist/components/color-picker/snice-color-picker.types.d.ts +19 -0
  76. package/dist/components/command-palette/snice-command-palette.d.ts +47 -0
  77. package/dist/components/command-palette/snice-command-palette.js +428 -0
  78. package/dist/components/command-palette/snice-command-palette.js.map +1 -0
  79. package/dist/components/command-palette/snice-command-palette.types.d.ts +49 -0
  80. package/dist/components/date-picker/snice-date-picker.d.ts +2 -2
  81. package/dist/components/date-picker/snice-date-picker.js +10 -10
  82. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  83. package/dist/components/divider/snice-divider.d.ts +2 -2
  84. package/dist/components/divider/snice-divider.js +9 -9
  85. package/dist/components/divider/snice-divider.js.map +1 -1
  86. package/dist/components/doc/snice-doc.d.ts +93 -0
  87. package/dist/components/doc/snice-doc.js +626 -0
  88. package/dist/components/doc/snice-doc.js.map +1 -0
  89. package/dist/components/doc/snice-doc.types.d.ts +118 -0
  90. package/dist/components/draw/snice-draw.d.ts +71 -0
  91. package/dist/components/draw/snice-draw.js +709 -0
  92. package/dist/components/draw/snice-draw.js.map +1 -0
  93. package/dist/components/draw/snice-draw.types.d.ts +41 -0
  94. package/dist/components/drawer/snice-drawer.d.ts +2 -2
  95. package/dist/components/drawer/snice-drawer.js +9 -9
  96. package/dist/components/drawer/snice-drawer.js.map +1 -1
  97. package/dist/components/empty-state/snice-empty-state.d.ts +13 -0
  98. package/dist/components/empty-state/snice-empty-state.js +121 -0
  99. package/dist/components/empty-state/snice-empty-state.js.map +1 -0
  100. package/dist/components/empty-state/snice-empty-state.types.d.ts +9 -0
  101. package/dist/components/file-upload/snice-file-upload.d.ts +44 -0
  102. package/dist/components/file-upload/snice-file-upload.js +387 -0
  103. package/dist/components/file-upload/snice-file-upload.js.map +1 -0
  104. package/dist/components/file-upload/snice-file-upload.types.d.ts +22 -0
  105. package/dist/components/gantt/snice-gantt.d.ts +29 -0
  106. package/dist/components/gantt/snice-gantt.js +268 -0
  107. package/dist/components/gantt/snice-gantt.js.map +1 -0
  108. package/dist/components/gantt/snice-gantt.types.d.ts +23 -0
  109. package/dist/components/image/snice-image.d.ts +22 -0
  110. package/dist/components/image/snice-image.js +201 -0
  111. package/dist/components/image/snice-image.js.map +1 -0
  112. package/dist/components/image/snice-image.types.d.ts +17 -0
  113. package/dist/components/input/snice-input.d.ts +2 -2
  114. package/dist/components/input/snice-input.js +9 -9
  115. package/dist/components/input/snice-input.js.map +1 -1
  116. package/dist/components/kanban/snice-kanban.d.ts +31 -0
  117. package/dist/components/kanban/snice-kanban.js +243 -0
  118. package/dist/components/kanban/snice-kanban.js.map +1 -0
  119. package/dist/components/kanban/snice-kanban.types.d.ts +29 -0
  120. package/dist/components/kpi/snice-kpi.d.ts +16 -0
  121. package/dist/components/kpi/snice-kpi.js +162 -0
  122. package/dist/components/kpi/snice-kpi.js.map +1 -0
  123. package/dist/components/kpi/snice-kpi.types.d.ts +12 -0
  124. package/dist/components/layout/snice-layout-blog.d.ts +2 -2
  125. package/dist/components/layout/snice-layout-blog.js +9 -9
  126. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  127. package/dist/components/layout/snice-layout-card.d.ts +2 -2
  128. package/dist/components/layout/snice-layout-card.js +9 -9
  129. package/dist/components/layout/snice-layout-card.js.map +1 -1
  130. package/dist/components/layout/snice-layout-centered.d.ts +2 -2
  131. package/dist/components/layout/snice-layout-centered.js +9 -9
  132. package/dist/components/layout/snice-layout-centered.js.map +1 -1
  133. package/dist/components/layout/snice-layout-dashboard.d.ts +2 -2
  134. package/dist/components/layout/snice-layout-dashboard.js +9 -9
  135. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  136. package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
  137. package/dist/components/layout/snice-layout-fullscreen.js +9 -9
  138. package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
  139. package/dist/components/layout/snice-layout-landing.d.ts +2 -2
  140. package/dist/components/layout/snice-layout-landing.js +9 -9
  141. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  142. package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
  143. package/dist/components/layout/snice-layout-minimal.js +9 -9
  144. package/dist/components/layout/snice-layout-minimal.js.map +1 -1
  145. package/dist/components/layout/snice-layout-sidebar.d.ts +2 -2
  146. package/dist/components/layout/snice-layout-sidebar.js +9 -9
  147. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  148. package/dist/components/layout/snice-layout-split.d.ts +2 -2
  149. package/dist/components/layout/snice-layout-split.js +9 -9
  150. package/dist/components/layout/snice-layout-split.js.map +1 -1
  151. package/dist/components/layout/snice-layout.d.ts +2 -2
  152. package/dist/components/layout/snice-layout.js +9 -9
  153. package/dist/components/layout/snice-layout.js.map +1 -1
  154. package/dist/components/link/snice-link.d.ts +13 -0
  155. package/dist/components/link/snice-link.js +137 -0
  156. package/dist/components/link/snice-link.js.map +1 -0
  157. package/dist/components/link/snice-link.types.d.ts +11 -0
  158. package/dist/components/list/snice-list-item.d.ts +6 -0
  159. package/dist/components/list/snice-list-item.js +68 -0
  160. package/dist/components/list/snice-list-item.js.map +1 -0
  161. package/dist/components/list/snice-list.d.ts +23 -0
  162. package/dist/components/list/snice-list.js +270 -0
  163. package/dist/components/list/snice-list.js.map +1 -0
  164. package/dist/components/list/snice-list.types.d.ts +28 -0
  165. package/dist/components/location/snice-location.d.ts +35 -0
  166. package/dist/components/location/snice-location.js +238 -0
  167. package/dist/components/location/snice-location.js.map +1 -0
  168. package/dist/components/location/snice-location.types.d.ts +35 -0
  169. package/dist/components/login/snice-login.d.ts +2 -2
  170. package/dist/components/login/snice-login.js +9 -9
  171. package/dist/components/login/snice-login.js.map +1 -1
  172. package/dist/components/menu/snice-menu-divider.d.ts +4 -0
  173. package/dist/components/menu/snice-menu-divider.js +53 -0
  174. package/dist/components/menu/snice-menu-divider.js.map +1 -0
  175. package/dist/components/menu/snice-menu-item.d.ts +10 -0
  176. package/dist/components/menu/snice-menu-item.js +99 -0
  177. package/dist/components/menu/snice-menu-item.js.map +1 -0
  178. package/dist/components/menu/snice-menu-item.types.d.ts +9 -0
  179. package/dist/components/menu/snice-menu.d.ts +27 -0
  180. package/dist/components/menu/snice-menu.js +199 -0
  181. package/dist/components/menu/snice-menu.js.map +1 -0
  182. package/dist/components/menu/snice-menu.types.d.ts +18 -0
  183. package/dist/components/modal/snice-modal.d.ts +2 -2
  184. package/dist/components/modal/snice-modal.js +9 -9
  185. package/dist/components/modal/snice-modal.js.map +1 -1
  186. package/dist/components/nav/snice-nav.js +1 -1
  187. package/dist/components/nav/snice-nav.js.map +1 -1
  188. package/dist/components/pagination/snice-pagination.d.ts +2 -2
  189. package/dist/components/pagination/snice-pagination.js +8 -8
  190. package/dist/components/pagination/snice-pagination.js.map +1 -1
  191. package/dist/components/progress/snice-progress.d.ts +2 -2
  192. package/dist/components/progress/snice-progress.js +9 -9
  193. package/dist/components/progress/snice-progress.js.map +1 -1
  194. package/dist/components/qr-code/qrcode.d.ts +28 -0
  195. package/dist/components/qr-code/qrcode.js +906 -0
  196. package/dist/components/qr-code/qrcode.js.map +1 -0
  197. package/dist/components/qr-code/snice-qr-code.d.ts +35 -0
  198. package/dist/components/qr-code/snice-qr-code.js +256 -0
  199. package/dist/components/qr-code/snice-qr-code.js.map +1 -0
  200. package/dist/components/qr-code/snice-qr-code.types.d.ts +33 -0
  201. package/dist/components/radio/snice-radio.d.ts +2 -2
  202. package/dist/components/radio/snice-radio.js +9 -9
  203. package/dist/components/radio/snice-radio.js.map +1 -1
  204. package/dist/components/select/snice-option.d.ts +2 -2
  205. package/dist/components/select/snice-option.js +8 -8
  206. package/dist/components/select/snice-option.js.map +1 -1
  207. package/dist/components/select/snice-select.d.ts +2 -2
  208. package/dist/components/select/snice-select.js +9 -9
  209. package/dist/components/select/snice-select.js.map +1 -1
  210. package/dist/components/skeleton/snice-skeleton.d.ts +2 -2
  211. package/dist/components/skeleton/snice-skeleton.js +9 -9
  212. package/dist/components/skeleton/snice-skeleton.js.map +1 -1
  213. package/dist/components/slider/snice-slider.d.ts +53 -0
  214. package/dist/components/slider/snice-slider.js +479 -0
  215. package/dist/components/slider/snice-slider.js.map +1 -0
  216. package/dist/components/slider/snice-slider.types.d.ts +26 -0
  217. package/dist/components/snice-cell-C0slgOpe.js +4 -0
  218. package/dist/components/snice-cell-C0slgOpe.js.map +1 -0
  219. package/dist/components/sparkline/snice-sparkline.d.ts +21 -0
  220. package/dist/components/sparkline/snice-sparkline.js +228 -0
  221. package/dist/components/sparkline/snice-sparkline.js.map +1 -0
  222. package/dist/components/sparkline/snice-sparkline.types.d.ts +16 -0
  223. package/dist/components/spinner/snice-spinner.d.ts +10 -0
  224. package/dist/components/spinner/snice-spinner.js +109 -0
  225. package/dist/components/spinner/snice-spinner.js.map +1 -0
  226. package/dist/components/spinner/snice-spinner.types.d.ts +8 -0
  227. package/dist/components/split-pane/snice-split-pane.d.ts +32 -0
  228. package/dist/components/split-pane/snice-split-pane.js +191 -0
  229. package/dist/components/split-pane/snice-split-pane.js.map +1 -0
  230. package/dist/components/split-pane/snice-split-pane.types.d.ts +19 -0
  231. package/dist/components/stat/snice-stat.d.ts +14 -0
  232. package/dist/components/stat/snice-stat.js +140 -0
  233. package/dist/components/stat/snice-stat.js.map +1 -0
  234. package/dist/components/stat/snice-stat.types.d.ts +12 -0
  235. package/dist/components/stepper/snice-stepper-panel.d.ts +8 -0
  236. package/dist/components/stepper/snice-stepper-panel.js +70 -0
  237. package/dist/components/stepper/snice-stepper-panel.js.map +1 -0
  238. package/dist/components/stepper/snice-stepper-panel.types.d.ts +4 -0
  239. package/dist/components/stepper/snice-stepper.d.ts +15 -0
  240. package/dist/components/stepper/snice-stepper.js +163 -0
  241. package/dist/components/stepper/snice-stepper.js.map +1 -0
  242. package/dist/components/stepper/snice-stepper.types.d.ts +13 -0
  243. package/dist/components/switch/snice-switch.d.ts +2 -2
  244. package/dist/components/switch/snice-switch.js +9 -9
  245. package/dist/components/switch/snice-switch.js.map +1 -1
  246. package/dist/components/table/snice-cell-actions.d.ts +2 -2
  247. package/dist/components/table/snice-cell-actions.js +9 -9
  248. package/dist/components/table/snice-cell-actions.js.map +1 -1
  249. package/dist/components/table/snice-cell-boolean.d.ts +2 -2
  250. package/dist/components/table/snice-cell-boolean.js +9 -9
  251. package/dist/components/table/snice-cell-boolean.js.map +1 -1
  252. package/dist/components/table/snice-cell-color.d.ts +2 -2
  253. package/dist/components/table/snice-cell-color.js +9 -9
  254. package/dist/components/table/snice-cell-color.js.map +1 -1
  255. package/dist/components/table/snice-cell-currency.d.ts +2 -2
  256. package/dist/components/table/snice-cell-currency.js +9 -9
  257. package/dist/components/table/snice-cell-currency.js.map +1 -1
  258. package/dist/components/table/snice-cell-date.d.ts +2 -2
  259. package/dist/components/table/snice-cell-date.js +9 -9
  260. package/dist/components/table/snice-cell-date.js.map +1 -1
  261. package/dist/components/table/snice-cell-duration.d.ts +2 -2
  262. package/dist/components/table/snice-cell-duration.js +9 -9
  263. package/dist/components/table/snice-cell-duration.js.map +1 -1
  264. package/dist/components/table/snice-cell-email.d.ts +2 -2
  265. package/dist/components/table/snice-cell-email.js +9 -9
  266. package/dist/components/table/snice-cell-email.js.map +1 -1
  267. package/dist/components/table/snice-cell-filesize.d.ts +2 -2
  268. package/dist/components/table/snice-cell-filesize.js +9 -9
  269. package/dist/components/table/snice-cell-filesize.js.map +1 -1
  270. package/dist/components/table/snice-cell-image.d.ts +2 -2
  271. package/dist/components/table/snice-cell-image.js +9 -9
  272. package/dist/components/table/snice-cell-image.js.map +1 -1
  273. package/dist/components/table/snice-cell-json.d.ts +2 -2
  274. package/dist/components/table/snice-cell-json.js +9 -9
  275. package/dist/components/table/snice-cell-json.js.map +1 -1
  276. package/dist/components/table/snice-cell-link.d.ts +2 -2
  277. package/dist/components/table/snice-cell-link.js +9 -9
  278. package/dist/components/table/snice-cell-link.js.map +1 -1
  279. package/dist/components/table/snice-cell-location.d.ts +2 -2
  280. package/dist/components/table/snice-cell-location.js +9 -9
  281. package/dist/components/table/snice-cell-location.js.map +1 -1
  282. package/dist/components/table/snice-cell-number.d.ts +2 -2
  283. package/dist/components/table/snice-cell-number.js +9 -9
  284. package/dist/components/table/snice-cell-number.js.map +1 -1
  285. package/dist/components/table/snice-cell-percentage.d.ts +2 -2
  286. package/dist/components/table/snice-cell-percentage.js +9 -9
  287. package/dist/components/table/snice-cell-percentage.js.map +1 -1
  288. package/dist/components/table/snice-cell-phone.d.ts +2 -2
  289. package/dist/components/table/snice-cell-phone.js +9 -9
  290. package/dist/components/table/snice-cell-phone.js.map +1 -1
  291. package/dist/components/table/snice-cell-progress.d.ts +2 -2
  292. package/dist/components/table/snice-cell-progress.js +9 -9
  293. package/dist/components/table/snice-cell-progress.js.map +1 -1
  294. package/dist/components/table/snice-cell-rating.d.ts +2 -2
  295. package/dist/components/table/snice-cell-rating.js +9 -9
  296. package/dist/components/table/snice-cell-rating.js.map +1 -1
  297. package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
  298. package/dist/components/table/snice-cell-sparkline.js +9 -9
  299. package/dist/components/table/snice-cell-sparkline.js.map +1 -1
  300. package/dist/components/table/snice-cell-status.d.ts +2 -2
  301. package/dist/components/table/snice-cell-status.js +9 -9
  302. package/dist/components/table/snice-cell-status.js.map +1 -1
  303. package/dist/components/table/snice-cell-tag.d.ts +2 -2
  304. package/dist/components/table/snice-cell-tag.js +9 -9
  305. package/dist/components/table/snice-cell-tag.js.map +1 -1
  306. package/dist/components/table/snice-cell-text.d.ts +2 -2
  307. package/dist/components/table/snice-cell-text.js +9 -9
  308. package/dist/components/table/snice-cell-text.js.map +1 -1
  309. package/dist/components/table/snice-cell.d.ts +2 -2
  310. package/dist/components/table/snice-cell.js +9 -9
  311. package/dist/components/table/snice-cell.js.map +1 -1
  312. package/dist/components/table/snice-column.d.ts +1 -1
  313. package/dist/components/table/snice-column.js +4 -4
  314. package/dist/components/table/snice-column.js.map +1 -1
  315. package/dist/components/table/snice-header.d.ts +2 -2
  316. package/dist/components/table/snice-header.js +9 -9
  317. package/dist/components/table/snice-header.js.map +1 -1
  318. package/dist/components/table/snice-progress.d.ts +2 -2
  319. package/dist/components/table/snice-progress.js +8 -8
  320. package/dist/components/table/snice-progress.js.map +1 -1
  321. package/dist/components/table/snice-rating.d.ts +2 -2
  322. package/dist/components/table/snice-rating.js +8 -8
  323. package/dist/components/table/snice-rating.js.map +1 -1
  324. package/dist/components/table/snice-row.d.ts +2 -2
  325. package/dist/components/table/snice-row.js +10 -10
  326. package/dist/components/table/snice-row.js.map +1 -1
  327. package/dist/components/table/snice-table.d.ts +2 -3
  328. package/dist/components/table/snice-table.js +9 -14
  329. package/dist/components/table/snice-table.js.map +1 -1
  330. package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
  331. package/dist/components/tabs/snice-tab-panel.js +9 -9
  332. package/dist/components/tabs/snice-tab-panel.js.map +1 -1
  333. package/dist/components/tabs/snice-tab.d.ts +2 -2
  334. package/dist/components/tabs/snice-tab.js +9 -9
  335. package/dist/components/tabs/snice-tab.js.map +1 -1
  336. package/dist/components/tabs/snice-tabs.d.ts +2 -2
  337. package/dist/components/tabs/snice-tabs.js +9 -9
  338. package/dist/components/tabs/snice-tabs.js.map +1 -1
  339. package/dist/components/terminal/snice-terminal.types.d.ts +133 -0
  340. package/dist/components/textarea/snice-textarea.d.ts +52 -0
  341. package/dist/components/textarea/snice-textarea.js +407 -0
  342. package/dist/components/textarea/snice-textarea.js.map +1 -0
  343. package/dist/components/textarea/snice-textarea.types.d.ts +30 -0
  344. package/dist/components/timeline/snice-timeline.d.ts +11 -0
  345. package/dist/components/timeline/snice-timeline.js +112 -0
  346. package/dist/components/timeline/snice-timeline.js.map +1 -0
  347. package/dist/components/timeline/snice-timeline.types.d.ts +16 -0
  348. package/dist/components/toast/snice-toast-container.d.ts +2 -2
  349. package/dist/components/toast/snice-toast-container.js +8 -8
  350. package/dist/components/toast/snice-toast-container.js.map +1 -1
  351. package/dist/components/toast/snice-toast.d.ts +2 -2
  352. package/dist/components/toast/snice-toast.js +8 -8
  353. package/dist/components/toast/snice-toast.js.map +1 -1
  354. package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
  355. package/dist/components/tooltip/snice-tooltip.js +10 -10
  356. package/dist/components/tooltip/snice-tooltip.js.map +1 -1
  357. package/dist/components/tree/snice-tree-item.d.ts +35 -0
  358. package/dist/components/tree/snice-tree-item.js +301 -0
  359. package/dist/components/tree/snice-tree-item.js.map +1 -0
  360. package/dist/components/tree/snice-tree-item.types.d.ts +30 -0
  361. package/dist/components/tree/snice-tree.d.ts +45 -0
  362. package/dist/components/tree/snice-tree.js +390 -0
  363. package/dist/components/tree/snice-tree.js.map +1 -0
  364. package/dist/components/tree/snice-tree.types.d.ts +65 -0
  365. package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +31 -0
  366. package/dist/components/virtual-scroller/snice-virtual-scroller.js +160 -0
  367. package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -0
  368. package/dist/components/virtual-scroller/snice-virtual-scroller.types.d.ts +19 -0
  369. package/dist/index.cjs +125 -158
  370. package/dist/index.cjs.map +1 -1
  371. package/dist/index.esm.js +125 -158
  372. package/dist/index.esm.js.map +1 -1
  373. package/dist/index.iife.js +125 -158
  374. package/dist/index.iife.js.map +1 -1
  375. package/dist/parts.d.ts +13 -16
  376. package/dist/symbols.cjs +1 -1
  377. package/dist/symbols.esm.js +1 -1
  378. package/dist/template.d.ts +0 -1
  379. package/dist/transitions.cjs +1 -1
  380. package/dist/transitions.esm.js +1 -1
  381. package/docs/ai/README.md +10 -1
  382. package/docs/ai/components/actions.md +81 -0
  383. package/docs/ai/components/audio-recorder.md +97 -0
  384. package/docs/ai/components/banner.md +84 -0
  385. package/docs/ai/components/calendar.md +95 -0
  386. package/docs/ai/components/camera.md +130 -0
  387. package/docs/ai/components/carousel.md +49 -0
  388. package/docs/ai/components/chart.md +160 -0
  389. package/docs/ai/components/chat.md +189 -0
  390. package/docs/ai/components/code-block.md +32 -0
  391. package/docs/ai/components/color-display.md +48 -0
  392. package/docs/ai/components/color-picker.md +75 -0
  393. package/docs/ai/components/command-palette.md +117 -0
  394. package/docs/ai/components/doc.md +154 -0
  395. package/docs/ai/components/draw.md +140 -0
  396. package/docs/ai/components/empty-state.md +72 -0
  397. package/docs/ai/components/file-upload.md +93 -0
  398. package/docs/ai/components/gantt.md +95 -0
  399. package/docs/ai/components/image.md +60 -0
  400. package/docs/ai/components/kanban.md +102 -0
  401. package/docs/ai/components/kpi.md +158 -0
  402. package/docs/ai/components/layout.md +261 -0
  403. package/docs/ai/components/link.md +77 -0
  404. package/docs/ai/components/list.md +50 -0
  405. package/docs/ai/components/location.md +75 -0
  406. package/docs/ai/components/menu.md +114 -0
  407. package/docs/ai/components/popover.md +70 -0
  408. package/docs/ai/components/qr-code.md +106 -0
  409. package/docs/ai/components/slider.md +87 -0
  410. package/docs/ai/components/sparkline.md +168 -0
  411. package/docs/ai/components/spinner.md +47 -0
  412. package/docs/ai/components/split-pane.md +71 -0
  413. package/docs/ai/components/stat.md +29 -0
  414. package/docs/ai/components/stepper.md +216 -0
  415. package/docs/ai/components/textarea.md +87 -0
  416. package/docs/ai/components/timeline.md +77 -0
  417. package/docs/ai/components/tree.md +191 -0
  418. package/docs/ai/components/virtual-scroller.md +71 -0
  419. package/docs/components/actions.md +317 -0
  420. package/docs/components/alert.md +540 -0
  421. package/docs/components/audio-recorder.md +152 -0
  422. package/docs/components/badge.md +593 -0
  423. package/docs/components/banner.md +106 -0
  424. package/docs/components/breadcrumbs.md +568 -0
  425. package/docs/components/button.md +648 -0
  426. package/docs/components/calendar.md +397 -0
  427. package/docs/components/camera.md +383 -0
  428. package/docs/components/card.md +778 -0
  429. package/docs/components/carousel.md +63 -0
  430. package/docs/components/chart.md +526 -0
  431. package/docs/components/chat.md +482 -0
  432. package/docs/components/checkbox.md +714 -0
  433. package/docs/components/chip.md +670 -0
  434. package/docs/components/code-block.md +49 -0
  435. package/docs/components/color-display.md +96 -0
  436. package/docs/components/color-picker.md +81 -0
  437. package/docs/components/command-palette.md +159 -0
  438. package/docs/components/doc.md +357 -0
  439. package/docs/components/draw.md +307 -0
  440. package/docs/components/empty-state.md +79 -0
  441. package/docs/components/file-upload.md +263 -0
  442. package/docs/components/gantt.md +347 -0
  443. package/docs/components/image.md +110 -0
  444. package/docs/components/kanban.md +410 -0
  445. package/docs/components/kpi.md +251 -0
  446. package/docs/components/link.md +229 -0
  447. package/docs/components/list.md +65 -0
  448. package/docs/components/location.md +369 -0
  449. package/docs/components/menu.md +633 -0
  450. package/docs/components/popover.md +333 -0
  451. package/docs/components/qr-code.md +464 -0
  452. package/docs/components/slider.md +297 -0
  453. package/docs/components/sparkline.md +293 -0
  454. package/docs/components/spinner.md +63 -0
  455. package/docs/components/split-pane.md +315 -0
  456. package/docs/components/stat.md +45 -0
  457. package/docs/components/stepper.md +410 -0
  458. package/docs/components/textarea.md +235 -0
  459. package/docs/components/timeline.md +192 -0
  460. package/docs/components/tree.md +536 -0
  461. package/docs/components/virtual-scroller.md +298 -0
  462. package/package.json +2 -1
  463. package/dist/components/snice-cell-BLFVdxPp.js +0 -4
  464. package/dist/components/snice-cell-BLFVdxPp.js.map +0 -1
@@ -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
@@ -0,0 +1,87 @@
1
+ # snice-textarea
2
+
3
+ Multi-line text input field with auto-grow and character count.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ value: string = '';
9
+ variant: 'outlined'|'filled'|'underlined' = 'outlined';
10
+ size: 'small'|'medium'|'large' = 'medium';
11
+ resize: 'none'|'vertical'|'horizontal'|'both' = 'vertical';
12
+ placeholder: string = '';
13
+ disabled: boolean = false;
14
+ required: boolean = false;
15
+ invalid: boolean = false;
16
+ readonly: boolean = false;
17
+ label: string = '';
18
+ helperText: string = '';
19
+ errorText: string = '';
20
+ rows: number = 3;
21
+ cols: number = -1;
22
+ minlength: number = -1;
23
+ maxlength: number = -1;
24
+ autocomplete: string = '';
25
+ name: string = '';
26
+ autoGrow: boolean = false;
27
+ ```
28
+
29
+ ## Methods
30
+
31
+ - `focus()` - Focus textarea
32
+ - `blur()` - Blur textarea
33
+ - `select()` - Select text
34
+
35
+ ## Events
36
+
37
+ - `input` - {value, textarea}
38
+ - `change` - {value, textarea}
39
+ - `focus` - {textarea}
40
+ - `blur` - {textarea}
41
+
42
+ ## Usage
43
+
44
+ ```html
45
+ <!-- Basic -->
46
+ <snice-textarea label="Comments" placeholder="Enter comments"></snice-textarea>
47
+
48
+ <!-- Variants -->
49
+ <snice-textarea variant="outlined"></snice-textarea>
50
+ <snice-textarea variant="filled"></snice-textarea>
51
+ <snice-textarea variant="underlined"></snice-textarea>
52
+
53
+ <!-- Rows -->
54
+ <snice-textarea rows="5"></snice-textarea>
55
+
56
+ <!-- Auto-grow -->
57
+ <snice-textarea auto-grow></snice-textarea>
58
+
59
+ <!-- Character count -->
60
+ <snice-textarea maxlength="500"></snice-textarea>
61
+
62
+ <!-- Resize options -->
63
+ <snice-textarea resize="none"></snice-textarea>
64
+ <snice-textarea resize="both"></snice-textarea>
65
+
66
+ <!-- Sizes -->
67
+ <snice-textarea size="small"></snice-textarea>
68
+ <snice-textarea size="medium"></snice-textarea>
69
+ <snice-textarea size="large"></snice-textarea>
70
+
71
+ <!-- Helper text -->
72
+ <snice-textarea helper-text="Max 500 characters"></snice-textarea>
73
+
74
+ <!-- Error state -->
75
+ <snice-textarea invalid error-text="Required field"></snice-textarea>
76
+ ```
77
+
78
+ ## Features
79
+
80
+ - Form-associated custom element
81
+ - 3 visual variants
82
+ - Auto-grow height option
83
+ - Character counter
84
+ - Resizable (4 modes)
85
+ - Helper and error text
86
+ - 3 sizes
87
+ - Keyboard accessible
@@ -0,0 +1,77 @@
1
+ # snice-timeline
2
+
3
+ Displays chronological events with markers.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ orientation: 'vertical'|'horizontal' = 'vertical';
9
+ position: 'left'|'right'|'alternate' = 'left';
10
+ items: TimelineItem[] = [];
11
+ reverse: boolean = false;
12
+ ```
13
+
14
+ ## TimelineItem
15
+
16
+ ```typescript
17
+ interface TimelineItem {
18
+ timestamp?: string;
19
+ title: string;
20
+ description?: string;
21
+ icon?: string;
22
+ variant?: 'default'|'success'|'warning'|'error'|'info';
23
+ }
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ```html
29
+ <!-- Basic --><snice-timeline id="timeline"></snice-timeline>
30
+ <script>
31
+ timeline.items = [{
32
+ timestamp: '2024-01-15',
33
+ title: 'Event',
34
+ description: 'Details'
35
+ }];
36
+ </script>
37
+
38
+ <!-- Vertical positions -->
39
+ <snice-timeline position="left"></snice-timeline>
40
+ <snice-timeline position="right"></snice-timeline>
41
+ <snice-timeline position="alternate"></snice-timeline>
42
+
43
+ <!-- Horizontal -->
44
+ <snice-timeline orientation="horizontal"></snice-timeline>
45
+
46
+ <!-- Variants -->
47
+ <script>
48
+ timeline.items = [
49
+ { title: 'Success', variant: 'success' },
50
+ { title: 'Warning', variant: 'warning' },
51
+ { title: 'Error', variant: 'error' },
52
+ { title: 'Info', variant: 'info' }
53
+ ];
54
+ </script>
55
+
56
+ <!-- Custom icons -->
57
+ <script>
58
+ timeline.items = [
59
+ { title: 'Planning', icon: '📋' },
60
+ { title: 'Development', icon: '💻' },
61
+ { title: 'Launch', icon: '🚀' }
62
+ ];
63
+ </script>
64
+
65
+ <!-- Reversed -->
66
+ <snice-timeline reverse></snice-timeline>
67
+ ```
68
+
69
+ ## Features
70
+
71
+ - Vertical and horizontal orientations
72
+ - Left/right/alternate positioning (vertical)
73
+ - 5 item variants with default icons
74
+ - Custom icons supported
75
+ - Timestamps and descriptions optional
76
+ - Connecting lines between items
77
+ - Reversible order
@@ -0,0 +1,191 @@
1
+ # snice-tree
2
+
3
+ Hierarchical tree view with expandable nodes, selection, checkboxes, icons, and lazy loading.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ nodes: TreeNode[] = [];
9
+ selectionMode: 'single'|'multiple'|'none' = 'single';
10
+ showCheckboxes: boolean = false;
11
+ showIcons: boolean = true;
12
+ expandOnClick: boolean = false;
13
+ selectedNodes: string[] = [];
14
+ checkedNodes: string[] = [];
15
+ ```
16
+
17
+ ## TreeNode Interface
18
+
19
+ ```typescript
20
+ interface TreeNode {
21
+ id: string; // Unique identifier
22
+ label: string; // Display text
23
+ icon?: string; // Text/emoji icon
24
+ iconImage?: string; // Icon image URL
25
+ children?: TreeNode[]; // Child nodes
26
+ disabled?: boolean; // Disable interaction
27
+ selected?: boolean; // Selection state
28
+ checked?: boolean; // Checkbox state
29
+ expanded?: boolean; // Expansion state
30
+ lazy?: boolean; // Enable lazy loading
31
+ data?: any; // Custom data
32
+ }
33
+ ```
34
+
35
+ ## Methods
36
+
37
+ ### Expand/Collapse
38
+ - `expandNode(id: string)` - Expand a node
39
+ - `collapseNode(id: string)` - Collapse a node
40
+ - `toggleNode(id: string)` - Toggle node expansion
41
+ - `expandAll()` - Expand all nodes
42
+ - `collapseAll()` - Collapse all nodes
43
+
44
+ ### Selection
45
+ - `selectNode(id: string)` - Select a node
46
+ - `deselectNode(id: string)` - Deselect a node
47
+ - `toggleSelection(id: string)` - Toggle selection
48
+
49
+ ### Checkboxes
50
+ - `checkNode(id: string)` - Check a node
51
+ - `uncheckNode(id: string)` - Uncheck a node
52
+ - `toggleCheck(id: string)` - Toggle check state
53
+
54
+ ### Getters
55
+ - `getNode(id: string): TreeNode | undefined` - Get node by ID
56
+ - `getSelectedNodes(): TreeNode[]` - Get all selected nodes
57
+ - `getCheckedNodes(): TreeNode[]` - Get all checked nodes
58
+
59
+ ## Events
60
+
61
+ - `@snice/tree-node-expand` - Node expanded (detail: { nodeId, node, tree })
62
+ - `@snice/tree-node-collapse` - Node collapsed (detail: { nodeId, node, tree })
63
+ - `@snice/tree-node-select` - Node selected (detail: { nodeId, node, selectedNodes, tree })
64
+ - `@snice/tree-node-check` - Node checked/unchecked (detail: { nodeId, node, checked, checkedNodes, tree })
65
+ - `@snice/tree-node-lazy-load` - Lazy node expanded (detail: { nodeId, node, tree })
66
+
67
+ ## Usage
68
+
69
+ ```html
70
+ <!-- Basic file tree -->
71
+ <snice-tree id="fileTree"></snice-tree>
72
+ <script>
73
+ document.getElementById('fileTree').nodes = [
74
+ {
75
+ id: 'src',
76
+ label: 'src',
77
+ icon: '📁',
78
+ expanded: true,
79
+ children: [
80
+ { id: 'index.ts', label: 'index.ts', icon: '📄' },
81
+ {
82
+ id: 'components',
83
+ label: 'components',
84
+ icon: '📁',
85
+ children: [
86
+ { id: 'header.ts', label: 'header.ts', icon: '📄' }
87
+ ]
88
+ }
89
+ ]
90
+ }
91
+ ];
92
+ </script>
93
+
94
+ <!-- Single selection -->
95
+ <snice-tree selection-mode="single"></snice-tree>
96
+
97
+ <!-- Multiple selection -->
98
+ <snice-tree selection-mode="multiple"></snice-tree>
99
+
100
+ <!-- No selection -->
101
+ <snice-tree selection-mode="none"></snice-tree>
102
+
103
+ <!-- Checkbox selection -->
104
+ <snice-tree show-checkboxes></snice-tree>
105
+
106
+ <!-- Without icons -->
107
+ <snice-tree show-icons="false"></snice-tree>
108
+
109
+ <!-- Expand/collapse programmatically -->
110
+ <button onclick="tree.expandAll()">Expand All</button>
111
+ <button onclick="tree.collapseAll()">Collapse All</button>
112
+
113
+ <!-- Selection events -->
114
+ <snice-tree id="tree"></snice-tree>
115
+ <script>
116
+ const tree = document.getElementById('tree');
117
+ tree.addEventListener('@snice/tree-node-select', (e) => {
118
+ console.log('Selected:', e.detail.node.label);
119
+ console.log('All selected:', e.detail.selectedNodes.map(n => n.label));
120
+ });
121
+ </script>
122
+
123
+ <!-- Lazy loading -->
124
+ <snice-tree id="lazyTree"></snice-tree>
125
+ <script>
126
+ const lazyTree = document.getElementById('lazyTree');
127
+ lazyTree.nodes = [
128
+ {
129
+ id: 'folder1',
130
+ label: 'Click to load...',
131
+ icon: '📁',
132
+ lazy: true,
133
+ children: []
134
+ }
135
+ ];
136
+
137
+ lazyTree.addEventListener('@snice/tree-node-lazy-load', async (e) => {
138
+ const node = e.detail.node;
139
+ const data = await fetch(`/api/nodes/${node.id}`).then(r => r.json());
140
+
141
+ node.children = data.map(item => ({
142
+ id: item.id,
143
+ label: item.name,
144
+ icon: '📄'
145
+ }));
146
+ node.lazy = false;
147
+ node.expanded = true;
148
+
149
+ // Trigger re-render
150
+ lazyTree.nodes = [...lazyTree.nodes];
151
+ });
152
+ </script>
153
+
154
+ <!-- Custom icons with images -->
155
+ <snice-tree id="imgTree"></snice-tree>
156
+ <script>
157
+ document.getElementById('imgTree').nodes = [
158
+ {
159
+ id: '1',
160
+ label: 'Images',
161
+ iconImage: '/icons/folder.png',
162
+ children: [
163
+ { id: '2', label: 'photo.jpg', iconImage: '/icons/image.png' }
164
+ ]
165
+ }
166
+ ];
167
+ </script>
168
+
169
+ <!-- Disabled nodes -->
170
+ <snice-tree id="disabledTree"></snice-tree>
171
+ <script>
172
+ document.getElementById('disabledTree').nodes = [
173
+ { id: '1', label: 'Active Node' },
174
+ { id: '2', label: 'Disabled Node', disabled: true }
175
+ ];
176
+ </script>
177
+ ```
178
+
179
+ ## Features
180
+
181
+ - Hierarchical data display
182
+ - Expand/collapse nodes
183
+ - Single/multiple/no selection modes
184
+ - Checkbox support for multi-select
185
+ - Text and image icons
186
+ - Lazy loading for large trees
187
+ - Disabled nodes
188
+ - Keyboard navigation (Arrow keys, Enter, Space, Home, End)
189
+ - Full ARIA accessibility
190
+ - Programmatic control
191
+ - Custom data storage per node
@@ -0,0 +1,71 @@
1
+ # snice-virtual-scroller
2
+
3
+ Efficiently render large lists by only displaying visible items.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ items: VirtualScrollerItem[] = [];
9
+ itemHeight: number = 50; // px
10
+ bufferSize: number = 5; // extra items outside viewport
11
+ estimatedItemHeight: number = 50;
12
+ renderItem: (item: VirtualScrollerItem, index: number) => string | HTMLElement;
13
+ ```
14
+
15
+ ## VirtualScrollerItem
16
+
17
+ ```typescript
18
+ interface VirtualScrollerItem {
19
+ id: string | number;
20
+ data: any;
21
+ height?: number; // optional custom height
22
+ }
23
+ ```
24
+
25
+ ## Methods
26
+
27
+ ```typescript
28
+ scrollToIndex(index: number): void
29
+ scrollToItem(id: string | number): void
30
+ refresh(): void
31
+ getVisibleRange(): { start: number; end: number }
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ```javascript
37
+ scroller.items = Array.from({ length: 10000 }, (_, i) => ({
38
+ id: i,
39
+ data: `Item ${i}`
40
+ }));
41
+
42
+ scroller.renderItem = (item, index) => {
43
+ return `<div>${item.data}</div>`;
44
+ };
45
+
46
+ // Scroll to item
47
+ scroller.scrollToIndex(500);
48
+
49
+ // Get visible range
50
+ const range = scroller.getVisibleRange();
51
+ ```
52
+
53
+ ```html
54
+ <snice-virtual-scroller
55
+ style="height: 400px;"
56
+ item-height="60"
57
+ buffer-size="10">
58
+ </snice-virtual-scroller>
59
+ ```
60
+
61
+ ## Features
62
+
63
+ - Only renders visible items + buffer
64
+ - Handles thousands of items efficiently
65
+ - Variable item heights supported
66
+ - Programmatic scrolling
67
+ - Dynamic updates (add/remove/update)
68
+ - Smooth 60fps scrolling
69
+ - Low memory footprint
70
+ - Search and filter support
71
+ - Infinite scroll patterns