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,17 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/chip.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/chip.md -->
2
2
 
3
3
  # Chip Component
4
4
 
5
- The chip component provides compact elements for tags, filters, selections, or categorizations. It supports icons, avatars, removable states, and multiple visual variants.
5
+ Compact elements for tags, filters, selections, or categorizations. Supports icons, avatars, removable states, and multiple visual variants.
6
6
 
7
7
  ## Table of Contents
8
8
  - [Properties](#properties)
9
9
  - [Events](#events)
10
10
  - [Slots](#slots)
11
+ - [CSS Parts](#css-parts)
11
12
  - [Basic Usage](#basic-usage)
12
13
  - [Examples](#examples)
13
14
  - [Accessibility](#accessibility)
14
- - [Browser Support](#browser-support)
15
- - [Common Patterns](#common-patterns)
16
- - [Variant Colors](#variant-colors)
17
15
 
18
16
  ## Properties
19
17
 
@@ -30,63 +28,22 @@ The chip component provides compact elements for tags, filters, selections, or c
30
28
 
31
29
  ## Events
32
30
 
33
- #### `chip-click`
34
- Fired when the chip is clicked (not the remove button).
35
-
36
- **Event Detail:**
37
- ```typescript
38
- {
39
- label: string;
40
- selected: boolean;
41
- }
42
- ```
43
-
44
- **Usage:**
45
- ```typescript
46
- chip.addEventListener('chip-click', (e) => {
47
- console.log('Chip clicked:', e.detail.label, 'selected:', e.detail.selected);
48
- });
49
- ```
50
-
51
- #### `chip-remove`
52
- Fired when the remove button is clicked.
53
-
54
- **Event Detail:**
55
- ```typescript
56
- {
57
- label: string;
58
- }
59
- ```
60
-
61
- **Usage:**
62
- ```typescript
63
- chip.addEventListener('chip-remove', (e) => {
64
- console.log('Removed:', e.detail.label);
65
- chip.remove(); // Remove from DOM
66
- });
67
- ```
31
+ | Event | Detail | Description |
32
+ |-------|--------|-------------|
33
+ | `chip-click` | `{ label: string, selected: boolean }` | Fired when the chip is clicked (not the remove button) |
34
+ | `chip-remove` | `{ label: string }` | Fired when the remove button is clicked |
68
35
 
69
36
  ## Slots
70
37
 
71
- | Slot Name | Description |
72
- |-----------|-------------|
38
+ | Name | Description |
39
+ |------|-------------|
73
40
  | `icon` | Custom icon content. Overrides the `icon` property. Note: `avatar` property takes precedence over icon slot. |
74
41
 
75
- ### Icon Slot Usage
76
-
77
- Use the `icon` slot for external CSS-based icon fonts:
78
-
79
- ```html
80
- <snice-chip label="Tag">
81
- <span slot="icon" class="material-symbols-outlined">label</span>
82
- </snice-chip>
83
-
84
- <snice-chip label="Favorite" variant="warning">
85
- <i slot="icon" class="fa-solid fa-star"></i>
86
- </snice-chip>
87
- ```
42
+ ## CSS Parts
88
43
 
89
- > **Note**: If `avatar` property is set, the avatar takes precedence and the icon slot will not be displayed.
44
+ | Part | Description |
45
+ |------|-------------|
46
+ | `icon` | The icon wrapper element |
90
47
 
91
48
  ## Basic Usage
92
49
 
@@ -100,16 +57,10 @@ import 'snice/components/chip/snice-chip';
100
57
 
101
58
  ## Examples
102
59
 
103
- ### Basic Chips
104
-
105
- ```html
106
- <snice-chip label="Default"></snice-chip>
107
- <snice-chip label="Technology"></snice-chip>
108
- <snice-chip label="Design"></snice-chip>
109
- ```
110
-
111
60
  ### Color Variants
112
61
 
62
+ Use the `variant` attribute to set the chip color.
63
+
113
64
  ```html
114
65
  <snice-chip label="Default" variant="default"></snice-chip>
115
66
  <snice-chip label="Primary" variant="primary"></snice-chip>
@@ -119,7 +70,9 @@ import 'snice/components/chip/snice-chip';
119
70
  <snice-chip label="Info" variant="info"></snice-chip>
120
71
  ```
121
72
 
122
- ### Chip Sizes
73
+ ### Sizes
74
+
75
+ Use the `size` attribute to change the chip size.
123
76
 
124
77
  ```html
125
78
  <snice-chip label="Small" size="small"></snice-chip>
@@ -129,16 +82,10 @@ import 'snice/components/chip/snice-chip';
129
82
 
130
83
  ### Removable Chips
131
84
 
85
+ Set `removable` to show a remove button. Listen for `chip-remove` to handle removal.
86
+
132
87
  ```html
133
88
  <snice-chip label="Remove me" removable></snice-chip>
134
-
135
- <snice-chip
136
- id="removable-chip"
137
- label="Click X to remove"
138
- removable
139
- variant="primary">
140
- </snice-chip>
141
-
142
89
  ```
143
90
 
144
91
  ```typescript
@@ -147,20 +94,14 @@ chip.addEventListener('chip-remove', () => {
147
94
  });
148
95
  ```
149
96
 
150
- ### Chips with Icons
151
-
152
- The `icon` property supports multiple formats:
153
- - **URLs**: Image files (`/icons/star.svg`)
154
- - **Emoji**: `★`, `🏠`, `⚙️`
155
- - **Scheme overrides**: `img://filename` forces `<img>`, `text://content` forces text
97
+ ### Icons
156
98
 
157
- > **⚠️ Common mistake:** `icon="home"` or `icon="settings"` renders as **plain text**, not a Material icon. Snice does not bundle Material Symbols. Use the `icon` slot instead.
99
+ Use the `icon` property for emoji or URLs. Use the `icon` slot for CSS-based icon fonts.
158
100
 
159
101
  ```html
160
102
  <!-- Emoji icons -->
161
103
  <snice-chip label="Favorite" icon="★" variant="warning"></snice-chip>
162
104
  <snice-chip label="Home" icon="🏠" variant="primary"></snice-chip>
163
- <snice-chip label="Settings" icon="⚙️" variant="default"></snice-chip>
164
105
 
165
106
  <!-- Image URL -->
166
107
  <snice-chip label="Star" icon="/icons/star.svg" variant="warning"></snice-chip>
@@ -171,35 +112,23 @@ The `icon` property supports multiple formats:
171
112
  </snice-chip>
172
113
  ```
173
114
 
174
- ### Chips with Avatars
115
+ > **Note:** `icon="home"` or `icon="settings"` renders as **plain text**, not a Material icon. Snice does not bundle Material Symbols. Use the `icon` slot instead.
175
116
 
176
- ```html
177
- <snice-chip
178
- label="John Doe"
179
- avatar="https://via.placeholder.com/32"
180
- removable>
181
- </snice-chip>
117
+ ### Avatars
182
118
 
183
- <snice-chip
184
- label="Jane Smith"
185
- avatar="https://via.placeholder.com/32/FF6B6B"
186
- removable>
187
- </snice-chip>
119
+ Use `avatar` for user chips. Avatar takes precedence over the icon slot.
188
120
 
189
- <snice-chip
190
- label="Alice Brown"
191
- avatar="https://via.placeholder.com/32/4ECDC4"
192
- removable>
193
- </snice-chip>
121
+ ```html
122
+ <snice-chip label="John Doe" avatar="https://via.placeholder.com/32" removable></snice-chip>
194
123
  ```
195
124
 
196
125
  ### Selected State
197
126
 
127
+ Set `selected` for toggleable chips.
128
+
198
129
  ```html
199
130
  <snice-chip label="Option 1" selected></snice-chip>
200
131
  <snice-chip label="Option 2"></snice-chip>
201
- <snice-chip label="Option 3"></snice-chip>
202
-
203
132
  ```
204
133
 
205
134
  ```typescript
@@ -211,496 +140,38 @@ chips.forEach(chip => {
211
140
  });
212
141
  ```
213
142
 
214
- ### Disabled Chips
215
-
216
- ```html
217
- <snice-chip label="Disabled" disabled></snice-chip>
218
- <snice-chip label="Disabled Removable" removable disabled></snice-chip>
219
- <snice-chip label="Disabled Selected" selected disabled></snice-chip>
220
- ```
221
-
222
- ### Tag List
223
-
224
- ```html
225
- <style>
226
- .tag-container {
227
- display: flex;
228
- flex-wrap: wrap;
229
- gap: 0.5rem;
230
- }
231
- </style>
232
-
233
- <div class="tag-container">
234
- <snice-chip label="JavaScript" variant="warning" removable></snice-chip>
235
- <snice-chip label="TypeScript" variant="primary" removable></snice-chip>
236
- <snice-chip label="React" variant="info" removable></snice-chip>
237
- <snice-chip label="Vue" variant="success" removable></snice-chip>
238
- <snice-chip label="Angular" variant="error" removable></snice-chip>
239
- </div>
240
-
241
- ```
242
-
243
- ```typescript
244
- chips.forEach(chip => {
245
- chip.addEventListener('chip-remove', () => {
246
- chip.remove();
247
- });
248
- });
249
- ```
250
-
251
143
  ### Filter Chips
252
144
 
253
- ```html
254
- <style>
255
- .filter-section {
256
- margin-bottom: 1.5rem;
257
- }
258
-
259
- .filter-title {
260
- font-weight: 600;
261
- margin-bottom: 0.75rem;
262
- }
263
-
264
- .filter-chips {
265
- display: flex;
266
- flex-wrap: wrap;
267
- gap: 0.5rem;
268
- }
269
- </style>
270
-
271
- <div class="filter-section">
272
- <div class="filter-title">Category</div>
273
- <div class="filter-chips">
274
- <snice-chip id="cat-electronics" label="Electronics"></snice-chip>
275
- <snice-chip id="cat-clothing" label="Clothing"></snice-chip>
276
- <snice-chip id="cat-books" label="Books"></snice-chip>
277
- <snice-chip id="cat-home" label="Home & Garden"></snice-chip>
278
- </div>
279
- </div>
280
-
281
- <div class="filter-section">
282
- <div class="filter-title">Price</div>
283
- <div class="filter-chips">
284
- <snice-chip id="price-1" label="Under $25"></snice-chip>
285
- <snice-chip id="price-2" label="$25-$50"></snice-chip>
286
- <snice-chip id="price-3" label="$50-$100"></snice-chip>
287
- <snice-chip id="price-4" label="Over $100"></snice-chip>
288
- </div>
289
- </div>
290
-
291
- ```
145
+ Use selected state for multi-select filter behavior.
292
146
 
293
147
  ```typescript
294
- filterChips.forEach(chip => {
295
- chip.addEventListener('click', () => {
296
- chip.selected = !chip.selected;
297
- console.log('Filters:', Array.from(filterChips)
298
- .filter(c => c.selected)
299
- .map(c => c.label));
300
- });
148
+ chip.addEventListener('click', () => {
149
+ chip.selected = !chip.selected;
150
+ console.log('Active filters:', Array.from(chips).filter(c => c.selected).map(c => c.label));
301
151
  });
302
152
  ```
303
153
 
304
- ### Contact Chips
305
-
306
- ```html
307
- <style>
308
- .contacts {
309
- display: flex;
310
- flex-wrap: wrap;
311
- gap: 0.5rem;
312
- max-width: 600px;
313
- }
314
- </style>
315
-
316
- <div>
317
- <h4>To:</h4>
318
- <div class="contacts" id="recipients"></div>
319
- </div>
320
-
321
- ```
322
-
323
- ```typescript
324
- import 'snice/components/chip/snice-chip';
325
-
326
- const contacts = [
327
- { name: 'John Doe', email: 'john@example.com', avatar: 'https://via.placeholder.com/32' },
328
- { name: 'Jane Smith', email: 'jane@example.com', avatar: 'https://via.placeholder.com/32/FF6B6B' },
329
- { name: 'Bob Johnson', email: 'bob@example.com', avatar: 'https://via.placeholder.com/32/4ECDC4' }
330
- ];
331
-
332
- contacts.forEach(contact => {
333
- const chip = document.createElement('snice-chip');
334
- chip.label = contact.name;
335
- chip.avatar = contact.avatar;
336
- chip.removable = true;
337
-
338
- chip.addEventListener('chip-remove', () => {
339
- chip.remove();
340
- console.log('Removed:', contact.name);
341
- });
342
-
343
- container.appendChild(chip);
344
- });
345
- ```
346
-
347
- ### Status Chips
348
-
349
- ```html
350
- <style>
351
- .status-list {
352
- display: flex;
353
- flex-direction: column;
354
- gap: 1rem;
355
- max-width: 400px;
356
- }
357
-
358
- .status-item {
359
- display: flex;
360
- justify-content: space-between;
361
- align-items: center;
362
- padding: 1rem;
363
- border: 1px solid #e5e7eb;
364
- border-radius: 0.5rem;
365
- }
366
-
367
- .status-info h4 {
368
- margin: 0 0 0.25rem;
369
- }
370
-
371
- .status-info p {
372
- margin: 0;
373
- color: #6b7280;
374
- font-size: 0.875rem;
375
- }
376
- </style>
377
-
378
- <div class="status-list">
379
- <div class="status-item">
380
- <div class="status-info">
381
- <h4>Order #1234</h4>
382
- <p>Placed 2 hours ago</p>
383
- </div>
384
- <snice-chip label="Processing" variant="warning" size="small"></snice-chip>
385
- </div>
386
-
387
- <div class="status-item">
388
- <div class="status-info">
389
- <h4>Order #1235</h4>
390
- <p>Placed yesterday</p>
391
- </div>
392
- <snice-chip label="Shipped" variant="info" size="small"></snice-chip>
393
- </div>
394
-
395
- <div class="status-item">
396
- <div class="status-info">
397
- <h4>Order #1236</h4>
398
- <p>Placed 3 days ago</p>
399
- </div>
400
- <snice-chip label="Delivered" variant="success" size="small"></snice-chip>
401
- </div>
402
-
403
- <div class="status-item">
404
- <div class="status-info">
405
- <h4>Order #1237</h4>
406
- <p>Placed last week</p>
407
- </div>
408
- <snice-chip label="Cancelled" variant="error" size="small"></snice-chip>
409
- </div>
410
- </div>
411
- ```
412
-
413
- ### Skill Tags
414
-
415
- ```html
416
- <style>
417
- .profile-section {
418
- max-width: 600px;
419
- }
420
-
421
- .skills {
422
- display: flex;
423
- flex-wrap: wrap;
424
- gap: 0.5rem;
425
- margin-top: 0.75rem;
426
- }
427
- </style>
428
-
429
- <div class="profile-section">
430
- <h3>Skills</h3>
431
- <div class="skills" id="skill-list"></div>
432
- <button id="add-skill" style="margin-top: 1rem;">Add Skill</button>
433
- </div>
434
-
435
- ```
436
-
437
- ```typescript
438
- import 'snice/components/chip/snice-chip';
439
-
440
- const availableSkills = ['JavaScript', 'Python', 'Java', 'C++', 'React', 'Vue', 'Node.js', 'Docker'];
441
- let currentSkills = ['JavaScript', 'React', 'Node.js'];
442
-
443
- function renderSkills() {
444
- skillsList.innerHTML = '';
445
- currentSkills.forEach(skill => {
446
- const chip = document.createElement('snice-chip');
447
- chip.label = skill;
448
- chip.variant = 'primary';
449
- chip.removable = true;
450
-
451
- chip.addEventListener('chip-remove', () => {
452
- currentSkills = currentSkills.filter(s => s !== skill);
453
- renderSkills();
454
- });
455
-
456
- skillsList.appendChild(chip);
457
- });
458
- }
459
-
460
- addButton.addEventListener('click', () => {
461
- const skill = prompt('Enter skill name:');
462
- if (skill && !currentSkills.includes(skill)) {
463
- currentSkills.push(skill);
464
- renderSkills();
465
- }
466
- });
467
-
468
- renderSkills();
469
- ```
470
-
471
- ### Interactive Selection
472
-
473
- ```html
474
- <style>
475
- .selection-group {
476
- margin-bottom: 2rem;
477
- }
478
-
479
- .selection-group h4 {
480
- margin-bottom: 0.75rem;
481
- }
482
-
483
- .chip-group {
484
- display: flex;
485
- flex-wrap: wrap;
486
- gap: 0.5rem;
487
- }
488
- </style>
489
-
490
- <div class="selection-group">
491
- <h4>Select your preferred language:</h4>
492
- <div class="chip-group" id="language-group">
493
- <snice-chip label="English"></snice-chip>
494
- <snice-chip label="Spanish"></snice-chip>
495
- <snice-chip label="French"></snice-chip>
496
- <snice-chip label="German"></snice-chip>
497
- <snice-chip label="Chinese"></snice-chip>
498
- </div>
499
- </div>
500
-
501
- <div class="selection-group">
502
- <h4>Select topics of interest (multiple):</h4>
503
- <div class="chip-group" id="topics-group">
504
- <snice-chip label="Technology"></snice-chip>
505
- <snice-chip label="Science"></snice-chip>
506
- <snice-chip label="Arts"></snice-chip>
507
- <snice-chip label="Sports"></snice-chip>
508
- <snice-chip label="Music"></snice-chip>
509
- <snice-chip label="Travel"></snice-chip>
510
- </div>
511
- </div>
512
-
513
- ```
514
-
515
- ```typescript
516
- // Single selection for language
517
- languageChips.forEach(chip => {
518
- chip.addEventListener('click', () => {
519
- languageChips.forEach(c => c.selected = false);
520
- chip.selected = true;
521
- });
522
- });
523
-
524
- // Multiple selection for topics
525
- topicChips.forEach(chip => {
526
- chip.addEventListener('click', () => {
527
- chip.selected = !chip.selected;
528
- });
529
- });
530
- ```
531
-
532
- ### Search Result Tags
533
-
534
- ```html
535
- <style>
536
- .search-results {
537
- display: flex;
538
- flex-direction: column;
539
- gap: 1rem;
540
- }
541
-
542
- .result-item {
543
- padding: 1rem;
544
- border: 1px solid #e5e7eb;
545
- border-radius: 0.5rem;
546
- }
547
-
548
- .result-title {
549
- margin: 0 0 0.5rem;
550
- font-size: 1.125rem;
551
- font-weight: 600;
552
- }
553
-
554
- .result-tags {
555
- display: flex;
556
- flex-wrap: wrap;
557
- gap: 0.25rem;
558
- margin-top: 0.5rem;
559
- }
560
- </style>
561
-
562
- <div class="search-results">
563
- <div class="result-item">
564
- <h3 class="result-title">Getting Started with Web Components</h3>
565
- <p>Learn how to build reusable components...</p>
566
- <div class="result-tags">
567
- <snice-chip label="Tutorial" variant="primary" size="small"></snice-chip>
568
- <snice-chip label="JavaScript" variant="info" size="small"></snice-chip>
569
- <snice-chip label="Web Components" variant="success" size="small"></snice-chip>
570
- </div>
571
- </div>
572
-
573
- <div class="result-item">
574
- <h3 class="result-title">Advanced TypeScript Patterns</h3>
575
- <p>Explore advanced type system features...</p>
576
- <div class="result-tags">
577
- <snice-chip label="Advanced" variant="warning" size="small"></snice-chip>
578
- <snice-chip label="TypeScript" variant="primary" size="small"></snice-chip>
579
- <snice-chip label="Patterns" variant="default" size="small"></snice-chip>
580
- </div>
581
- </div>
582
- </div>
583
- ```
154
+ ### Tag List
584
155
 
585
- ### Active Filters Display
156
+ Combine `removable` and `chip-remove` events for dynamic tag management.
586
157
 
587
158
  ```html
588
- <style>
589
- .active-filters {
590
- padding: 1rem;
591
- background: #f9fafb;
592
- border-radius: 0.5rem;
593
- margin-bottom: 1rem;
594
- }
595
-
596
- .filters-header {
597
- display: flex;
598
- justify-content: space-between;
599
- align-items: center;
600
- margin-bottom: 0.75rem;
601
- }
602
-
603
- .filters-header h4 {
604
- margin: 0;
605
- font-size: 0.875rem;
606
- font-weight: 600;
607
- }
608
-
609
- .clear-all {
610
- font-size: 0.875rem;
611
- color: #3b82f6;
612
- text-decoration: underline;
613
- cursor: pointer;
614
- border: none;
615
- background: none;
616
- }
617
-
618
- .filter-chips {
619
- display: flex;
620
- flex-wrap: wrap;
621
- gap: 0.5rem;
622
- }
623
- </style>
624
-
625
- <div class="active-filters">
626
- <div class="filters-header">
627
- <h4>Active Filters (3)</h4>
628
- <button class="clear-all" id="clear-filters">Clear all</button>
629
- </div>
630
- <div class="filter-chips" id="active-filters">
631
- <snice-chip label="Category: Electronics" variant="primary" removable size="small"></snice-chip>
632
- <snice-chip label="Price: $25-$50" variant="info" removable size="small"></snice-chip>
633
- <snice-chip label="Brand: Sony" variant="success" removable size="small"></snice-chip>
634
- </div>
159
+ <div class="tag-container" style="display: flex; flex-wrap: wrap; gap: 0.5rem;">
160
+ <snice-chip label="JavaScript" variant="warning" removable></snice-chip>
161
+ <snice-chip label="TypeScript" variant="primary" removable></snice-chip>
162
+ <snice-chip label="React" variant="info" removable></snice-chip>
635
163
  </div>
636
-
637
164
  ```
638
165
 
639
166
  ```typescript
640
- // Handle remove events
641
- container.addEventListener('chip-remove', (e) => {
642
- e.target.remove();
643
- updateFilterCount();
644
- });
645
-
646
- // Clear all filters
647
- clearButton.addEventListener('click', () => {
648
- container.innerHTML = '';
649
- updateFilterCount();
167
+ chips.forEach(chip => {
168
+ chip.addEventListener('chip-remove', () => chip.remove());
650
169
  });
651
-
652
- function updateFilterCount() {
653
- const count = container.querySelectorAll('snice-chip').length;
654
- header.textContent = `Active Filters (${count})`;
655
- }
656
170
  ```
657
171
 
658
172
  ## Accessibility
659
173
 
660
- - **Keyboard support**: Focusable and activatable with Enter/Space
661
- - **ARIA attributes**: `role`, `aria-selected`, `aria-disabled`
662
- - **Screen reader friendly**: Remove button has `aria-label`
663
- - **Focus indicators**: Clear focus states for keyboard navigation
664
-
665
- ## Browser Support
666
-
667
- - Modern browsers (Chrome, Firefox, Safari, Edge)
668
- - Requires Custom Elements v1 and Shadow DOM support
669
-
670
- ## Common Patterns
671
-
672
- ### Tag/Label
673
- ```html
674
- <snice-chip label="JavaScript" variant="primary"></snice-chip>
675
- ```
676
-
677
- ### Removable Tag
678
- ```html
679
- <snice-chip label="Remove me" removable></snice-chip>
680
- ```
681
-
682
- ### Filter Selection
683
- ```html
684
- <snice-chip label="Filter" selected></snice-chip>
685
- ```
686
-
687
- ### User/Contact
688
- ```html
689
- <snice-chip label="John Doe" avatar="/avatar.jpg" removable></snice-chip>
690
- ```
691
-
692
- ### Status Indicator
693
- ```html
694
- <snice-chip label="Active" variant="success" size="small"></snice-chip>
695
- ```
696
-
697
- ## Variant Colors
698
-
699
- | Variant | Color Scheme | Use Case |
700
- |---------|-------------|----------|
701
- | `default` | Gray | Neutral tags, labels |
702
- | `primary` | Blue | Primary categories, selections |
703
- | `success` | Green | Positive status, confirmed items |
704
- | `warning` | Orange | Important tags, warnings |
705
- | `error` | Red | Error states, critical items |
706
- | `info` | Light blue | Informational tags |
174
+ - Focusable and activatable with Enter/Space
175
+ - ARIA attributes: `role`, `aria-selected`, `aria-disabled`
176
+ - Remove button has `aria-label` for screen readers
177
+ - Clear focus indicators for keyboard navigation