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,22 +1,18 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/qr-code.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/qr-code.md -->
2
2
 
3
3
  # QR Code
4
- `<snice-qr-code>`
5
4
 
6
- A QR code generator with customizable styling, dot patterns, and image export.
5
+ A QR code generator with customizable styling, dot patterns, center overlays, and image export.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
9
8
 
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/qr-code/snice-qr-code';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-qr-code.min.js"></script>
19
- ```
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [CSS Custom Properties](#css-custom-properties)
12
+ - [CSS Parts](#css-parts)
13
+ - [Basic Usage](#basic-usage)
14
+ - [Examples](#examples)
15
+ - [Accessibility](#accessibility)
20
16
 
21
17
  ## Properties
22
18
 
@@ -27,14 +23,14 @@ import 'snice/components/qr-code/snice-qr-code';
27
23
  | `errorCorrectionLevel` (attr: `error-correction-level`) | `'L' \| 'M' \| 'Q' \| 'H'` | `'M'` | Error correction level |
28
24
  | `renderMode` (attr: `render-mode`) | `'canvas' \| 'svg'` | `'canvas'` | Rendering mode |
29
25
  | `dotStyle` (attr: `dot-style`) | `'square' \| 'rounded' \| 'dots'` | `'square'` | Module shape style |
30
- | `margin` | `number` | `4` | Quiet zone size |
26
+ | `margin` | `number` | `4` | Quiet zone size in modules |
31
27
  | `fgColor` (attr: `fg-color`) | `string` | `'#000000'` | Foreground color |
32
28
  | `bgColor` (attr: `bg-color`) | `string` | `'#ffffff'` | Background color |
33
- | `includeImage` (attr: `include-image`) | `boolean` | `false` | Show center image |
29
+ | `includeImage` (attr: `include-image`) | `boolean` | `false` | Show center image overlay |
34
30
  | `imageUrl` (attr: `image-url`) | `string` | `''` | Center image URL |
35
- | `imageSize` (attr: `image-size`) | `number` | `40` | Center image size |
31
+ | `imageSize` (attr: `image-size`) | `number` | `40` | Center image size in pixels |
36
32
  | `centerText` (attr: `center-text`) | `string` | `''` | Center overlay text |
37
- | `centerTextSize` (attr: `center-text-size`) | `number` | `16` | Center text font size |
33
+ | `centerTextSize` (attr: `center-text-size`) | `number` | `16` | Center text font size in pixels |
38
34
  | `textFillColor` (attr: `text-fill-color`) | `string` | `'#000000'` | Center text fill color |
39
35
  | `textOutlineColor` (attr: `text-outline-color`) | `string` | `'#ffffff'` | Center text outline color |
40
36
 
@@ -42,26 +38,24 @@ import 'snice/components/qr-code/snice-qr-code';
42
38
 
43
39
  | Method | Arguments | Description |
44
40
  |--------|-----------|-------------|
45
- | `toSVGString()` | -- | Export as SVG markup string (sync, only when renderMode is `'svg'`) |
46
- | `toDataURL()` | `type?: string, quality?: number` | Export as data URL (async) |
47
- | `toBlob()` | `type?: string, quality?: number` | Export as Blob (async) |
48
- | `download()` | `filename?: string` | Download as image file |
41
+ | `toSVGString()` | | Returns SVG markup string (sync, only works when `renderMode` is `'svg'`) |
42
+ | `toDataURL()` | `type?: 'image/png' \| 'image/jpeg' \| 'image/webp' \| 'image/svg+xml', quality?: number` | Export as data URL (async) |
43
+ | `toBlob()` | `type?: 'image/png' \| 'image/jpeg' \| 'image/webp' \| 'image/svg+xml', quality?: number` | Export as Blob (async) |
44
+ | `download()` | `filename?: string` | Download as image file (defaults to `'qr-code.png'`) |
49
45
 
50
46
  ## CSS Custom Properties
51
47
 
52
48
  | Property | Description | Default |
53
49
  |----------|-------------|---------|
54
- | `--qr-bg` | Container background color | _(theme default)_ |
55
- | `--qr-border-radius` | Container border radius | _(theme default)_ |
56
- | `--qr-padding` | Container padding | _(theme default)_ |
50
+ | `--qr-bg` | Container background color | `hsl(0 0% 100%)` |
51
+ | `--qr-border-radius` | Container border radius | `0` |
52
+ | `--qr-padding` | Container padding | `0` |
57
53
 
58
54
  ## CSS Parts
59
55
 
60
- Style internal elements from outside the shadow DOM using `::part()`.
61
-
62
- | Part | Element | Description |
63
- |------|---------|-------------|
64
- | `base` | `<div>` | QR code container holding the generated canvas or SVG |
56
+ | Part | Description |
57
+ |------|-------------|
58
+ | `base` | The container div holding the generated canvas or SVG |
65
59
 
66
60
  ```css
67
61
  snice-qr-code::part(base) {
@@ -112,7 +106,7 @@ Use the `dot-style` attribute to change the module shape.
112
106
 
113
107
  ### Error Correction
114
108
 
115
- Use `error-correction-level` for higher resilience to damage.
109
+ Use `error-correction-level` for higher resilience to damage. Use `'H'` when adding center overlays.
116
110
 
117
111
  ```html
118
112
  <snice-qr-code value="Important Data" error-correction-level="H"></snice-qr-code>
@@ -120,16 +114,15 @@ Use `error-correction-level` for higher resilience to damage.
120
114
 
121
115
  ### Render Mode
122
116
 
123
- Use `render-mode` to switch between SVG and canvas rendering.
117
+ Use `render-mode` to switch between canvas and SVG rendering.
124
118
 
125
119
  ```html
126
- <snice-qr-code value="https://example.com" render-mode="canvas"></snice-qr-code>
127
120
  <snice-qr-code value="https://example.com" render-mode="svg"></snice-qr-code>
128
121
  ```
129
122
 
130
123
  ### Center Image
131
124
 
132
- Use `include-image` with `image-url` to overlay a logo in the center.
125
+ Use `include-image` with `image-url` to overlay a logo in the center. Pair with high error correction.
133
126
 
134
127
  ```html
135
128
  <snice-qr-code
@@ -154,8 +147,30 @@ Use `center-text` to overlay text in the center of the QR code.
154
147
  </snice-qr-code>
155
148
  ```
156
149
 
150
+ ### Export
151
+
152
+ Use the export methods to save or share the QR code programmatically.
153
+
154
+ ```typescript
155
+ const qr = document.querySelector('snice-qr-code');
156
+
157
+ // Data URL
158
+ const dataURL = await qr.toDataURL('image/png');
159
+
160
+ // Blob
161
+ const blob = await qr.toBlob('image/png');
162
+
163
+ // Download
164
+ qr.download('my-qr-code.png');
165
+
166
+ // SVG string (only when render-mode="svg")
167
+ const svgMarkup = qr.toSVGString();
168
+ ```
169
+
157
170
  ### Common Data Formats
158
171
 
172
+ Set `value` to standard URI schemes for common QR code use cases.
173
+
159
174
  ```html
160
175
  <!-- URL -->
161
176
  <snice-qr-code value="https://example.com"></snice-qr-code>
@@ -166,9 +181,6 @@ Use `center-text` to overlay text in the center of the QR code.
166
181
  <!-- Phone -->
167
182
  <snice-qr-code value="tel:+1234567890"></snice-qr-code>
168
183
 
169
- <!-- SMS -->
170
- <snice-qr-code value="sms:+1234567890?body=Hello"></snice-qr-code>
171
-
172
184
  <!-- WiFi -->
173
185
  <snice-qr-code value="WIFI:T:WPA;S:MyNetwork;P:password123;;"></snice-qr-code>
174
186
 
@@ -176,28 +188,8 @@ Use `center-text` to overlay text in the center of the QR code.
176
188
  <snice-qr-code value="geo:37.7749,-122.4194"></snice-qr-code>
177
189
  ```
178
190
 
179
- ### Export
180
-
181
- ```typescript
182
- // Data URL
183
- const dataURL = await qr.toDataURL('image/png');
184
-
185
- // Blob
186
- const blob = await qr.toBlob('image/png');
191
+ ## Accessibility
187
192
 
188
- // Download
189
- qr.download('my-qr-code.png');
190
- ```
191
-
192
- ### Dynamic Updates
193
-
194
- ```html
195
- <input type="text" id="qrInput" placeholder="Enter text">
196
- <snice-qr-code></snice-qr-code>
197
- ```
198
-
199
- ```typescript
200
- qrInput.addEventListener('input', (e) => {
201
- qr.value = e.target.value;
202
- });
203
- ```
193
+ - The QR code renders as a `<canvas>` or `<svg>` element inside a container div
194
+ - No interactive elements; the component is purely visual output
195
+ - Provide adjacent text or an `aria-label` on a wrapper for screen reader users to understand the encoded content
@@ -1,22 +1,18 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/qr-reader.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/qr-reader.md -->
2
2
 
3
3
  # QR Reader
4
- `<snice-qr-reader>`
5
4
 
6
- A QR code scanner using device cameras with WebAssembly-based detection.
5
+ A QR code scanner using device cameras with real-time detection.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
9
8
 
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/qr-reader/snice-qr-reader';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-qr-reader.min.js"></script>
19
- ```
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [CSS Custom Properties](#css-custom-properties)
13
+ - [Basic Usage](#basic-usage)
14
+ - [Examples](#examples)
15
+ - [Accessibility](#accessibility)
20
16
 
21
17
  ## Properties
22
18
 
@@ -24,28 +20,28 @@ import 'snice/components/qr-reader/snice-qr-reader';
24
20
  |----------|------|---------|-------------|
25
21
  | `autoStart` (attr: `auto-start`) | `boolean` | `false` | Auto-start scanning on mount |
26
22
  | `camera` | `'front' \| 'back'` | `'back'` | Which camera to use |
27
- | `pickFirst` (attr: `pick-first`) | `boolean` | `false` | Scan until first hit, then stop |
28
- | `manualSnap` (attr: `manual-snap`) | `boolean` | `false` | Photo snapshot mode |
29
- | `scanSpeed` (attr: `scan-speed`) | `number` | `3` | Scan speed 1-10 (ignored with pick-first) |
30
- | `tapStart` (attr: `tap-start`) | `boolean` | `false` | Tap viewport to toggle scanning |
23
+ | `pickFirst` (attr: `pick-first`) | `boolean` | `false` | Scan at max speed until first hit, then auto-stop |
24
+ | `manualSnap` (attr: `manual-snap`) | `boolean` | `false` | Photo snapshot mode instead of continuous scanning |
25
+ | `scanSpeed` (attr: `scan-speed`) | `number` | `3` | Scan speed 1-10 (higher = more CPU, ignored with `pick-first`) |
26
+ | `tapStart` (attr: `tap-start`) | `boolean` | `false` | Tap viewport to toggle scanning on/off |
31
27
 
32
28
  ## Methods
33
29
 
34
30
  | Method | Arguments | Description |
35
31
  |--------|-----------|-------------|
36
- | `start()` | -- | Start camera and scanning |
37
- | `stop()` | -- | Stop scanning and release camera |
38
- | `snap()` | -- | Take snapshot (manual-snap mode), returns data or null |
39
- | `scanImage()` | `file: File` | Scan QR code from an image file |
40
- | `switchCamera()` | -- | Toggle between front and back camera |
32
+ | `start()` | | Start camera and begin scanning (async) |
33
+ | `stop()` | | Stop scanning and release camera |
34
+ | `snap()` | | Take snapshot and scan for QR code (async, returns data string or `null`) |
35
+ | `scanImage()` | `file: File` | Scan a QR code from an image file (async, returns data string) |
36
+ | `switchCamera()` | | Toggle between front and back camera |
41
37
 
42
38
  ## Events
43
39
 
44
40
  | Event | Detail | Description |
45
41
  |-------|--------|-------------|
46
- | `qr-scan` | `{ data: string, timestamp: number, reader }` | QR code detected |
42
+ | `qr-scan` | `{ data: string, timestamp: number, reader }` | QR code successfully detected |
47
43
  | `qr-error` | `{ error: any, reader }` | Scan error occurred |
48
- | `camera-ready` | `{ reader }` | Camera initialized |
44
+ | `camera-ready` | `{ reader }` | Camera initialized and ready |
49
45
  | `camera-error` | `{ error: any, reader }` | Camera initialization failed |
50
46
 
51
47
  ## CSS Custom Properties
@@ -86,12 +82,14 @@ Set `auto-start` to begin scanning when the component mounts.
86
82
 
87
83
  ### Manual Control
88
84
 
85
+ Start and stop scanning programmatically.
86
+
89
87
  ```html
90
88
  <snice-qr-reader></snice-qr-reader>
91
89
  ```
92
90
 
93
91
  ```typescript
94
- reader.start();
92
+ await reader.start();
95
93
  reader.stop();
96
94
  ```
97
95
 
@@ -104,29 +102,25 @@ Set `pick-first` to scan at maximum speed until the first QR code is found, then
104
102
  ```
105
103
 
106
104
  ```typescript
107
- scanner.addEventListener('qr-scan', (e) => {
105
+ reader.addEventListener('qr-scan', (e) => {
108
106
  console.log('Found:', e.detail.data);
109
107
  // Scanner stops and releases camera automatically
110
108
  });
111
- scanner.start();
109
+ await reader.start();
112
110
  ```
113
111
 
114
112
  ### Manual Snapshot
115
113
 
116
- Set `manual-snap` for a photo-based scanning mode with manual trigger.
114
+ Set `manual-snap` for a photo-based scanning mode with a manual trigger button.
117
115
 
118
116
  ```html
119
117
  <snice-qr-reader manual-snap></snice-qr-reader>
120
- <button>Take Photo</button>
121
118
  ```
122
119
 
123
120
  ```typescript
124
- reader.start(); // Opens camera viewfinder
125
-
126
- snapBtn.addEventListener('click', async () => {
127
- const result = await reader.snap();
128
- console.log(result ? `Found: ${result}` : 'No QR code found');
129
- });
121
+ await reader.start(); // Opens camera viewfinder
122
+ const result = await reader.snap();
123
+ console.log(result ? `Found: ${result}` : 'No QR code found');
130
124
  ```
131
125
 
132
126
  ### Front Camera
@@ -148,24 +142,41 @@ Use `scan-speed` (1-10) to balance detection speed vs CPU usage.
148
142
 
149
143
  ### Tap to Start
150
144
 
151
- Set `tap-start` to let users click the viewport to toggle scanning.
145
+ Set `tap-start` to let users tap the viewport to toggle scanning.
152
146
 
153
147
  ```html
154
148
  <snice-qr-reader tap-start></snice-qr-reader>
155
149
  ```
156
150
 
157
- ### Error Handling
151
+ ### Scan from Image File
152
+
153
+ Use `scanImage()` to detect a QR code from an uploaded image.
158
154
 
159
155
  ```typescript
160
- reader.addEventListener('qr-error', (e) => {
161
- console.error('Scan error:', e.detail.error);
156
+ const fileInput = document.querySelector('input[type="file"]');
157
+ fileInput.addEventListener('change', async (e) => {
158
+ const result = await reader.scanImage(e.target.files[0]);
159
+ console.log('Found:', result);
162
160
  });
161
+ ```
162
+
163
+ ### Error Handling
164
+
165
+ Listen for error events to handle camera and scan failures.
163
166
 
167
+ ```typescript
164
168
  reader.addEventListener('camera-error', (e) => {
165
169
  console.error('Camera error:', e.detail.error);
166
170
  });
167
171
 
168
- reader.addEventListener('camera-ready', () => {
169
- console.log('Camera initialized');
172
+ reader.addEventListener('qr-error', (e) => {
173
+ console.error('Scan error:', e.detail.error);
170
174
  });
171
175
  ```
176
+
177
+ ## Accessibility
178
+
179
+ - Requires HTTPS for camera access on mobile devices
180
+ - Built-in start/stop/snap buttons with icon labels
181
+ - Camera is released when the component is disconnected or scanning is stopped
182
+ - Visual feedback shown for scan results and errors
@@ -1,22 +1,20 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/radio.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/radio.md -->
2
2
 
3
3
  # Radio
4
- `<snice-radio>`
5
4
 
6
5
  A form radio button input with automatic group management by name.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
9
8
 
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/radio/snice-radio';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-radio.min.js"></script>
19
- ```
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [Slots](#slots)
13
+ - [CSS Parts](#css-parts)
14
+ - [Basic Usage](#basic-usage)
15
+ - [Examples](#examples)
16
+ - [Keyboard Navigation](#keyboard-navigation)
17
+ - [Accessibility](#accessibility)
20
18
 
21
19
  ## Properties
22
20
 
@@ -32,16 +30,16 @@ import 'snice/components/radio/snice-radio';
32
30
  | `name` | `string` | `''` | Group name for mutual exclusion |
33
31
  | `value` | `string` | `''` | Form value when selected |
34
32
  | `label` | `string` | `''` | Label text |
35
- | `description` | `string` | `''` | Description text below the label (block variant) |
33
+ | `description` | `string` | `''` | Description text below the label (block variant only) |
36
34
 
37
35
  ## Methods
38
36
 
39
37
  | Method | Arguments | Description |
40
38
  |--------|-----------|-------------|
41
- | `focus()` | -- | Focuses the radio input |
42
- | `blur()` | -- | Removes focus |
43
- | `click()` | -- | Programmatic click |
44
- | `select()` | -- | Selects the radio and fires change event |
39
+ | `focus()` | | Focuses the radio input |
40
+ | `blur()` | | Removes focus |
41
+ | `click()` | | Programmatic click |
42
+ | `select()` | | Selects the radio and fires change event |
45
43
 
46
44
  ## Events
47
45
 
@@ -59,12 +57,12 @@ import 'snice/components/radio/snice-radio';
59
57
 
60
58
  | Part | Description |
61
59
  |------|-------------|
62
- | `input` | The hidden radio input |
60
+ | `input` | The hidden native radio input |
63
61
  | `radio` | The radio circle container |
64
62
  | `dot` | The inner dot indicator |
65
63
  | `spinner` | The loading spinner |
66
- | `label` | The label text |
67
64
  | `content` | The content wrapper (block variant) |
65
+ | `label` | The label text |
68
66
  | `description` | The description text (block variant) |
69
67
 
70
68
  ## Basic Usage
@@ -134,21 +132,9 @@ Set the `loading` attribute to show a spinner instead of the radio dot.
134
132
  <snice-radio label="Processing..." loading></snice-radio>
135
133
  ```
136
134
 
137
- ### Form Integration
138
-
139
- Radio buttons with the same `name` automatically form a group where only one can be selected.
140
-
141
- ```html
142
- <form>
143
- <snice-radio name="plan" value="free" label="Free"></snice-radio>
144
- <snice-radio name="plan" value="pro" label="Pro"></snice-radio>
145
- <snice-radio name="plan" value="enterprise" label="Enterprise"></snice-radio>
146
- </form>
147
- ```
148
-
149
135
  ### Block Variant
150
136
 
151
- Use `variant="block"` to render card-style radio buttons, ideal for plan pickers or option selectors. Add a `description` for subtitle text and use the `suffix` slot for end content like badges or prices.
137
+ Use `variant="block"` to render card-style radio buttons. Add a `description` for subtitle text and use the `suffix` slot for end content.
152
138
 
153
139
  ```html
154
140
  <snice-radio
@@ -185,14 +171,30 @@ Use `variant="block"` to render card-style radio buttons, ideal for plan pickers
185
171
 
186
172
  ### Event Handling
187
173
 
188
- ```html
189
- <snice-radio id="option" name="choice" value="a" label="Option A"></snice-radio>
174
+ Listen for `radio-change` to respond to selection changes.
190
175
 
191
- <script type="module">
192
- import 'snice/components/radio/snice-radio';
193
-
194
- document.getElementById('option').addEventListener('radio-change', (e) => {
176
+ ```typescript
177
+ document.querySelectorAll('snice-radio[name="plan"]').forEach(radio => {
178
+ radio.addEventListener('radio-change', (e) => {
195
179
  console.log('Selected:', e.detail.value);
196
180
  });
197
- </script>
181
+ });
198
182
  ```
183
+
184
+ ## Keyboard Navigation
185
+
186
+ | Key | Action |
187
+ |-----|--------|
188
+ | `ArrowDown` / `ArrowRight` | Move to next radio in group |
189
+ | `ArrowUp` / `ArrowLeft` | Move to previous radio in group |
190
+
191
+ Arrow keys wrap around the group and automatically select the focused radio.
192
+
193
+ ## Accessibility
194
+
195
+ - Contains a native `<input type="radio">` for form participation
196
+ - Radios with the same `name` form a group with mutual exclusion
197
+ - Focus ring shown on keyboard navigation
198
+ - `aria-invalid` set when `invalid` is true
199
+ - Required indicator (`*`) shown on label when `required` is true
200
+ - Disabled state reduces opacity and prevents interaction
@@ -1,22 +1,18 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/range-slider.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/range-slider.md -->
2
2
 
3
3
  # Range Slider
4
- `<snice-range-slider>`
5
4
 
6
5
  A two-handle slider for selecting a numeric range, with a highlighted track between the two thumbs.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
9
8
 
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/range-slider/snice-range-slider';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-range-slider.min.js"></script>
19
- ```
9
+ - [Properties](#properties)
10
+ - [Events](#events)
11
+ - [CSS Parts](#css-parts)
12
+ - [Basic Usage](#basic-usage)
13
+ - [Examples](#examples)
14
+ - [Keyboard Navigation](#keyboard-navigation)
15
+ - [Accessibility](#accessibility)
20
16
 
21
17
  ## Properties
22
18
 
@@ -25,11 +21,11 @@ import 'snice/components/range-slider/snice-range-slider';
25
21
  | `min` | `number` | `0` | Minimum value |
26
22
  | `max` | `number` | `100` | Maximum value |
27
23
  | `step` | `number` | `1` | Step increment |
28
- | `valueLow` (attr: `value-low`) | `number` | `0` | Low handle position |
29
- | `valueHigh` (attr: `value-high`) | `number` | `100` | High handle position |
24
+ | `valueLow` (attr: `value-low`) | `number` | `0` | Low handle value |
25
+ | `valueHigh` (attr: `value-high`) | `number` | `100` | High handle value |
30
26
  | `disabled` | `boolean` | `false` | Disables the slider |
31
27
  | `showTooltip` (attr: `show-tooltip`) | `boolean` | `false` | Show value tooltip on hover/drag |
32
- | `showLabels` (attr: `show-labels`) | `boolean` | `false` | Show min/max labels |
28
+ | `showLabels` (attr: `show-labels`) | `boolean` | `false` | Show min/max labels below the track |
33
29
  | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Slider orientation |
34
30
 
35
31
  ## Events
@@ -63,7 +59,7 @@ import 'snice/components/range-slider/snice-range-slider';
63
59
 
64
60
  ### Custom Range and Step
65
61
 
66
- Use the `min`, `max`, and `step` attributes to define the slider range.
62
+ Use `min`, `max`, and `step` to define the slider range and increment.
67
63
 
68
64
  ```html
69
65
  <snice-range-slider min="0" max="1000" step="50" value-low="200" value-high="800"></snice-range-slider>
@@ -71,7 +67,7 @@ Use the `min`, `max`, and `step` attributes to define the slider range.
71
67
 
72
68
  ### Tooltips
73
69
 
74
- Set the `show-tooltip` attribute to display the current value on hover and drag.
70
+ Set `show-tooltip` to display the current value on hover and drag.
75
71
 
76
72
  ```html
77
73
  <snice-range-slider show-tooltip value-low="25" value-high="75"></snice-range-slider>
@@ -79,7 +75,7 @@ Set the `show-tooltip` attribute to display the current value on hover and drag.
79
75
 
80
76
  ### Min/Max Labels
81
77
 
82
- Set the `show-labels` attribute to display the range boundaries below the track.
78
+ Set `show-labels` to display the range boundaries below the track.
83
79
 
84
80
  ```html
85
81
  <snice-range-slider show-labels min="0" max="500" value-low="100" value-high="400"></snice-range-slider>
@@ -87,7 +83,7 @@ Set the `show-labels` attribute to display the range boundaries below the track.
87
83
 
88
84
  ### Vertical Orientation
89
85
 
90
- Set the `orientation` attribute to `"vertical"` for a vertical slider.
86
+ Set `orientation="vertical"` for a vertical slider.
91
87
 
92
88
  ```html
93
89
  <snice-range-slider orientation="vertical" value-low="30" value-high="70"></snice-range-slider>
@@ -95,7 +91,7 @@ Set the `orientation` attribute to `"vertical"` for a vertical slider.
95
91
 
96
92
  ### Disabled
97
93
 
98
- Set the `disabled` attribute to prevent user interaction.
94
+ Set `disabled` to prevent user interaction.
99
95
 
100
96
  ```html
101
97
  <snice-range-slider disabled value-low="20" value-high="60"></snice-range-slider>
@@ -103,14 +99,29 @@ Set the `disabled` attribute to prevent user interaction.
103
99
 
104
100
  ### Event Handling
105
101
 
106
- Listen to the `range-change` event to react to value changes.
107
-
108
- ```html
109
- <snice-range-slider id="price-range" min="0" max="500" value-low="50" value-high="300"></snice-range-slider>
102
+ Listen to `range-change` to react to value changes.
110
103
 
111
- <script>
112
- document.getElementById('price-range').addEventListener('range-change', (e) => {
113
- console.log(`Price range: $${e.detail.valueLow} - $${e.detail.valueHigh}`);
114
- });
115
- </script>
104
+ ```typescript
105
+ slider.addEventListener('range-change', (e) => {
106
+ console.log(`Range: ${e.detail.valueLow} - ${e.detail.valueHigh}`);
107
+ });
116
108
  ```
109
+
110
+ ## Keyboard Navigation
111
+
112
+ | Key | Action |
113
+ |-----|--------|
114
+ | `ArrowLeft` / `ArrowDown` | Decrease focused thumb by one step |
115
+ | `ArrowRight` / `ArrowUp` | Increase focused thumb by one step |
116
+ | `Home` | Move focused thumb to minimum (low thumb) or to low value (high thumb) |
117
+ | `End` | Move focused thumb to high value (low thumb) or to maximum (high thumb) |
118
+
119
+ Each thumb is independently focusable and constrained so low cannot exceed high.
120
+
121
+ ## Accessibility
122
+
123
+ - Each thumb has `role="slider"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
124
+ - Low thumb labeled "Range minimum", high thumb labeled "Range maximum"
125
+ - Focus ring shown on keyboard navigation
126
+ - Supports both mouse and touch interaction
127
+ - Track click moves the nearest thumb