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,152 +1,90 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/product-card.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/product-card.md -->
2
2
 
3
- # Product Card Component
3
+ # Product Card
4
+ `<snice-product-card>`
4
5
 
5
- The product card component displays a product with image gallery, pricing, star ratings, variant selectors, and an add-to-cart button. Supports vertical, horizontal, and compact layouts.
6
+ A product display card with image gallery, pricing, star ratings, variant selectors, and an add-to-cart button. Supports multiple layout variants.
6
7
 
7
8
  ## Table of Contents
8
- - [Importing](#importing)
9
9
  - [Properties](#properties)
10
10
  - [Events](#events)
11
11
  - [CSS Parts](#css-parts)
12
12
  - [Basic Usage](#basic-usage)
13
13
  - [Examples](#examples)
14
14
  - [Accessibility](#accessibility)
15
-
16
- ## Importing
17
-
18
- **ESM (bundler)**
19
- ```typescript
20
- import 'snice/components/product-card/snice-product-card';
21
- ```
22
-
23
- **CDN**
24
- ```html
25
- <script src="snice-runtime.min.js"></script>
26
- <script src="snice-product-card.min.js"></script>
27
- ```
15
+ - [Data Types](#data-types)
28
16
 
29
17
  ## Properties
30
18
 
31
- | Property | Attribute | Type | Default | Description |
32
- |----------|-----------|------|---------|-------------|
33
- | `name` | `name` | `string` | `''` | Product name |
34
- | `price` | `price` | `number` | `0` | Regular price |
35
- | `salePrice` | `sale-price` | `number \| null` | `null` | Sale price (shows strikethrough on original) |
36
- | `currency` | `currency` | `string` | `'$'` | Currency symbol |
37
- | `images` | — | `string[]` | `[]` | Image URLs (gallery navigation for multiple) |
38
- | `rating` | `rating` | `number` | `0` | Star rating (0-5, supports half stars) |
39
- | `reviewCount` | `review-count` | `number` | `0` | Number of reviews |
40
- | `variants` | — | `ProductVariant[]` | `[]` | Variant selector groups |
41
- | `inStock` | `in-stock` | `boolean` | `true` | Whether product is in stock |
42
- | `variant` | `variant` | `'vertical' \| 'horizontal' \| 'compact' \| 'featured' \| 'minimal' \| 'grid'` | `'vertical'` | Card layout variant |
43
- | `badge` | `badge` | `string` | `''` | Badge text (e.g. "SALE", "NEW") |
44
- | `badgeVariant` | `badge-variant` | `'sale' \| 'new' \| 'featured'` | `'sale'` | Badge visual style |
45
- | `loading` | `loading` | `boolean` | `false` | Shows skeleton loading state |
46
- | `favorite` | `favorite` | `boolean` | `false` | Favorite/heart toggle state |
47
- | `stockCount` | `stock-count` | `number` | `-1` | Stock count (-1 hides, <5 shows urgency) |
48
-
49
- ### ProductVariant Interface
50
-
51
- ```typescript
52
- interface ProductVariant {
53
- type: string; // Variant group name, e.g. 'Size', 'Color'
54
- options: string[]; // Available options, e.g. ['S', 'M', 'L'] or ['#000', '#fff']
55
- }
56
- ```
57
-
58
- When the `type` is `'Color'` (case-insensitive), options are rendered as color swatches instead of text chips.
19
+ | Property | Type | Default | Description |
20
+ |----------|------|---------|-------------|
21
+ | `name` | `string` | `''` | Product name |
22
+ | `price` | `number` | `0` | Regular price |
23
+ | `salePrice` (attr: `sale-price`) | `number \| null` | `null` | Sale price (shows strikethrough on original) |
24
+ | `currency` | `string` | `'$'` | Currency symbol |
25
+ | `images` | `string[]` | `[]` | Image URLs (gallery navigation for multiple). Set via JS. |
26
+ | `rating` | `number` | `0` | Star rating (0-5, supports half stars) |
27
+ | `reviewCount` (attr: `review-count`) | `number` | `0` | Number of reviews |
28
+ | `variants` | `ProductVariant[]` | `[]` | Variant selector groups. Set via JS. |
29
+ | `inStock` (attr: `in-stock`) | `boolean` | `true` | Whether product is in stock |
30
+ | `variant` | `'vertical' \| 'horizontal' \| 'compact' \| 'featured' \| 'minimal' \| 'grid'` | `'vertical'` | Card layout variant |
31
+ | `badge` | `string` | `''` | Badge text (e.g. "SALE", "NEW") |
32
+ | `badgeVariant` (attr: `badge-variant`) | `'sale' \| 'new' \| 'featured'` | `'sale'` | Badge visual style |
33
+ | `loading` | `boolean` | `false` | Shows skeleton loading state |
34
+ | `favorite` | `boolean` | `false` | Favorite/heart toggle state |
35
+ | `stockCount` (attr: `stock-count`) | `number` | `-1` | Stock count (-1 hides, <5 shows urgency) |
59
36
 
60
37
  ## Events
61
38
 
62
- #### `add-to-cart`
63
- Fired when the add-to-cart button is clicked.
64
-
65
- **Event Detail:**
66
- ```typescript
67
- {
68
- name: string; // Product name
69
- price: number; // Effective price (sale price if available)
70
- salePrice: number | null; // Sale price
71
- selectedVariants: Record<string, string>; // e.g. { Size: 'M', Color: '#000' }
72
- }
73
- ```
74
-
75
- #### `variant-select`
76
- Fired when a variant option is selected.
39
+ | Event | Detail | Description |
40
+ |-------|--------|-------------|
41
+ | `add-to-cart` | `{ name, price, salePrice, selectedVariants }` | Fired when the add-to-cart button is clicked |
42
+ | `variant-select` | `{ type: string, value: string }` | Fired when a variant option is selected |
43
+ | `image-click` | `{ index: number, src: string }` | Fired when the gallery image is clicked |
44
+ | `favorite` | `{ favorited: boolean }` | Fired when the favorite button is toggled |
45
+ | `quick-view` | `void` | Fired when the quick view overlay is clicked |
77
46
 
78
- **Event Detail:**
79
- ```typescript
80
- {
81
- type: string; // Variant group name
82
- value: string; // Selected option value
83
- }
84
- ```
47
+ ## CSS Parts
85
48
 
86
- #### `image-click`
87
- Fired when the gallery image is clicked.
49
+ Style internal elements from outside the shadow DOM using `::part()`.
50
+
51
+ | Part | Element | Description |
52
+ |------|---------|-------------|
53
+ | `base` | `<div>` | The outer card container |
54
+ | `gallery` | `<div>` | Image gallery area |
55
+ | `body` | `<div>` | Card body content |
56
+ | `title` | `<h3>` | Product name heading |
57
+ | `rating` | `<div>` | Star rating area |
58
+ | `stars` | `<div>` | Star rating container |
59
+ | `price` | `<div>` | Price display area |
60
+ | `price-current` | `<span>` | Current price display |
61
+ | `price-original` | `<span>` | Original price (strikethrough on sale) |
62
+ | `discount` | `<span>` | Discount percentage badge |
63
+ | `stock` | `<div>` | Stock status indicator |
64
+ | `variants` | `<div>` | Variant selectors area |
65
+ | `variant-group` | `<div>` | Variant selector group |
66
+ | `variant-option` | `<button>` | Individual variant option button |
67
+ | `cta` | `<button>` | Add-to-cart button |
68
+ | `badge` | `<span>` | Product badge |
69
+ | `favorite-btn` | `<button>` | Favorite/heart button |
70
+ | `image` | `<img>` | Gallery image element |
88
71
 
89
- **Event Detail:**
90
- ```typescript
91
- {
92
- index: number; // Current image index
93
- src: string; // Image URL
94
- }
95
- ```
96
-
97
- #### `favorite`
98
- Fired when the favorite/heart button is toggled.
72
+ ## Basic Usage
99
73
 
100
- **Event Detail:**
101
74
  ```typescript
102
- {
103
- favorited: boolean; // Whether the product is now favorited
104
- }
75
+ import 'snice/components/product-card/snice-product-card';
105
76
  ```
106
77
 
107
- #### `quick-view`
108
- Fired when the quick view overlay is clicked.
109
-
110
- **Event Detail:** `void`
111
-
112
- ## CSS Parts
113
-
114
- | Part | Description |
115
- |------|-------------|
116
- | `base` | The outer card container |
117
- | `gallery` | Image gallery area |
118
- | `body` | Card body content |
119
- | `title` | Product name heading |
120
- | `rating` | Star rating area |
121
- | `price` | Price display area |
122
- | `variants` | Variant selectors area |
123
- | `cta` | Add-to-cart button |
124
- | `stock` | Stock status indicator |
125
- | `badge` | Product badge (SALE, NEW, etc.) |
126
- | `favorite-btn` | Favorite/heart button |
127
- | `image` | Gallery image element |
128
- | `stars` | Star rating container |
129
- | `price-current` | Current price display |
130
- | `price-original` | Original price (strikethrough on sale) |
131
- | `discount` | Discount percentage badge |
132
- | `variant-group` | Variant selector group |
133
- | `variant-option` | Individual variant option button |
134
-
135
- ## Basic Usage
136
-
137
78
  ```html
138
79
  <snice-product-card
139
80
  name="Running Shoes"
140
81
  price="129.99"
141
82
  rating="4.5"
142
- review-count="342">
83
+ review-count="342"
84
+ in-stock>
143
85
  </snice-product-card>
144
86
  ```
145
87
 
146
- ```typescript
147
- import 'snice/components/product-card/snice-product-card';
148
- ```
149
-
150
88
  ## Examples
151
89
 
152
90
  ### Sale Price
@@ -154,77 +92,40 @@ import 'snice/components/product-card/snice-product-card';
154
92
  Use the `sale-price` attribute to display a sale with the original price crossed out and a discount badge.
155
93
 
156
94
  ```html
157
- <snice-product-card
158
- name="Premium Sneakers"
159
- price="149.99"
160
- sale-price="99.99"
161
- rating="4.5"
162
- review-count="128">
163
- </snice-product-card>
95
+ <snice-product-card name="Premium Sneakers" price="149.99" sale-price="99.99" rating="4.5" review-count="128"></snice-product-card>
164
96
  ```
165
97
 
166
98
  ### Multiple Images
167
99
 
168
100
  Set the `images` property to enable gallery navigation with prev/next buttons and dots.
169
101
 
170
- ```html
171
- <snice-product-card id="shoe" name="Athletic Shoes" price="89.99"></snice-product-card>
172
-
173
- <script type="module">
174
- const card = document.getElementById('shoe');
175
- card.images = ['front.jpg', 'side.jpg', 'back.jpg', 'detail.jpg'];
176
- </script>
102
+ ```typescript
103
+ card.images = ['front.jpg', 'side.jpg', 'back.jpg', 'detail.jpg'];
177
104
  ```
178
105
 
179
106
  ### Variant Selectors
180
107
 
181
- Set the `variants` property to add size chips and color swatches.
182
-
183
- ```html
184
- <snice-product-card id="tshirt" name="Classic T-Shirt" price="29.99"></snice-product-card>
185
-
186
- <script type="module">
187
- const card = document.getElementById('tshirt');
188
- card.images = ['tshirt.jpg'];
189
- card.variants = [
190
- { type: 'Size', options: ['XS', 'S', 'M', 'L', 'XL'] },
191
- { type: 'Color', options: ['#1a1a2e', '#e94560', '#0f3460', '#ffffff'] }
192
- ];
193
-
194
- card.addEventListener('variant-select', (e) => {
195
- console.log(`Selected ${e.detail.type}: ${e.detail.value}`);
196
- });
197
- </script>
198
- ```
199
-
200
- ### Horizontal Layout
108
+ Set the `variants` property to add size chips and color swatches. Color variants (type "Color") render as swatches.
201
109
 
202
- Use `variant="horizontal"` for a side-by-side layout suited to wider containers.
110
+ ```typescript
111
+ card.variants = [
112
+ { type: 'Size', options: ['XS', 'S', 'M', 'L', 'XL'] },
113
+ { type: 'Color', options: ['#1a1a2e', '#e94560', '#0f3460', '#ffffff'] }
114
+ ];
203
115
 
204
- ```html
205
- <snice-product-card
206
- variant="horizontal"
207
- name="MacBook Pro"
208
- price="2499.00"
209
- sale-price="2199.00"
210
- rating="4.9"
211
- review-count="1024">
212
- </snice-product-card>
116
+ card.addEventListener('variant-select', (e) => {
117
+ console.log(`Selected ${e.detail.type}: ${e.detail.value}`);
118
+ });
213
119
  ```
214
120
 
215
- ### Compact Layout
121
+ ### Layout Variants
216
122
 
217
- Use `variant="compact"` for a minimal row layout suited to lists and sidebars.
123
+ Use the `variant` attribute to change the card layout.
218
124
 
219
125
  ```html
220
- <snice-product-card
221
- variant="compact"
222
- name="Wireless Earbuds"
223
- price="59.99"
224
- sale-price="39.99"
225
- rating="4.2"
226
- review-count="89">
227
- </snice-product-card>
126
+ <snice-product-card variant="vertical" name="Product" price="29.99"></snice-product-card>
127
+ <snice-product-card variant="horizontal" name="Product" price="29.99"></snice-product-card>
128
+ <snice-product-card variant="compact" name="Product" price="29.99"></snice-product-card>
228
129
  ```
229
130
 
230
131
  ### Out of Stock
@@ -232,36 +133,32 @@ Use `variant="compact"` for a minimal row layout suited to lists and sidebars.
232
133
  Set `in-stock="false"` to disable the add-to-cart button and show an out-of-stock indicator.
233
134
 
234
135
  ```html
235
- <snice-product-card
236
- name="Limited Edition Watch"
237
- price="599.00"
238
- in-stock="false"
239
- rating="4.8"
240
- review-count="56">
241
- </snice-product-card>
136
+ <snice-product-card name="Limited Edition Watch" price="599.00" in-stock="false"></snice-product-card>
242
137
  ```
243
138
 
244
139
  ### Handling Add to Cart
245
140
 
246
- ```html
247
- <snice-product-card id="product" name="Headphones" price="199.99"></snice-product-card>
248
-
249
- <script type="module">
250
- const card = document.getElementById('product');
251
- card.images = ['headphones.jpg'];
252
- card.variants = [{ type: 'Color', options: ['#000000', '#ffffff', '#c0c0c0'] }];
253
-
254
- card.addEventListener('add-to-cart', (e) => {
255
- const { name, price, selectedVariants } = e.detail;
256
- console.log(`Adding ${name} at $${price}`, selectedVariants);
257
- });
258
- </script>
141
+ ```typescript
142
+ card.addEventListener('add-to-cart', (e) => {
143
+ const { name, price, selectedVariants } = e.detail;
144
+ console.log(`Adding ${name} at $${price}`, selectedVariants);
145
+ });
259
146
  ```
260
147
 
261
148
  ## Accessibility
262
149
 
263
- - **Star rating**: Includes `aria-label` with numeric rating
264
- - **Variant selectors**: Use `role="radiogroup"` and `role="radio"` with `aria-checked`
265
- - **Gallery navigation**: Previous/next buttons have `aria-label` attributes
266
- - **Out of stock**: CTA button is disabled with appropriate state
267
- - **Keyboard navigation**: All interactive elements are focusable and keyboard-accessible
150
+ - Star rating includes `aria-label` with numeric rating value
151
+ - Variant selectors use `role="radiogroup"` and `role="radio"` with `aria-checked`
152
+ - Gallery navigation buttons have `aria-label` attributes
153
+ - Favorite button has a descriptive `aria-label`
154
+ - Out-of-stock state disables the CTA button
155
+ - All interactive elements are keyboard-focusable
156
+
157
+ ## Data Types
158
+
159
+ ```typescript
160
+ interface ProductVariant {
161
+ type: string; // Variant group name, e.g. 'Size', 'Color'
162
+ options: string[]; // Available options, e.g. ['S', 'M', 'L']
163
+ }
164
+ ```
@@ -1,22 +1,17 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/progress-ring.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/progress-ring.md -->
2
2
 
3
3
  # Progress Ring
4
4
  `<snice-progress-ring>`
5
5
 
6
6
  A determinate circular progress indicator that displays progress as an animated SVG ring fill with optional center text.
7
7
 
8
- ## Importing
9
-
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/progress-ring/snice-progress-ring';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-progress-ring.min.js"></script>
19
- ```
8
+ ## Table of Contents
9
+ - [Properties](#properties)
10
+ - [Events](#events)
11
+ - [CSS Parts](#css-parts)
12
+ - [Basic Usage](#basic-usage)
13
+ - [Examples](#examples)
14
+ - [Accessibility](#accessibility)
20
15
 
21
16
  ## Properties
22
17
 
@@ -34,18 +29,20 @@ import 'snice/components/progress-ring/snice-progress-ring';
34
29
 
35
30
  | Event | Detail | Description |
36
31
  |-------|--------|-------------|
37
- | `progress-complete` | `{ value: number, max: number, component: SniceProgressRingElement }` | Fired when value reaches max |
32
+ | `progress-complete` | `{ value: number, max: number, component }` | Fired when value reaches max |
38
33
 
39
34
  ## CSS Parts
40
35
 
41
- | Part | Description |
42
- |------|-------------|
43
- | `base` | Outer container with `role="progressbar"` |
44
- | `track` | Background circle |
45
- | `fill` | Progress circle |
46
- | `center` | Center text container |
47
- | `value` | Percentage text |
48
- | `label` | Label text |
36
+ Style internal elements from outside the shadow DOM using `::part()`.
37
+
38
+ | Part | Element | Description |
39
+ |------|---------|-------------|
40
+ | `base` | `<div>` | Outer container with `role="progressbar"` |
41
+ | `track` | `<circle>` | Background circle |
42
+ | `fill` | `<circle>` | Progress circle |
43
+ | `center` | `<div>` | Center text container |
44
+ | `value` | `<span>` | Percentage text |
45
+ | `label` | `<span>` | Label text |
49
46
 
50
47
  ## Basic Usage
51
48
 
@@ -69,7 +66,7 @@ Set the `show-value` attribute to display the percentage in the center of the ri
69
66
 
70
67
  ### Custom Label
71
68
 
72
- Use the `label` attribute to display custom text in the center instead of (or alongside) the percentage.
69
+ Use the `label` attribute to display custom text in the center.
73
70
 
74
71
  ```html
75
72
  <snice-progress-ring value="60" label="CPU" show-value></snice-progress-ring>
@@ -115,13 +112,13 @@ Use the `max` attribute to set a maximum value other than 100.
115
112
 
116
113
  Listen to the `progress-complete` event to react when progress reaches the maximum.
117
114
 
118
- ```html
119
- <snice-progress-ring id="upload" value="0" max="100" show-value></snice-progress-ring>
120
-
121
- <script>
122
- const ring = document.getElementById('upload');
123
- ring.addEventListener('progress-complete', () => {
124
- console.log('Upload complete!');
125
- });
126
- </script>
115
+ ```typescript
116
+ ring.addEventListener('progress-complete', () => {
117
+ console.log('Upload complete!');
118
+ });
127
119
  ```
120
+
121
+ ## Accessibility
122
+
123
+ - Uses `role="progressbar"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
124
+ - Label or percentage text is used as `aria-label` for screen readers
@@ -1,22 +1,19 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/progress.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/progress.md -->
2
2
 
3
3
  # Progress
4
4
  `<snice-progress>`
5
5
 
6
- A progress indicator with linear and circular display variants.
6
+ A progress indicator with linear and circular display variants, indeterminate mode, striped/animated styles, and optional labels.
7
7
 
8
- ## Importing
9
-
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/progress/snice-progress';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-progress.min.js"></script>
19
- ```
8
+ ## Table of Contents
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [CSS Parts](#css-parts)
13
+ - [CSS Custom Properties](#css-custom-properties)
14
+ - [Basic Usage](#basic-usage)
15
+ - [Examples](#examples)
16
+ - [Accessibility](#accessibility)
20
17
 
21
18
  ## Properties
22
19
 
@@ -30,7 +27,7 @@ import 'snice/components/progress/snice-progress';
30
27
  | `indeterminate` | `boolean` | `false` | Unknown progress mode |
31
28
  | `showLabel` (attr: `show-label`) | `boolean` | `false` | Show percentage label |
32
29
  | `label` | `string` | `''` | Custom label text (overrides percentage) |
33
- | `striped` | `boolean` | `false` | Striped bar pattern |
30
+ | `striped` | `boolean` | `false` | Striped bar pattern (linear only) |
34
31
  | `animated` | `boolean` | `false` | Animate striped pattern |
35
32
  | `thickness` | `number` | `4` | Stroke width for circular variant |
36
33
 
@@ -45,13 +42,13 @@ import 'snice/components/progress/snice-progress';
45
42
 
46
43
  | Event | Detail | Description |
47
44
  |-------|--------|-------------|
48
- | `progress-change` | `{ value: number, max: number, percentage: number, indeterminate: boolean }` | Fired when value, max, or indeterminate changes |
45
+ | `progress-change` | `{ value, max, percentage, indeterminate }` | Fired when value, max, or indeterminate changes |
49
46
 
50
47
  ## CSS Parts
51
48
 
52
49
  Style internal elements from outside the shadow DOM using `::part()`.
53
50
 
54
- ### Linear variant
51
+ ### Linear Variant
55
52
 
56
53
  | Part | Element | Description |
57
54
  |------|---------|-------------|
@@ -59,7 +56,7 @@ Style internal elements from outside the shadow DOM using `::part()`.
59
56
  | `bar` | `<div>` | The progress bar fill |
60
57
  | `label` | `<span>` | Percentage or custom label text |
61
58
 
62
- ### Circular variant
59
+ ### Circular Variant
63
60
 
64
61
  | Part | Element | Description |
65
62
  |------|---------|-------------|
@@ -69,19 +66,15 @@ Style internal elements from outside the shadow DOM using `::part()`.
69
66
  | `circle-bar` | `<circle>` | Foreground progress arc |
70
67
  | `label` | `<div>` | Percentage or custom label text |
71
68
 
72
- ```css
73
- snice-progress::part(bar) {
74
- border-radius: 0;
75
- }
69
+ ## CSS Custom Properties
76
70
 
77
- snice-progress::part(label) {
78
- font-weight: 700;
79
- }
80
-
81
- snice-progress::part(circle-bar) {
82
- filter: drop-shadow(0 0 4px currentColor);
83
- }
84
- ```
71
+ | Property | Description | Default |
72
+ |----------|-------------|---------|
73
+ | `--progress-height` | Bar height (linear) | `0.5rem` |
74
+ | `--progress-radius` | Bar border radius | `4px` |
75
+ | `--progress-bg` | Background track color | `var(--snice-color-border)` |
76
+ | `--progress-color` | Progress fill color | `var(--snice-color-primary)` |
77
+ | `--progress-animation-duration` | Animation speed | `1.5s` |
85
78
 
86
79
  ## Basic Usage
87
80
 
@@ -113,8 +106,6 @@ Use the `size` attribute to change the progress indicator size.
113
106
  <snice-progress value="50" size="medium"></snice-progress>
114
107
  <snice-progress value="50" size="large"></snice-progress>
115
108
  <snice-progress value="50" size="xl" variant="circular"></snice-progress>
116
- <snice-progress value="50" size="xxl" variant="circular"></snice-progress>
117
- <snice-progress value="50" size="xxxl" variant="circular"></snice-progress>
118
109
  ```
119
110
 
120
111
  ### Colors
@@ -126,7 +117,6 @@ Use the `color` attribute with semantic names or any CSS color value.
126
117
  <snice-progress value="80" color="success"></snice-progress>
127
118
  <snice-progress value="80" color="warning"></snice-progress>
128
119
  <snice-progress value="80" color="error"></snice-progress>
129
- <snice-progress value="80" color="info"></snice-progress>
130
120
  <snice-progress value="80" color="#3b82f6"></snice-progress>
131
121
  ```
132
122
 
@@ -141,7 +131,7 @@ Set the `indeterminate` attribute for unknown progress (loading state).
141
131
 
142
132
  ### With Label
143
133
 
144
- Use the `show-label` attribute to display the percentage, or `label` for custom text.
134
+ Use `show-label` to display the percentage, or `label` for custom text.
145
135
 
146
136
  ```html
147
137
  <snice-progress value="60" show-label></snice-progress>
@@ -157,14 +147,6 @@ Use `striped` for a striped pattern and `animated` for animated stripes.
157
147
  <snice-progress value="70" striped animated></snice-progress>
158
148
  ```
159
149
 
160
- ### Custom Max
161
-
162
- Use the `max` attribute to set a custom maximum value.
163
-
164
- ```html
165
- <snice-progress value="3" max="10"></snice-progress>
166
- ```
167
-
168
150
  ### Circular Thickness
169
151
 
170
152
  Use the `thickness` attribute to control the circular variant's stroke width.
@@ -173,28 +155,15 @@ Use the `thickness` attribute to control the circular variant's stroke width.
173
155
  <snice-progress variant="circular" value="75" thickness="8" size="xl"></snice-progress>
174
156
  ```
175
157
 
176
- ### Dynamic Updates
177
-
178
- ```html
179
- <snice-progress value="0"></snice-progress>
180
- ```
181
-
182
- ```typescript
183
- let value = 0;
184
-
185
- setInterval(() => {
186
- value = (value + 10) % 100;
187
- progress.value = value;
188
- }, 500);
189
- ```
190
-
191
158
  ### Programmatic Control
192
159
 
193
160
  ```typescript
194
- // Set progress
195
161
  progress.setProgress(75);
196
162
  progress.setProgress(3, 10); // value 3, max 10
197
-
198
- // Get percentage
199
- console.log(progress.getPercentage()); // 75
163
+ console.log(progress.getPercentage()); // 30
200
164
  ```
165
+
166
+ ## Accessibility
167
+
168
+ - Uses `role="progressbar"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
169
+ - Label text is used as `aria-label` for screen readers