snice 4.28.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 (618) 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 +1 -1
  43. package/dist/cdn/badge/snice-badge.min.js +1 -1
  44. package/dist/cdn/banner/snice-banner.js +1 -1
  45. package/dist/cdn/banner/snice-banner.min.js +1 -1
  46. package/dist/cdn/binpack/README.md +27 -0
  47. package/dist/cdn/binpack/snice-binpack.js +1037 -0
  48. package/dist/cdn/binpack/snice-binpack.js.map +1 -0
  49. package/dist/cdn/binpack/snice-binpack.min.js +13 -0
  50. package/dist/cdn/binpack/snice-binpack.min.js.map +1 -0
  51. package/dist/cdn/book/snice-book.js +1 -1
  52. package/dist/cdn/book/snice-book.min.js +1 -1
  53. package/dist/cdn/booking/snice-booking.js +1 -1
  54. package/dist/cdn/booking/snice-booking.min.js +1 -1
  55. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  56. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  57. package/dist/cdn/button/README.md +1 -1
  58. package/dist/cdn/button/snice-button.js +2 -2
  59. package/dist/cdn/button/snice-button.js.map +1 -1
  60. package/dist/cdn/button/snice-button.min.js +2 -2
  61. package/dist/cdn/button/snice-button.min.js.map +1 -1
  62. package/dist/cdn/calendar/snice-calendar.js +1 -1
  63. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  64. package/dist/cdn/camera/snice-camera.js +1 -1
  65. package/dist/cdn/camera/snice-camera.min.js +1 -1
  66. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  67. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  68. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  69. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  70. package/dist/cdn/card/snice-card.js +1 -1
  71. package/dist/cdn/card/snice-card.min.js +1 -1
  72. package/dist/cdn/carousel/snice-carousel.js +1 -1
  73. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  74. package/dist/cdn/cart/snice-cart.js +1 -1
  75. package/dist/cdn/cart/snice-cart.min.js +1 -1
  76. package/dist/cdn/chart/snice-chart.js +1 -1
  77. package/dist/cdn/chart/snice-chart.min.js +1 -1
  78. package/dist/cdn/chat/snice-chat.js +1 -1
  79. package/dist/cdn/chat/snice-chat.min.js +1 -1
  80. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  81. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  82. package/dist/cdn/chip/snice-chip.js +1 -1
  83. package/dist/cdn/chip/snice-chip.min.js +1 -1
  84. package/dist/cdn/code-block/snice-code-block.js +1 -1
  85. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  86. package/dist/cdn/color-display/snice-color-display.js +1 -1
  87. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  88. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  89. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  90. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  91. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  92. package/dist/cdn/comments/snice-comments.js +1 -1
  93. package/dist/cdn/comments/snice-comments.min.js +1 -1
  94. package/dist/cdn/countdown/snice-countdown.js +1 -1
  95. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  96. package/dist/cdn/cropper/snice-cropper.js +1 -1
  97. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  98. package/dist/cdn/data-card/snice-data-card.js +1 -1
  99. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  100. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  101. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  102. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  103. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
  104. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  105. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
  106. package/dist/cdn/diff/snice-diff.js +1 -1
  107. package/dist/cdn/diff/snice-diff.min.js +1 -1
  108. package/dist/cdn/divider/snice-divider.js +1 -1
  109. package/dist/cdn/divider/snice-divider.min.js +1 -1
  110. package/dist/cdn/doc/snice-doc.js +1 -1
  111. package/dist/cdn/doc/snice-doc.min.js +1 -1
  112. package/dist/cdn/draw/snice-draw.js +1 -1
  113. package/dist/cdn/draw/snice-draw.min.js +1 -1
  114. package/dist/cdn/drawer/snice-drawer.js +1 -1
  115. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  116. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  117. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  118. package/dist/cdn/estimate/snice-estimate.js +1 -1
  119. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  120. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  121. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  122. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  123. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  124. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  125. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  126. package/dist/cdn/flow/snice-flow.js +1 -1
  127. package/dist/cdn/flow/snice-flow.min.js +1 -1
  128. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  129. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  130. package/dist/cdn/funnel/snice-funnel.js +1 -1
  131. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  132. package/dist/cdn/gantt/snice-gantt.js +1 -1
  133. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  134. package/dist/cdn/gauge/snice-gauge.js +1 -1
  135. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  136. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  137. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  138. package/dist/cdn/image/snice-image.js +1 -1
  139. package/dist/cdn/image/snice-image.min.js +1 -1
  140. package/dist/cdn/input/snice-input.js +1 -1
  141. package/dist/cdn/input/snice-input.min.js +1 -1
  142. package/dist/cdn/invoice/snice-invoice.js +1 -1
  143. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  144. package/dist/cdn/kanban/snice-kanban.js +1 -1
  145. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  146. package/dist/cdn/key-value/snice-key-value.js +1 -1
  147. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  148. package/dist/cdn/kpi/snice-kpi.js +1 -1
  149. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  150. package/dist/cdn/layout/snice-layout.js +1 -1
  151. package/dist/cdn/layout/snice-layout.min.js +1 -1
  152. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  153. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  154. package/dist/cdn/link/snice-link.js +1 -1
  155. package/dist/cdn/link/snice-link.min.js +1 -1
  156. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  157. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  158. package/dist/cdn/list/snice-list.js +1 -1
  159. package/dist/cdn/list/snice-list.min.js +1 -1
  160. package/dist/cdn/location/snice-location.js +1 -1
  161. package/dist/cdn/location/snice-location.min.js +1 -1
  162. package/dist/cdn/login/README.md +2 -2
  163. package/dist/cdn/login/snice-login.js +2 -2
  164. package/dist/cdn/login/snice-login.js.map +1 -1
  165. package/dist/cdn/login/snice-login.min.js +2 -2
  166. package/dist/cdn/login/snice-login.min.js.map +1 -1
  167. package/dist/cdn/map/snice-map.js +1 -1
  168. package/dist/cdn/map/snice-map.min.js +1 -1
  169. package/dist/cdn/markdown/snice-markdown.js +1 -1
  170. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  171. package/dist/cdn/masonry/snice-masonry.js +1 -1
  172. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  173. package/dist/cdn/menu/snice-menu.js +1 -1
  174. package/dist/cdn/menu/snice-menu.min.js +1 -1
  175. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  176. package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
  177. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  178. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  179. package/dist/cdn/modal/snice-modal.js +1 -1
  180. package/dist/cdn/modal/snice-modal.min.js +1 -1
  181. package/dist/cdn/music-player/snice-music-player.js +1 -1
  182. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  183. package/dist/cdn/nav/snice-nav.js +1 -1
  184. package/dist/cdn/nav/snice-nav.min.js +1 -1
  185. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  186. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  187. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  188. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  189. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  190. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  191. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  192. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  193. package/dist/cdn/pagination/snice-pagination.js +1 -1
  194. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  195. package/dist/cdn/paint/snice-paint.js +1 -1
  196. package/dist/cdn/paint/snice-paint.min.js +1 -1
  197. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  198. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  199. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  200. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  201. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  202. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  203. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  204. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  205. package/dist/cdn/product-card/snice-product-card.js +1 -1
  206. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  207. package/dist/cdn/progress/snice-progress.js +1 -1
  208. package/dist/cdn/progress/snice-progress.min.js +1 -1
  209. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  210. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  211. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  212. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  213. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  214. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  215. package/dist/cdn/radio/snice-radio.js +1 -1
  216. package/dist/cdn/radio/snice-radio.min.js +1 -1
  217. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  218. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  219. package/dist/cdn/rating/snice-rating.js +1 -1
  220. package/dist/cdn/rating/snice-rating.min.js +1 -1
  221. package/dist/cdn/receipt/snice-receipt.js +1 -1
  222. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  223. package/dist/cdn/recipe/snice-recipe.js +1 -1
  224. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  225. package/dist/cdn/runtime/README.md +2 -2
  226. package/dist/cdn/runtime/snice-runtime.esm.js +73 -5
  227. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  228. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  229. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  230. package/dist/cdn/runtime/snice-runtime.js +73 -4
  231. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  232. package/dist/cdn/runtime/snice-runtime.min.js +7 -7
  233. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  234. package/dist/cdn/sankey/snice-sankey.js +1 -1
  235. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  236. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  237. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  238. package/dist/cdn/select/snice-select.js +1 -1
  239. package/dist/cdn/select/snice-select.min.js +1 -1
  240. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  241. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  242. package/dist/cdn/slider/snice-slider.js +1 -1
  243. package/dist/cdn/slider/snice-slider.min.js +1 -1
  244. package/dist/cdn/sortable/snice-sortable.js +1 -1
  245. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  246. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  247. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  248. package/dist/cdn/spinner/snice-spinner.js +1 -1
  249. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  250. package/dist/cdn/split-button/snice-split-button.js +1 -1
  251. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  252. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  253. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  254. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  255. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  256. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  257. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  258. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  259. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  260. package/dist/cdn/step-input/snice-step-input.js +1 -1
  261. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  262. package/dist/cdn/stepper/snice-stepper.js +1 -1
  263. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  264. package/dist/cdn/switch/snice-switch.js +1 -1
  265. package/dist/cdn/switch/snice-switch.min.js +1 -1
  266. package/dist/cdn/table/README.md +1 -1
  267. package/dist/cdn/table/snice-table.js +2 -2
  268. package/dist/cdn/table/snice-table.js.map +1 -1
  269. package/dist/cdn/table/snice-table.min.js +2 -2
  270. package/dist/cdn/table/snice-table.min.js.map +1 -1
  271. package/dist/cdn/tabs/snice-tabs.js +1 -1
  272. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  273. package/dist/cdn/tag/snice-tag.js +1 -1
  274. package/dist/cdn/tag/snice-tag.min.js +1 -1
  275. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  276. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  277. package/dist/cdn/terminal/snice-terminal.js +1 -1
  278. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  279. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  280. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  281. package/dist/cdn/textarea/snice-textarea.js +1 -1
  282. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  283. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  284. package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
  285. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  286. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  287. package/dist/cdn/timeline/snice-timeline.js +1 -1
  288. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  289. package/dist/cdn/timer/snice-timer.js +1 -1
  290. package/dist/cdn/timer/snice-timer.min.js +1 -1
  291. package/dist/cdn/toast/snice-toast.js +1 -1
  292. package/dist/cdn/toast/snice-toast.min.js +1 -1
  293. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  294. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  295. package/dist/cdn/tree/snice-tree.js +1 -1
  296. package/dist/cdn/tree/snice-tree.min.js +1 -1
  297. package/dist/cdn/treemap/snice-treemap.js +1 -1
  298. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  299. package/dist/cdn/user-card/snice-user-card.js +1 -1
  300. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  301. package/dist/cdn/video-player/snice-video-player.js +1 -1
  302. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  303. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  304. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  305. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  306. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  307. package/dist/cdn/weather/snice-weather.js +1 -1
  308. package/dist/cdn/weather/snice-weather.min.js +1 -1
  309. package/dist/cdn/work-order/snice-work-order.js +1 -1
  310. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  311. package/dist/components/action-bar/snice-action-bar.d.ts +22 -0
  312. package/dist/components/action-bar/snice-action-bar.js +182 -0
  313. package/dist/components/action-bar/snice-action-bar.js.map +1 -0
  314. package/dist/components/action-bar/snice-action-bar.types.d.ts +17 -0
  315. package/dist/components/binpack/snice-binpack.d.ts +82 -0
  316. package/dist/components/binpack/snice-binpack.js +970 -0
  317. package/dist/components/binpack/snice-binpack.js.map +1 -0
  318. package/dist/components/binpack/snice-binpack.types.d.ts +52 -0
  319. package/dist/components/button/snice-button.js +1 -1
  320. package/dist/components/button/snice-button.js.map +1 -1
  321. package/dist/create-request-handler.d.ts +42 -0
  322. package/dist/index.cjs +70 -1
  323. package/dist/index.cjs.map +1 -1
  324. package/dist/index.d.ts +2 -0
  325. package/dist/index.esm.js +70 -2
  326. package/dist/index.esm.js.map +1 -1
  327. package/dist/index.iife.js +70 -1
  328. package/dist/index.iife.js.map +1 -1
  329. package/dist/react/useRequestHandler.d.ts +56 -0
  330. package/dist/react/useRequestHandler.js +103 -0
  331. package/dist/react/useRequestHandler.js.map +1 -0
  332. package/dist/symbols.cjs +1 -1
  333. package/dist/symbols.esm.js +1 -1
  334. package/dist/transitions.cjs +1 -1
  335. package/dist/transitions.esm.js +1 -1
  336. package/docs/ai/DEVELOPMENT.md +1 -1
  337. package/docs/ai/components/accordion.md +46 -80
  338. package/docs/ai/components/action-bar.md +75 -0
  339. package/docs/ai/components/activity-feed.md +7 -7
  340. package/docs/ai/components/alert.md +26 -44
  341. package/docs/ai/components/app-tiles.md +34 -39
  342. package/docs/ai/components/approval-flow.md +1 -1
  343. package/docs/ai/components/audio-recorder.md +35 -67
  344. package/docs/ai/components/availability.md +13 -34
  345. package/docs/ai/components/avatar-group.md +26 -13
  346. package/docs/ai/components/avatar.md +52 -36
  347. package/docs/ai/components/badge.md +21 -32
  348. package/docs/ai/components/banner.md +21 -43
  349. package/docs/ai/components/binpack.md +89 -0
  350. package/docs/ai/components/book.md +25 -23
  351. package/docs/ai/components/booking.md +31 -36
  352. package/docs/ai/components/breadcrumbs.md +36 -11
  353. package/docs/ai/components/button.md +33 -44
  354. package/docs/ai/components/calendar.md +37 -70
  355. package/docs/ai/components/camera-annotate.md +31 -64
  356. package/docs/ai/components/camera.md +38 -120
  357. package/docs/ai/components/candlestick.md +32 -52
  358. package/docs/ai/components/card.md +20 -30
  359. package/docs/ai/components/carousel.md +32 -32
  360. package/docs/ai/components/cart.md +24 -29
  361. package/docs/ai/components/chart.md +29 -114
  362. package/docs/ai/components/chat.md +38 -75
  363. package/docs/ai/components/checkbox.md +22 -41
  364. package/docs/ai/components/chip.md +18 -54
  365. package/docs/ai/components/code-block.md +57 -178
  366. package/docs/ai/components/color-display.md +12 -32
  367. package/docs/ai/components/color-picker.md +17 -39
  368. package/docs/ai/components/command-palette.md +49 -71
  369. package/docs/ai/components/comments.md +55 -36
  370. package/docs/ai/components/countdown.md +28 -30
  371. package/docs/ai/components/cropper.md +33 -33
  372. package/docs/ai/components/data-card.md +20 -14
  373. package/docs/ai/components/date-picker.md +40 -47
  374. package/docs/ai/components/date-range-picker.md +31 -15
  375. package/docs/ai/components/date-time-picker.md +23 -46
  376. package/docs/ai/components/diff.md +30 -31
  377. package/docs/ai/components/divider.md +17 -47
  378. package/docs/ai/components/doc.md +43 -68
  379. package/docs/ai/components/draw.md +35 -87
  380. package/docs/ai/components/drawer.md +48 -77
  381. package/docs/ai/components/empty-state.md +10 -44
  382. package/docs/ai/components/estimate.md +33 -58
  383. package/docs/ai/components/file-gallery.md +48 -100
  384. package/docs/ai/components/file-upload.md +17 -53
  385. package/docs/ai/components/flip-card.md +31 -23
  386. package/docs/ai/components/flow.md +37 -65
  387. package/docs/ai/components/form-builder.md +35 -75
  388. package/docs/ai/components/form-layout.md +10 -20
  389. package/docs/ai/components/funnel.md +33 -48
  390. package/docs/ai/components/gantt.md +27 -23
  391. package/docs/ai/components/gauge.md +16 -17
  392. package/docs/ai/components/heatmap.md +21 -21
  393. package/docs/ai/components/image.md +7 -13
  394. package/docs/ai/components/input.md +38 -70
  395. package/docs/ai/components/invoice.md +35 -36
  396. package/docs/ai/components/kanban.md +32 -61
  397. package/docs/ai/components/key-value.md +32 -16
  398. package/docs/ai/components/kpi.md +38 -73
  399. package/docs/ai/components/layout.md +29 -23
  400. package/docs/ai/components/leaderboard.md +28 -37
  401. package/docs/ai/components/link-preview.md +12 -18
  402. package/docs/ai/components/link.md +10 -7
  403. package/docs/ai/components/list.md +21 -5
  404. package/docs/ai/components/location.md +21 -25
  405. package/docs/ai/components/login.md +14 -9
  406. package/docs/ai/components/map.md +27 -33
  407. package/docs/ai/components/markdown.md +20 -24
  408. package/docs/ai/components/masonry.md +10 -14
  409. package/docs/ai/components/mentions.md +26 -12
  410. package/docs/ai/components/menu.md +54 -52
  411. package/docs/ai/components/message-strip.md +20 -20
  412. package/docs/ai/components/metric-table.md +14 -21
  413. package/docs/ai/components/modal.md +27 -18
  414. package/docs/ai/components/music-player.md +49 -41
  415. package/docs/ai/components/nav.md +34 -31
  416. package/docs/ai/components/network-graph.md +27 -42
  417. package/docs/ai/components/notification-center.md +31 -33
  418. package/docs/ai/components/order-tracker.md +36 -27
  419. package/docs/ai/components/org-chart.md +36 -31
  420. package/docs/ai/components/pagination.md +34 -26
  421. package/docs/ai/components/paint.md +53 -91
  422. package/docs/ai/components/pdf-viewer.md +35 -36
  423. package/docs/ai/components/permission-matrix.md +26 -31
  424. package/docs/ai/components/podcast-player.md +64 -70
  425. package/docs/ai/components/pricing-table.md +37 -48
  426. package/docs/ai/components/product-card.md +58 -41
  427. package/docs/ai/components/progress-ring.md +20 -24
  428. package/docs/ai/components/progress.md +28 -45
  429. package/docs/ai/components/qr-code.md +25 -27
  430. package/docs/ai/components/qr-reader.md +20 -23
  431. package/docs/ai/components/radio.md +17 -15
  432. package/docs/ai/components/range-slider.md +22 -11
  433. package/docs/ai/components/rating.md +29 -33
  434. package/docs/ai/components/receipt.md +50 -127
  435. package/docs/ai/components/recipe.md +44 -42
  436. package/docs/ai/components/sankey.md +21 -30
  437. package/docs/ai/components/scheduler.md +29 -41
  438. package/docs/ai/components/segmented-control.md +11 -15
  439. package/docs/ai/components/select.md +58 -102
  440. package/docs/ai/components/skeleton.md +16 -30
  441. package/docs/ai/components/slider.md +26 -20
  442. package/docs/ai/components/sortable.md +25 -27
  443. package/docs/ai/components/sparkline.md +21 -17
  444. package/docs/ai/components/spinner.md +9 -5
  445. package/docs/ai/components/split-button.md +10 -13
  446. package/docs/ai/components/split-pane.md +19 -14
  447. package/docs/ai/components/spotlight.md +31 -26
  448. package/docs/ai/components/spreadsheet.md +51 -97
  449. package/docs/ai/components/stat-group.md +9 -19
  450. package/docs/ai/components/step-input.md +17 -15
  451. package/docs/ai/components/stepper.md +14 -15
  452. package/docs/ai/components/switch.md +15 -9
  453. package/docs/ai/components/table.md +24 -84
  454. package/docs/ai/components/tabs.md +18 -10
  455. package/docs/ai/components/tag-input.md +18 -29
  456. package/docs/ai/components/tag.md +10 -22
  457. package/docs/ai/components/terminal.md +9 -9
  458. package/docs/ai/components/testimonial.md +9 -19
  459. package/docs/ai/components/textarea.md +15 -16
  460. package/docs/ai/components/theme.md +3 -3
  461. package/docs/ai/components/time-picker.md +30 -49
  462. package/docs/ai/components/time-range-picker.md +16 -15
  463. package/docs/ai/components/timeline.md +5 -4
  464. package/docs/ai/components/timer.md +8 -8
  465. package/docs/ai/components/toast.md +24 -18
  466. package/docs/ai/components/tooltip.md +11 -22
  467. package/docs/ai/components/tree.md +9 -9
  468. package/docs/ai/components/treemap.md +14 -13
  469. package/docs/ai/components/user-card.md +21 -27
  470. package/docs/ai/components/video-player.md +35 -52
  471. package/docs/ai/components/virtual-scroller.md +1 -1
  472. package/docs/ai/components/waterfall.md +17 -16
  473. package/docs/ai/components/weather.md +19 -34
  474. package/docs/ai/components/work-order.md +58 -134
  475. package/docs/ai/patterns.md +63 -0
  476. package/docs/components/accordion.md +72 -151
  477. package/docs/components/action-bar.md +185 -0
  478. package/docs/components/activity-feed.md +9 -14
  479. package/docs/components/alert.md +17 -109
  480. package/docs/components/app-tiles.md +58 -43
  481. package/docs/components/approval-flow.md +8 -14
  482. package/docs/components/audio-recorder.md +45 -51
  483. package/docs/components/availability.md +30 -45
  484. package/docs/components/avatar-group.md +34 -14
  485. package/docs/components/avatar.md +20 -55
  486. package/docs/components/badge.md +53 -470
  487. package/docs/components/banner.md +44 -30
  488. package/docs/components/binpack.md +208 -0
  489. package/docs/components/book.md +78 -57
  490. package/docs/components/booking.md +35 -87
  491. package/docs/components/breadcrumbs.md +74 -448
  492. package/docs/components/button.md +72 -603
  493. package/docs/components/calendar.md +77 -261
  494. package/docs/components/camera-annotate.md +44 -96
  495. package/docs/components/camera.md +94 -333
  496. package/docs/components/candlestick.md +79 -116
  497. package/docs/components/card.md +51 -689
  498. package/docs/components/carousel.md +29 -76
  499. package/docs/components/cart.md +44 -136
  500. package/docs/components/chart.md +95 -438
  501. package/docs/components/chat.md +175 -439
  502. package/docs/components/checkbox.md +52 -609
  503. package/docs/components/chip.md +45 -574
  504. package/docs/components/code-block.md +157 -421
  505. package/docs/components/color-display.md +45 -54
  506. package/docs/components/color-picker.md +103 -36
  507. package/docs/components/command-palette.md +98 -92
  508. package/docs/components/comments.md +16 -10
  509. package/docs/components/countdown.md +15 -20
  510. package/docs/components/cropper.md +14 -16
  511. package/docs/components/data-card.md +16 -15
  512. package/docs/components/date-picker.md +45 -25
  513. package/docs/components/date-range-picker.md +140 -87
  514. package/docs/components/date-time-picker.md +25 -28
  515. package/docs/components/diff.md +22 -17
  516. package/docs/components/divider.md +18 -20
  517. package/docs/components/doc.md +105 -197
  518. package/docs/components/draw.md +117 -223
  519. package/docs/components/drawer.md +113 -478
  520. package/docs/components/empty-state.md +13 -29
  521. package/docs/components/estimate.md +58 -118
  522. package/docs/components/file-gallery.md +123 -495
  523. package/docs/components/file-upload.md +36 -123
  524. package/docs/components/flip-card.md +30 -34
  525. package/docs/components/flow.md +74 -89
  526. package/docs/components/form-builder.md +59 -86
  527. package/docs/components/form-layout.md +21 -31
  528. package/docs/components/funnel.md +21 -22
  529. package/docs/components/gantt.md +5 -5
  530. package/docs/components/gauge.md +5 -23
  531. package/docs/components/heatmap.md +13 -55
  532. package/docs/components/image.md +28 -32
  533. package/docs/components/input.md +25 -14
  534. package/docs/components/invoice.md +34 -33
  535. package/docs/components/kanban.md +99 -394
  536. package/docs/components/key-value.md +22 -12
  537. package/docs/components/kpi.md +41 -112
  538. package/docs/components/layout.md +7 -13
  539. package/docs/components/leaderboard.md +52 -76
  540. package/docs/components/link-preview.md +20 -16
  541. package/docs/components/link.md +22 -19
  542. package/docs/components/list.md +44 -26
  543. package/docs/components/location.md +9 -13
  544. package/docs/components/login.md +42 -36
  545. package/docs/components/map.md +24 -46
  546. package/docs/components/markdown.md +14 -25
  547. package/docs/components/masonry.md +15 -13
  548. package/docs/components/mentions.md +36 -25
  549. package/docs/components/menu.md +39 -46
  550. package/docs/components/message-strip.md +15 -51
  551. package/docs/components/metric-table.md +50 -72
  552. package/docs/components/modal.md +32 -43
  553. package/docs/components/music-player.md +41 -49
  554. package/docs/components/nav.md +23 -13
  555. package/docs/components/network-graph.md +14 -13
  556. package/docs/components/notification-center.md +68 -172
  557. package/docs/components/order-tracker.md +72 -117
  558. package/docs/components/org-chart.md +58 -207
  559. package/docs/components/pagination.md +67 -89
  560. package/docs/components/paint.md +86 -172
  561. package/docs/components/pdf-viewer.md +46 -151
  562. package/docs/components/permission-matrix.md +61 -112
  563. package/docs/components/podcast-player.md +41 -119
  564. package/docs/components/pricing-table.md +104 -147
  565. package/docs/components/product-card.md +94 -197
  566. package/docs/components/progress-ring.md +29 -32
  567. package/docs/components/progress.md +30 -61
  568. package/docs/components/qr-code.md +53 -61
  569. package/docs/components/qr-reader.md +53 -42
  570. package/docs/components/radio.md +42 -40
  571. package/docs/components/range-slider.md +41 -30
  572. package/docs/components/rating.md +50 -84
  573. package/docs/components/receipt.md +91 -129
  574. package/docs/components/recipe.md +107 -216
  575. package/docs/components/sankey.md +47 -83
  576. package/docs/components/scheduler.md +81 -184
  577. package/docs/components/segmented-control.md +48 -40
  578. package/docs/components/select.md +107 -129
  579. package/docs/components/skeleton.md +33 -47
  580. package/docs/components/slider.md +49 -53
  581. package/docs/components/sortable.md +43 -186
  582. package/docs/components/sparkline.md +26 -25
  583. package/docs/components/spinner.md +32 -37
  584. package/docs/components/split-button.md +43 -23
  585. package/docs/components/split-pane.md +41 -58
  586. package/docs/components/spotlight.md +53 -145
  587. package/docs/components/spreadsheet.md +84 -307
  588. package/docs/components/stat-group.md +27 -61
  589. package/docs/components/step-input.md +44 -41
  590. package/docs/components/stepper.md +55 -89
  591. package/docs/components/switch.md +39 -39
  592. package/docs/components/table.md +27 -32
  593. package/docs/components/tabs.md +36 -27
  594. package/docs/components/tag-input.md +50 -176
  595. package/docs/components/tag.md +12 -50
  596. package/docs/components/terminal.md +32 -37
  597. package/docs/components/testimonial.md +24 -81
  598. package/docs/components/textarea.md +9 -14
  599. package/docs/components/theme.md +10 -23
  600. package/docs/components/time-picker.md +48 -72
  601. package/docs/components/time-range-picker.md +22 -41
  602. package/docs/components/timeline.md +7 -14
  603. package/docs/components/timer.md +16 -32
  604. package/docs/components/toast.md +19 -45
  605. package/docs/components/tooltip.md +13 -115
  606. package/docs/components/tree.md +2 -19
  607. package/docs/components/treemap.md +19 -43
  608. package/docs/components/user-card.md +13 -22
  609. package/docs/components/video-player.md +53 -227
  610. package/docs/components/virtual-scroller.md +11 -44
  611. package/docs/components/waterfall.md +58 -137
  612. package/docs/components/weather.md +94 -153
  613. package/docs/components/work-order.md +56 -143
  614. package/docs/plans/2026-03-09-action-bar-design.md +104 -0
  615. package/docs/plans/2026-03-09-action-bar-plan.md +676 -0
  616. package/docs/plans/2026-03-10-react-integration-design.md +166 -0
  617. package/docs/request-response.md +77 -0
  618. package/package.json +1 -1
@@ -1,126 +1,88 @@
1
1
  # snice-paint
2
2
 
3
- Self-contained drawing canvas with built-in toolbar.
3
+ Self-contained drawing canvas with built-in toolbar for colors, brush size, eraser, undo/redo, and clear.
4
4
 
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- colors: string[] = ['#3b82f6','#ef4444','#10b981','#f59e0b','#8b5cf6','#ec4899','#e2e8f0','#1e293b'];
9
8
  color: string = '#3b82f6';
10
- strokeWidth: number = 3;
11
- minStrokeWidth: number = 1;
12
- maxStrokeWidth: number = 20;
9
+ strokeWidth: number = 3; // attr: stroke-width
10
+ minStrokeWidth: number = 1; // attr: min-stroke-width
11
+ maxStrokeWidth: number = 20; // attr: max-stroke-width
13
12
  controls: string = 'colors,size,eraser,undo,redo,clear';
14
- backgroundColor: string = '#ffffff';
15
- colorSelects: number = 0; // extra color-picker dots in palette
13
+ backgroundColor: string = '#ffffff'; // attr: background-color
14
+ colorSelects: number = 0; // attr: color-selects, extra color picker dots
16
15
  disabled: boolean = false;
16
+ colors: string[]; // getter/setter, default: ['#3b82f6','#ef4444','#10b981','#f59e0b','#8b5cf6','#ec4899','#e2e8f0','#1e293b']
17
17
  ```
18
18
 
19
- ## Controls
20
-
21
- Comma-separated in `controls` attribute:
22
- - `colors` — color swatch grid
23
- - `size` — brush size slider
24
- - `eraser` — eraser toggle
25
- - `undo` — undo button
26
- - `redo` — redo button
27
- - `clear` — clear button
28
-
29
19
  ## Methods
30
20
 
31
- ```typescript
32
- undo(): void
33
- redo(): void
34
- clear(): void
35
- toDataURL(type?: 'image/png'|'image/jpeg'|'image/webp', quality?: number): string
36
- toBlob(type?: 'image/png'|'image/jpeg'|'image/webp', quality?: number): Promise<Blob>
37
- download(filename?: string): void
38
- getStrokes(): PaintStroke[]
39
- setStrokes(strokes: PaintStroke[]): void
40
- ```
41
-
42
- ## PaintStroke
43
-
44
- ```typescript
45
- interface PaintStroke {
46
- id: string;
47
- tool: 'pen' | 'eraser';
48
- color: string;
49
- width: number;
50
- points: Point[];
51
- timestamp: number;
52
- }
53
- ```
21
+ - `undo()` - Undo last stroke
22
+ - `redo()` - Redo last undone stroke
23
+ - `clear()` - Clear canvas
24
+ - `toDataURL(type?, quality?)` - Export as data URL
25
+ - `toBlob(type?, quality?)` - Export as Blob (async)
26
+ - `download(filename?)` - Download as image file
27
+ - `getStrokes()` - Get copy of all strokes
28
+ - `setStrokes(strokes)` - Replace all strokes
54
29
 
55
30
  ## Events
56
31
 
57
- - `paint-start` Drawing started (detail: { point })
58
- - `paint-end` Stroke completed (detail: { stroke })
59
- - `paint-clear` Canvas cleared
60
- - `paint-undo` Undo performed
61
- - `paint-redo` Redo performed
62
- - `color-select` Custom color picked (detail: { color, index })
32
+ - `paint-start` `{ point: Point }` - Drawing started
33
+ - `paint-end` `{ stroke: PaintStroke }` - Stroke completed
34
+ - `paint-clear` `{}` - Canvas cleared
35
+ - `paint-undo` `{}` - Undo performed
36
+ - `paint-redo` `{}` - Redo performed
37
+ - `color-select` `{ color: string, index: number }` - Custom color picked
63
38
 
64
39
  ## Slots
65
40
 
66
- | Slot | Behavior | Description |
67
- |------|----------|-------------|
68
- | `toolbar-start` | Additive | Content prepended above default controls |
69
- | `colors` | Replaces default | Replaces built-in color swatches |
70
- | `size` | Replaces default | Replaces built-in size slider |
71
- | `tools` | Additive | Custom tool buttons (between eraser and undo/redo) |
72
- | `toolbar-end` | Additive | Content appended below default controls |
41
+ - `toolbar-start` - Content prepended before default controls
42
+ - `colors` - Replaces built-in color swatches
43
+ - `size` - Replaces built-in size slider
44
+ - `tools` - Custom tool buttons (between eraser and undo/redo)
45
+ - `toolbar-end` - Content appended after default controls
73
46
 
74
- Toolbar auto-shows when any slot has content, even if `controls=""`.
47
+ ## CSS Parts
75
48
 
76
- **CSS Parts:**
77
- - `base` - The outer paint container
78
- - `toolbar` - The toolbar with controls
79
- - `canvas-wrap` - The canvas wrapper element
80
- - `canvas` - The drawing canvas element
49
+ - `base` - Outer paint container
50
+ - `toolbar` - Toolbar with controls
51
+ - `canvas-wrap` - Canvas wrapper element
52
+ - `canvas` - Drawing canvas element
81
53
 
82
- ## Usage
54
+ ## Basic Usage
83
55
 
84
56
  ```html
85
57
  <snice-paint></snice-paint>
86
-
87
- <!-- Custom colors -->
88
- <snice-paint colors='["#ff0000","#00ff00","#0000ff"]'></snice-paint>
89
-
90
- <!-- Minimal controls -->
91
- <snice-paint controls="colors,undo"></snice-paint>
92
-
93
- <!-- Custom size range -->
94
- <snice-paint min-stroke-width="2" max-stroke-width="50"></snice-paint>
95
58
  ```
96
59
 
97
60
  ```typescript
61
+ import 'snice/components/paint/snice-paint';
62
+
98
63
  // Export
99
64
  paint.download('artwork.png');
100
- const url = paint.toDataURL();
101
-
102
- // Save/load
103
65
  const strokes = paint.getStrokes();
104
66
  paint.setStrokes(strokes);
105
67
  ```
106
68
 
107
- ```html
108
- <!-- Custom color pickers in palette -->
109
- <snice-paint color-selects="2"></snice-paint>
110
-
111
- <!-- Custom tools -->
112
- <snice-paint>
113
- <button slot="tools" onclick="...">Rectangle</button>
114
- <button slot="tools" onclick="...">Circle</button>
115
- </snice-paint>
116
-
117
- <!-- Replace color picker -->
118
- <snice-paint>
119
- <input slot="colors" type="color" onchange="this.closest('snice-paint').color = this.value">
120
- </snice-paint>
121
-
122
- <!-- Add save button -->
123
- <snice-paint>
124
- <button slot="toolbar-end" onclick="this.closest('snice-paint').download()">Save</button>
125
- </snice-paint>
69
+ ## Accessibility
70
+
71
+ - Canvas supports pointer events for drawing
72
+ - Toolbar buttons have title attributes for tooltips
73
+ - Disabled state prevents all drawing interaction
74
+
75
+ ## Types
76
+
77
+ ```typescript
78
+ interface Point { x: number; y: number; }
79
+ interface PaintStroke {
80
+ id: string;
81
+ tool: 'pen' | 'eraser';
82
+ color: string;
83
+ width: number;
84
+ points: Point[];
85
+ timestamp: number;
86
+ }
87
+ type PaintControl = 'colors' | 'size' | 'eraser' | 'undo' | 'redo' | 'clear';
126
88
  ```
@@ -1,61 +1,60 @@
1
1
  # snice-pdf-viewer
2
2
 
3
- PDF document viewer with toolbar (page navigation, zoom, fit modes, download, print). Uses a vendored PDF.js bundle.
3
+ PDF document viewer with toolbar for page navigation, zoom, fit modes, download, and print. Uses vendored PDF.js.
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- src: string // PDF file URL
9
- page: number // Current page (default: 1)
10
- zoom: number // Zoom level (default: 1, range: 0.25-5)
11
- fit: 'width' | 'height' | 'page' // Fit mode (default: 'width')
12
- readonly totalPages: number // Total pages in document
7
+ ```typescript
8
+ src: string = ''; // PDF file URL
9
+ page: number = 1; // Current page number
10
+ zoom: number = 1; // Zoom level (0.25-5)
11
+ fit: 'width'|'height'|'page' = 'width'; // Fit mode
12
+ readonly totalPages: number = 0; // Total pages in document
13
13
  ```
14
14
 
15
15
  ## Methods
16
16
 
17
- - `goToPage(page: number)` -- Navigate to specific page
18
- - `nextPage()` -- Go to next page
19
- - `prevPage()` -- Go to previous page
20
- - `print()` -- Open PDF in new window for printing
21
- - `download()` -- Trigger PDF file download
17
+ - `goToPage(page: number)` - Navigate to specific page
18
+ - `nextPage()` - Go to next page
19
+ - `prevPage()` - Go to previous page
20
+ - `print()` - Open PDF in new window for printing
21
+ - `download()` - Trigger PDF file download
22
22
 
23
23
  ## Events
24
24
 
25
- - `page-change` -> `{ page: number; totalPages: number }` -- Page navigation
26
- - `pdf-loaded` -> `{ totalPages: number }` -- Document loaded successfully
27
- - `pdf-error` -> `{ error: string }` -- Loading or rendering error
28
-
29
- **CSS Parts:**
30
- - `base` - The outer viewer container
31
- - `toolbar` - The navigation and zoom toolbar
32
- - `viewport` - The PDF page display area
25
+ - `page-change` `{ page: number, totalPages: number }` - Page navigation
26
+ - `pdf-loaded` `{ totalPages: number }` - Document loaded
27
+ - `pdf-error` `{ error: string }` - Loading or rendering error
33
28
 
34
- ## Keyboard Shortcuts
29
+ ## CSS Parts
35
30
 
36
- - `ArrowRight` / `PageDown` -- Next page
37
- - `ArrowLeft` / `PageUp` -- Previous page
38
- - `Ctrl/Cmd +` -- Zoom in
39
- - `Ctrl/Cmd -` -- Zoom out
31
+ - `base` - Outer viewer container
32
+ - `toolbar` - Navigation and zoom toolbar
33
+ - `viewport` - PDF page display area
40
34
 
41
- ## Usage
35
+ ## Basic Usage
42
36
 
43
37
  ```html
44
- <snice-pdf-viewer
45
- src="/documents/report.pdf"
46
- fit="width"
47
- zoom="1"
48
- ></snice-pdf-viewer>
38
+ <snice-pdf-viewer src="/documents/report.pdf" fit="width"></snice-pdf-viewer>
49
39
  ```
50
40
 
51
41
  ```typescript
52
- viewer.src = '/documents/report.pdf';
42
+ import 'snice/components/pdf-viewer/snice-pdf-viewer';
53
43
 
54
44
  viewer.addEventListener('pdf-loaded', (e) => {
55
45
  console.log('Pages:', e.detail.totalPages);
56
46
  });
57
-
58
- viewer.addEventListener('page-change', (e) => {
59
- console.log(`Page ${e.detail.page} of ${e.detail.totalPages}`);
60
- });
61
47
  ```
48
+
49
+ ## Keyboard Navigation
50
+
51
+ - `ArrowRight` / `PageDown` - Next page
52
+ - `ArrowLeft` / `PageUp` - Previous page
53
+ - `Ctrl/Cmd +` - Zoom in
54
+ - `Ctrl/Cmd -` - Zoom out
55
+
56
+ ## Accessibility
57
+
58
+ - Container is keyboard-focusable with `tabindex="0"`
59
+ - Toolbar buttons have title attributes
60
+ - Page input allows direct page navigation
@@ -5,31 +5,36 @@ Role/permission grid with checkbox toggles for managing access control.
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- roles: PermissionRole[] = []; // { id, name, description? }
9
- permissions: Permission[] = []; // { id, name, group?, description? }
10
- matrix: PermissionMatrix = {}; // { [roleId]: string[] } (permission IDs)
8
+ roles: PermissionRole[] = []; // attr: none (JS only)
9
+ permissions: Permission[] = []; // attr: none (JS only)
10
+ matrix: PermissionMatrix = {}; // attr: none (JS only), { [roleId]: string[] }
11
11
  readonly: boolean = false;
12
12
  ```
13
13
 
14
+ ## Methods
15
+
16
+ - `getMatrix()` - Returns deep copy of current matrix
17
+ - `setMatrix(matrix: PermissionMatrix)` - Replace entire matrix
18
+ - `hasPermission(roleId: string, permId: string)` - Check if role has permission
19
+
14
20
  ## Events
15
21
 
16
- - `permission-toggle` -> `{ roleId: string, permissionId: string, granted: boolean }`
17
- - `matrix-change` -> `{ matrix: PermissionMatrix }`
22
+ - `permission-toggle` `{ roleId: string, permissionId: string, granted: boolean }` - Checkbox toggled
23
+ - `matrix-change` `{ matrix: PermissionMatrix }` - Matrix updated
18
24
 
19
- ## Methods
25
+ ## CSS Parts
20
26
 
21
- - `getMatrix()` - Returns deep copy of current matrix
22
- - `setMatrix(matrix)` - Replace entire matrix
23
- - `hasPermission(roleId, permId)` - Check if role has permission
27
+ - `base` - Outer container
24
28
 
25
- ## Usage
29
+ ## Basic Usage
26
30
 
27
31
  ```html
28
32
  <snice-permission-matrix id="pm"></snice-permission-matrix>
29
- <snice-permission-matrix id="pm-ro" readonly></snice-permission-matrix>
30
33
  ```
31
34
 
32
35
  ```typescript
36
+ import 'snice/components/permission-matrix/snice-permission-matrix';
37
+
33
38
  pm.roles = [
34
39
  { id: 'admin', name: 'Admin', description: 'Full access' },
35
40
  { id: 'editor', name: 'Editor' },
@@ -46,28 +51,18 @@ pm.matrix = {
46
51
  editor: ['create', 'read', 'update'],
47
52
  viewer: ['read']
48
53
  };
49
-
50
- // Listen for changes
51
- pm.addEventListener('permission-toggle', (e) => {
52
- console.log(e.detail.roleId, e.detail.permissionId, e.detail.granted);
53
- });
54
-
55
- // Query
56
- pm.hasPermission('admin', 'delete'); // true
57
- pm.getMatrix(); // returns deep copy
58
54
  ```
59
55
 
60
- ## CSS Parts
56
+ ## Accessibility
61
57
 
62
- - `base` - Outer container
58
+ - Table uses `role="grid"` with `aria-label`
59
+ - Checkboxes have accessible labels (e.g., "Grant Create for Admin")
60
+ - Readonly mode shows check/dash indicators instead of checkboxes
63
61
 
64
- ## Features
62
+ ## Types
65
63
 
66
- - Rows = roles, columns = permissions
67
- - Checkbox toggles for editable mode
68
- - Check/dash indicators for readonly mode
69
- - Role descriptions shown inline
70
- - Permission descriptions in headers
71
- - Sticky first column and header row
72
- - Accessible ARIA labels on checkboxes
73
- - Deep-copy getMatrix() for safe reads
64
+ ```typescript
65
+ interface PermissionRole { id: string; name: string; description?: string; }
66
+ interface Permission { id: string; name: string; group?: string; description?: string; }
67
+ type PermissionMatrix = { [roleId: string]: string[] };
68
+ ```
@@ -4,95 +4,89 @@ Full-featured podcast player with playback controls, episode list, chapters, RSS
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- src: string // Audio source URL
9
- fromRss: string // RSS feed URL (attr: from-rss)
10
- title: string // Episode title
11
- show: string // Show/podcast name
12
- artwork: string // Artwork image URL
13
- description: string // Episode description
14
- playbackRate: number // Speed 0.5-2 (default: 1, attr: playback-rate)
15
- skipForward: number // Skip forward seconds (default: 30, attr: skip-forward)
16
- skipBack: number // Skip back seconds (default: 15, attr: skip-back)
17
- currentTime: number // Current playback position (attr: current-time)
18
- duration: number // Episode duration in seconds
19
- volume: number // Volume 0-1 (default: 1)
20
- muted: boolean // Muted state
21
- state: PodcastPlayerState // 'playing'|'paused'|'stopped'|'loading'|'error'
22
- episodes: PodcastEpisode[] // Episode list
23
- currentEpisodeIndex: number // Active episode index (attr: current-episode-index)
24
- sleepTimer: number // Sleep timer minutes (attr: sleep-timer)
25
- ```
26
-
27
- ### Types
28
-
29
- ```ts
30
- interface PodcastEpisode {
31
- title: string;
32
- src: string;
33
- artwork?: string;
34
- description?: string;
35
- pubDate?: string;
36
- duration?: number;
37
- chapters?: PodcastChapter[];
38
- }
39
-
40
- interface PodcastChapter {
41
- title: string;
42
- startTime: number;
43
- endTime?: number;
44
- artwork?: string;
45
- }
7
+ ```typescript
8
+ src: string = ''; // Audio source URL
9
+ fromRss: string = ''; // RSS feed URL (attr: from-rss)
10
+ title: string = ''; // Episode title
11
+ show: string = ''; // Show/podcast name
12
+ artwork: string = ''; // Artwork image URL
13
+ description: string = ''; // Episode description
14
+ playbackRate: number = 1; // Speed 0.5-2 (attr: playback-rate)
15
+ skipForward: number = 30; // Skip forward seconds (attr: skip-forward)
16
+ skipBack: number = 15; // Skip back seconds (attr: skip-back)
17
+ currentTime: number = 0; // Current position (attr: current-time)
18
+ duration: number = 0; // Duration in seconds
19
+ volume: number = 1; // Volume 0-1
20
+ muted: boolean = false;
21
+ state: PodcastPlayerState; // 'playing'|'paused'|'stopped'|'loading'|'error' (not decorated)
22
+ episodes: PodcastEpisode[] = []; // attr: none (JS only)
23
+ currentEpisodeIndex: number = -1; // attr: current-episode-index
24
+ sleepTimer: number = 0; // Sleep timer minutes (attr: sleep-timer)
46
25
  ```
47
26
 
48
27
  ## Methods
49
28
 
50
- - `play()` -- Start playback (async)
51
- - `pause()` -- Pause playback
52
- - `toggle()` -- Toggle play/pause
53
- - `seekTo(time: number)` -- Seek to time in seconds
54
- - `setPlaybackRate(rate: number)` -- Set speed (0.5-2)
55
- - `loadEpisode(index: number)` -- Load and switch to episode by index
29
+ - `play()` - Start playback (async)
30
+ - `pause()` - Pause playback
31
+ - `toggle()` - Toggle play/pause
32
+ - `seekTo(time: number)` - Seek to time in seconds
33
+ - `setPlaybackRate(rate: number)` - Set speed (0.5-2)
34
+ - `loadEpisode(index: number)` - Load and switch to episode by index
56
35
 
57
36
  ## Events
58
37
 
59
- - `podcast-play` -> `{ player, episode }` -- Playback started
60
- - `podcast-pause` -> `{ player, episode }` -- Playback paused
61
- - `podcast-ended` -> `{ player, episode }` -- Episode ended
62
- - `podcast-time-update` -> `{ player, currentTime, duration }` -- Time update
63
- - `podcast-rate-change` -> `{ player, rate }` -- Playback rate changed
64
- - `podcast-episode-change` -> `{ player, episode, index }` -- Episode switched
65
- - `podcast-feed-loaded` -> `{ player, feed: RSSFeedData }` -- RSS feed parsed
38
+ - `podcast-play` `{ player, episode }` - Playback started
39
+ - `podcast-pause` `{ player, episode }` - Playback paused
40
+ - `podcast-ended` `{ player, episode }` - Episode ended
41
+ - `podcast-time-update` `{ player, currentTime, duration }` - Time update
42
+ - `podcast-rate-change` `{ player, rate }` - Playback rate changed
43
+ - `podcast-episode-change` `{ player, episode, index }` - Episode switched
44
+ - `podcast-feed-loaded` `{ player, feed: RSSFeedData }` - RSS feed parsed
66
45
 
67
- **CSS Parts:**
68
- - `base` - Outer player container div
46
+ ## CSS Parts
47
+
48
+ - `base` - Outer player container
69
49
  - `info` - Artwork and metadata section
70
- - `controls` - Playback controls and progress bar section
50
+ - `controls` - Playback controls and progress bar
71
51
 
72
- ## Usage
52
+ ## Basic Usage
73
53
 
74
54
  ```html
75
- <!-- Direct source -->
76
- <snice-podcast-player
77
- src="/audio/episode.mp3"
78
- title="Episode 1"
79
- show="My Podcast"
80
- artwork="/images/cover.jpg"
81
- ></snice-podcast-player>
82
-
83
- <!-- From RSS feed -->
84
- <snice-podcast-player from-rss="https://example.com/feed.xml"></snice-podcast-player>
55
+ <snice-podcast-player src="/audio/episode.mp3" title="Episode 1" show="My Podcast"></snice-podcast-player>
85
56
  ```
86
57
 
87
58
  ```typescript
59
+ import 'snice/components/podcast-player/snice-podcast-player';
60
+
61
+ // From RSS feed
62
+ // <snice-podcast-player from-rss="https://example.com/feed.xml"></snice-podcast-player>
63
+
64
+ // Programmatic episodes
88
65
  player.episodes = [
89
66
  { title: 'Ep 1', src: '/audio/ep1.mp3', duration: 1800 },
90
67
  { title: 'Ep 2', src: '/audio/ep2.mp3', duration: 2400,
91
- chapters: [
92
- { title: 'Intro', startTime: 0 },
93
- { title: 'Main Topic', startTime: 120 }
94
- ]
68
+ chapters: [{ title: 'Intro', startTime: 0 }, { title: 'Main', startTime: 120 }]
95
69
  }
96
70
  ];
97
71
  player.loadEpisode(0);
98
72
  ```
73
+
74
+ ## Accessibility
75
+
76
+ - Play/pause, skip, and speed controls are keyboard accessible
77
+ - Progress bar supports click seeking
78
+ - Volume control with mute toggle
79
+ - Episode list items indicate currently playing episode
80
+ - Position memory via localStorage
81
+
82
+ ## Types
83
+
84
+ ```typescript
85
+ interface PodcastEpisode {
86
+ title: string; src: string; artwork?: string; description?: string;
87
+ pubDate?: string; duration?: number; chapters?: PodcastChapter[];
88
+ }
89
+ interface PodcastChapter { title: string; startTime: number; endTime?: number; artwork?: string; }
90
+ interface RSSFeedData { title: string; artwork?: string; description?: string; episodes: PodcastEpisode[]; }
91
+ type PodcastPlayerState = 'playing' | 'paused' | 'stopped' | 'loading' | 'error';
92
+ ```
@@ -4,82 +4,71 @@ Pricing comparison with cards or table layout, monthly/annual toggle, and declar
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- plans: PricingPlan[] // Plan data array
9
- variant: 'cards' | 'table' // Layout variant (default: 'cards')
10
- annual: boolean // Show annual pricing (default: false)
11
- ```
12
-
13
- ### Types
14
-
15
- ```ts
16
- interface PricingPlan {
17
- name: string;
18
- price: number;
19
- annualPrice?: number; // Annual price (enables billing toggle)
20
- period?: string; // e.g. '/mo' (default: '/mo')
21
- currency?: string; // e.g. '$' (default: '$')
22
- description?: string;
23
- features: PricingFeature[];
24
- cta: string; // Button text
25
- ctaVariant?: 'primary' | 'secondary' | 'outline';
26
- highlighted?: boolean; // Emphasize this plan
27
- badge?: string; // e.g. 'Popular'
28
- }
29
-
30
- interface PricingFeature {
31
- name: string;
32
- included: boolean | string; // true/false for check/x, string for custom value
33
- }
7
+ ```typescript
8
+ plans: PricingPlan[] = []; // attr: none (JS only)
9
+ variant: 'cards'|'table' = 'cards';
10
+ annual: boolean = false; // Show annual pricing
34
11
  ```
35
12
 
36
- ## Child Elements
37
-
38
- Supports declarative usage via `<snice-plan>` and `<snice-feature>`:
13
+ ## Components
39
14
 
40
- **`<snice-plan>`** attributes: `name`, `price`, `annual-price`, `period`, `currency`, `description`, `cta`, `cta-variant`, `highlighted` (boolean), `badge`
15
+ **`<snice-plan>`** - Declarative plan child element.
16
+ Attributes: `name`, `price`, `annual-price`, `period`, `currency`, `description`, `cta`, `cta-variant`, `highlighted` (boolean), `badge`
41
17
 
42
- **`<snice-feature>`** attributes: `excluded` (boolean), `value` (string for custom display)
18
+ **`<snice-feature>`** - Declarative feature child element.
19
+ Attributes: `excluded` (boolean), `value` (string for custom display)
43
20
 
44
21
  ## Events
45
22
 
46
- - `plan-select` -> `{ plan: PricingPlan; index: number; billing: 'monthly' | 'annual' }` -- CTA button clicked
23
+ - `plan-select` `{ plan: PricingPlan, index: number, billing: 'monthly'|'annual' }` - CTA clicked
47
24
 
48
25
  ## CSS Parts
49
26
 
50
- `base`, `cards`, `card`, `cta`, `toggle`, `table-wrapper`, `table`
27
+ - `base` - Outer container
28
+ - `cards` - Cards layout container
29
+ - `card` - Individual plan card
30
+ - `cta` - Call-to-action button
31
+ - `toggle` - Billing toggle switch area
32
+ - `table-wrapper` - Table layout wrapper
33
+ - `table` - Comparison table element
51
34
 
52
- ## Usage
35
+ ## Basic Usage
53
36
 
54
37
  ```html
55
- <!-- Declarative -->
56
38
  <snice-pricing-table>
57
39
  <snice-plan name="Free" price="0" cta="Get Started">
58
40
  <snice-feature>5 projects</snice-feature>
59
41
  <snice-feature excluded>API access</snice-feature>
60
- <snice-feature value="1GB">Storage</snice-feature>
61
42
  </snice-plan>
62
43
  <snice-plan name="Pro" price="29" annual-price="24" highlighted badge="Popular" cta="Start Trial">
63
44
  <snice-feature>Unlimited projects</snice-feature>
64
45
  <snice-feature>API access</snice-feature>
65
- <snice-feature value="100GB">Storage</snice-feature>
66
46
  </snice-plan>
67
47
  </snice-pricing-table>
68
48
  ```
69
49
 
70
50
  ```typescript
71
- table.plans = [
72
- { name: 'Free', price: 0, cta: 'Get Started', features: [
73
- { name: '5 projects', included: true },
74
- { name: 'API access', included: false }
75
- ]},
76
- { name: 'Pro', price: 29, annualPrice: 24, cta: 'Start Trial', highlighted: true, badge: 'Popular', features: [
77
- { name: 'Unlimited projects', included: true },
78
- { name: 'API access', included: true }
79
- ]}
80
- ];
51
+ import 'snice/components/pricing-table/snice-pricing-table';
81
52
 
82
53
  table.addEventListener('plan-select', (e) => {
83
54
  console.log(`Selected ${e.detail.plan.name} (${e.detail.billing})`);
84
55
  });
85
56
  ```
57
+
58
+ ## Accessibility
59
+
60
+ - Tab through plans and activate CTA buttons with Enter/Space
61
+ - Billing toggle is keyboard accessible with `role="radiogroup"`
62
+ - Highlighted plans are visually distinguished
63
+
64
+ ## Types
65
+
66
+ ```typescript
67
+ interface PricingPlan {
68
+ name: string; price: number; annualPrice?: number; period?: string;
69
+ currency?: string; description?: string; features: PricingFeature[];
70
+ cta: string; ctaVariant?: 'primary'|'secondary'|'outline';
71
+ highlighted?: boolean; badge?: string;
72
+ }
73
+ interface PricingFeature { name: string; included: boolean | string; }
74
+ ```