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,41 +1,26 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/podcast-player.md instead -->
2
-
3
- # Podcast Player Component
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/podcast-player.md -->
4
2
 
3
+ # Podcast Player
5
4
  `<snice-podcast-player>`
6
5
 
7
6
  A full-featured podcast player with playback controls, playback speed adjustment, episode list, chapter support, RSS feed parsing, sleep timer, and position memory via localStorage.
8
7
 
9
8
  ## Table of Contents
10
- - [Importing](#importing)
11
9
  - [Properties](#properties)
12
10
  - [Methods](#methods)
13
11
  - [Events](#events)
14
12
  - [CSS Parts](#css-parts)
15
13
  - [Basic Usage](#basic-usage)
16
14
  - [Examples](#examples)
17
- - [Types](#types)
18
15
  - [Accessibility](#accessibility)
19
-
20
- ## Importing
21
-
22
- **ESM (bundler)**
23
- ```typescript
24
- import 'snice/components/podcast-player/snice-podcast-player';
25
- ```
26
-
27
- **CDN**
28
- ```html
29
- <script src="snice-runtime.min.js"></script>
30
- <script src="snice-podcast-player.min.js"></script>
31
- ```
16
+ - [Data Types](#data-types)
32
17
 
33
18
  ## Properties
34
19
 
35
20
  | Property | Type | Default | Description |
36
21
  |----------|------|---------|-------------|
37
22
  | `src` | `string` | `''` | Audio source URL for direct playback |
38
- | `fromRss` (attr: `from-rss`) | `string` | `''` | RSS feed URL. Fetches and displays the episode list automatically |
23
+ | `fromRss` (attr: `from-rss`) | `string` | `''` | RSS feed URL. Fetches and displays episode list automatically |
39
24
  | `title` | `string` | `''` | Episode title |
40
25
  | `show` | `string` | `''` | Show or podcast name |
41
26
  | `artwork` | `string` | `''` | Artwork image URL |
@@ -47,9 +32,9 @@ import 'snice/components/podcast-player/snice-podcast-player';
47
32
  | `duration` | `number` | `0` | Episode duration in seconds |
48
33
  | `volume` | `number` | `1` | Volume level (range: 0 to 1) |
49
34
  | `muted` | `boolean` | `false` | Whether audio is muted |
50
- | `state` | `PodcastPlayerState` | `'stopped'` | Current playback state (read-only) |
51
- | `episodes` | `PodcastEpisode[]` | `[]` | Array of episodes (set via JavaScript) |
52
- | `currentEpisodeIndex` (attr: `current-episode-index`) | `number` | `0` | Index of the currently active episode |
35
+ | `state` | `PodcastPlayerState` | `'stopped'` | Current playback state (not a decorated property) |
36
+ | `episodes` | `PodcastEpisode[]` | `[]` | Array of episodes (set via JS) |
37
+ | `currentEpisodeIndex` (attr: `current-episode-index`) | `number` | `-1` | Index of the currently active episode |
53
38
  | `sleepTimer` (attr: `sleep-timer`) | `number` | `0` | Sleep timer duration in minutes (0 = disabled) |
54
39
 
55
40
  ## Methods
@@ -70,10 +55,10 @@ import 'snice/components/podcast-player/snice-podcast-player';
70
55
  | `podcast-play` | `{ player, episode }` | Fired when playback starts |
71
56
  | `podcast-pause` | `{ player, episode }` | Fired when playback is paused |
72
57
  | `podcast-ended` | `{ player, episode }` | Fired when the current episode ends |
73
- | `podcast-time-update` | `{ player, currentTime, duration }` | Fired periodically during playback with current time |
58
+ | `podcast-time-update` | `{ player, currentTime, duration }` | Fired periodically during playback |
74
59
  | `podcast-rate-change` | `{ player, rate }` | Fired when the playback speed changes |
75
60
  | `podcast-episode-change` | `{ player, episode, index }` | Fired when a different episode is selected |
76
- | `podcast-feed-loaded` | `{ player, feed: RSSFeedData }` | Fired when an RSS feed has been parsed successfully |
61
+ | `podcast-feed-loaded` | `{ player, feed: RSSFeedData }` | Fired when an RSS feed has been parsed |
77
62
 
78
63
  ## CSS Parts
79
64
 
@@ -91,10 +76,6 @@ snice-podcast-player::part(base) {
91
76
  background: #1a1a2e;
92
77
  color: white;
93
78
  }
94
-
95
- snice-podcast-player::part(controls) {
96
- padding: 1rem;
97
- }
98
79
  ```
99
80
 
100
81
  ## Basic Usage
@@ -108,33 +89,18 @@ import 'snice/components/podcast-player/snice-podcast-player';
108
89
  src="/audio/episode.mp3"
109
90
  title="Episode 1"
110
91
  show="My Podcast"
92
+ artwork="/images/cover.jpg"
111
93
  ></snice-podcast-player>
112
94
  ```
113
95
 
114
96
  ## Examples
115
97
 
116
- ### Single Episode Playback
117
-
118
- Play a single episode by setting the source URL directly.
119
-
120
- ```html
121
- <snice-podcast-player
122
- src="/audio/episode-42.mp3"
123
- title="Episode 42: Web Components"
124
- show="The Dev Podcast"
125
- artwork="/images/dev-podcast-cover.jpg"
126
- description="A deep dive into modern web component patterns."
127
- ></snice-podcast-player>
128
- ```
129
-
130
98
  ### RSS Feed Mode
131
99
 
132
- Load an entire podcast from an RSS feed. The player automatically parses the feed to populate the show name, artwork, and episode list.
100
+ Load an entire podcast from an RSS feed.
133
101
 
134
102
  ```html
135
- <snice-podcast-player
136
- from-rss="https://example.com/podcast/feed.xml"
137
- ></snice-podcast-player>
103
+ <snice-podcast-player from-rss="https://example.com/podcast/feed.xml"></snice-podcast-player>
138
104
  ```
139
105
 
140
106
  ```typescript
@@ -146,55 +112,34 @@ player.addEventListener('podcast-feed-loaded', (e) => {
146
112
 
147
113
  ### Episode List with Chapters
148
114
 
149
- Provide an array of episodes with chapter markers for enhanced navigation.
150
-
151
- ```html
152
- <snice-podcast-player></snice-podcast-player>
153
- ```
115
+ Provide episodes with chapter markers for enhanced navigation.
154
116
 
155
117
  ```typescript
156
118
  player.show = 'Tech Weekly';
157
- player.artwork = '/images/tech-weekly.jpg';
158
-
159
119
  player.episodes = [
160
120
  {
161
121
  title: 'Episode 1: Getting Started',
162
122
  src: '/audio/ep1.mp3',
163
123
  duration: 1800,
164
- pubDate: '2025-01-15',
165
124
  chapters: [
166
125
  { title: 'Intro', startTime: 0 },
167
126
  { title: 'Main Topic', startTime: 120 },
168
- { title: 'Q&A', startTime: 1200 },
169
- { title: 'Outro', startTime: 1700 }
127
+ { title: 'Q&A', startTime: 1200 }
170
128
  ]
171
129
  },
172
- {
173
- title: 'Episode 2: Advanced Patterns',
174
- src: '/audio/ep2.mp3',
175
- duration: 2400,
176
- pubDate: '2025-01-22'
177
- },
178
- {
179
- title: 'Episode 3: Performance Tips',
180
- src: '/audio/ep3.mp3',
181
- duration: 2100,
182
- pubDate: '2025-01-29'
183
- }
130
+ { title: 'Episode 2: Advanced Patterns', src: '/audio/ep2.mp3', duration: 2400 }
184
131
  ];
185
-
186
132
  player.loadEpisode(0);
187
133
  ```
188
134
 
189
- ### Playback Speed and Skip Duration
135
+ ### Custom Skip and Speed
190
136
 
191
- Customize skip intervals and playback speed for different listening preferences.
137
+ Customize skip intervals and initial playback speed.
192
138
 
193
139
  ```html
194
140
  <snice-podcast-player
195
141
  src="/audio/interview.mp3"
196
- title="Interview with the Author"
197
- show="Book Club Podcast"
142
+ title="Interview"
198
143
  skip-forward="15"
199
144
  skip-back="10"
200
145
  playback-rate="1.5"
@@ -206,22 +151,13 @@ Customize skip intervals and playback speed for different listening preferences.
206
151
  Listen for playback events to integrate with analytics or custom UI.
207
152
 
208
153
  ```typescript
209
- player.addEventListener('podcast-play', () => {
210
- console.log('Playing');
211
- });
212
-
213
- player.addEventListener('podcast-pause', () => {
214
- console.log('Paused');
215
- });
154
+ player.addEventListener('podcast-play', () => console.log('Playing'));
155
+ player.addEventListener('podcast-pause', () => console.log('Paused'));
156
+ player.addEventListener('podcast-ended', () => console.log('Finished'));
216
157
 
217
158
  player.addEventListener('podcast-time-update', (e) => {
218
- const { currentTime, duration } = e.detail;
219
- const percent = Math.round((currentTime / duration) * 100);
220
- console.log(`Playing: ${percent}%`);
221
- });
222
-
223
- player.addEventListener('podcast-ended', () => {
224
- console.log('Finished');
159
+ const percent = Math.round((e.detail.currentTime / e.detail.duration) * 100);
160
+ console.log(`Progress: ${percent}%`);
225
161
  });
226
162
 
227
163
  player.addEventListener('podcast-episode-change', (e) => {
@@ -229,9 +165,17 @@ player.addEventListener('podcast-episode-change', (e) => {
229
165
  });
230
166
  ```
231
167
 
232
- ## Types
168
+ ## Accessibility
169
+
170
+ - Playback controls (play/pause, skip forward/back) are keyboard accessible
171
+ - Progress bar supports seeking via click
172
+ - Playback speed selector cycles through common speeds (0.5x through 2x)
173
+ - Volume control provides mute toggle and level adjustment
174
+ - Episode list items are interactive and indicate the currently playing episode
175
+ - The player remembers playback position via localStorage, restoring it on reload
176
+ - Chapter markers provide named navigation points within an episode
233
177
 
234
- ### PodcastEpisode
178
+ ## Data Types
235
179
 
236
180
  ```typescript
237
181
  interface PodcastEpisode {
@@ -243,42 +187,20 @@ interface PodcastEpisode {
243
187
  duration?: number; // Duration in seconds
244
188
  chapters?: PodcastChapter[]; // Chapter markers
245
189
  }
246
- ```
247
-
248
- ### PodcastChapter
249
190
 
250
- ```typescript
251
191
  interface PodcastChapter {
252
- title: string; // Chapter title
253
- startTime: number; // Start time in seconds
254
- endTime?: number; // End time in seconds
255
- artwork?: string; // Chapter-specific artwork URL
192
+ title: string; // Chapter title
193
+ startTime: number; // Start time in seconds
194
+ endTime?: number; // End time in seconds
195
+ artwork?: string; // Chapter-specific artwork URL
256
196
  }
257
- ```
258
-
259
- ### RSSFeedData
260
197
 
261
- ```typescript
262
198
  interface RSSFeedData {
263
- title: string; // Podcast title from feed
264
- artwork?: string; // Show artwork URL from feed
265
- description?: string; // Show description from feed
266
- episodes: PodcastEpisode[]; // Parsed episode list
199
+ title: string;
200
+ artwork?: string;
201
+ description?: string;
202
+ episodes: PodcastEpisode[];
267
203
  }
268
- ```
269
204
 
270
- ### PodcastPlayerState
271
-
272
- ```typescript
273
205
  type PodcastPlayerState = 'playing' | 'paused' | 'stopped' | 'loading' | 'error';
274
206
  ```
275
-
276
- ## Accessibility
277
-
278
- - Playback controls (play/pause, skip forward/back) are keyboard accessible
279
- - The progress bar supports seeking via click or drag
280
- - Playback speed selector allows choosing from common speed options (0.5x through 2x)
281
- - Volume control provides mute toggle and level adjustment
282
- - Episode list items are interactive and indicate the currently playing episode
283
- - The player remembers playback position via localStorage, restoring it on reload
284
- - Chapter markers provide named navigation points within an episode
@@ -1,77 +1,84 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/pricing-table.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/pricing-table.md -->
2
2
 
3
- # Pricing Table Component
3
+ # Pricing Table
4
+ `<snice-pricing-table>`
4
5
 
5
- The pricing table component displays plan comparisons in a card or table layout, with support for monthly/annual billing toggle, highlighted plans, badges, and declarative child elements.
6
+ A pricing comparison component with cards or table layout, monthly/annual billing toggle, highlighted plans, badges, and declarative child elements.
6
7
 
7
8
  ## Table of Contents
8
9
  - [Properties](#properties)
10
+ - [Components](#components)
9
11
  - [Events](#events)
10
12
  - [CSS Parts](#css-parts)
11
13
  - [Basic Usage](#basic-usage)
12
14
  - [Examples](#examples)
13
- - [Child Elements](#child-elements)
14
15
  - [Accessibility](#accessibility)
16
+ - [Data Types](#data-types)
15
17
 
16
18
  ## Properties
17
19
 
18
20
  | Property | Type | Default | Description |
19
21
  |----------|------|---------|-------------|
20
- | `plans` | `PricingPlan[]` | `[]` | Plan data array (for programmatic usage) |
22
+ | `plans` | `PricingPlan[]` | `[]` | Plan data array (set via JS for programmatic usage) |
21
23
  | `variant` | `'cards' \| 'table'` | `'cards'` | Layout variant |
22
24
  | `annual` | `boolean` | `false` | Whether to show annual pricing |
23
25
 
24
- ### PricingPlan Interface
26
+ ## Components
25
27
 
26
- ```typescript
27
- interface PricingPlan {
28
- name: string;
29
- price: number;
30
- annualPrice?: number; // Enables the billing toggle when set
31
- period?: string; // e.g. '/mo' (default: '/mo')
32
- currency?: string; // e.g. '$' (default: '$')
33
- description?: string;
34
- features: PricingFeature[];
35
- cta: string; // Call-to-action button text
36
- ctaVariant?: 'primary' | 'secondary' | 'outline';
37
- highlighted?: boolean; // Emphasize this plan
38
- badge?: string; // e.g. 'Popular', 'Best Value'
39
- }
28
+ ### `<snice-plan>`
40
29
 
41
- interface PricingFeature {
42
- name: string;
43
- included: boolean | string; // true/false for check/x, string for custom value
44
- }
45
- ```
30
+ Declarative child element for defining plans.
46
31
 
47
- ## Events
32
+ | Attribute | Type | Description |
33
+ |-----------|------|-------------|
34
+ | `name` | `string` | Plan name |
35
+ | `price` | `string` | Monthly price |
36
+ | `annual-price` | `string` | Annual price (enables billing toggle) |
37
+ | `period` | `string` | Billing period label (default: '/mo') |
38
+ | `currency` | `string` | Currency symbol (default: '$') |
39
+ | `description` | `string` | Plan description |
40
+ | `cta` | `string` | Call-to-action button text |
41
+ | `cta-variant` | `'primary' \| 'secondary' \| 'outline'` | Button variant |
42
+ | `highlighted` | `boolean` | Emphasize this plan |
43
+ | `badge` | `string` | Badge text (e.g. 'Popular') |
48
44
 
49
- #### `plan-select`
50
- Fired when a plan's call-to-action button is clicked.
45
+ ### `<snice-feature>`
51
46
 
52
- **Event Detail:**
53
- ```typescript
54
- {
55
- plan: PricingPlan; // The selected plan object
56
- index: number; // Plan index (0-based)
57
- billing: 'monthly' | 'annual'; // Current billing period
58
- }
59
- ```
47
+ Declarative child element for defining plan features.
48
+
49
+ | Attribute | Type | Description |
50
+ |-----------|------|-------------|
51
+ | `excluded` | `boolean` | Mark feature as not included (shows X instead of check) |
52
+ | `value` | `string` | Custom display value (e.g. '1GB', '100GB') |
53
+
54
+ The text content of `<snice-feature>` is used as the feature name.
55
+
56
+ ## Events
57
+
58
+ | Event | Detail | Description |
59
+ |-------|--------|-------------|
60
+ | `plan-select` | `{ plan: PricingPlan, index: number, billing: 'monthly' \| 'annual' }` | Fired when a plan's CTA button is clicked |
60
61
 
61
62
  ## CSS Parts
62
63
 
63
- | Part | Description |
64
- |------|-------------|
65
- | `base` | The outer container |
66
- | `cards` | The cards layout container |
67
- | `card` | Individual plan card |
68
- | `cta` | Call-to-action button |
69
- | `toggle` | Billing toggle switch area |
70
- | `table-wrapper` | Table layout wrapper |
71
- | `table` | The comparison table element |
64
+ Style internal elements from outside the shadow DOM using `::part()`.
65
+
66
+ | Part | Element | Description |
67
+ |------|---------|-------------|
68
+ | `base` | `<div>` | The outer container |
69
+ | `cards` | `<div>` | The cards layout container |
70
+ | `card` | `<div>` | Individual plan card |
71
+ | `cta` | `<button>` | Call-to-action button |
72
+ | `toggle` | `<div>` | Billing toggle switch area |
73
+ | `table-wrapper` | `<div>` | Table layout wrapper |
74
+ | `table` | `<table>` | The comparison table element |
72
75
 
73
76
  ## Basic Usage
74
77
 
78
+ ```typescript
79
+ import 'snice/components/pricing-table/snice-pricing-table';
80
+ ```
81
+
75
82
  ```html
76
83
  <snice-pricing-table>
77
84
  <snice-plan name="Free" price="0" cta="Get Started">
@@ -85,13 +92,9 @@ Fired when a plan's call-to-action button is clicked.
85
92
  </snice-pricing-table>
86
93
  ```
87
94
 
88
- ```typescript
89
- import 'snice/components/pricing-table/snice-pricing-table';
90
- ```
91
-
92
95
  ## Examples
93
96
 
94
- ### Cards Layout with Billing Toggle
97
+ ### Cards with Billing Toggle
95
98
 
96
99
  Use `annual-price` on plans to enable the monthly/annual billing toggle.
97
100
 
@@ -101,26 +104,23 @@ Use `annual-price` on plans to enable the monthly/annual billing toggle.
101
104
  <snice-feature>5 projects</snice-feature>
102
105
  <snice-feature value="1GB">Storage</snice-feature>
103
106
  <snice-feature excluded>Priority support</snice-feature>
104
- <snice-feature excluded>API access</snice-feature>
105
107
  </snice-plan>
106
108
  <snice-plan name="Pro" price="29" annual-price="24" highlighted badge="Popular" cta="Start Trial" cta-variant="primary">
107
109
  <snice-feature>Unlimited projects</snice-feature>
108
110
  <snice-feature value="100GB">Storage</snice-feature>
109
111
  <snice-feature>Priority support</snice-feature>
110
- <snice-feature>API access</snice-feature>
111
112
  </snice-plan>
112
113
  <snice-plan name="Enterprise" price="99" annual-price="79" cta="Contact Sales">
113
114
  <snice-feature>Unlimited projects</snice-feature>
114
115
  <snice-feature value="Unlimited">Storage</snice-feature>
115
116
  <snice-feature>Priority support</snice-feature>
116
- <snice-feature>API access</snice-feature>
117
117
  </snice-plan>
118
118
  </snice-pricing-table>
119
119
  ```
120
120
 
121
121
  ### Table Layout
122
122
 
123
- Use the `variant="table"` attribute for a comparison table view.
123
+ Use `variant="table"` for a feature comparison table view.
124
124
 
125
125
  ```html
126
126
  <snice-pricing-table variant="table">
@@ -129,7 +129,7 @@ Use the `variant="table"` attribute for a comparison table view.
129
129
  <snice-feature value="5GB">Storage</snice-feature>
130
130
  <snice-feature excluded>Analytics</snice-feature>
131
131
  </snice-plan>
132
- <snice-plan name="Business" price="49" cta="Choose Business" highlighted badge="Best Value" cta-variant="primary">
132
+ <snice-plan name="Business" price="49" cta="Choose Business" highlighted badge="Best Value">
133
133
  <snice-feature>50 users</snice-feature>
134
134
  <snice-feature value="50GB">Storage</snice-feature>
135
135
  <snice-feature>Analytics</snice-feature>
@@ -141,101 +141,58 @@ Use the `variant="table"` attribute for a comparison table view.
141
141
 
142
142
  Set plans via JavaScript for dynamic pricing data.
143
143
 
144
- ```html
145
- <snice-pricing-table id="pricing"></snice-pricing-table>
146
-
147
- <script type="module">
148
- import 'snice/components/pricing-table/snice-pricing-table';
149
-
150
- const table = document.getElementById('pricing');
151
- table.plans = [
152
- {
153
- name: 'Free',
154
- price: 0,
155
- cta: 'Get Started',
156
- features: [
157
- { name: '5 projects', included: true },
158
- { name: 'API access', included: false },
159
- { name: 'Storage', included: '1GB' }
160
- ]
161
- },
162
- {
163
- name: 'Pro',
164
- price: 29,
165
- annualPrice: 24,
166
- cta: 'Start Trial',
167
- ctaVariant: 'primary',
168
- highlighted: true,
169
- badge: 'Popular',
170
- features: [
171
- { name: 'Unlimited projects', included: true },
172
- { name: 'API access', included: true },
173
- { name: 'Storage', included: '100GB' }
174
- ]
175
- }
176
- ];
177
-
178
- table.addEventListener('plan-select', (e) => {
179
- console.log(`Selected: ${e.detail.plan.name} (${e.detail.billing})`);
180
- });
181
- </script>
182
- ```
183
-
184
- ### Handling Plan Selection
185
-
186
- ```html
187
- <snice-pricing-table id="plans">
188
- <snice-plan name="Monthly" price="15" cta="Subscribe" cta-variant="primary">
189
- <snice-feature>All features included</snice-feature>
190
- <snice-feature>Email support</snice-feature>
191
- </snice-plan>
192
- <snice-plan name="Annual" price="12" cta="Save 20%" cta-variant="primary" highlighted badge="Save 20%">
193
- <snice-feature>All features included</snice-feature>
194
- <snice-feature>Priority support</snice-feature>
195
- </snice-plan>
196
- </snice-pricing-table>
197
-
198
- <script type="module">
199
- const table = document.getElementById('plans');
200
- table.addEventListener('plan-select', (e) => {
201
- const { plan, billing } = e.detail;
202
- // Navigate to checkout
203
- window.location.href = `/checkout?plan=${plan.name.toLowerCase()}&billing=${billing}`;
204
- });
205
- </script>
144
+ ```typescript
145
+ table.plans = [
146
+ {
147
+ name: 'Free', price: 0, cta: 'Get Started',
148
+ features: [
149
+ { name: '5 projects', included: true },
150
+ { name: 'API access', included: false },
151
+ { name: 'Storage', included: '1GB' }
152
+ ]
153
+ },
154
+ {
155
+ name: 'Pro', price: 29, annualPrice: 24, cta: 'Start Trial',
156
+ ctaVariant: 'primary', highlighted: true, badge: 'Popular',
157
+ features: [
158
+ { name: 'Unlimited projects', included: true },
159
+ { name: 'API access', included: true },
160
+ { name: 'Storage', included: '100GB' }
161
+ ]
162
+ }
163
+ ];
164
+
165
+ table.addEventListener('plan-select', (e) => {
166
+ console.log(`Selected: ${e.detail.plan.name} (${e.detail.billing})`);
167
+ });
206
168
  ```
207
169
 
208
- ## Child Elements
209
-
210
- The pricing table supports declarative usage via `<snice-plan>` and `<snice-feature>` child elements as an alternative to setting the `plans` property.
211
-
212
- ### `<snice-plan>`
213
-
214
- | Attribute | Type | Description |
215
- |-----------|------|-------------|
216
- | `name` | `string` | Plan name |
217
- | `price` | `string` | Monthly price |
218
- | `annual-price` | `string` | Annual price (enables billing toggle) |
219
- | `period` | `string` | Billing period label (default: '/mo') |
220
- | `currency` | `string` | Currency symbol (default: '$') |
221
- | `description` | `string` | Plan description |
222
- | `cta` | `string` | Call-to-action button text |
223
- | `cta-variant` | `'primary' \| 'secondary' \| 'outline'` | Button variant |
224
- | `highlighted` | `boolean` | Emphasize this plan |
225
- | `badge` | `string` | Badge text (e.g. 'Popular') |
226
-
227
- ### `<snice-feature>`
170
+ ## Accessibility
228
171
 
229
- | Attribute | Type | Description |
230
- |-----------|------|-------------|
231
- | `excluded` | `boolean` | Mark feature as not included (shows X instead of check) |
232
- | `value` | `string` | Custom display value (e.g. '1GB', '100GB') |
172
+ - Tab through plans and activate CTA buttons with Enter or Space
173
+ - Plan names, prices, and feature inclusion states are announced to screen readers
174
+ - The billing toggle is keyboard accessible with `role="radiogroup"`
175
+ - Highlighted plans are visually distinguished through styling
233
176
 
234
- The text content of `<snice-feature>` is used as the feature name.
177
+ ## Data Types
235
178
 
236
- ## Accessibility
179
+ ```typescript
180
+ interface PricingPlan {
181
+ name: string;
182
+ price: number;
183
+ annualPrice?: number; // Enables billing toggle when set
184
+ period?: string; // e.g. '/mo' (default: '/mo')
185
+ currency?: string; // e.g. '$' (default: '$')
186
+ description?: string;
187
+ features: PricingFeature[];
188
+ cta: string; // Button text
189
+ ctaVariant?: 'primary' | 'secondary' | 'outline';
190
+ highlighted?: boolean;
191
+ badge?: string;
192
+ }
237
193
 
238
- - **Keyboard support**: Tab through plans and activate CTA buttons with Enter or Space
239
- - **Screen readers**: Plan names, prices, and feature inclusion states are announced
240
- - **Highlighted plans**: Visually emphasized plans are distinguishable through styling, not color alone
241
- - **Billing toggle**: The monthly/annual toggle is keyboard accessible
194
+ interface PricingFeature {
195
+ name: string;
196
+ included: boolean | string; // true/false for check/x, string for custom value
197
+ }
198
+ ```