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,6 +1,7 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/breadcrumbs.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/breadcrumbs.md -->
2
2
 
3
3
  # Breadcrumbs Components
4
+ `<snice-breadcrumbs>` `<snice-crumb>`
4
5
 
5
6
  The breadcrumbs components provide navigation trail indicators showing the user's current location within a hierarchy. Supports icons, custom separators, collapsing for long trails, and multiple sizes.
6
7
 
@@ -15,28 +16,25 @@ The breadcrumbs components provide navigation trail indicators showing the user'
15
16
  - [Basic Usage](#basic-usage)
16
17
  - [Examples](#examples)
17
18
  - [Accessibility](#accessibility)
18
- - [Browser Support](#browser-support)
19
- - [Common Patterns](#common-patterns)
20
- - [When to Use](#when-to-use)
21
19
 
22
20
  ## Components
23
21
 
24
22
  ### `<snice-breadcrumbs>`
25
- Container for breadcrumb navigation trail.
23
+ Container for breadcrumb navigation trail. Can be driven by the `items` array property or by slotted `<snice-crumb>` elements.
26
24
 
27
25
  ### `<snice-crumb>`
28
- Individual breadcrumb item.
26
+ Individual breadcrumb item (data element, no shadow DOM).
29
27
 
30
28
  ## Properties
31
29
 
32
- ### Breadcrumbs Container
30
+ ### snice-breadcrumbs
33
31
 
34
- | Property | Type | Default | Description |
35
- |----------|------|---------|-------------|
36
- | `items` | `BreadcrumbItem[]` | `[]` | Array of breadcrumb items |
37
- | `separator` | `'/' \| '>' \| '»' \| '' \| '\|'` | `'/'` | Separator between items |
38
- | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Breadcrumb size |
39
- | `maxItems` | `number` | `0` | Max items to show (0 = show all) |
32
+ | Property | Attribute | Type | Default | Description |
33
+ |----------|-----------|------|---------|-------------|
34
+ | `items` | -- | `BreadcrumbItem[]` | `[]` | Array of breadcrumb items (JS property only) |
35
+ | `separator` | `separator` | `'/' \| '>' \| '>>' \| '.' \| '\|'` | `'/'` | Separator between items |
36
+ | `size` | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Breadcrumb size |
37
+ | `maxItems` | `max-items` | `number` | `0` | Max items to show (0 = show all). Collapsed items show an ellipsis. |
40
38
 
41
39
  ### BreadcrumbItem Interface
42
40
 
@@ -50,63 +48,49 @@ interface BreadcrumbItem {
50
48
  }
51
49
  ```
52
50
 
53
- ### Crumb Element
51
+ ### snice-crumb
54
52
 
55
- | Property | Type | Default | Description |
56
- |----------|------|---------|-------------|
57
- | `label` | `string` | `''` | Display text |
58
- | `href` | `string` | `''` | Link URL |
59
- | `icon` | `string` | `''` | Icon (URL, image file, emoji). Use slot for icon fonts. |
60
- | `iconImage` | `string` | `''` | Icon image URL (deprecated, use `icon` with URL) |
61
- | `active` | `boolean` | `false` | Current/active state |
53
+ | Property | Attribute | Type | Default | Description |
54
+ |----------|-----------|------|---------|-------------|
55
+ | `label` | `label` | `string` | `''` | Display text |
56
+ | `href` | `href` | `string` | `''` | Link URL |
57
+ | `icon` | `icon` | `string` | `''` | Icon (URL, image file, emoji) |
58
+ | `iconImage` | `icon-image` | `string` | `''` | Icon image URL (deprecated) |
59
+ | `active` | `active` | `boolean` | `false` | Current/active state |
62
60
 
63
61
  ## Methods
64
62
 
65
- #### `setItems(items: BreadcrumbItem[]): void`
66
- Programmatically set breadcrumb items.
67
-
68
- ```typescript
69
- breadcrumbs.setItems([
70
- { label: 'Home', href: '/' },
71
- { label: 'Docs', href: '/docs' },
72
- { label: 'Components', active: true }
73
- ]);
74
- ```
63
+ | Method | Arguments | Description |
64
+ |--------|-----------|-------------|
65
+ | `setItems()` | `items: BreadcrumbItem[]` | Programmatically set breadcrumb items |
75
66
 
76
67
  ## Events
77
68
 
78
- #### `breadcrumb-click`
79
- Fired when a breadcrumb link is clicked.
80
-
81
- **Event Detail:**
82
- ```typescript
83
- {
84
- item: BreadcrumbItem;
85
- index: number;
86
- href: string;
87
- label: string;
88
- }
89
- ```
69
+ | Event | Detail | Description |
70
+ |-------|--------|-------------|
71
+ | `breadcrumb-click` | `{ item: BreadcrumbItem, index: number, href: string, label: string }` | Fired when a breadcrumb link is clicked |
90
72
 
91
- **Usage:**
92
73
  ```typescript
93
74
  breadcrumbs.addEventListener('breadcrumb-click', (e) => {
94
- console.log('Clicked:', e.detail.label);
95
- console.log('Index:', e.detail.index);
75
+ console.log('Clicked:', e.detail.label, 'at index', e.detail.index);
96
76
  });
97
77
  ```
98
78
 
99
79
  ## Slots
100
80
 
101
- ### Crumb Element Slots
81
+ ### snice-breadcrumbs
82
+
83
+ | Name | Description |
84
+ |------|-------------|
85
+ | (default) | `<snice-crumb>` elements (declarative API) |
102
86
 
103
- | Slot Name | Description |
104
- |-----------|-------------|
105
- | `icon` | Custom icon element inside `<snice-crumb>`. Takes precedence over `icon` and `iconImage` properties. |
87
+ ### snice-crumb
106
88
 
107
- ### Icon Slot Usage
89
+ | Name | Description |
90
+ |------|-------------|
91
+ | `icon` | Custom icon element (for CSS icon fonts like Material Symbols or Font Awesome) |
108
92
 
109
- Use the `icon` slot within `<snice-crumb>` for external CSS-based icon fonts:
93
+ > **Note**: Icon slots only work when using `<snice-crumb>` elements, not when using the `items` array property.
110
94
 
111
95
  ```html
112
96
  <snice-breadcrumbs>
@@ -118,25 +102,10 @@ Use the `icon` slot within `<snice-crumb>` for external CSS-based icon fonts:
118
102
  </snice-crumb>
119
103
  <snice-crumb label="Details" active></snice-crumb>
120
104
  </snice-breadcrumbs>
121
-
122
- <!-- With Font Awesome -->
123
- <snice-breadcrumbs>
124
- <snice-crumb href="/" label="Dashboard">
125
- <i slot="icon" class="fa-solid fa-gauge"></i>
126
- </snice-crumb>
127
- <snice-crumb href="/settings" label="Settings">
128
- <i slot="icon" class="fa-solid fa-gear"></i>
129
- </snice-crumb>
130
- <snice-crumb label="Profile" active></snice-crumb>
131
- </snice-breadcrumbs>
132
105
  ```
133
106
 
134
- > **Note**: Icon slots only work when using `<snice-crumb>` elements, not when using the `items` array property. For icons with the `items` array, use the `icon` property.
135
-
136
107
  ## CSS Parts
137
108
 
138
- Style internal elements from outside the shadow DOM using `::part()`.
139
-
140
109
  | Part | Element | Description |
141
110
  |------|---------|-------------|
142
111
  | `base` | `<nav>` | The navigation container |
@@ -155,44 +124,26 @@ snice-breadcrumbs::part(separator) {
155
124
  color: #9ca3af;
156
125
  margin: 0 0.75rem;
157
126
  }
158
-
159
- snice-breadcrumbs::part(ellipsis) {
160
- background: transparent;
161
- }
162
127
  ```
163
128
 
164
- ## Basic Usage
165
-
166
- ```html
167
- <!-- Using items array -->
168
- <snice-breadcrumbs></snice-breadcrumbs>
169
- ```
129
+ ## CSS Custom Properties
170
130
 
171
- ```typescript
172
- breadcrumbs.items = [
173
- { label: 'Home', href: '/' },
174
- { label: 'Products', href: '/products' },
175
- { label: 'Laptops', active: true }
176
- ];
177
- ```
131
+ | Property | Description | Default |
132
+ |----------|-------------|---------|
133
+ | `--breadcrumb-font-size` | Font size of breadcrumb items | `0.875rem` |
134
+ | `--breadcrumb-spacing` | Spacing around separators | `0.5rem` |
135
+ | `--breadcrumb-color` | Default text color | `var(--snice-color-text-secondary)` |
136
+ | `--breadcrumb-hover-color` | Hover text color | `var(--snice-color-primary)` |
137
+ | `--breadcrumb-active-color` | Active item text color | `var(--snice-color-text)` |
138
+ | `--breadcrumb-separator-color` | Separator color | `var(--snice-color-text-tertiary)` |
178
139
 
179
- ```html
180
- <!-- Or using crumb elements -->
181
- <snice-breadcrumbs>
182
- <snice-crumb href="/" label="Home"></snice-crumb>
183
- <snice-crumb href="/products" label="Products"></snice-crumb>
184
- <snice-crumb label="Laptops" active></snice-crumb>
185
- </snice-breadcrumbs>
186
- ```
140
+ ## Basic Usage
187
141
 
188
142
  ```typescript
189
143
  import 'snice/components/breadcrumbs/snice-breadcrumbs';
190
- import 'snice/components/breadcrumbs/snice-crumb';
191
144
  ```
192
145
 
193
- ## Examples
194
-
195
- ### Basic Breadcrumbs
146
+ ### Using items array (imperative)
196
147
 
197
148
  ```html
198
149
  <snice-breadcrumbs></snice-breadcrumbs>
@@ -202,53 +153,28 @@ import 'snice/components/breadcrumbs/snice-crumb';
202
153
  breadcrumbs.items = [
203
154
  { label: 'Home', href: '/' },
204
155
  { label: 'Products', href: '/products' },
205
- { label: 'Electronics', href: '/products/electronics' },
206
156
  { label: 'Laptops', active: true }
207
157
  ];
208
158
  ```
209
159
 
210
- ### Using Crumb Elements
160
+ ### Using crumb elements (declarative)
211
161
 
212
162
  ```html
213
163
  <snice-breadcrumbs>
214
164
  <snice-crumb href="/" label="Home"></snice-crumb>
215
- <snice-crumb href="/docs" label="Documentation"></snice-crumb>
216
- <snice-crumb href="/docs/components" label="Components"></snice-crumb>
217
- <snice-crumb label="Breadcrumbs" active></snice-crumb>
165
+ <snice-crumb href="/products" label="Products"></snice-crumb>
166
+ <snice-crumb label="Laptops" active></snice-crumb>
218
167
  </snice-breadcrumbs>
219
168
  ```
220
169
 
170
+ ## Examples
171
+
221
172
  ### Custom Separators
222
173
 
223
174
  ```html
224
- <!-- Slash separator (default) -->
225
175
  <snice-breadcrumbs separator="/"></snice-breadcrumbs>
226
-
227
- <!-- Greater than -->
228
176
  <snice-breadcrumbs separator=">"></snice-breadcrumbs>
229
-
230
- <!-- Double angle -->
231
- <snice-breadcrumbs separator="»"></snice-breadcrumbs>
232
-
233
- <!-- Bullet -->
234
- <snice-breadcrumbs separator="•"></snice-breadcrumbs>
235
-
236
- <!-- Pipe -->
237
177
  <snice-breadcrumbs separator="|"></snice-breadcrumbs>
238
-
239
- ```
240
-
241
- ```typescript
242
- const items = [
243
- { label: 'Home', href: '/' },
244
- { label: 'Settings', href: '/settings' },
245
- { label: 'Profile', active: true }
246
- ];
247
-
248
- // Apply to all breadcrumbs above
249
- breadcrumbs.forEach(bc => {
250
- bc.items = items;
251
- });
252
178
  ```
253
179
 
254
180
  ### Different Sizes
@@ -259,49 +185,21 @@ breadcrumbs.forEach(bc => {
259
185
  <snice-breadcrumbs size="large"></snice-breadcrumbs>
260
186
  ```
261
187
 
262
- ```typescript
263
- const items = [
264
- { label: 'Home', href: '/' },
265
- { label: 'Catalog', href: '/catalog' },
266
- { label: 'Products', active: true }
267
- ];
268
-
269
- // Apply to each breadcrumbs element above
270
- breadcrumbs.items = items;
271
- ```
272
-
273
188
  ### With Icons
274
189
 
275
- ```html
276
- <snice-breadcrumbs></snice-breadcrumbs>
277
- ```
278
-
279
190
  ```typescript
280
191
  breadcrumbs.items = [
281
- { label: 'Home', href: '/', icon: '🏠' },
282
- { label: 'Settings', href: '/settings', icon: '⚙️' },
283
- { label: 'Profile', icon: '👤', active: true }
284
- ];
285
- ```
286
-
287
- ### With Icon Images
288
-
289
- ```html
290
- <snice-breadcrumbs></snice-breadcrumbs>
291
- ```
292
-
293
- ```typescript
294
- breadcrumbs.items = [
295
- { label: 'Home', href: '/', iconImage: '/icons/home.svg' },
296
- { label: 'Dashboard', href: '/dashboard', iconImage: '/icons/dashboard.svg' },
297
- { label: 'Analytics', iconImage: '/icons/analytics.svg', active: true }
192
+ { label: 'Home', href: '/', icon: '/icons/home.svg' },
193
+ { label: 'Settings', href: '/settings', icon: '/icons/settings.svg' },
194
+ { label: 'Profile', active: true }
298
195
  ];
299
196
  ```
300
197
 
301
198
  ### Collapsed Breadcrumbs
302
199
 
200
+ Use `max-items` to collapse middle items behind an ellipsis button.
201
+
303
202
  ```html
304
- <!-- Show first and last 2 items, collapse middle -->
305
203
  <snice-breadcrumbs max-items="3"></snice-breadcrumbs>
306
204
  ```
307
205
 
@@ -311,312 +209,40 @@ breadcrumbs.items = [
311
209
  { label: 'Level 1', href: '/level1' },
312
210
  { label: 'Level 2', href: '/level2' },
313
211
  { label: 'Level 3', href: '/level3' },
314
- { label: 'Level 4', href: '/level4' },
315
212
  { label: 'Current Page', active: true }
316
213
  ];
317
214
  ```
318
215
 
319
216
  ### Dynamic Breadcrumbs
320
217
 
321
- ```html
322
- <snice-breadcrumbs></snice-breadcrumbs>
323
- ```
324
-
325
218
  ```typescript
326
- // Simulate navigation
327
219
  function updateBreadcrumbs(path) {
328
- const segments = path.split('/').filter(Boolean);
329
- const items = [{ label: 'Home', href: '/' }];
330
-
331
- let currentPath = '';
332
- segments.forEach((segment, index) => {
333
- currentPath += '/' + segment;
334
- items.push({
335
- label: segment.charAt(0).toUpperCase() + segment.slice(1),
336
- href: index < segments.length - 1 ? currentPath : undefined,
337
- active: index === segments.length - 1
338
- });
339
- });
340
-
341
- breadcrumbs.setItems(items);
342
- }
343
-
344
- // Update based on current path
345
- updateBreadcrumbs(window.location.pathname);
346
-
347
- // Listen for navigation
348
- breadcrumbs.addEventListener('breadcrumb-click', (e) => {
349
- if (e.detail.href) {
350
- console.log('Navigate to:', e.detail.href);
351
- // Update breadcrumbs based on new location
352
- updateBreadcrumbs(e.detail.href);
353
- }
354
- });
355
- ```
356
-
357
- ### E-commerce Breadcrumbs
358
-
359
- ```html
360
- <snice-breadcrumbs separator=">"></snice-breadcrumbs>
361
- ```
362
-
363
- ```typescript
364
- breadcrumbs.items = [
365
- { label: 'Home', href: '/', icon: '🏠' },
366
- { label: 'Electronics', href: '/category/electronics', icon: '⚡' },
367
- { label: 'Computers', href: '/category/electronics/computers', icon: '💻' },
368
- { label: 'Laptops', href: '/category/electronics/computers/laptops', icon: '📱' },
369
- { label: 'MacBook Pro 16"', active: true }
370
- ];
371
- ```
372
-
373
- ### Documentation Breadcrumbs
374
-
375
- ```html
376
- <snice-breadcrumbs separator="•"></snice-breadcrumbs>
377
- ```
378
-
379
- ```typescript
380
- breadcrumbs.items = [
381
- { label: 'Docs', href: '/docs' },
382
- { label: 'API Reference', href: '/docs/api' },
383
- { label: 'Components', href: '/docs/api/components' },
384
- { label: 'Breadcrumbs', active: true }
385
- ];
386
- ```
387
-
388
- ### File System Navigation
389
-
390
- ```html
391
- <snice-breadcrumbs separator="/"></snice-breadcrumbs>
392
- ```
393
-
394
- ```typescript
395
- function navigateToFolder(path) {
396
- const folders = path.split('/').filter(Boolean);
397
- const items = [{ label: 'Root', href: '/' }];
398
-
399
- let currentPath = '';
400
- folders.forEach((folder, index) => {
401
- currentPath += '/' + folder;
402
- items.push({
403
- label: folder,
404
- href: index < folders.length - 1 ? currentPath : undefined,
405
- active: index === folders.length - 1
406
- });
220
+ const segments = path.split('/').filter(Boolean);
221
+ const items = [{ label: 'Home', href: '/' }];
222
+
223
+ let currentPath = '';
224
+ segments.forEach((segment, index) => {
225
+ currentPath += '/' + segment;
226
+ items.push({
227
+ label: segment.charAt(0).toUpperCase() + segment.slice(1),
228
+ href: index < segments.length - 1 ? currentPath : undefined,
229
+ active: index === segments.length - 1
407
230
  });
408
-
409
- breadcrumbs.setItems(items);
410
- }
411
-
412
- // Show current folder structure
413
- navigateToFolder('/Users/John/Documents/Projects/MyApp');
414
-
415
- breadcrumbs.addEventListener('breadcrumb-click', (e) => {
416
- if (e.detail.href) {
417
- navigateToFolder(e.detail.href);
418
- }
419
231
  });
420
- ```
421
-
422
- ### Multi-level Navigation
423
-
424
- ```html
425
- <snice-breadcrumbs max-items="4"></snice-breadcrumbs>
426
- ```
427
-
428
- ```typescript
429
- const navigation = {
430
- '/': { label: 'Home' },
431
- '/products': { label: 'Products' },
432
- '/products/electronics': { label: 'Electronics' },
433
- '/products/electronics/computers': { label: 'Computers' },
434
- '/products/electronics/computers/laptops': { label: 'Laptops' },
435
- '/products/electronics/computers/laptops/gaming': { label: 'Gaming Laptops' }
436
- };
437
-
438
- function buildBreadcrumbs(currentPath) {
439
- const pathSegments = currentPath.split('/').filter(Boolean);
440
- const items = [{ label: 'Home', href: '/' }];
441
-
442
- let path = '';
443
- pathSegments.forEach((segment, index) => {
444
- path += '/' + segment;
445
- const navItem = navigation[path];
446
-
447
- if (navItem) {
448
- items.push({
449
- label: navItem.label,
450
- href: index < pathSegments.length - 1 ? path : undefined,
451
- active: index === pathSegments.length - 1
452
- });
453
- }
454
- });
455
-
456
- breadcrumbs.setItems(items);
457
- }
458
-
459
- buildBreadcrumbs('/products/electronics/computers/laptops/gaming');
460
- ```
461
-
462
- ### Breadcrumbs with Event Handling
463
-
464
- ```html
465
- <snice-breadcrumbs></snice-breadcrumbs>
466
-
467
- <div style="margin-top: 1rem; padding: 1rem; background: #f3f4f6; border-radius: 0.375rem;">
468
- <strong>Events:</strong>
469
- <div id="events"></div>
470
- </div>
471
- ```
472
-
473
- ```typescript
474
- breadcrumbs.items = [
475
- { label: 'Home', href: '/' },
476
- { label: 'Level 1', href: '/level1' },
477
- { label: 'Level 2', href: '/level2' },
478
- { label: 'Current', active: true }
479
- ];
480
-
481
- breadcrumbs.addEventListener('breadcrumb-click', (e) => {
482
- const event = document.createElement('div');
483
- event.style.padding = '0.5rem 0';
484
- event.textContent = `Clicked: ${e.detail.label} (index: ${e.detail.index})`;
485
- eventsContainer.prepend(event);
486
-
487
- // Prevent default navigation if needed
488
- // e.preventDefault();
489
- });
490
- ```
491
-
492
- ### Responsive Breadcrumbs
493
-
494
- ```html
495
- <style>
496
- @media (max-width: 640px) {
497
- snice-breadcrumbs {
498
- font-size: 0.875rem;
499
- }
500
- }
501
- </style>
502
-
503
- <snice-breadcrumbs max-items="3"></snice-breadcrumbs>
504
- ```
505
232
 
506
- ```typescript
507
- // Adjust max items based on screen size
508
- function updateMaxItems() {
509
- if (window.innerWidth < 640) {
510
- breadcrumbs.maxItems = 2;
511
- } else if (window.innerWidth < 1024) {
512
- breadcrumbs.maxItems = 3;
513
- } else {
514
- breadcrumbs.maxItems = 0; // Show all
515
- }
516
- }
517
-
518
- breadcrumbs.items = [
519
- { label: 'Home', href: '/' },
520
- { label: 'Category', href: '/category' },
521
- { label: 'Subcategory', href: '/category/sub' },
522
- { label: 'Product Type', href: '/category/sub/type' },
523
- { label: 'Product', active: true }
524
- ];
525
-
526
- updateMaxItems();
527
- window.addEventListener('resize', updateMaxItems);
528
- ```
529
-
530
- ### Breadcrumbs with Custom Styling
531
-
532
- ```html
533
- <style>
534
- #styled-breadcrumbs::part(breadcrumb-link) {
535
- color: #3b82f6;
536
- font-weight: 500;
537
- }
538
-
539
- #styled-breadcrumbs::part(breadcrumb-link):hover {
540
- color: #2563eb;
541
- text-decoration: underline;
542
- }
233
+ breadcrumbs.setItems(items);
234
+ }
543
235
 
544
- #styled-breadcrumbs::part(breadcrumb-separator) {
545
- color: #9ca3af;
546
- margin: 0 0.75rem;
236
+ breadcrumbs.addEventListener('breadcrumb-click', (e) => {
237
+ if (e.detail.href) {
238
+ updateBreadcrumbs(e.detail.href);
547
239
  }
548
- </style>
549
-
550
- <snice-breadcrumbs></snice-breadcrumbs>
551
- ```
552
-
553
- ```typescript
554
- breadcrumbs.items = [
555
- { label: 'Home', href: '/' },
556
- { label: 'Styled', href: '/styled' },
557
- { label: 'Breadcrumbs', active: true }
558
- ];
240
+ });
559
241
  ```
560
242
 
561
- ## CSS Custom Properties
562
-
563
- | Property | Description | Default |
564
- |----------|-------------|---------|
565
- | `--breadcrumb-font-size` | Font size of breadcrumb items | `0.875rem` |
566
- | `--breadcrumb-spacing` | Spacing around separators | `0.5rem` |
567
- | `--breadcrumb-color` | Default text color | `var(--snice-color-text-secondary)` |
568
- | `--breadcrumb-hover-color` | Hover text color | `var(--snice-color-primary)` |
569
- | `--breadcrumb-active-color` | Active item text color | `var(--snice-color-text)` |
570
- | `--breadcrumb-separator-color` | Separator color | `var(--snice-color-text-tertiary)` |
571
-
572
243
  ## Accessibility
573
244
 
574
245
  - **Semantic HTML**: Uses `<nav>` with `aria-label="Breadcrumb"`
575
246
  - **Current page**: Last item has `aria-current="page"`
576
- - **Keyboard support**: All links are keyboard accessible
247
+ - **Keyboard support**: All links and the ellipsis button are keyboard accessible
577
248
  - **Screen reader friendly**: Proper navigation landmark and structure
578
-
579
- ## Browser Support
580
-
581
- - Modern browsers (Chrome, Firefox, Safari, Edge)
582
- - Requires Custom Elements v1 and Shadow DOM support
583
-
584
- ## Common Patterns
585
-
586
- ### Basic Navigation
587
- ```html
588
- <snice-breadcrumbs items='[
589
- {"label": "Home", "href": "/"},
590
- {"label": "Products", "href": "/products"},
591
- {"label": "Item", "active": true}
592
- ]'></snice-breadcrumbs>
593
- ```
594
-
595
- ### E-commerce Category
596
- ```html
597
- <snice-breadcrumbs separator=">"></snice-breadcrumbs>
598
- ```
599
-
600
- ### Documentation
601
- ```html
602
- <snice-breadcrumbs separator="•"></snice-breadcrumbs>
603
- ```
604
-
605
- ### File System
606
- ```html
607
- <snice-breadcrumbs separator="/"></snice-breadcrumbs>
608
- ```
609
-
610
- ## When to Use
611
-
612
- ✅ **Use breadcrumbs when:**
613
- - Pages are organized in a clear hierarchy (2+ levels deep)
614
- - Users might need to navigate back up the hierarchy
615
- - The site has many categories or sections
616
- - Users arrive from search and need context
617
-
618
- ❌ **Avoid breadcrumbs when:**
619
- - Site has a flat structure (1-2 levels)
620
- - Navigation is linear (wizards, onboarding)
621
- - The hierarchy isn't clear or consistent
622
- - Mobile-only experience with limited space