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,8 +1,9 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/banner.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/banner.md -->
2
2
 
3
3
  # Banner Component
4
+ `<snice-banner>`
4
5
 
5
- The `<snice-banner>` component displays fixed-position notification banners at the top or bottom of the viewport.
6
+ The banner component displays fixed-position notification banners at the top or bottom of the viewport. Supports multiple variants, dismissible close button, and optional action button.
6
7
 
7
8
  ## Table of Contents
8
9
  - [Properties](#properties)
@@ -12,6 +13,7 @@ The `<snice-banner>` component displays fixed-position notification banners at t
12
13
  - [CSS Parts](#css-parts)
13
14
  - [Basic Usage](#basic-usage)
14
15
  - [Examples](#examples)
16
+ - [Accessibility](#accessibility)
15
17
 
16
18
  ## Properties
17
19
 
@@ -21,32 +23,17 @@ The `<snice-banner>` component displays fixed-position notification banners at t
21
23
  | `position` | `'top' \| 'bottom'` | `'top'` | Position on screen |
22
24
  | `message` | `string` | `''` | Banner message |
23
25
  | `dismissible` | `boolean` | `true` | Show close button |
24
- | `icon` | `string` | `''` | Custom icon (default icons per variant) |
25
- | `actionText` | `string` | `''` | Action button text |
26
+ | `icon` | `string` | `''` | Custom icon (emoji, URL, image file). Default icons per variant. |
27
+ | `actionText` (attr: `action-text`) | `string` | `''` | Action button text |
26
28
  | `open` | `boolean` | `false` | Banner visibility |
27
29
 
28
30
  ## Methods
29
31
 
30
- #### `show(): void`
31
- Show the banner.
32
-
33
- ```typescript
34
- banner.show();
35
- ```
36
-
37
- #### `hide(): void`
38
- Hide the banner.
39
-
40
- ```typescript
41
- banner.hide();
42
- ```
43
-
44
- #### `toggle(): void`
45
- Toggle banner visibility.
46
-
47
- ```typescript
48
- banner.toggle();
49
- ```
32
+ | Method | Arguments | Description |
33
+ |--------|-----------|-------------|
34
+ | `show()` | -- | Show the banner |
35
+ | `hide()` | -- | Hide the banner |
36
+ | `toggle()` | -- | Toggle banner visibility |
50
37
 
51
38
  ## Events
52
39
 
@@ -58,9 +45,9 @@ banner.toggle();
58
45
 
59
46
  ## Slots
60
47
 
61
- | Slot Name | Description |
62
- |-----------|-------------|
63
- | `icon` | Custom icon content. Overrides the `icon` property and default variant icons. |
48
+ | Name | Description |
49
+ |------|-------------|
50
+ | `icon` | Custom icon content. Overrides the `icon` property and default variant icons. Use for icon fonts. |
64
51
  | (default) | Additional content after the message |
65
52
 
66
53
  ### Icon Slot Usage
@@ -79,8 +66,6 @@ Use the `icon` slot for external CSS-based icon fonts:
79
66
 
80
67
  ## CSS Parts
81
68
 
82
- Style internal elements from outside the shadow DOM using `::part()`.
83
-
84
69
  | Part | Element | Description |
85
70
  |------|---------|-------------|
86
71
  | `banner` | `<div>` | The main banner container |
@@ -89,8 +74,22 @@ Style internal elements from outside the shadow DOM using `::part()`.
89
74
  | `action` | `<button>` | The action button (when `actionText` is set) |
90
75
  | `close` | `<button>` | The close/dismiss button |
91
76
 
77
+ ```css
78
+ snice-banner::part(banner) {
79
+ font-size: 1rem;
80
+ }
81
+
82
+ snice-banner::part(action) {
83
+ font-weight: 600;
84
+ }
85
+ ```
86
+
92
87
  ## Basic Usage
93
88
 
89
+ ```typescript
90
+ import 'snice/components/banner/snice-banner';
91
+ ```
92
+
94
93
  ```html
95
94
  <snice-banner
96
95
  variant="info"
@@ -103,6 +102,8 @@ Style internal elements from outside the shadow DOM using `::part()`.
103
102
 
104
103
  ### Variants
105
104
 
105
+ Use the `variant` attribute to set the banner style.
106
+
106
107
  ```html
107
108
  <snice-banner variant="info" message="Info message" open></snice-banner>
108
109
  <snice-banner variant="success" message="Success!" open></snice-banner>
@@ -112,13 +113,14 @@ Style internal elements from outside the shadow DOM using `::part()`.
112
113
 
113
114
  ### With Action Button
114
115
 
116
+ Use `action-text` to show an action button. Listen for `banner-action` to handle clicks.
117
+
115
118
  ```html
116
119
  <snice-banner
117
120
  message="A new version is available"
118
121
  action-text="Update Now"
119
122
  open
120
123
  ></snice-banner>
121
-
122
124
  ```
123
125
 
124
126
  ```typescript
@@ -129,6 +131,8 @@ banner.addEventListener('banner-action', () => {
129
131
 
130
132
  ### Bottom Position
131
133
 
134
+ Use `position="bottom"` to anchor the banner to the bottom of the viewport.
135
+
132
136
  ```html
133
137
  <snice-banner
134
138
  position="bottom"
@@ -140,6 +144,8 @@ banner.addEventListener('banner-action', () => {
140
144
 
141
145
  ### Not Dismissible
142
146
 
147
+ Set `dismissible="false"` to hide the close button.
148
+
143
149
  ```html
144
150
  <snice-banner
145
151
  message="Maintenance mode active"
@@ -151,6 +157,8 @@ banner.addEventListener('banner-action', () => {
151
157
 
152
158
  ### Programmatic Control
153
159
 
160
+ Use `show()`, `hide()`, and `toggle()` methods.
161
+
154
162
  ```html
155
163
  <snice-banner id="myBanner" message="Hello"></snice-banner>
156
164
 
@@ -158,3 +166,9 @@ banner.addEventListener('banner-action', () => {
158
166
  <button onclick="myBanner.hide()">Hide</button>
159
167
  <button onclick="myBanner.toggle()">Toggle</button>
160
168
  ```
169
+
170
+ ## Accessibility
171
+
172
+ - **ARIA role**: Banner has `role="alert"` for screen reader announcements
173
+ - **Close button**: Has `aria-label="Close"` for screen readers
174
+ - **Keyboard accessible**: Close and action buttons are keyboard focusable
@@ -0,0 +1,208 @@
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/binpack.md -->
2
+
3
+ # Binpack Component
4
+ `<snice-binpack>`
5
+
6
+ A JavaScript-driven bin-packing layout component. Uses the maximal rectangles algorithm to efficiently pack items of varying sizes into a container with absolute positioning and smooth transitions.
7
+
8
+ ## Table of Contents
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [Slots](#slots)
13
+ - [CSS Custom Properties](#css-custom-properties)
14
+ - [CSS Parts](#css-parts)
15
+ - [Basic Usage](#basic-usage)
16
+ - [Examples](#examples)
17
+
18
+ ## Properties
19
+
20
+ | Property | Attribute | Type | Default | Description |
21
+ |----------|-----------|------|---------|-------------|
22
+ | `gap` | `gap` | `string` | `'1rem'` | Spacing between items |
23
+ | `columnWidth` | `column-width` | `number` | `0` | Grid snap width (0 = no grid) |
24
+ | `rowHeight` | `row-height` | `number` | `0` | Grid snap height (0 = no grid) |
25
+ | `horizontal` | `horizontal` | `boolean` | `false` | Pack horizontally instead of vertically |
26
+ | `originLeft` | `origin-left` | `boolean` | `true` | `false` = right-to-left |
27
+ | `originTop` | `origin-top` | `boolean` | `true` | `false` = bottom-to-top |
28
+ | `transitionDuration` | `transition-duration` | `string` | `'0.4s'` | CSS transition duration for item movement |
29
+ | `stagger` | `stagger` | `number` | `0` | Delay in ms between each item's transition |
30
+ | `resize` | `resize` | `boolean` | `true` | Auto re-layout on container resize |
31
+ | `draggable` | `draggable` | `boolean` | `false` | Enable drag-to-reorder |
32
+ | `dragThrottle` | `drag-throttle` | `number` | `120` | Throttle interval (ms) for drag layout updates |
33
+
34
+ ## Methods
35
+
36
+ | Method | Arguments | Description |
37
+ |--------|-----------|-------------|
38
+ | `layout()` | -- | Perform a full re-layout |
39
+ | `fit()` | `element: HTMLElement, x?: number, y?: number` | Position specific item at coordinates, reflow others |
40
+ | `reloadItems()` | -- | Re-collect items from DOM |
41
+ | `stamp()` | `elements: HTMLElement \| HTMLElement[]` | Layout around fixed elements |
42
+ | `unstamp()` | `elements: HTMLElement \| HTMLElement[]` | Remove stamp constraint |
43
+ | `getItemElements()` | -- | Returns array of all layout items |
44
+ | `getLayout()` | -- | Returns `BinpackLayout` object with item positions |
45
+ | `setLayout()` | `layout: BinpackLayout` | Apply a saved layout (reorder, hide/show items) |
46
+
47
+ ## Events
48
+
49
+ | Event | Detail | Description |
50
+ |-------|--------|-------------|
51
+ | `binpack-layout-complete` | `{ items: HTMLElement[] }` | Fired after layout completes |
52
+ | `binpack-fit-complete` | `{ item: HTMLElement, x: number, y: number }` | Fired after `fit()` completes |
53
+ | `binpack-drag-item-positioned` | `{ item: HTMLElement, x: number, y: number }` | Fired after a dragged item settles into its new position |
54
+
55
+ ## Slots
56
+
57
+ | Name | Description |
58
+ |------|-------------|
59
+ | (default) | Items to pack. Each item should have explicit width and height. |
60
+
61
+ ## CSS Custom Properties
62
+
63
+ | Property | Description | Default |
64
+ |----------|-------------|---------|
65
+ | `--binpack-gap` | Gap between items (set via `gap` property) | `1rem` |
66
+ | `--binpack-transition-duration` | Transition duration for item movement (set via `transition-duration` property) | `0.4s` |
67
+
68
+ ## CSS Parts
69
+
70
+ | Part | Description |
71
+ |------|-------------|
72
+ | `base` | The inner container element |
73
+
74
+ ## Basic Usage
75
+
76
+ ```typescript
77
+ import 'snice/components/binpack/snice-binpack';
78
+ ```
79
+
80
+ ```html
81
+ <snice-binpack gap="0.5rem">
82
+ <div style="width: 100px; height: 100px;">A</div>
83
+ <div style="width: 150px; height: 80px;">B</div>
84
+ <div style="width: 80px; height: 120px;">C</div>
85
+ </snice-binpack>
86
+ ```
87
+
88
+ ## Examples
89
+
90
+ ### Horizontal Packing
91
+
92
+ Use the `horizontal` attribute to pack items left-to-right instead of top-to-bottom. Set a fixed height on the container.
93
+
94
+ ```html
95
+ <snice-binpack horizontal gap="0.5rem" style="height: 300px;">
96
+ <div style="width: 100px; height: 100px;">A</div>
97
+ <div style="width: 80px; height: 150px;">B</div>
98
+ <div style="width: 120px; height: 80px;">C</div>
99
+ </snice-binpack>
100
+ ```
101
+
102
+ ### Grid-Snapped Layout
103
+
104
+ Use `column-width` and `row-height` to snap items to a grid.
105
+
106
+ ```html
107
+ <snice-binpack column-width="100" row-height="100" gap="0.5rem">
108
+ <div style="width: 80px; height: 80px;">A</div>
109
+ <div style="width: 180px; height: 80px;">B</div>
110
+ <div style="width: 80px; height: 160px;">C</div>
111
+ </snice-binpack>
112
+ ```
113
+
114
+ ### Staggered Transitions
115
+
116
+ Use `stagger` to add incremental delay between each item's transition.
117
+
118
+ ```html
119
+ <snice-binpack transition-duration="0.6s" stagger="40">
120
+ <div style="width: 100px; height: 100px;">A</div>
121
+ <div style="width: 100px; height: 100px;">B</div>
122
+ <div style="width: 100px; height: 100px;">C</div>
123
+ </snice-binpack>
124
+ ```
125
+
126
+ ### Right-to-Left
127
+
128
+ Set `origin-left="false"` to pack items from the right side.
129
+
130
+ ```html
131
+ <snice-binpack origin-left="false" gap="0.5rem">
132
+ <div style="width: 100px; height: 100px;">A</div>
133
+ <div style="width: 150px; height: 80px;">B</div>
134
+ </snice-binpack>
135
+ ```
136
+
137
+ ### Draggable Dashboard
138
+
139
+ Enable `draggable` to let users drag items to rearrange them.
140
+
141
+ ```html
142
+ <snice-binpack draggable gap="8px" column-width="80" row-height="80">
143
+ <div style="width: 160px; height: 160px;">Revenue</div>
144
+ <div style="width: 80px; height: 80px;">CPU</div>
145
+ <div style="width: 160px; height: 80px;">Orders</div>
146
+ </snice-binpack>
147
+ ```
148
+
149
+ CSS classes applied during drag:
150
+ - `.binpack-dragging` -- applied during drag (no transition, z-index: 100)
151
+ - `.binpack-positioning` -- applied while animating to final position after drop
152
+
153
+ ```javascript
154
+ pack.addEventListener('binpack-drag-item-positioned', (e) => {
155
+ const { item, x, y } = e.detail;
156
+ console.log('Item dropped at', x, y);
157
+ });
158
+ ```
159
+
160
+ ### Dynamic Items
161
+
162
+ Items can be added or removed dynamically. The layout automatically updates via slot change detection.
163
+
164
+ ```javascript
165
+ const pack = document.querySelector('snice-binpack');
166
+
167
+ // Add an item
168
+ const item = document.createElement('div');
169
+ item.style.width = '120px';
170
+ item.style.height = '80px';
171
+ pack.appendChild(item);
172
+
173
+ // Remove an item
174
+ pack.lastElementChild.remove();
175
+ ```
176
+
177
+ ### Stamp (Fixed Elements)
178
+
179
+ Use `stamp()` to mark elements as fixed -- other items layout around them.
180
+
181
+ ```javascript
182
+ const pack = document.getElementById('stamp-demo');
183
+ const fixed = document.getElementById('fixed');
184
+ pack.stamp(fixed); // Items layout around it
185
+ pack.unstamp(fixed); // Resume normal layout
186
+ ```
187
+
188
+ ### Save and Restore Layout
189
+
190
+ Use `getLayout()` and `setLayout()` to persist item arrangement. Items must have a `name` attribute.
191
+
192
+ ```javascript
193
+ // Save
194
+ const layout = pack.getLayout();
195
+ localStorage.setItem('dashboard', JSON.stringify(layout));
196
+
197
+ // Restore
198
+ const saved = JSON.parse(localStorage.getItem('dashboard'));
199
+ pack.setLayout(saved);
200
+ ```
201
+
202
+ ### Notes
203
+
204
+ - Items must have explicit `width` and `height` (the component does not auto-size items)
205
+ - The container uses `position: relative` and items are absolutely positioned with `transform` for smooth transitions
206
+ - Uses `ResizeObserver` on both the container and individual items for automatic re-layout
207
+ - FOUC is prevented by gating transitions behind the `[ready]` attribute
208
+ - Uses `contain: layout style` on `:host` (not `paint`, as items use absolute positioning that may overflow)
@@ -1,10 +1,12 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/book.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/book.md -->
2
2
 
3
3
  # Book Component
4
+ `<snice-book>`
4
5
 
5
- The book component displays content as a page-flipping book with realistic 3D page-turn animations. It supports a customizable cover page, keyboard and touch navigation, and programmatic page control.
6
+ The book component displays content as a page-flipping book with realistic 3D page-turn animations. It supports a customizable cover page, keyboard navigation, and programmatic page control.
6
7
 
7
8
  ## Table of Contents
9
+ - [Components](#components)
8
10
  - [Properties](#properties)
9
11
  - [Methods](#methods)
10
12
  - [Events](#events)
@@ -13,17 +15,26 @@ The book component displays content as a page-flipping book with realistic 3D pa
13
15
  - [CSS Parts](#css-parts)
14
16
  - [Basic Usage](#basic-usage)
15
17
  - [Examples](#examples)
18
+ - [Keyboard Navigation](#keyboard-navigation)
16
19
  - [Accessibility](#accessibility)
17
20
 
21
+ ## Components
22
+
23
+ ### `<snice-book>`
24
+ Main book container with page-flip animation.
25
+
26
+ ### `<snice-book-page>`
27
+ Individual page element. Each child becomes one page in the book. Supports `front` and `back` named slots for double-sided pages.
28
+
18
29
  ## Properties
19
30
 
20
31
  | Property | Type | Default | Description |
21
32
  |----------|------|---------|-------------|
22
- | `currentPage` (attr: `current-page`) | `number` | `0` | Current page number (0-indexed) |
33
+ | `currentPage` (attr: `current-page`) | `number` | `0` | Current page number (0 = cover closed) |
23
34
  | `coverImage` (attr: `cover-image`) | `string` | `''` | URL for the cover page image |
24
35
  | `title` | `string` | `''` | Book title displayed on the cover |
25
36
  | `author` | `string` | `''` | Author name displayed on the cover |
26
- | `totalPages` | `number` | _(read-only)_ | Total number of pages (count of slotted child elements) |
37
+ | `totalPages` | `number` | _(read-only)_ | Total number of pages (count of slotted `<snice-book-page>` elements) |
27
38
 
28
39
  ## Methods
29
40
 
@@ -47,24 +58,22 @@ The book component displays content as a page-flipping book with realistic 3D pa
47
58
 
48
59
  | Name | Description |
49
60
  |------|-------------|
50
- | (default) | Page elements. Each child element becomes one page in the book. |
61
+ | (default) | `<snice-book-page>` elements. Each child element becomes one page in the book. |
51
62
 
52
63
  ## CSS Custom Properties
53
64
 
54
- | Property | Description |
55
- |----------|-------------|
56
- | `--page-bg` | Page background color (default: `#F5F5F5`) |
57
- | `--dark-text` | Primary text color (default: `#2A2935`) |
58
- | `--baseline` | Base spacing unit (default: `12px`) |
59
- | `--book-title` | Book title font family (default: `'Tulpen One', sans-serif`) |
60
- | `--title` | Section title / body heading font (default: `'Cormorant Garamond', serif`) |
61
- | `--body` | Body text font (default: `'Cormorant Garamond', serif`) |
62
- | `--base-size` | Base font size, derived from baseline (default: `calc(var(--baseline) * 1.2)`) |
65
+ | Property | Description | Default |
66
+ |----------|-------------|---------|
67
+ | `--page-bg` | Page background color | `#F5F5F5` |
68
+ | `--dark-text` | Primary text color | `#2A2935` |
69
+ | `--baseline` | Base spacing unit | `12px` |
70
+ | `--book-title` | Book title font family | `'Tulpen One', sans-serif` |
71
+ | `--title` | Section title / body heading font | `'Cormorant Garamond', serif` |
72
+ | `--body` | Body text font | `'Cormorant Garamond', serif` |
73
+ | `--base-size` | Base font size, derived from baseline | `calc(var(--baseline) * 1.2)` |
63
74
 
64
75
  ## CSS Parts
65
76
 
66
- Style internal elements from outside the shadow DOM using `::part()`.
67
-
68
77
  | Part | Element | Description |
69
78
  |------|---------|-------------|
70
79
  | `base` | `<div>` | The outer cover container |
@@ -83,18 +92,24 @@ snice-book::part(book) {
83
92
 
84
93
  ## Basic Usage
85
94
 
95
+ ```typescript
96
+ import 'snice/components/book/snice-book';
97
+ ```
98
+
86
99
  ```html
87
100
  <snice-book>
88
- <div>Page 1 content</div>
89
- <div>Page 2 content</div>
90
- <div>Page 3 content</div>
101
+ <snice-book-page>
102
+ <div>Page 1 content</div>
103
+ </snice-book-page>
104
+ <snice-book-page>
105
+ <div>Page 2 content</div>
106
+ </snice-book-page>
107
+ <snice-book-page>
108
+ <div>Page 3 content</div>
109
+ </snice-book-page>
91
110
  </snice-book>
92
111
  ```
93
112
 
94
- ```typescript
95
- import 'snice/components/book/snice-book';
96
- ```
97
-
98
113
  ## Examples
99
114
 
100
115
  ### Basic Book with Cover
@@ -103,10 +118,12 @@ Use the `title`, `author`, and `cover-image` attributes to create a book with a
103
118
 
104
119
  ```html
105
120
  <snice-book title="The Great Gatsby" author="F. Scott Fitzgerald" cover-image="/covers/gatsby.jpg">
106
- <div>In my younger and more vulnerable years my father gave me some advice...</div>
107
- <div>Chapter 2 content here...</div>
108
- <div>Chapter 3 content here...</div>
109
- <div>Chapter 4 content here...</div>
121
+ <snice-book-page>
122
+ <div>In my younger and more vulnerable years...</div>
123
+ </snice-book-page>
124
+ <snice-book-page>
125
+ <div>Chapter 2 content here...</div>
126
+ </snice-book-page>
110
127
  </snice-book>
111
128
  ```
112
129
 
@@ -116,23 +133,20 @@ Use methods to control the book from JavaScript.
116
133
 
117
134
  ```html
118
135
  <snice-book id="tutorial-book" title="Tutorial">
119
- <div>Step 1: Install the package</div>
120
- <div>Step 2: Import the component</div>
121
- <div>Step 3: Add it to your HTML</div>
122
- <div>Step 4: Customize with properties</div>
136
+ <snice-book-page><div>Step 1: Install</div></snice-book-page>
137
+ <snice-book-page><div>Step 2: Import</div></snice-book-page>
138
+ <snice-book-page><div>Step 3: Use</div></snice-book-page>
123
139
  </snice-book>
124
140
 
125
141
  <button onclick="document.getElementById('tutorial-book').prevPage()">Previous</button>
126
142
  <button onclick="document.getElementById('tutorial-book').nextPage()">Next</button>
143
+ ```
127
144
 
128
- <script type="module">
129
- import 'snice/components/book/snice-book';
130
-
131
- const book = document.getElementById('tutorial-book');
132
- book.addEventListener('page-turn', (e) => {
133
- console.log(`Turned to page ${e.detail.page} (${e.detail.direction})`);
134
- });
135
- </script>
145
+ ```typescript
146
+ const book = document.getElementById('tutorial-book');
147
+ book.addEventListener('page-turn', (e) => {
148
+ console.log(`Turned to page ${e.detail.page} (${e.detail.direction})`);
149
+ });
136
150
  ```
137
151
 
138
152
  ### Rich HTML Content Pages
@@ -141,26 +155,33 @@ Each page can contain arbitrary HTML including text, images, and interactive ele
141
155
 
142
156
  ```html
143
157
  <snice-book title="Product Catalog">
144
- <div style="padding: 2rem;">
145
- <h2>Introduction</h2>
146
- <p>Browse our latest collection of premium products.</p>
147
- </div>
148
- <div style="padding: 2rem;">
149
- <h3>Widget Pro</h3>
150
- <img src="/products/widget-pro.jpg" alt="Widget Pro" style="width: 100%;">
151
- <p>Our most popular product. Starting at $29.99.</p>
152
- </div>
153
- <div style="padding: 2rem;">
154
- <h3>Gadget X</h3>
155
- <img src="/products/gadget-x.jpg" alt="Gadget X" style="width: 100%;">
156
- <p>Next-generation performance. Starting at $49.99.</p>
157
- </div>
158
+ <snice-book-page>
159
+ <div style="padding: 2rem;">
160
+ <h2>Introduction</h2>
161
+ <p>Browse our latest collection.</p>
162
+ </div>
163
+ </snice-book-page>
164
+ <snice-book-page>
165
+ <div style="padding: 2rem;">
166
+ <h3>Widget Pro</h3>
167
+ <img src="/products/widget-pro.jpg" alt="Widget Pro" style="width: 100%;">
168
+ <p>Starting at $29.99.</p>
169
+ </div>
170
+ </snice-book-page>
158
171
  </snice-book>
159
172
  ```
160
173
 
174
+ ## Keyboard Navigation
175
+
176
+ | Key | Action |
177
+ |-----|--------|
178
+ | Arrow Right | Next page |
179
+ | Arrow Left | Previous page |
180
+
181
+ The book must be focused (it sets `tabindex="0"` on ready).
182
+
161
183
  ## Accessibility
162
184
 
163
- - **Keyboard support**: Arrow Right/Down to go to the next page, Arrow Left/Up for the previous page, Home for the first page, End for the last page
164
- - **Focus management**: The book is focusable and responds to keyboard input when focused
165
- - **Screen readers**: Page turn events and navigation controls provide feedback on the current position
166
- - **Touch support**: Swipe gestures on touch devices for natural page turning
185
+ - **Keyboard support**: Arrow keys for page navigation when focused
186
+ - **Focus management**: The book is focusable and responds to keyboard input
187
+ - **Screen readers**: Page turn events provide feedback on current position