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,410 @@
1
+ # Kanban Component
2
+
3
+ Drag-and-drop kanban board with columns and cards.
4
+
5
+ ## Basic Usage
6
+
7
+ ```javascript
8
+ const kanban = document.querySelector('snice-kanban');
9
+
10
+ kanban.columns = [
11
+ {
12
+ id: 'todo',
13
+ title: 'To Do',
14
+ cards: [
15
+ { id: 1, title: 'Task 1', description: 'Do something' }
16
+ ]
17
+ },
18
+ {
19
+ id: 'done',
20
+ title: 'Done',
21
+ cards: []
22
+ }
23
+ ];
24
+ ```
25
+
26
+ ## Properties
27
+
28
+ | Property | Type | Default | Description |
29
+ |----------|------|---------|-------------|
30
+ | `columns` | `KanbanColumn[]` | `[]` | Board columns |
31
+ | `allowDragDrop` | `boolean` | `true` | Enable drag and drop |
32
+ | `showCardCount` | `boolean` | `true` | Show card count per column |
33
+
34
+ ## KanbanColumn Interface
35
+
36
+ ```typescript
37
+ interface KanbanColumn {
38
+ id: string | number;
39
+ title: string;
40
+ cards: KanbanCard[];
41
+ color?: string;
42
+ limit?: number;
43
+ collapsed?: boolean;
44
+ }
45
+ ```
46
+
47
+ ## KanbanCard Interface
48
+
49
+ ```typescript
50
+ interface KanbanCard {
51
+ id: string | number;
52
+ title: string;
53
+ description?: string;
54
+ assignee?: string;
55
+ labels?: string[];
56
+ color?: string;
57
+ data?: any;
58
+ }
59
+ ```
60
+
61
+ ## Methods
62
+
63
+ ### `addColumn(column: KanbanColumn): void`
64
+ Add new column to board.
65
+
66
+ ```javascript
67
+ kanban.addColumn({
68
+ id: 'review',
69
+ title: 'In Review',
70
+ cards: []
71
+ });
72
+ ```
73
+
74
+ ### `removeColumn(id: string | number): void`
75
+ Remove column from board.
76
+
77
+ ```javascript
78
+ kanban.removeColumn('review');
79
+ ```
80
+
81
+ ### `addCard(columnId: string | number, card: KanbanCard): void`
82
+ Add card to specific column.
83
+
84
+ ```javascript
85
+ kanban.addCard('todo', {
86
+ id: 10,
87
+ title: 'New Task',
88
+ assignee: 'John'
89
+ });
90
+ ```
91
+
92
+ ### `removeCard(cardId: string | number): void`
93
+ Remove card from board.
94
+
95
+ ```javascript
96
+ kanban.removeCard(10);
97
+ ```
98
+
99
+ ### `moveCard(cardId: string | number, targetColumnId: string | number): void`
100
+ Move card to different column.
101
+
102
+ ```javascript
103
+ kanban.moveCard(1, 'done');
104
+ ```
105
+
106
+ ### `getColumn(id: string | number): KanbanColumn | undefined`
107
+ Get column by ID.
108
+
109
+ ```javascript
110
+ const column = kanban.getColumn('todo');
111
+ console.log(`${column.title} has ${column.cards.length} cards`);
112
+ ```
113
+
114
+ ### `getCard(id: string | number): KanbanCard | undefined`
115
+ Get card by ID.
116
+
117
+ ```javascript
118
+ const card = kanban.getCard(1);
119
+ console.log(card.title);
120
+ ```
121
+
122
+ ## Events
123
+
124
+ ### `@snice/kanban-card-move`
125
+ Dispatched when card is moved between columns.
126
+
127
+ ```javascript
128
+ kanban.addEventListener('@snice/kanban-card-move', (e) => {
129
+ console.log('Card:', e.detail.card);
130
+ console.log('From:', e.detail.fromColumn);
131
+ console.log('To:', e.detail.toColumn);
132
+ });
133
+ ```
134
+
135
+ **Detail:** `{ card: KanbanCard, fromColumn: string | number, toColumn: string | number, kanban: SniceKanbanElement }`
136
+
137
+ ### `@snice/kanban-card-click`
138
+ Dispatched when card is clicked.
139
+
140
+ ```javascript
141
+ kanban.addEventListener('@snice/kanban-card-click', (e) => {
142
+ showCardDetails(e.detail.card);
143
+ });
144
+ ```
145
+
146
+ **Detail:** `{ card: KanbanCard, kanban: SniceKanbanElement }`
147
+
148
+ ## Examples
149
+
150
+ ### Basic Board
151
+
152
+ ```javascript
153
+ kanban.columns = [
154
+ { id: 'todo', title: 'To Do', cards: [] },
155
+ { id: 'doing', title: 'Doing', cards: [] },
156
+ { id: 'done', title: 'Done', cards: [] }
157
+ ];
158
+ ```
159
+
160
+ ### With Column Colors
161
+
162
+ ```javascript
163
+ kanban.columns = [
164
+ { id: 'todo', title: 'To Do', color: '#f44336', cards: [] },
165
+ { id: 'doing', title: 'Doing', color: '#ff9800', cards: [] },
166
+ { id: 'done', title: 'Done', color: '#4caf50', cards: [] }
167
+ ];
168
+ ```
169
+
170
+ ### With WIP Limits
171
+
172
+ ```javascript
173
+ kanban.columns = [
174
+ { id: 'todo', title: 'To Do', cards: [] },
175
+ { id: 'doing', title: 'Doing', limit: 3, cards: [] },
176
+ { id: 'done', title: 'Done', cards: [] }
177
+ ];
178
+ ```
179
+
180
+ ### Rich Cards
181
+
182
+ ```javascript
183
+ kanban.columns = [
184
+ {
185
+ id: 'todo',
186
+ title: 'To Do',
187
+ cards: [
188
+ {
189
+ id: 1,
190
+ title: 'Design Landing Page',
191
+ description: 'Create mockups and wireframes',
192
+ assignee: 'Alice',
193
+ labels: ['design', 'high-priority'],
194
+ color: '#f44336'
195
+ }
196
+ ]
197
+ }
198
+ ];
199
+ ```
200
+
201
+ ### Event Handling
202
+
203
+ ```javascript
204
+ kanban.addEventListener('@snice/kanban-card-move', (e) => {
205
+ // Update backend
206
+ updateCardStatus(e.detail.card.id, e.detail.toColumn);
207
+
208
+ // Show notification
209
+ showNotification(`Moved "${e.detail.card.title}" to ${e.detail.toColumn}`);
210
+ });
211
+
212
+ kanban.addEventListener('@snice/kanban-card-click', (e) => {
213
+ // Show modal with card details
214
+ showCardModal(e.detail.card);
215
+ });
216
+ ```
217
+
218
+ ### Dynamic Updates
219
+
220
+ ```javascript
221
+ // Add new card
222
+ function addTask(title, columnId) {
223
+ const newCard = {
224
+ id: Date.now(),
225
+ title,
226
+ assignee: currentUser.name
227
+ };
228
+
229
+ kanban.addCard(columnId, newCard);
230
+ }
231
+
232
+ // Move card
233
+ function completeTask(cardId) {
234
+ kanban.moveCard(cardId, 'done');
235
+ }
236
+
237
+ // Remove card
238
+ function deleteTask(cardId) {
239
+ kanban.removeCard(cardId);
240
+ }
241
+ ```
242
+
243
+ ### Project Management
244
+
245
+ ```javascript
246
+ kanban.columns = [
247
+ {
248
+ id: 'backlog',
249
+ title: 'Backlog',
250
+ cards: [
251
+ { id: 1, title: 'Feature A', labels: ['feature'], assignee: 'John' },
252
+ { id: 2, title: 'Bug Fix B', labels: ['bug'], color: '#f44336' }
253
+ ]
254
+ },
255
+ {
256
+ id: 'sprint',
257
+ title: 'Current Sprint',
258
+ limit: 5,
259
+ color: '#ff9800',
260
+ cards: [
261
+ {
262
+ id: 3,
263
+ title: 'Implement Auth',
264
+ description: 'JWT-based authentication',
265
+ assignee: 'Sarah',
266
+ labels: ['backend', 'security']
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ id: 'review',
272
+ title: 'Code Review',
273
+ color: '#9c27b0',
274
+ cards: []
275
+ },
276
+ {
277
+ id: 'deployed',
278
+ title: 'Deployed',
279
+ color: '#4caf50',
280
+ cards: []
281
+ }
282
+ ];
283
+ ```
284
+
285
+ ### Personal Task Board
286
+
287
+ ```javascript
288
+ kanban.columns = [
289
+ {
290
+ id: 'today',
291
+ title: 'Today',
292
+ limit: 3,
293
+ cards: [
294
+ { id: 1, title: 'Morning workout', labels: ['health'] },
295
+ { id: 2, title: 'Team meeting', labels: ['work'] }
296
+ ]
297
+ },
298
+ {
299
+ id: 'this-week',
300
+ title: 'This Week',
301
+ cards: []
302
+ },
303
+ {
304
+ id: 'completed',
305
+ title: 'Completed',
306
+ cards: []
307
+ }
308
+ ];
309
+ ```
310
+
311
+ ### Bug Tracking
312
+
313
+ ```javascript
314
+ kanban.columns = [
315
+ {
316
+ id: 'reported',
317
+ title: 'Reported',
318
+ cards: bugs.map(bug => ({
319
+ id: bug.id,
320
+ title: bug.title,
321
+ description: bug.description,
322
+ assignee: bug.reporter,
323
+ labels: [bug.severity, bug.priority],
324
+ color: bug.severity === 'critical' ? '#f44336' : '#ff9800'
325
+ }))
326
+ },
327
+ {
328
+ id: 'investigating',
329
+ title: 'Investigating',
330
+ limit: 5,
331
+ cards: []
332
+ },
333
+ {
334
+ id: 'fixing',
335
+ title: 'Fixing',
336
+ limit: 3,
337
+ cards: []
338
+ },
339
+ {
340
+ id: 'fixed',
341
+ title: 'Fixed',
342
+ cards: []
343
+ }
344
+ ];
345
+ ```
346
+
347
+ ### Sales Pipeline
348
+
349
+ ```javascript
350
+ kanban.columns = [
351
+ { id: 'lead', title: 'New Leads', cards: [] },
352
+ { id: 'contacted', title: 'Contacted', cards: [] },
353
+ { id: 'qualified', title: 'Qualified', cards: [] },
354
+ { id: 'proposal', title: 'Proposal Sent', cards: [] },
355
+ { id: 'closed', title: 'Closed Won', color: '#4caf50', cards: [] }
356
+ ];
357
+
358
+ // Add deal
359
+ kanban.addCard('lead', {
360
+ id: deal.id,
361
+ title: deal.company,
362
+ description: `$${deal.value}`,
363
+ assignee: deal.owner
364
+ });
365
+ ```
366
+
367
+ ### Disable Drag and Drop
368
+
369
+ ```html
370
+ <snice-kanban allow-drag-drop="false"></snice-kanban>
371
+ ```
372
+
373
+ ### Hide Card Counts
374
+
375
+ ```html
376
+ <snice-kanban show-card-count="false"></snice-kanban>
377
+ ```
378
+
379
+ ### Persist to Backend
380
+
381
+ ```javascript
382
+ kanban.addEventListener('@snice/kanban-card-move', async (e) => {
383
+ try {
384
+ await fetch('/api/cards/' + e.detail.card.id, {
385
+ method: 'PATCH',
386
+ headers: { 'Content-Type': 'application/json' },
387
+ body: JSON.stringify({
388
+ columnId: e.detail.toColumn
389
+ })
390
+ });
391
+ } catch (error) {
392
+ // Revert on error
393
+ kanban.moveCard(e.detail.card.id, e.detail.fromColumn);
394
+ alert('Failed to move card');
395
+ }
396
+ });
397
+ ```
398
+
399
+ ## Accessibility
400
+
401
+ - Keyboard navigation for cards
402
+ - ARIA labels for drag and drop
403
+ - Focus management
404
+ - Screen reader announcements
405
+
406
+ ## Browser Support
407
+
408
+ - Modern browsers with Custom Elements v1 support
409
+ - HTML5 Drag and Drop API
410
+ - Touch events for mobile (future enhancement)
@@ -0,0 +1,251 @@
1
+ # KPI Component
2
+
3
+ A key performance indicator display component for showing metrics with optional trend visualization and sentiment indicators. Perfect for dashboards and analytics interfaces.
4
+
5
+ ## Features
6
+
7
+ - **Clear Value Display**: Large, prominent metric value
8
+ - **Trend Indicators**: Optional trend value with sentiment icons
9
+ - **Sparkline Integration**: Built-in sparkline chart support
10
+ - **Sentiment Colors**: Visual feedback with up/down/neutral states
11
+ - **Multiple Sizes**: Small, medium, and large variants
12
+ - **Flexible Layout**: Responsive and adaptable to different layouts
13
+
14
+ ## Basic Usage
15
+
16
+ ```html
17
+ <snice-kpi
18
+ label="Total Revenue"
19
+ value="$45,231">
20
+ </snice-kpi>
21
+ ```
22
+
23
+ ## Properties
24
+
25
+ | Property | Type | Default | Description |
26
+ |----------|------|---------|-------------|
27
+ | `label` | `string` | `''` | Label text (metric name) |
28
+ | `value` | `string \| number` | `''` | Main metric value to display |
29
+ | `trend-value` | `string \| number` | `undefined` | Optional trend value (e.g., "+12.5%") |
30
+ | `trend-data` | `number[]` | `undefined` | Data for sparkline chart |
31
+ | `sentiment` | `KpiSentiment` | `undefined` | Trend sentiment ('up', 'down', 'neutral') |
32
+ | `size` | `KpiSize` | `'medium'` | Component size ('small', 'medium', 'large') |
33
+ | `show-sparkline` | `boolean` | `true` | Whether to show sparkline when data is provided |
34
+
35
+ ## With Trend Indicator
36
+
37
+ ```html
38
+ <snice-kpi
39
+ label="Monthly Revenue"
40
+ value="$54,239"
41
+ trend-value="+12.5%"
42
+ sentiment="up">
43
+ </snice-kpi>
44
+ ```
45
+
46
+ ## With Sparkline
47
+
48
+ ```html
49
+ <snice-kpi
50
+ id="sales"
51
+ label="Weekly Sales"
52
+ value="$28,450"
53
+ trend-value="+15.3%"
54
+ sentiment="up">
55
+ </snice-kpi>
56
+
57
+ <script>
58
+ document.getElementById('sales').trendData = [
59
+ 20, 25, 22, 30, 28, 35, 32, 38, 36, 42, 40, 45, 43, 48
60
+ ];
61
+ </script>
62
+ ```
63
+
64
+ ## Sentiment Variants
65
+
66
+ ### Up (Positive)
67
+ ```html
68
+ <snice-kpi
69
+ label="Profit Margin"
70
+ value="34.2%"
71
+ trend-value="+3.5%"
72
+ sentiment="up">
73
+ </snice-kpi>
74
+ ```
75
+
76
+ ### Down (Attention Needed)
77
+ ```html
78
+ <snice-kpi
79
+ label="Churn Rate"
80
+ value="2.3%"
81
+ trend-value="+0.8%"
82
+ sentiment="down">
83
+ </snice-kpi>
84
+ ```
85
+
86
+ ### Neutral (Stable)
87
+ ```html
88
+ <snice-kpi
89
+ label="Market Share"
90
+ value="28.5%"
91
+ trend-value="±0%"
92
+ sentiment="neutral">
93
+ </snice-kpi>
94
+ ```
95
+
96
+ ## Sizes
97
+
98
+ ### Small
99
+ ```html
100
+ <snice-kpi
101
+ label="Active Users"
102
+ value="1,234"
103
+ size="small">
104
+ </snice-kpi>
105
+ ```
106
+
107
+ ### Medium (Default)
108
+ ```html
109
+ <snice-kpi
110
+ label="Active Users"
111
+ value="1,234"
112
+ size="medium">
113
+ </snice-kpi>
114
+ ```
115
+
116
+ ### Large
117
+ ```html
118
+ <snice-kpi
119
+ label="Active Users"
120
+ value="1,234"
121
+ size="large">
122
+ </snice-kpi>
123
+ ```
124
+
125
+ ## CSS Parts
126
+
127
+ Use `::part()` to style internal elements:
128
+
129
+ ```css
130
+ snice-kpi::part(container) {
131
+ border: 2px solid #e0e0e0;
132
+ }
133
+
134
+ snice-kpi::part(label) {
135
+ text-transform: uppercase;
136
+ }
137
+
138
+ snice-kpi::part(value) {
139
+ color: #2563eb;
140
+ }
141
+
142
+ snice-kpi::part(trend) {
143
+ font-weight: 700;
144
+ }
145
+ ```
146
+
147
+ ## Theming
148
+
149
+ The component uses these CSS custom properties:
150
+
151
+ ```css
152
+ --snice-color-background
153
+ --snice-color-border
154
+ --snice-color-text
155
+ --snice-color-text-secondary
156
+ --snice-color-success
157
+ --snice-color-danger
158
+ --snice-spacing-*
159
+ --snice-font-size-*
160
+ --snice-font-weight-*
161
+ --snice-border-radius-md
162
+ ```
163
+
164
+ ## Examples
165
+
166
+ ### Dashboard Metrics
167
+ ```html
168
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
169
+ <snice-kpi
170
+ id="revenue"
171
+ label="Monthly Revenue"
172
+ value="$127,450"
173
+ trend-value="+22.4%"
174
+ sentiment="up">
175
+ </snice-kpi>
176
+
177
+ <snice-kpi
178
+ id="users"
179
+ label="Active Users"
180
+ value="2,345"
181
+ trend-value="+8.7%"
182
+ sentiment="up">
183
+ </snice-kpi>
184
+
185
+ <snice-kpi
186
+ id="conversion"
187
+ label="Conversion Rate"
188
+ value="3.24%"
189
+ trend-value="-0.5%"
190
+ sentiment="down">
191
+ </snice-kpi>
192
+ </div>
193
+
194
+ <script>
195
+ document.getElementById('revenue').trendData = [20, 25, 30, 28, 35, 40, 45];
196
+ document.getElementById('users').trendData = [100, 120, 110, 150, 140, 170, 160];
197
+ document.getElementById('conversion').trendData = [3.5, 3.3, 3.4, 3.2, 3.3, 3.1, 3.24];
198
+ </script>
199
+ ```
200
+
201
+ ### Without Sparkline
202
+ ```html
203
+ <snice-kpi
204
+ label="Customer Satisfaction"
205
+ value="4.8/5"
206
+ trend-value="+0.2"
207
+ sentiment="up"
208
+ show-sparkline="false">
209
+ </snice-kpi>
210
+ ```
211
+
212
+ ### Complex Metrics
213
+ ```html
214
+ <snice-kpi
215
+ id="nps"
216
+ label="Net Promoter Score"
217
+ value="72"
218
+ trend-value="+4 pts"
219
+ sentiment="up">
220
+ </snice-kpi>
221
+
222
+ <snice-kpi
223
+ id="cac"
224
+ label="Customer Acquisition Cost"
225
+ value="$156"
226
+ trend-value="-5.2%"
227
+ sentiment="down">
228
+ </snice-kpi>
229
+ ```
230
+
231
+ ## Best Practices
232
+
233
+ 1. **Use Clear Labels**: Make metric names concise and understandable
234
+ 2. **Format Values**: Present numbers in a readable format ($45K vs $45231.50)
235
+ 3. **Consistent Sentiment**: Use 'down' for bad news even if the number decreased (e.g., costs going down is good, but use 'down' for the direction)
236
+ 4. **Group Related KPIs**: Display related metrics together for context
237
+ 5. **Update Regularly**: Keep metrics fresh with real-time or frequent updates
238
+
239
+ ## Accessibility
240
+
241
+ - Labels provide context for screen readers
242
+ - Sentiment indicators have clear visual differentiation
243
+ - Sufficient color contrast for all text elements
244
+ - Keyboard navigation supported through standard focus
245
+
246
+ ## Performance
247
+
248
+ - Lightweight component with minimal DOM
249
+ - Efficient sparkline rendering via SVG
250
+ - CSS containment for optimized rendering
251
+ - No external dependencies beyond sparkline component