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,714 @@
1
+ # Checkbox Component
2
+
3
+ The checkbox component provides a form-associated checkbox input with support for checked, indeterminate, and invalid states, multiple sizes, and full keyboard accessibility.
4
+
5
+ ## Table of Contents
6
+ - [Basic Usage](#basic-usage)
7
+ - [Properties](#properties)
8
+ - [Methods](#methods)
9
+ - [Events](#events)
10
+ - [Examples](#examples)
11
+
12
+ ## Basic Usage
13
+
14
+ ```html
15
+ <snice-checkbox label="Accept terms and conditions"></snice-checkbox>
16
+ ```
17
+
18
+ ```typescript
19
+ import 'snice/components/checkbox/snice-checkbox';
20
+ ```
21
+
22
+ ## Properties
23
+
24
+ | Property | Type | Default | Description |
25
+ |----------|------|---------|-------------|
26
+ | `checked` | `boolean` | `false` | Whether the checkbox is checked |
27
+ | `indeterminate` | `boolean` | `false` | Show indeterminate (partial) state |
28
+ | `disabled` | `boolean` | `false` | Disable the checkbox |
29
+ | `required` | `boolean` | `false` | Mark as required field |
30
+ | `invalid` | `boolean` | `false` | Show invalid state styling |
31
+ | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Checkbox size |
32
+ | `name` | `string` | `''` | Form field name |
33
+ | `value` | `string` | `'on'` | Form field value when checked |
34
+ | `label` | `string` | `''` | Label text |
35
+
36
+ ## Methods
37
+
38
+ #### `focus(): void`
39
+ Focus the checkbox programmatically.
40
+
41
+ ```typescript
42
+ checkbox.focus();
43
+ ```
44
+
45
+ #### `blur(): void`
46
+ Remove focus from the checkbox.
47
+
48
+ ```typescript
49
+ checkbox.blur();
50
+ ```
51
+
52
+ #### `click(): void`
53
+ Programmatically click the checkbox.
54
+
55
+ ```typescript
56
+ checkbox.click();
57
+ ```
58
+
59
+ ## Events
60
+
61
+ #### `change`
62
+ Fired when the checkbox state changes.
63
+
64
+ **Event Detail:**
65
+ ```typescript
66
+ {
67
+ checked: boolean;
68
+ indeterminate: boolean;
69
+ checkbox: SniceCheckboxElement;
70
+ }
71
+ ```
72
+
73
+ **Usage:**
74
+ ```typescript
75
+ checkbox.addEventListener('change', (e) => {
76
+ console.log('Checked:', e.detail.checked);
77
+ console.log('Indeterminate:', e.detail.indeterminate);
78
+ });
79
+ ```
80
+
81
+ ## Examples
82
+
83
+ ### Basic Checkbox
84
+
85
+ ```html
86
+ <!-- Unchecked checkbox -->
87
+ <snice-checkbox label="Subscribe to newsletter"></snice-checkbox>
88
+
89
+ <!-- Checked checkbox -->
90
+ <snice-checkbox label="I agree to the terms" checked></snice-checkbox>
91
+
92
+ <!-- Checkbox without label -->
93
+ <snice-checkbox></snice-checkbox>
94
+ ```
95
+
96
+ ### Checkbox Sizes
97
+
98
+ ```html
99
+ <snice-checkbox label="Small checkbox" size="small"></snice-checkbox>
100
+ <snice-checkbox label="Medium checkbox" size="medium"></snice-checkbox>
101
+ <snice-checkbox label="Large checkbox" size="large"></snice-checkbox>
102
+ ```
103
+
104
+ ### Checkbox States
105
+
106
+ ```html
107
+ <!-- Checked -->
108
+ <snice-checkbox label="Checked" checked></snice-checkbox>
109
+
110
+ <!-- Indeterminate (partial selection) -->
111
+ <snice-checkbox label="Indeterminate" indeterminate></snice-checkbox>
112
+
113
+ <!-- Disabled -->
114
+ <snice-checkbox label="Disabled" disabled></snice-checkbox>
115
+
116
+ <!-- Disabled and checked -->
117
+ <snice-checkbox label="Disabled checked" checked disabled></snice-checkbox>
118
+
119
+ <!-- Required -->
120
+ <snice-checkbox label="Required field" required></snice-checkbox>
121
+
122
+ <!-- Invalid -->
123
+ <snice-checkbox label="Invalid" invalid></snice-checkbox>
124
+ ```
125
+
126
+ ### Form Integration
127
+
128
+ ```html
129
+ <form id="signup-form">
130
+ <snice-checkbox
131
+ name="terms"
132
+ value="accepted"
133
+ label="I accept the terms and conditions"
134
+ required>
135
+ </snice-checkbox>
136
+
137
+ <snice-checkbox
138
+ name="newsletter"
139
+ value="yes"
140
+ label="Subscribe to newsletter">
141
+ </snice-checkbox>
142
+
143
+ <snice-checkbox
144
+ name="marketing"
145
+ value="yes"
146
+ label="Receive marketing emails">
147
+ </snice-checkbox>
148
+
149
+ <button type="submit">Sign Up</button>
150
+ </form>
151
+
152
+ <script type="module">
153
+ import 'snice/components/checkbox/snice-checkbox';
154
+
155
+ const form = document.getElementById('signup-form');
156
+
157
+ form.addEventListener('submit', (e) => {
158
+ e.preventDefault();
159
+ const formData = new FormData(form);
160
+
161
+ console.log('Terms accepted:', formData.get('terms'));
162
+ console.log('Newsletter:', formData.get('newsletter'));
163
+ console.log('Marketing:', formData.get('marketing'));
164
+ });
165
+ </script>
166
+ ```
167
+
168
+ ### Select All Pattern
169
+
170
+ ```html
171
+ <snice-checkbox id="select-all" label="Select all items"></snice-checkbox>
172
+
173
+ <div style="margin-left: 2rem;">
174
+ <snice-checkbox class="item-checkbox" label="Item 1" value="item1"></snice-checkbox>
175
+ <snice-checkbox class="item-checkbox" label="Item 2" value="item2"></snice-checkbox>
176
+ <snice-checkbox class="item-checkbox" label="Item 3" value="item3"></snice-checkbox>
177
+ <snice-checkbox class="item-checkbox" label="Item 4" value="item4"></snice-checkbox>
178
+ </div>
179
+
180
+ <script type="module">
181
+ import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
182
+
183
+ const selectAll = document.getElementById('select-all') as SniceCheckboxElement;
184
+ const items = Array.from(document.querySelectorAll('.item-checkbox')) as SniceCheckboxElement[];
185
+
186
+ // Handle select all change
187
+ selectAll.addEventListener('change', (e) => {
188
+ items.forEach(item => {
189
+ item.checked = e.detail.checked;
190
+ });
191
+ });
192
+
193
+ // Handle individual item change
194
+ items.forEach(item => {
195
+ item.addEventListener('change', () => {
196
+ updateSelectAllState();
197
+ });
198
+ });
199
+
200
+ function updateSelectAllState() {
201
+ const checkedCount = items.filter(item => item.checked).length;
202
+
203
+ if (checkedCount === 0) {
204
+ selectAll.checked = false;
205
+ selectAll.indeterminate = false;
206
+ } else if (checkedCount === items.length) {
207
+ selectAll.checked = true;
208
+ selectAll.indeterminate = false;
209
+ } else {
210
+ selectAll.checked = false;
211
+ selectAll.indeterminate = true;
212
+ }
213
+ }
214
+
215
+ // Initialize state
216
+ updateSelectAllState();
217
+ </script>
218
+ ```
219
+
220
+ ### Checkbox Group
221
+
222
+ ```html
223
+ <fieldset>
224
+ <legend>Select your interests</legend>
225
+
226
+ <div style="display: flex; flex-direction: column; gap: 0.5rem;">
227
+ <snice-checkbox name="interests" value="technology" label="Technology"></snice-checkbox>
228
+ <snice-checkbox name="interests" value="design" label="Design"></snice-checkbox>
229
+ <snice-checkbox name="interests" value="business" label="Business"></snice-checkbox>
230
+ <snice-checkbox name="interests" value="marketing" label="Marketing"></snice-checkbox>
231
+ <snice-checkbox name="interests" value="finance" label="Finance"></snice-checkbox>
232
+ </div>
233
+ </fieldset>
234
+ ```
235
+
236
+ ### Agreement Checkboxes
237
+
238
+ ```html
239
+ <form id="agreement-form">
240
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
241
+ <snice-checkbox
242
+ id="terms-cb"
243
+ name="terms"
244
+ label="I have read and agree to the Terms of Service"
245
+ required>
246
+ </snice-checkbox>
247
+
248
+ <snice-checkbox
249
+ id="privacy-cb"
250
+ name="privacy"
251
+ label="I have read and agree to the Privacy Policy"
252
+ required>
253
+ </snice-checkbox>
254
+
255
+ <snice-checkbox
256
+ id="age-cb"
257
+ name="age"
258
+ label="I confirm that I am at least 18 years old"
259
+ required>
260
+ </snice-checkbox>
261
+
262
+ <snice-checkbox
263
+ name="updates"
264
+ label="I want to receive product updates and news (optional)">
265
+ </snice-checkbox>
266
+ </div>
267
+
268
+ <button type="submit" style="margin-top: 1rem;">Continue</button>
269
+ </form>
270
+
271
+ <script type="module">
272
+ import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
273
+
274
+ const form = document.getElementById('agreement-form');
275
+ const requiredCheckboxes = [
276
+ document.getElementById('terms-cb'),
277
+ document.getElementById('privacy-cb'),
278
+ document.getElementById('age-cb')
279
+ ] as SniceCheckboxElement[];
280
+
281
+ form.addEventListener('submit', (e) => {
282
+ e.preventDefault();
283
+
284
+ // Validate required checkboxes
285
+ let allValid = true;
286
+ requiredCheckboxes.forEach(cb => {
287
+ if (!cb.checked) {
288
+ cb.invalid = true;
289
+ allValid = false;
290
+ } else {
291
+ cb.invalid = false;
292
+ }
293
+ });
294
+
295
+ if (allValid) {
296
+ console.log('All agreements accepted');
297
+ // Submit form
298
+ } else {
299
+ alert('Please accept all required agreements');
300
+ }
301
+ });
302
+
303
+ // Clear invalid state when checked
304
+ requiredCheckboxes.forEach(cb => {
305
+ cb.addEventListener('change', () => {
306
+ if (cb.checked) {
307
+ cb.invalid = false;
308
+ }
309
+ });
310
+ });
311
+ </script>
312
+ ```
313
+
314
+ ### Settings Checkboxes
315
+
316
+ ```html
317
+ <style>
318
+ .settings-section {
319
+ margin-bottom: 2rem;
320
+ }
321
+
322
+ .settings-section h3 {
323
+ margin-bottom: 1rem;
324
+ font-size: 1.125rem;
325
+ font-weight: 600;
326
+ }
327
+
328
+ .checkbox-list {
329
+ display: flex;
330
+ flex-direction: column;
331
+ gap: 0.75rem;
332
+ }
333
+ </style>
334
+
335
+ <div class="settings-section">
336
+ <h3>Notification Settings</h3>
337
+ <div class="checkbox-list">
338
+ <snice-checkbox
339
+ name="email-notifications"
340
+ label="Email notifications"
341
+ checked>
342
+ </snice-checkbox>
343
+ <snice-checkbox
344
+ name="push-notifications"
345
+ label="Push notifications"
346
+ checked>
347
+ </snice-checkbox>
348
+ <snice-checkbox
349
+ name="sms-notifications"
350
+ label="SMS notifications">
351
+ </snice-checkbox>
352
+ </div>
353
+ </div>
354
+
355
+ <div class="settings-section">
356
+ <h3>Privacy Settings</h3>
357
+ <div class="checkbox-list">
358
+ <snice-checkbox
359
+ name="profile-public"
360
+ label="Make my profile public">
361
+ </snice-checkbox>
362
+ <snice-checkbox
363
+ name="show-email"
364
+ label="Show my email address">
365
+ </snice-checkbox>
366
+ <snice-checkbox
367
+ name="show-activity"
368
+ label="Show my activity status"
369
+ checked>
370
+ </snice-checkbox>
371
+ </div>
372
+ </div>
373
+ ```
374
+
375
+ ### Checkbox with Description
376
+
377
+ ```html
378
+ <style>
379
+ .checkbox-with-description {
380
+ display: flex;
381
+ flex-direction: column;
382
+ gap: 1rem;
383
+ }
384
+
385
+ .checkbox-item {
386
+ display: flex;
387
+ align-items: start;
388
+ gap: 0.75rem;
389
+ padding: 1rem;
390
+ border: 1px solid #e5e7eb;
391
+ border-radius: 0.5rem;
392
+ }
393
+
394
+ .checkbox-item:hover {
395
+ background: #f9fafb;
396
+ }
397
+
398
+ .checkbox-content {
399
+ flex: 1;
400
+ }
401
+
402
+ .checkbox-content h4 {
403
+ margin: 0 0 0.25rem;
404
+ font-weight: 600;
405
+ }
406
+
407
+ .checkbox-content p {
408
+ margin: 0;
409
+ color: #6b7280;
410
+ font-size: 0.875rem;
411
+ }
412
+ </style>
413
+
414
+ <div class="checkbox-with-description">
415
+ <div class="checkbox-item">
416
+ <snice-checkbox name="feature1" value="analytics"></snice-checkbox>
417
+ <div class="checkbox-content">
418
+ <h4>Advanced Analytics</h4>
419
+ <p>Get detailed insights into your data with customizable dashboards and reports.</p>
420
+ </div>
421
+ </div>
422
+
423
+ <div class="checkbox-item">
424
+ <snice-checkbox name="feature2" value="api"></snice-checkbox>
425
+ <div class="checkbox-content">
426
+ <h4>API Access</h4>
427
+ <p>Integrate with your applications using our comprehensive REST API.</p>
428
+ </div>
429
+ </div>
430
+
431
+ <div class="checkbox-item">
432
+ <snice-checkbox name="feature3" value="support"></snice-checkbox>
433
+ <div class="checkbox-content">
434
+ <h4>Priority Support</h4>
435
+ <p>Get help when you need it with 24/7 priority email and chat support.</p>
436
+ </div>
437
+ </div>
438
+ </div>
439
+ ```
440
+
441
+ ### Task List
442
+
443
+ ```html
444
+ <style>
445
+ .task-list {
446
+ max-width: 500px;
447
+ }
448
+
449
+ .task-item {
450
+ display: flex;
451
+ align-items: center;
452
+ gap: 0.75rem;
453
+ padding: 0.75rem;
454
+ border-bottom: 1px solid #e5e7eb;
455
+ }
456
+
457
+ .task-item.completed {
458
+ opacity: 0.6;
459
+ }
460
+
461
+ .task-item.completed .task-text {
462
+ text-decoration: line-through;
463
+ }
464
+
465
+ .task-text {
466
+ flex: 1;
467
+ }
468
+ </style>
469
+
470
+ <div class="task-list">
471
+ <h3>Today's Tasks</h3>
472
+
473
+ <div class="task-item">
474
+ <snice-checkbox class="task-cb" data-task="1"></snice-checkbox>
475
+ <span class="task-text">Review pull requests</span>
476
+ </div>
477
+
478
+ <div class="task-item">
479
+ <snice-checkbox class="task-cb" data-task="2"></snice-checkbox>
480
+ <span class="task-text">Update documentation</span>
481
+ </div>
482
+
483
+ <div class="task-item completed">
484
+ <snice-checkbox class="task-cb" data-task="3" checked></snice-checkbox>
485
+ <span class="task-text">Fix bug in authentication</span>
486
+ </div>
487
+
488
+ <div class="task-item">
489
+ <snice-checkbox class="task-cb" data-task="4"></snice-checkbox>
490
+ <span class="task-text">Deploy to production</span>
491
+ </div>
492
+ </div>
493
+
494
+ <script type="module">
495
+ import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
496
+
497
+ const taskCheckboxes = document.querySelectorAll('.task-cb') as NodeListOf<SniceCheckboxElement>;
498
+
499
+ taskCheckboxes.forEach(cb => {
500
+ cb.addEventListener('change', (e) => {
501
+ const taskItem = cb.closest('.task-item');
502
+ if (e.detail.checked) {
503
+ taskItem?.classList.add('completed');
504
+ } else {
505
+ taskItem?.classList.remove('completed');
506
+ }
507
+ });
508
+ });
509
+ </script>
510
+ ```
511
+
512
+ ### Filter Checkboxes
513
+
514
+ ```html
515
+ <style>
516
+ .filter-panel {
517
+ max-width: 250px;
518
+ padding: 1rem;
519
+ background: #f9fafb;
520
+ border-radius: 0.5rem;
521
+ }
522
+
523
+ .filter-section {
524
+ margin-bottom: 1.5rem;
525
+ }
526
+
527
+ .filter-section:last-child {
528
+ margin-bottom: 0;
529
+ }
530
+
531
+ .filter-title {
532
+ font-weight: 600;
533
+ margin-bottom: 0.75rem;
534
+ }
535
+
536
+ .filter-options {
537
+ display: flex;
538
+ flex-direction: column;
539
+ gap: 0.5rem;
540
+ }
541
+ </style>
542
+
543
+ <div class="filter-panel">
544
+ <div class="filter-section">
545
+ <div class="filter-title">Category</div>
546
+ <div class="filter-options">
547
+ <snice-checkbox name="category" value="electronics" label="Electronics" size="small"></snice-checkbox>
548
+ <snice-checkbox name="category" value="clothing" label="Clothing" size="small"></snice-checkbox>
549
+ <snice-checkbox name="category" value="books" label="Books" size="small"></snice-checkbox>
550
+ <snice-checkbox name="category" value="home" label="Home & Garden" size="small"></snice-checkbox>
551
+ </div>
552
+ </div>
553
+
554
+ <div class="filter-section">
555
+ <div class="filter-title">Price Range</div>
556
+ <div class="filter-options">
557
+ <snice-checkbox name="price" value="under-25" label="Under $25" size="small"></snice-checkbox>
558
+ <snice-checkbox name="price" value="25-50" label="$25 - $50" size="small"></snice-checkbox>
559
+ <snice-checkbox name="price" value="50-100" label="$50 - $100" size="small"></snice-checkbox>
560
+ <snice-checkbox name="price" value="over-100" label="Over $100" size="small"></snice-checkbox>
561
+ </div>
562
+ </div>
563
+
564
+ <div class="filter-section">
565
+ <div class="filter-title">Features</div>
566
+ <div class="filter-options">
567
+ <snice-checkbox name="features" value="free-shipping" label="Free Shipping" size="small"></snice-checkbox>
568
+ <snice-checkbox name="features" value="on-sale" label="On Sale" size="small"></snice-checkbox>
569
+ <snice-checkbox name="features" value="new" label="New Arrivals" size="small"></snice-checkbox>
570
+ </div>
571
+ </div>
572
+ </div>
573
+ ```
574
+
575
+ ### Dynamic Checkbox Creation
576
+
577
+ ```html
578
+ <div id="permissions-container"></div>
579
+
580
+ <script type="module">
581
+ import 'snice/components/checkbox/snice-checkbox';
582
+
583
+ const permissions = [
584
+ { name: 'read', label: 'Read', checked: true },
585
+ { name: 'write', label: 'Write', checked: true },
586
+ { name: 'delete', label: 'Delete', checked: false },
587
+ { name: 'admin', label: 'Administrator', checked: false }
588
+ ];
589
+
590
+ const container = document.getElementById('permissions-container');
591
+
592
+ permissions.forEach(perm => {
593
+ const checkbox = document.createElement('snice-checkbox');
594
+ checkbox.name = 'permissions';
595
+ checkbox.value = perm.name;
596
+ checkbox.label = perm.label;
597
+ checkbox.checked = perm.checked;
598
+
599
+ checkbox.addEventListener('change', (e) => {
600
+ console.log(`${perm.label} permission:`, e.detail.checked);
601
+ });
602
+
603
+ container.appendChild(checkbox);
604
+ });
605
+ </script>
606
+ ```
607
+
608
+ ### Validation Example
609
+
610
+ ```html
611
+ <form id="validation-form">
612
+ <snice-checkbox
613
+ id="consent-cb"
614
+ name="consent"
615
+ label="I consent to data processing"
616
+ required>
617
+ </snice-checkbox>
618
+
619
+ <div id="error-message" style="color: #ef4444; font-size: 0.875rem; margin-top: 0.5rem; display: none;">
620
+ You must consent to continue
621
+ </div>
622
+
623
+ <button type="submit" style="margin-top: 1rem;">Submit</button>
624
+ </form>
625
+
626
+ <script type="module">
627
+ import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
628
+
629
+ const form = document.getElementById('validation-form');
630
+ const checkbox = document.getElementById('consent-cb') as SniceCheckboxElement;
631
+ const errorMessage = document.getElementById('error-message');
632
+
633
+ form.addEventListener('submit', (e) => {
634
+ e.preventDefault();
635
+
636
+ if (!checkbox.checked) {
637
+ checkbox.invalid = true;
638
+ errorMessage.style.display = 'block';
639
+ } else {
640
+ checkbox.invalid = false;
641
+ errorMessage.style.display = 'none';
642
+ console.log('Form submitted');
643
+ }
644
+ });
645
+
646
+ checkbox.addEventListener('change', () => {
647
+ if (checkbox.checked) {
648
+ checkbox.invalid = false;
649
+ errorMessage.style.display = 'none';
650
+ }
651
+ });
652
+ </script>
653
+ ```
654
+
655
+ ## Accessibility
656
+
657
+ - **Form-associated**: Full form integration as native element
658
+ - **Keyboard support**: Space to toggle, Tab to navigate
659
+ - **ARIA attributes**: Proper `aria-checked` (including "mixed" for indeterminate)
660
+ - **Screen reader friendly**: Label association and state announcements
661
+ - **Focus indicators**: Clear focus states for keyboard navigation
662
+ - **Invalid state**: `aria-invalid` for validation errors
663
+
664
+ ## Browser Support
665
+
666
+ - Modern browsers (Chrome, Firefox, Safari, Edge)
667
+ - Requires Custom Elements v1, Shadow DOM, and Form-Associated Custom Elements support
668
+
669
+ ## Best Practices
670
+
671
+ 1. **Always provide labels**: Use the `label` property or wrap in a label element
672
+ 2. **Use indeterminate appropriately**: For partial selections in hierarchical lists
673
+ 3. **Validate required fields**: Show invalid state and error messages
674
+ 4. **Group related checkboxes**: Use fieldsets for checkbox groups
675
+ 5. **Make clickable area large**: Ensure label is clickable, not just the box
676
+ 6. **Show validation feedback**: Indicate errors clearly near the checkbox
677
+ 7. **Use appropriate sizes**: Match checkbox size to surrounding content
678
+ 8. **Avoid too many checkboxes**: Consider alternative UI for long lists
679
+ 9. **Test keyboard navigation**: Ensure all checkboxes work without a mouse
680
+ 10. **Handle form submission**: Process checkbox values correctly
681
+
682
+ ## Common Patterns
683
+
684
+ ### Single Checkbox
685
+ ```html
686
+ <snice-checkbox label="I agree to the terms" required></snice-checkbox>
687
+ ```
688
+
689
+ ### Checkbox Group
690
+ ```html
691
+ <snice-checkbox name="option" value="1" label="Option 1"></snice-checkbox>
692
+ <snice-checkbox name="option" value="2" label="Option 2"></snice-checkbox>
693
+ ```
694
+
695
+ ### Select All
696
+ ```html
697
+ <snice-checkbox id="select-all" label="Select all" indeterminate></snice-checkbox>
698
+ ```
699
+
700
+ ### Required Field
701
+ ```html
702
+ <snice-checkbox label="Required" required invalid></snice-checkbox>
703
+ ```
704
+
705
+ ## Form Integration
706
+
707
+ The checkbox component is a form-associated custom element and works seamlessly with standard HTML forms:
708
+
709
+ ```html
710
+ <form>
711
+ <snice-checkbox name="newsletter" value="yes"></snice-checkbox>
712
+ <!-- FormData will include: newsletter=yes when checked -->
713
+ </form>
714
+ ```