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