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
package/dist/parts.d.ts CHANGED
@@ -170,9 +170,10 @@ export declare function parseKeyboardFilter(spec: string): KeyboardFilter;
170
170
  */
171
171
  export declare function matchesKeyboardFilter(event: KeyboardEvent, filter: KeyboardFilter): boolean;
172
172
  export declare class ConditionalIfPart extends Part {
173
- private ifElement;
173
+ private startNode;
174
+ private endNode;
174
175
  private value;
175
- private fragment;
176
+ private childFragment;
176
177
  constructor(ifElement: Element);
177
178
  commit(value: any): void;
178
179
  clear(): void;
@@ -182,14 +183,15 @@ export declare class ConditionalIfPart extends Part {
182
183
  * Removes/inserts matching branch based on value
183
184
  */
184
185
  export declare class ConditionalCasePart extends Part {
185
- private caseElement;
186
+ private startNode;
187
+ private endNode;
186
188
  private value;
187
- private childrenMap;
188
- private fragments;
189
- private defaultChild;
190
- private currentChild;
189
+ private branches;
190
+ private defaultBranch;
191
+ private currentKey;
191
192
  constructor(caseElement: Element);
192
193
  commit(value: any): void;
194
+ private _collectCurrent;
193
195
  clear(): void;
194
196
  }
195
197
  export {};
@@ -0,0 +1,56 @@
1
+ /**
2
+ * useRequestHandler — React hook for handling @request channels
3
+ * outside of the Snice element/controller decorator system.
4
+ *
5
+ * Listens for @request CustomEvents on a ref'd element (or document),
6
+ * performs the discovery/data handshake, and dispatches to your route map.
7
+ *
8
+ * The route map is **not** required to be stable across renders — the hook
9
+ * always uses the latest callbacks without re-attaching listeners.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * import { useRequestHandler } from 'snice/react/useRequestHandler';
14
+ *
15
+ * function App() {
16
+ * const containerRef = useRef<HTMLDivElement>(null);
17
+ *
18
+ * useRequestHandler(containerRef, {
19
+ * 'fetch-user': async (payload) => {
20
+ * const res = await fetch(`/api/users/${payload.id}`);
21
+ * return res.json();
22
+ * },
23
+ * });
24
+ *
25
+ * return (
26
+ * <div ref={containerRef}>
27
+ * <snice-user-card />
28
+ * </div>
29
+ * );
30
+ * }
31
+ * ```
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * // Global handler (no ref — listens on document)
36
+ * useRequestHandler(null, {
37
+ * 'fetch-user': async (payload) => ({ name: 'Jane', id: payload.id }),
38
+ * });
39
+ * ```
40
+ */
41
+ export type UseRequestRoute = (payload: any) => any | Promise<any>;
42
+ export type UseRequestRouteMap = Record<string, UseRequestRoute>;
43
+ export interface UseRequestHandlerOptions {
44
+ /** If true, the handler will NOT stop propagation. Default: false */
45
+ passive?: boolean;
46
+ }
47
+ /**
48
+ * React hook that attaches request handlers for @request channels.
49
+ *
50
+ * @param ref React ref to the target element, or null to use document.
51
+ * @param routes Map of channel names to handler functions.
52
+ * @param options Optional configuration.
53
+ */
54
+ export declare function useRequestHandler(ref: {
55
+ current: EventTarget | null;
56
+ } | null, routes: UseRequestRouteMap, options?: UseRequestHandlerOptions): void;
@@ -0,0 +1,103 @@
1
+ /*!
2
+ * snice v4.28.0
3
+ * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
+ * (c) 2024
5
+ * Released under the MIT License.
6
+ */
7
+ import { useRef, useEffect } from 'react';
8
+
9
+ /**
10
+ * useRequestHandler — React hook for handling @request channels
11
+ * outside of the Snice element/controller decorator system.
12
+ *
13
+ * Listens for @request CustomEvents on a ref'd element (or document),
14
+ * performs the discovery/data handshake, and dispatches to your route map.
15
+ *
16
+ * The route map is **not** required to be stable across renders — the hook
17
+ * always uses the latest callbacks without re-attaching listeners.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * import { useRequestHandler } from 'snice/react/useRequestHandler';
22
+ *
23
+ * function App() {
24
+ * const containerRef = useRef<HTMLDivElement>(null);
25
+ *
26
+ * useRequestHandler(containerRef, {
27
+ * 'fetch-user': async (payload) => {
28
+ * const res = await fetch(`/api/users/${payload.id}`);
29
+ * return res.json();
30
+ * },
31
+ * });
32
+ *
33
+ * return (
34
+ * <div ref={containerRef}>
35
+ * <snice-user-card />
36
+ * </div>
37
+ * );
38
+ * }
39
+ * ```
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * // Global handler (no ref — listens on document)
44
+ * useRequestHandler(null, {
45
+ * 'fetch-user': async (payload) => ({ name: 'Jane', id: payload.id }),
46
+ * });
47
+ * ```
48
+ */
49
+ /**
50
+ * React hook that attaches request handlers for @request channels.
51
+ *
52
+ * @param ref React ref to the target element, or null to use document.
53
+ * @param routes Map of channel names to handler functions.
54
+ * @param options Optional configuration.
55
+ */
56
+ function useRequestHandler(ref, routes, options) {
57
+ const routesRef = useRef(routes);
58
+ routesRef.current = routes;
59
+ const optionsRef = useRef(options);
60
+ optionsRef.current = options;
61
+ const channelKeys = Object.keys(routes).sort().join('\0');
62
+ useEffect(() => {
63
+ const target = ref?.current ?? document;
64
+ const cleanups = [];
65
+ for (const channelName of channelKeys.split('\0')) {
66
+ if (!channelName)
67
+ continue;
68
+ const eventName = `@request/${channelName}`;
69
+ const listener = (event) => {
70
+ const ce = event;
71
+ const { discovery, data, payload } = ce.detail;
72
+ if (!optionsRef.current?.passive) {
73
+ ce.preventDefault();
74
+ ce.stopImmediatePropagation();
75
+ ce.stopPropagation();
76
+ }
77
+ discovery.resolve();
78
+ const handler = routesRef.current[channelName];
79
+ if (!handler) {
80
+ data.reject(new Error(`useRequestHandler: no handler for "${channelName}"`));
81
+ return;
82
+ }
83
+ Promise.resolve()
84
+ .then(() => handler(payload))
85
+ .then((result) => data.resolve(result))
86
+ .catch((error) => {
87
+ data.reject(error);
88
+ console.error(`useRequestHandler: error in "${channelName}" handler:`, error);
89
+ });
90
+ };
91
+ target.addEventListener(eventName, listener);
92
+ cleanups.push(() => target.removeEventListener(eventName, listener));
93
+ }
94
+ return () => {
95
+ for (const fn of cleanups)
96
+ fn();
97
+ };
98
+ // eslint-disable-next-line react-hooks/exhaustive-deps
99
+ }, [channelKeys, ref]);
100
+ }
101
+
102
+ export { useRequestHandler };
103
+ //# sourceMappingURL=useRequestHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRequestHandler.js","sources":["../../src/src/react/useRequestHandler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AAYH;;;;;;AAMG;SACa,iBAAiB,CAC/B,GAA2C,EAC3C,MAA0B,EAC1B,OAAkC,EAAA;AAElC,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,IAAA,SAAS,CAAC,OAAO,GAAG,MAAM;AAE1B,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,IAAA,UAAU,CAAC,OAAO,GAAG,OAAO;AAE5B,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAEzD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,MAAM,GAAgB,GAAG,EAAE,OAAO,IAAI,QAAQ;QACpD,MAAM,QAAQ,GAAmB,EAAE;QAEnC,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW;gBAAE;AAClB,YAAA,MAAM,SAAS,GAAG,CAAA,SAAA,EAAY,WAAW,EAAE;AAE3C,YAAA,MAAM,QAAQ,GAAG,CAAC,KAAY,KAAI;gBAChC,MAAM,EAAE,GAAG,KAAoB;gBAC/B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;AAE9C,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE;oBAChC,EAAE,CAAC,cAAc,EAAE;oBACnB,EAAE,CAAC,wBAAwB,EAAE;oBAC7B,EAAE,CAAC,eAAe,EAAE;gBACtB;gBAEA,SAAS,CAAC,OAAO,EAAE;gBAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC9C,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;oBAC5E;gBACF;gBAEA,OAAO,CAAC,OAAO;qBACZ,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC;AAC3B,qBAAA,IAAI,CAAC,CAAC,MAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1C,qBAAA,KAAK,CAAC,CAAC,KAAU,KAAI;AACpB,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAClB,OAAO,CAAC,KAAK,CAAC,CAAA,6BAAA,EAAgC,WAAW,CAAA,UAAA,CAAY,EAAE,KAAK,CAAC;AAC/E,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC5C,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE;AAEA,QAAA,OAAO,MAAK;YACV,KAAK,MAAM,EAAE,IAAI,QAAQ;AAAE,gBAAA,EAAE,EAAE;AACjC,QAAA,CAAC;;AAEH,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACxB;;;;"}
package/dist/symbols.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.26.2
2
+ * snice v4.28.0
3
3
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.26.2
2
+ * snice v4.28.0
3
3
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.26.2
2
+ * snice v4.28.0
3
3
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v4.26.2
2
+ * snice v4.28.0
3
3
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -98,7 +98,7 @@ All CDN builds use the shared runtime (external `snice` imports). Load `snice-ru
98
98
  - IIFE: `.js` + `.min.js`
99
99
  - Sourcemaps + README
100
100
 
101
- **Size:** Runtime ~17KB gzip, components ~1-93KB each
101
+ **Size:** Runtime ~18KB gzip, components ~1-93KB each
102
102
 
103
103
  **Features:**
104
104
  - Shared runtime (external snice imports)
@@ -8,61 +8,75 @@ Collapsible sections with single or multiple open mode and keyboard navigation.
8
8
 
9
9
  Container managing accordion items.
10
10
 
11
+ ### snice-accordion-item
12
+
13
+ Individual collapsible section.
14
+
15
+ ## Properties
16
+
17
+ ### snice-accordion
18
+
11
19
  ```typescript
12
20
  multiple: boolean = false; // Allow multiple items open
13
21
  variant: 'bordered' | 'elevated' = 'bordered'; // Visual style variant
14
22
  ```
15
23
 
16
- **Methods:**
24
+ ### snice-accordion-item
25
+
26
+ ```typescript
27
+ itemId: string = ''; // attr: item-id, auto-generated if not provided
28
+ open: boolean = false;
29
+ disabled: boolean = false;
30
+ ```
31
+
32
+ ## Methods
33
+
34
+ ### snice-accordion
35
+
17
36
  - `openItem(id)` - Open specific item
18
37
  - `closeItem(id)` - Close specific item
19
38
  - `toggleItem(id)` - Toggle specific item
20
39
  - `openAll()` - Open all (multiple mode only)
21
40
  - `closeAll()` - Close all
22
41
 
23
- **Events:**
24
- - `accordion-open` - {itemId, item}
25
- - `accordion-close` - {itemId, item}
26
-
27
42
  ### snice-accordion-item
28
43
 
29
- Individual collapsible section.
30
-
31
- ```typescript
32
- itemId: string; // Auto-generated if not provided
33
- open: boolean = false;
34
- disabled: boolean = false;
35
- ```
36
-
37
- **Methods:**
38
44
  - `toggle()` - Toggle open/closed
39
45
  - `expand(animate = true)` - Open
40
46
  - `collapse(animate = true)` - Close
41
47
 
42
- **Events:**
43
- - `accordion-item-toggle` - {itemId, open}
48
+ ## Events
49
+
50
+ - `accordion-open` → `{ itemId, item }` - Item opened (on container)
51
+ - `accordion-close` → `{ itemId, item }` - Item closed (on container)
52
+ - `accordion-item-toggle` → `{ itemId, open }` - Item toggled (on item)
53
+
54
+ ## Slots
55
+
56
+ ### snice-accordion
57
+ - `(default)` - `<snice-accordion-item>` elements
44
58
 
45
- **Slots:**
59
+ ### snice-accordion-item
46
60
  - `header` - Clickable trigger content
47
- - default - Collapsible content
61
+ - `(default)` - Collapsible content
62
+
63
+ ## CSS Parts
48
64
 
49
- **CSS Parts:**
65
+ (on snice-accordion-item)
50
66
  - `header` - The clickable button trigger
51
67
  - `title` - Span wrapping the header slot
52
68
  - `icon` - The chevron SVG icon
53
69
  - `content` - The collapsible content wrapper
54
70
  - `content-inner` - Inner div containing the default slot
55
71
 
56
- ## Usage
72
+ ## Basic Usage
57
73
 
58
74
  ```html
59
- <!-- Basic -->
60
75
  <snice-accordion>
61
76
  <snice-accordion-item item-id="item-1">
62
77
  <span slot="header">Section 1</span>
63
78
  <div>Content 1</div>
64
79
  </snice-accordion-item>
65
-
66
80
  <snice-accordion-item item-id="item-2">
67
81
  <span slot="header">Section 2</span>
68
82
  <div>Content 2</div>
@@ -75,71 +89,23 @@ disabled: boolean = false;
75
89
  <span slot="header">A</span>
76
90
  <p>Content A</p>
77
91
  </snice-accordion-item>
78
-
79
- <snice-accordion-item item-id="b" open>
80
- <span slot="header">B</span>
81
- <p>Content B</p>
82
- </snice-accordion-item>
83
92
  </snice-accordion>
84
93
 
85
- <!-- Disabled item -->
86
- <snice-accordion>
87
- <snice-accordion-item item-id="active">
88
- <span slot="header">Active</span>
89
- <p>Can open</p>
90
- </snice-accordion-item>
91
-
92
- <snice-accordion-item item-id="disabled" disabled>
93
- <span slot="header">Disabled</span>
94
- <p>Cannot open</p>
95
- </snice-accordion-item>
96
- </snice-accordion>
97
- ```
94
+ <!-- Elevated variant -->
95
+ <snice-accordion variant="elevated">...</snice-accordion>
98
96
 
99
- ## Programmatic Control
100
-
101
- ```typescript
102
- // Control items
103
- accordion.openItem('item-1');
104
- accordion.closeItem('item-2');
105
- accordion.toggleItem('item-3');
106
- accordion.openAll(); // Multiple mode only
107
- accordion.closeAll();
108
-
109
- // Listen for events
110
- accordion.addEventListener('accordion-open', (e) => {
111
- console.log('Opened:', e.detail.itemId);
112
- });
113
-
114
- // Control individual item
115
- item.toggle();
116
- item.expand();
117
- item.collapse();
97
+ <!-- Disabled item -->
98
+ <snice-accordion-item item-id="disabled" disabled>...</snice-accordion-item>
118
99
  ```
119
100
 
120
101
  ## Keyboard Navigation
121
102
 
122
- - **↓** - Next item
123
- - **↑** - Previous item
124
- - **Home** - First item
125
- - **End** - Last item
103
+ - **Arrow Down/Up** - Next/previous item
104
+ - **Home/End** - First/last item
126
105
  - **Enter/Space** - Toggle focused item
127
106
 
128
- ## Features
129
-
130
- - Single or multiple open mode
131
- - Keyboard navigation
132
- - Click or keyboard to toggle
133
- - Auto-generated item IDs
134
- - Disabled state
135
- - Open/close events
136
- - Accessibility: aria-expanded, button roles
137
- - Smooth animations
138
-
139
- ## Notes
107
+ ## Accessibility
140
108
 
141
- - Items are light DOM children (not slotted)
142
- - Without `multiple`, opening one closes others
143
- - Item IDs auto-generated if not provided
144
- - Disabled items cannot be toggled
145
- - Header slot required for trigger content
109
+ - `aria-expanded` on headers, `button` role
110
+ - Full keyboard navigation
111
+ - Visible focus indicators
@@ -0,0 +1,75 @@
1
+ # snice-action-bar
2
+
3
+ Positioned, animated container for contextual actions within a relative parent.
4
+
5
+ ## Properties
6
+
7
+ ```typescript
8
+ open: boolean = false; // attr: open
9
+ position: 'top'|'bottom'|'left'|'right'|'top-left'|'top-right'|'bottom-left'|'bottom-right' = 'bottom';
10
+ size: 'small'|'medium' = 'medium';
11
+ variant: 'default'|'pill' = 'default';
12
+ noAnimation: boolean = false; // attr: no-animation — always visible, no transitions
13
+ noEscapeDismiss: boolean = false; // attr: no-escape-dismiss
14
+ ```
15
+
16
+ ## Methods
17
+
18
+ - `show()` - Open
19
+ - `hide()` - Close
20
+ - `toggle()` - Toggle open state
21
+
22
+ ## Events
23
+
24
+ - `action-bar-open` → `{ actionBar: SniceActionBarElement }`
25
+ - `action-bar-close` → `{ actionBar: SniceActionBarElement }`
26
+
27
+ ## Slots
28
+
29
+ - `(default)` - Action content (buttons, icons, etc.)
30
+
31
+ ## CSS Parts
32
+
33
+ - `base` - The inner toolbar container
34
+
35
+ ## CSS Custom Properties
36
+
37
+ - `--action-bar-background` - Background color
38
+ - `--action-bar-border` - Border style
39
+ - `--action-bar-border-radius` - Border radius
40
+ - `--action-bar-padding` - Inner padding
41
+ - `--action-bar-gap` - Gap between items
42
+ - `--action-bar-shadow` - Box shadow
43
+ - `--action-bar-z-index` - Z-index
44
+
45
+ ## Basic Usage
46
+
47
+ ```html
48
+ <div style="position:relative"
49
+ onmouseenter="this.querySelector('snice-action-bar').show()"
50
+ onmouseleave="this.querySelector('snice-action-bar').hide()">
51
+ <p>Content</p>
52
+ <snice-action-bar position="bottom" variant="pill">
53
+ <button>Edit</button>
54
+ <button>Delete</button>
55
+ </snice-action-bar>
56
+ </div>
57
+
58
+ <!-- Always visible -->
59
+ <snice-action-bar no-animation position="top-right" size="small">
60
+ <button>Edit</button>
61
+ </snice-action-bar>
62
+ ```
63
+
64
+ ## Keyboard Navigation
65
+
66
+ - Arrow keys navigate focusable children (roving tabindex)
67
+ - `Escape` closes unless `no-escape-dismiss`
68
+ - `Home`/`End` jump to first/last
69
+ - `role="toolbar"`
70
+
71
+ ## Accessibility
72
+
73
+ - `role="toolbar"` with `aria-label="Actions"`
74
+ - Roving keyboard navigation
75
+ - Escape dismiss (configurable)
@@ -26,16 +26,16 @@ interface Activity {
26
26
  }
27
27
  ```
28
28
 
29
- ## Events
30
-
31
- - `activity-click` -> `{ activity: Activity }`
32
- - `load-more` -> `{ count: number }`
33
-
34
29
  ## Methods
35
30
 
36
31
  - `addActivity(activity)` - Prepend activity to feed
37
32
  - `clearFilter()` - Reset filter to show all
38
33
 
34
+ ## Events
35
+
36
+ - `activity-click` → `{ activity: Activity }`
37
+ - `load-more` → `{ count: number }`
38
+
39
39
  ## CSS Parts
40
40
 
41
41
  - `base` - Feed container
@@ -47,7 +47,7 @@ interface Activity {
47
47
  - `timestamp` - Timestamp text
48
48
  - `group-header` - Date group header
49
49
 
50
- ## Usage
50
+ ## Basic Usage
51
51
 
52
52
  ```html
53
53
  <snice-activity-feed group-by="date"></snice-activity-feed>
@@ -57,8 +57,8 @@ interface Activity {
57
57
  feed.activities = [
58
58
  { id: '1', actor: { name: 'Alice', avatar: 'alice.jpg' }, action: 'created', target: 'Project Alpha', timestamp: '2024-01-15T10:30:00Z', type: 'create', icon: '+' },
59
59
  { id: '2', actor: { name: 'Bob' }, action: 'commented on', target: 'Issue #42', timestamp: '2024-01-15T11:00:00Z', type: 'comment' },
60
- { id: '3', actor: { name: 'Charlie' }, action: 'deployed', target: 'v2.0.0', timestamp: '2024-01-14T09:00:00Z', type: 'deploy' }
61
60
  ];
62
61
  feed.addEventListener('activity-click', e => console.log(e.detail.activity));
63
62
  feed.addEventListener('load-more', e => console.log('Load more, current:', e.detail.count));
63
+ feed.addActivity({ id: '3', actor: { name: 'System' }, action: 'deployed', target: 'v3.0', timestamp: new Date().toISOString(), type: 'deploy' });
64
64
  ```
@@ -9,18 +9,13 @@ variant: 'info'|'success'|'warning'|'error' = 'info';
9
9
  size: 'small'|'medium'|'large' = 'medium';
10
10
  title: string = '';
11
11
  dismissible: boolean = false;
12
- icon: string = '';
12
+ icon: string = ''; // URL, emoji, or 'none'. Use icon slot for icon fonts.
13
13
  ```
14
14
 
15
- ## Slots
16
-
17
- - `(default)` - Alert message content
18
- - `icon` - Custom icon content (overrides `icon` property and default icons)
19
-
20
15
  ## Methods
21
16
 
22
17
  - `show()` - Show alert
23
- - `hide()` - Hide alert
18
+ - `hide()` - Hide alert with animation
24
19
 
25
20
  ## Events
26
21
 
@@ -28,30 +23,29 @@ icon: string = '';
28
23
  - `alert-shown` → `{ variant, title }` - Alert shown
29
24
  - `alert-hidden` → `{ variant, title }` - Alert hidden after animation
30
25
 
31
- ## Usage
26
+ ## Slots
27
+
28
+ - `(default)` - Alert message content
29
+ - `icon` - Custom icon content (overrides `icon` property and default icons)
30
+
31
+ ## CSS Parts
32
+
33
+ - `icon` - The icon container
34
+
35
+ ## Basic Usage
32
36
 
33
37
  ```html
34
38
  <!-- Basic -->
35
39
  <snice-alert>Alert message</snice-alert>
36
40
 
37
- <!-- Success -->
38
- <snice-alert variant="success">
39
- Operation completed successfully!
40
- </snice-alert>
41
-
42
- <!-- Error -->
43
- <snice-alert variant="error">
44
- An error occurred
45
- </snice-alert>
46
-
47
- <!-- Warning -->
48
- <snice-alert variant="warning">
49
- Please review your input
50
- </snice-alert>
41
+ <!-- Variants -->
42
+ <snice-alert variant="success">Operation completed!</snice-alert>
43
+ <snice-alert variant="error">An error occurred</snice-alert>
44
+ <snice-alert variant="warning">Please review your input</snice-alert>
51
45
 
52
46
  <!-- With title -->
53
47
  <snice-alert variant="info" title="Information">
54
- Additional details about the information.
48
+ Additional details.
55
49
  </snice-alert>
56
50
 
57
51
  <!-- Dismissible -->
@@ -59,37 +53,25 @@ icon: string = '';
59
53
  Can be closed by user
60
54
  </snice-alert>
61
55
 
62
- <!-- ⚠️ icon="info" renders as PLAIN TEXT. Use the icon slot for icon fonts. -->
63
-
64
- <!-- Icon SLOT — for Material Symbols, Font Awesome, SVGs -->
56
+ <!-- Icon SLOT for Material Symbols, Font Awesome, SVGs -->
65
57
  <snice-alert variant="info">
66
58
  <span slot="icon" class="material-symbols-outlined">info</span>
67
59
  Information message
68
60
  </snice-alert>
69
61
 
70
- <!-- Icon PROPERTY for emoji, URLs, image files only -->
71
- <snice-alert icon="🎉">Custom icon alert</snice-alert>
62
+ <!-- Icon PROPERTY for emoji, URLs, image files only -->
72
63
  <snice-alert icon="/icons/info.svg">With image icon</snice-alert>
73
64
 
65
+ <!-- No icon -->
66
+ <snice-alert icon="none">No icon alert</snice-alert>
67
+
74
68
  <!-- Sizes -->
75
69
  <snice-alert size="small">Small</snice-alert>
76
- <snice-alert size="medium">Medium</snice-alert>
77
70
  <snice-alert size="large">Large</snice-alert>
78
71
  ```
79
72
 
80
- ## Features
81
-
82
- - 4 variants with semantic colors
83
- - 3 size options
84
- - Optional title
85
- - Optional dismiss button
86
- - Custom icon support (URL, image files, emoji). Use slot for icon fonts.
87
- - Show/hide methods
88
- - Accessibility: role="alert"
89
-
90
- ## Variants
73
+ ## Accessibility
91
74
 
92
- - `info` - Blue, informational
93
- - `success` - Green, positive feedback
94
- - `warning` - Orange, caution
95
- - `error` - Red, errors/problems
75
+ - `role="alert"` with `aria-live="polite"`
76
+ - Dismiss button is keyboard accessible
77
+ - WCAG AA color contrast