snice 4.28.0 → 4.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/adapters/react/action-bar.d.ts +30 -0
  2. package/adapters/react/action-bar.d.ts.map +1 -0
  3. package/adapters/react/action-bar.js +24 -0
  4. package/adapters/react/action-bar.js.map +1 -0
  5. package/adapters/react/action-bar.tsx +38 -0
  6. package/adapters/react/binpack.d.ts +35 -0
  7. package/adapters/react/binpack.d.ts.map +1 -0
  8. package/adapters/react/binpack.js +24 -0
  9. package/adapters/react/binpack.js.map +1 -0
  10. package/adapters/react/binpack.tsx +43 -0
  11. package/adapters/react/components.d.ts +4 -0
  12. package/adapters/react/components.d.ts.map +1 -1
  13. package/adapters/react/components.js +2 -0
  14. package/adapters/react/components.js.map +1 -1
  15. package/adapters/react/components.ts +4 -0
  16. package/adapters/react/useRequestHandler.d.ts +56 -0
  17. package/adapters/react/useRequestHandler.js +103 -0
  18. package/adapters/react/useRequestHandler.js.map +1 -0
  19. package/dist/cdn/accordion/snice-accordion.js +1 -1
  20. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  21. package/dist/cdn/action-bar/README.md +27 -0
  22. package/dist/cdn/action-bar/snice-action-bar.js +249 -0
  23. package/dist/cdn/action-bar/snice-action-bar.js.map +1 -0
  24. package/dist/cdn/action-bar/snice-action-bar.min.js +12 -0
  25. package/dist/cdn/action-bar/snice-action-bar.min.js.map +1 -0
  26. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  27. package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
  28. package/dist/cdn/alert/snice-alert.js +1 -1
  29. package/dist/cdn/alert/snice-alert.min.js +1 -1
  30. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  31. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  32. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  33. package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
  34. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  35. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  36. package/dist/cdn/availability/snice-availability.js +1 -1
  37. package/dist/cdn/availability/snice-availability.min.js +1 -1
  38. package/dist/cdn/avatar/snice-avatar.js +1 -1
  39. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  40. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  41. package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
  42. package/dist/cdn/badge/snice-badge.js +1 -1
  43. package/dist/cdn/badge/snice-badge.min.js +1 -1
  44. package/dist/cdn/banner/snice-banner.js +1 -1
  45. package/dist/cdn/banner/snice-banner.min.js +1 -1
  46. package/dist/cdn/binpack/README.md +27 -0
  47. package/dist/cdn/binpack/snice-binpack.js +1037 -0
  48. package/dist/cdn/binpack/snice-binpack.js.map +1 -0
  49. package/dist/cdn/binpack/snice-binpack.min.js +13 -0
  50. package/dist/cdn/binpack/snice-binpack.min.js.map +1 -0
  51. package/dist/cdn/book/snice-book.js +1 -1
  52. package/dist/cdn/book/snice-book.min.js +1 -1
  53. package/dist/cdn/booking/snice-booking.js +1 -1
  54. package/dist/cdn/booking/snice-booking.min.js +1 -1
  55. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  56. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  57. package/dist/cdn/button/README.md +1 -1
  58. package/dist/cdn/button/snice-button.js +2 -2
  59. package/dist/cdn/button/snice-button.js.map +1 -1
  60. package/dist/cdn/button/snice-button.min.js +2 -2
  61. package/dist/cdn/button/snice-button.min.js.map +1 -1
  62. package/dist/cdn/calendar/snice-calendar.js +1 -1
  63. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  64. package/dist/cdn/camera/snice-camera.js +1 -1
  65. package/dist/cdn/camera/snice-camera.min.js +1 -1
  66. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  67. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  68. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  69. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  70. package/dist/cdn/card/snice-card.js +1 -1
  71. package/dist/cdn/card/snice-card.min.js +1 -1
  72. package/dist/cdn/carousel/snice-carousel.js +1 -1
  73. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  74. package/dist/cdn/cart/snice-cart.js +1 -1
  75. package/dist/cdn/cart/snice-cart.min.js +1 -1
  76. package/dist/cdn/chart/snice-chart.js +1 -1
  77. package/dist/cdn/chart/snice-chart.min.js +1 -1
  78. package/dist/cdn/chat/snice-chat.js +1 -1
  79. package/dist/cdn/chat/snice-chat.min.js +1 -1
  80. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  81. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  82. package/dist/cdn/chip/snice-chip.js +1 -1
  83. package/dist/cdn/chip/snice-chip.min.js +1 -1
  84. package/dist/cdn/code-block/snice-code-block.js +1 -1
  85. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  86. package/dist/cdn/color-display/snice-color-display.js +1 -1
  87. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  88. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  89. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  90. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  91. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  92. package/dist/cdn/comments/snice-comments.js +1 -1
  93. package/dist/cdn/comments/snice-comments.min.js +1 -1
  94. package/dist/cdn/countdown/snice-countdown.js +1 -1
  95. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  96. package/dist/cdn/cropper/snice-cropper.js +1 -1
  97. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  98. package/dist/cdn/data-card/snice-data-card.js +1 -1
  99. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  100. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  101. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  102. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  103. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
  104. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  105. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
  106. package/dist/cdn/diff/snice-diff.js +1 -1
  107. package/dist/cdn/diff/snice-diff.min.js +1 -1
  108. package/dist/cdn/divider/snice-divider.js +1 -1
  109. package/dist/cdn/divider/snice-divider.min.js +1 -1
  110. package/dist/cdn/doc/snice-doc.js +1 -1
  111. package/dist/cdn/doc/snice-doc.min.js +1 -1
  112. package/dist/cdn/draw/snice-draw.js +1 -1
  113. package/dist/cdn/draw/snice-draw.min.js +1 -1
  114. package/dist/cdn/drawer/snice-drawer.js +1 -1
  115. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  116. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  117. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  118. package/dist/cdn/estimate/snice-estimate.js +1 -1
  119. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  120. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  121. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  122. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  123. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  124. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  125. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  126. package/dist/cdn/flow/snice-flow.js +1 -1
  127. package/dist/cdn/flow/snice-flow.min.js +1 -1
  128. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  129. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  130. package/dist/cdn/funnel/snice-funnel.js +1 -1
  131. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  132. package/dist/cdn/gantt/snice-gantt.js +1 -1
  133. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  134. package/dist/cdn/gauge/snice-gauge.js +1 -1
  135. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  136. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  137. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  138. package/dist/cdn/image/snice-image.js +1 -1
  139. package/dist/cdn/image/snice-image.min.js +1 -1
  140. package/dist/cdn/input/snice-input.js +1 -1
  141. package/dist/cdn/input/snice-input.min.js +1 -1
  142. package/dist/cdn/invoice/snice-invoice.js +1 -1
  143. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  144. package/dist/cdn/kanban/snice-kanban.js +1 -1
  145. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  146. package/dist/cdn/key-value/snice-key-value.js +1 -1
  147. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  148. package/dist/cdn/kpi/snice-kpi.js +1 -1
  149. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  150. package/dist/cdn/layout/snice-layout.js +1 -1
  151. package/dist/cdn/layout/snice-layout.min.js +1 -1
  152. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  153. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  154. package/dist/cdn/link/snice-link.js +1 -1
  155. package/dist/cdn/link/snice-link.min.js +1 -1
  156. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  157. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  158. package/dist/cdn/list/snice-list.js +1 -1
  159. package/dist/cdn/list/snice-list.min.js +1 -1
  160. package/dist/cdn/location/snice-location.js +1 -1
  161. package/dist/cdn/location/snice-location.min.js +1 -1
  162. package/dist/cdn/login/README.md +2 -2
  163. package/dist/cdn/login/snice-login.js +2 -2
  164. package/dist/cdn/login/snice-login.js.map +1 -1
  165. package/dist/cdn/login/snice-login.min.js +2 -2
  166. package/dist/cdn/login/snice-login.min.js.map +1 -1
  167. package/dist/cdn/map/snice-map.js +1 -1
  168. package/dist/cdn/map/snice-map.min.js +1 -1
  169. package/dist/cdn/markdown/snice-markdown.js +1 -1
  170. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  171. package/dist/cdn/masonry/snice-masonry.js +1 -1
  172. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  173. package/dist/cdn/menu/snice-menu.js +1 -1
  174. package/dist/cdn/menu/snice-menu.min.js +1 -1
  175. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  176. package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
  177. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  178. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  179. package/dist/cdn/modal/snice-modal.js +1 -1
  180. package/dist/cdn/modal/snice-modal.min.js +1 -1
  181. package/dist/cdn/music-player/snice-music-player.js +1 -1
  182. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  183. package/dist/cdn/nav/snice-nav.js +1 -1
  184. package/dist/cdn/nav/snice-nav.min.js +1 -1
  185. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  186. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  187. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  188. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  189. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  190. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  191. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  192. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  193. package/dist/cdn/pagination/snice-pagination.js +1 -1
  194. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  195. package/dist/cdn/paint/snice-paint.js +1 -1
  196. package/dist/cdn/paint/snice-paint.min.js +1 -1
  197. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  198. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  199. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  200. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  201. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  202. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  203. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  204. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  205. package/dist/cdn/product-card/snice-product-card.js +1 -1
  206. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  207. package/dist/cdn/progress/snice-progress.js +1 -1
  208. package/dist/cdn/progress/snice-progress.min.js +1 -1
  209. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  210. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  211. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  212. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  213. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  214. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  215. package/dist/cdn/radio/snice-radio.js +1 -1
  216. package/dist/cdn/radio/snice-radio.min.js +1 -1
  217. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  218. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  219. package/dist/cdn/rating/snice-rating.js +1 -1
  220. package/dist/cdn/rating/snice-rating.min.js +1 -1
  221. package/dist/cdn/receipt/snice-receipt.js +1 -1
  222. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  223. package/dist/cdn/recipe/snice-recipe.js +1 -1
  224. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  225. package/dist/cdn/runtime/README.md +2 -2
  226. package/dist/cdn/runtime/snice-runtime.esm.js +73 -5
  227. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  228. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  229. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  230. package/dist/cdn/runtime/snice-runtime.js +73 -4
  231. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  232. package/dist/cdn/runtime/snice-runtime.min.js +7 -7
  233. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  234. package/dist/cdn/sankey/snice-sankey.js +1 -1
  235. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  236. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  237. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  238. package/dist/cdn/select/snice-select.js +1 -1
  239. package/dist/cdn/select/snice-select.min.js +1 -1
  240. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  241. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  242. package/dist/cdn/slider/snice-slider.js +1 -1
  243. package/dist/cdn/slider/snice-slider.min.js +1 -1
  244. package/dist/cdn/sortable/snice-sortable.js +1 -1
  245. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  246. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  247. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  248. package/dist/cdn/spinner/snice-spinner.js +1 -1
  249. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  250. package/dist/cdn/split-button/snice-split-button.js +1 -1
  251. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  252. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  253. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  254. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  255. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  256. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  257. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  258. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  259. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  260. package/dist/cdn/step-input/snice-step-input.js +1 -1
  261. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  262. package/dist/cdn/stepper/snice-stepper.js +1 -1
  263. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  264. package/dist/cdn/switch/snice-switch.js +1 -1
  265. package/dist/cdn/switch/snice-switch.min.js +1 -1
  266. package/dist/cdn/table/README.md +1 -1
  267. package/dist/cdn/table/snice-table.js +2 -2
  268. package/dist/cdn/table/snice-table.js.map +1 -1
  269. package/dist/cdn/table/snice-table.min.js +2 -2
  270. package/dist/cdn/table/snice-table.min.js.map +1 -1
  271. package/dist/cdn/tabs/snice-tabs.js +1 -1
  272. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  273. package/dist/cdn/tag/snice-tag.js +1 -1
  274. package/dist/cdn/tag/snice-tag.min.js +1 -1
  275. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  276. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  277. package/dist/cdn/terminal/snice-terminal.js +1 -1
  278. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  279. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  280. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  281. package/dist/cdn/textarea/snice-textarea.js +1 -1
  282. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  283. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  284. package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
  285. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  286. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  287. package/dist/cdn/timeline/snice-timeline.js +1 -1
  288. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  289. package/dist/cdn/timer/snice-timer.js +1 -1
  290. package/dist/cdn/timer/snice-timer.min.js +1 -1
  291. package/dist/cdn/toast/snice-toast.js +1 -1
  292. package/dist/cdn/toast/snice-toast.min.js +1 -1
  293. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  294. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  295. package/dist/cdn/tree/snice-tree.js +1 -1
  296. package/dist/cdn/tree/snice-tree.min.js +1 -1
  297. package/dist/cdn/treemap/snice-treemap.js +1 -1
  298. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  299. package/dist/cdn/user-card/snice-user-card.js +1 -1
  300. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  301. package/dist/cdn/video-player/snice-video-player.js +1 -1
  302. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  303. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  304. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  305. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  306. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  307. package/dist/cdn/weather/snice-weather.js +1 -1
  308. package/dist/cdn/weather/snice-weather.min.js +1 -1
  309. package/dist/cdn/work-order/snice-work-order.js +1 -1
  310. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  311. package/dist/components/action-bar/snice-action-bar.d.ts +22 -0
  312. package/dist/components/action-bar/snice-action-bar.js +182 -0
  313. package/dist/components/action-bar/snice-action-bar.js.map +1 -0
  314. package/dist/components/action-bar/snice-action-bar.types.d.ts +17 -0
  315. package/dist/components/binpack/snice-binpack.d.ts +82 -0
  316. package/dist/components/binpack/snice-binpack.js +970 -0
  317. package/dist/components/binpack/snice-binpack.js.map +1 -0
  318. package/dist/components/binpack/snice-binpack.types.d.ts +52 -0
  319. package/dist/components/button/snice-button.js +1 -1
  320. package/dist/components/button/snice-button.js.map +1 -1
  321. package/dist/create-request-handler.d.ts +42 -0
  322. package/dist/index.cjs +70 -1
  323. package/dist/index.cjs.map +1 -1
  324. package/dist/index.d.ts +2 -0
  325. package/dist/index.esm.js +70 -2
  326. package/dist/index.esm.js.map +1 -1
  327. package/dist/index.iife.js +70 -1
  328. package/dist/index.iife.js.map +1 -1
  329. package/dist/react/useRequestHandler.d.ts +56 -0
  330. package/dist/react/useRequestHandler.js +103 -0
  331. package/dist/react/useRequestHandler.js.map +1 -0
  332. package/dist/symbols.cjs +1 -1
  333. package/dist/symbols.esm.js +1 -1
  334. package/dist/transitions.cjs +1 -1
  335. package/dist/transitions.esm.js +1 -1
  336. package/docs/ai/DEVELOPMENT.md +1 -1
  337. package/docs/ai/components/accordion.md +46 -80
  338. package/docs/ai/components/action-bar.md +75 -0
  339. package/docs/ai/components/activity-feed.md +7 -7
  340. package/docs/ai/components/alert.md +26 -44
  341. package/docs/ai/components/app-tiles.md +34 -39
  342. package/docs/ai/components/approval-flow.md +1 -1
  343. package/docs/ai/components/audio-recorder.md +35 -67
  344. package/docs/ai/components/availability.md +13 -34
  345. package/docs/ai/components/avatar-group.md +26 -13
  346. package/docs/ai/components/avatar.md +52 -36
  347. package/docs/ai/components/badge.md +21 -32
  348. package/docs/ai/components/banner.md +21 -43
  349. package/docs/ai/components/binpack.md +89 -0
  350. package/docs/ai/components/book.md +25 -23
  351. package/docs/ai/components/booking.md +31 -36
  352. package/docs/ai/components/breadcrumbs.md +36 -11
  353. package/docs/ai/components/button.md +33 -44
  354. package/docs/ai/components/calendar.md +37 -70
  355. package/docs/ai/components/camera-annotate.md +31 -64
  356. package/docs/ai/components/camera.md +38 -120
  357. package/docs/ai/components/candlestick.md +32 -52
  358. package/docs/ai/components/card.md +20 -30
  359. package/docs/ai/components/carousel.md +32 -32
  360. package/docs/ai/components/cart.md +24 -29
  361. package/docs/ai/components/chart.md +29 -114
  362. package/docs/ai/components/chat.md +38 -75
  363. package/docs/ai/components/checkbox.md +22 -41
  364. package/docs/ai/components/chip.md +18 -54
  365. package/docs/ai/components/code-block.md +57 -178
  366. package/docs/ai/components/color-display.md +12 -32
  367. package/docs/ai/components/color-picker.md +17 -39
  368. package/docs/ai/components/command-palette.md +49 -71
  369. package/docs/ai/components/comments.md +55 -36
  370. package/docs/ai/components/countdown.md +28 -30
  371. package/docs/ai/components/cropper.md +33 -33
  372. package/docs/ai/components/data-card.md +20 -14
  373. package/docs/ai/components/date-picker.md +40 -47
  374. package/docs/ai/components/date-range-picker.md +31 -15
  375. package/docs/ai/components/date-time-picker.md +23 -46
  376. package/docs/ai/components/diff.md +30 -31
  377. package/docs/ai/components/divider.md +17 -47
  378. package/docs/ai/components/doc.md +43 -68
  379. package/docs/ai/components/draw.md +35 -87
  380. package/docs/ai/components/drawer.md +48 -77
  381. package/docs/ai/components/empty-state.md +10 -44
  382. package/docs/ai/components/estimate.md +33 -58
  383. package/docs/ai/components/file-gallery.md +48 -100
  384. package/docs/ai/components/file-upload.md +17 -53
  385. package/docs/ai/components/flip-card.md +31 -23
  386. package/docs/ai/components/flow.md +37 -65
  387. package/docs/ai/components/form-builder.md +35 -75
  388. package/docs/ai/components/form-layout.md +10 -20
  389. package/docs/ai/components/funnel.md +33 -48
  390. package/docs/ai/components/gantt.md +27 -23
  391. package/docs/ai/components/gauge.md +16 -17
  392. package/docs/ai/components/heatmap.md +21 -21
  393. package/docs/ai/components/image.md +7 -13
  394. package/docs/ai/components/input.md +38 -70
  395. package/docs/ai/components/invoice.md +35 -36
  396. package/docs/ai/components/kanban.md +32 -61
  397. package/docs/ai/components/key-value.md +32 -16
  398. package/docs/ai/components/kpi.md +38 -73
  399. package/docs/ai/components/layout.md +29 -23
  400. package/docs/ai/components/leaderboard.md +28 -37
  401. package/docs/ai/components/link-preview.md +12 -18
  402. package/docs/ai/components/link.md +10 -7
  403. package/docs/ai/components/list.md +21 -5
  404. package/docs/ai/components/location.md +21 -25
  405. package/docs/ai/components/login.md +14 -9
  406. package/docs/ai/components/map.md +27 -33
  407. package/docs/ai/components/markdown.md +20 -24
  408. package/docs/ai/components/masonry.md +10 -14
  409. package/docs/ai/components/mentions.md +26 -12
  410. package/docs/ai/components/menu.md +54 -52
  411. package/docs/ai/components/message-strip.md +20 -20
  412. package/docs/ai/components/metric-table.md +14 -21
  413. package/docs/ai/components/modal.md +27 -18
  414. package/docs/ai/components/music-player.md +49 -41
  415. package/docs/ai/components/nav.md +34 -31
  416. package/docs/ai/components/network-graph.md +27 -42
  417. package/docs/ai/components/notification-center.md +31 -33
  418. package/docs/ai/components/order-tracker.md +36 -27
  419. package/docs/ai/components/org-chart.md +36 -31
  420. package/docs/ai/components/pagination.md +34 -26
  421. package/docs/ai/components/paint.md +53 -91
  422. package/docs/ai/components/pdf-viewer.md +35 -36
  423. package/docs/ai/components/permission-matrix.md +26 -31
  424. package/docs/ai/components/podcast-player.md +64 -70
  425. package/docs/ai/components/pricing-table.md +37 -48
  426. package/docs/ai/components/product-card.md +58 -41
  427. package/docs/ai/components/progress-ring.md +20 -24
  428. package/docs/ai/components/progress.md +28 -45
  429. package/docs/ai/components/qr-code.md +25 -27
  430. package/docs/ai/components/qr-reader.md +20 -23
  431. package/docs/ai/components/radio.md +17 -15
  432. package/docs/ai/components/range-slider.md +22 -11
  433. package/docs/ai/components/rating.md +29 -33
  434. package/docs/ai/components/receipt.md +50 -127
  435. package/docs/ai/components/recipe.md +44 -42
  436. package/docs/ai/components/sankey.md +21 -30
  437. package/docs/ai/components/scheduler.md +29 -41
  438. package/docs/ai/components/segmented-control.md +11 -15
  439. package/docs/ai/components/select.md +58 -102
  440. package/docs/ai/components/skeleton.md +16 -30
  441. package/docs/ai/components/slider.md +26 -20
  442. package/docs/ai/components/sortable.md +25 -27
  443. package/docs/ai/components/sparkline.md +21 -17
  444. package/docs/ai/components/spinner.md +9 -5
  445. package/docs/ai/components/split-button.md +10 -13
  446. package/docs/ai/components/split-pane.md +19 -14
  447. package/docs/ai/components/spotlight.md +31 -26
  448. package/docs/ai/components/spreadsheet.md +51 -97
  449. package/docs/ai/components/stat-group.md +9 -19
  450. package/docs/ai/components/step-input.md +17 -15
  451. package/docs/ai/components/stepper.md +14 -15
  452. package/docs/ai/components/switch.md +15 -9
  453. package/docs/ai/components/table.md +24 -84
  454. package/docs/ai/components/tabs.md +18 -10
  455. package/docs/ai/components/tag-input.md +18 -29
  456. package/docs/ai/components/tag.md +10 -22
  457. package/docs/ai/components/terminal.md +9 -9
  458. package/docs/ai/components/testimonial.md +9 -19
  459. package/docs/ai/components/textarea.md +15 -16
  460. package/docs/ai/components/theme.md +3 -3
  461. package/docs/ai/components/time-picker.md +30 -49
  462. package/docs/ai/components/time-range-picker.md +16 -15
  463. package/docs/ai/components/timeline.md +5 -4
  464. package/docs/ai/components/timer.md +8 -8
  465. package/docs/ai/components/toast.md +24 -18
  466. package/docs/ai/components/tooltip.md +11 -22
  467. package/docs/ai/components/tree.md +9 -9
  468. package/docs/ai/components/treemap.md +14 -13
  469. package/docs/ai/components/user-card.md +21 -27
  470. package/docs/ai/components/video-player.md +35 -52
  471. package/docs/ai/components/virtual-scroller.md +1 -1
  472. package/docs/ai/components/waterfall.md +17 -16
  473. package/docs/ai/components/weather.md +19 -34
  474. package/docs/ai/components/work-order.md +58 -134
  475. package/docs/ai/patterns.md +63 -0
  476. package/docs/components/accordion.md +72 -151
  477. package/docs/components/action-bar.md +185 -0
  478. package/docs/components/activity-feed.md +9 -14
  479. package/docs/components/alert.md +17 -109
  480. package/docs/components/app-tiles.md +58 -43
  481. package/docs/components/approval-flow.md +8 -14
  482. package/docs/components/audio-recorder.md +45 -51
  483. package/docs/components/availability.md +30 -45
  484. package/docs/components/avatar-group.md +34 -14
  485. package/docs/components/avatar.md +20 -55
  486. package/docs/components/badge.md +53 -470
  487. package/docs/components/banner.md +44 -30
  488. package/docs/components/binpack.md +208 -0
  489. package/docs/components/book.md +78 -57
  490. package/docs/components/booking.md +35 -87
  491. package/docs/components/breadcrumbs.md +74 -448
  492. package/docs/components/button.md +72 -603
  493. package/docs/components/calendar.md +77 -261
  494. package/docs/components/camera-annotate.md +44 -96
  495. package/docs/components/camera.md +94 -333
  496. package/docs/components/candlestick.md +79 -116
  497. package/docs/components/card.md +51 -689
  498. package/docs/components/carousel.md +29 -76
  499. package/docs/components/cart.md +44 -136
  500. package/docs/components/chart.md +95 -438
  501. package/docs/components/chat.md +175 -439
  502. package/docs/components/checkbox.md +52 -609
  503. package/docs/components/chip.md +45 -574
  504. package/docs/components/code-block.md +157 -421
  505. package/docs/components/color-display.md +45 -54
  506. package/docs/components/color-picker.md +103 -36
  507. package/docs/components/command-palette.md +98 -92
  508. package/docs/components/comments.md +16 -10
  509. package/docs/components/countdown.md +15 -20
  510. package/docs/components/cropper.md +14 -16
  511. package/docs/components/data-card.md +16 -15
  512. package/docs/components/date-picker.md +45 -25
  513. package/docs/components/date-range-picker.md +140 -87
  514. package/docs/components/date-time-picker.md +25 -28
  515. package/docs/components/diff.md +22 -17
  516. package/docs/components/divider.md +18 -20
  517. package/docs/components/doc.md +105 -197
  518. package/docs/components/draw.md +117 -223
  519. package/docs/components/drawer.md +113 -478
  520. package/docs/components/empty-state.md +13 -29
  521. package/docs/components/estimate.md +58 -118
  522. package/docs/components/file-gallery.md +123 -495
  523. package/docs/components/file-upload.md +36 -123
  524. package/docs/components/flip-card.md +30 -34
  525. package/docs/components/flow.md +74 -89
  526. package/docs/components/form-builder.md +59 -86
  527. package/docs/components/form-layout.md +21 -31
  528. package/docs/components/funnel.md +21 -22
  529. package/docs/components/gantt.md +5 -5
  530. package/docs/components/gauge.md +5 -23
  531. package/docs/components/heatmap.md +13 -55
  532. package/docs/components/image.md +28 -32
  533. package/docs/components/input.md +25 -14
  534. package/docs/components/invoice.md +34 -33
  535. package/docs/components/kanban.md +99 -394
  536. package/docs/components/key-value.md +22 -12
  537. package/docs/components/kpi.md +41 -112
  538. package/docs/components/layout.md +7 -13
  539. package/docs/components/leaderboard.md +52 -76
  540. package/docs/components/link-preview.md +20 -16
  541. package/docs/components/link.md +22 -19
  542. package/docs/components/list.md +44 -26
  543. package/docs/components/location.md +9 -13
  544. package/docs/components/login.md +42 -36
  545. package/docs/components/map.md +24 -46
  546. package/docs/components/markdown.md +14 -25
  547. package/docs/components/masonry.md +15 -13
  548. package/docs/components/mentions.md +36 -25
  549. package/docs/components/menu.md +39 -46
  550. package/docs/components/message-strip.md +15 -51
  551. package/docs/components/metric-table.md +50 -72
  552. package/docs/components/modal.md +32 -43
  553. package/docs/components/music-player.md +41 -49
  554. package/docs/components/nav.md +23 -13
  555. package/docs/components/network-graph.md +14 -13
  556. package/docs/components/notification-center.md +68 -172
  557. package/docs/components/order-tracker.md +72 -117
  558. package/docs/components/org-chart.md +58 -207
  559. package/docs/components/pagination.md +67 -89
  560. package/docs/components/paint.md +86 -172
  561. package/docs/components/pdf-viewer.md +46 -151
  562. package/docs/components/permission-matrix.md +61 -112
  563. package/docs/components/podcast-player.md +41 -119
  564. package/docs/components/pricing-table.md +104 -147
  565. package/docs/components/product-card.md +94 -197
  566. package/docs/components/progress-ring.md +29 -32
  567. package/docs/components/progress.md +30 -61
  568. package/docs/components/qr-code.md +53 -61
  569. package/docs/components/qr-reader.md +53 -42
  570. package/docs/components/radio.md +42 -40
  571. package/docs/components/range-slider.md +41 -30
  572. package/docs/components/rating.md +50 -84
  573. package/docs/components/receipt.md +91 -129
  574. package/docs/components/recipe.md +107 -216
  575. package/docs/components/sankey.md +47 -83
  576. package/docs/components/scheduler.md +81 -184
  577. package/docs/components/segmented-control.md +48 -40
  578. package/docs/components/select.md +107 -129
  579. package/docs/components/skeleton.md +33 -47
  580. package/docs/components/slider.md +49 -53
  581. package/docs/components/sortable.md +43 -186
  582. package/docs/components/sparkline.md +26 -25
  583. package/docs/components/spinner.md +32 -37
  584. package/docs/components/split-button.md +43 -23
  585. package/docs/components/split-pane.md +41 -58
  586. package/docs/components/spotlight.md +53 -145
  587. package/docs/components/spreadsheet.md +84 -307
  588. package/docs/components/stat-group.md +27 -61
  589. package/docs/components/step-input.md +44 -41
  590. package/docs/components/stepper.md +55 -89
  591. package/docs/components/switch.md +39 -39
  592. package/docs/components/table.md +27 -32
  593. package/docs/components/tabs.md +36 -27
  594. package/docs/components/tag-input.md +50 -176
  595. package/docs/components/tag.md +12 -50
  596. package/docs/components/terminal.md +32 -37
  597. package/docs/components/testimonial.md +24 -81
  598. package/docs/components/textarea.md +9 -14
  599. package/docs/components/theme.md +10 -23
  600. package/docs/components/time-picker.md +48 -72
  601. package/docs/components/time-range-picker.md +22 -41
  602. package/docs/components/timeline.md +7 -14
  603. package/docs/components/timer.md +16 -32
  604. package/docs/components/toast.md +19 -45
  605. package/docs/components/tooltip.md +13 -115
  606. package/docs/components/tree.md +2 -19
  607. package/docs/components/treemap.md +19 -43
  608. package/docs/components/user-card.md +13 -22
  609. package/docs/components/video-player.md +53 -227
  610. package/docs/components/virtual-scroller.md +11 -44
  611. package/docs/components/waterfall.md +58 -137
  612. package/docs/components/weather.md +94 -153
  613. package/docs/components/work-order.md +56 -143
  614. package/docs/plans/2026-03-09-action-bar-design.md +104 -0
  615. package/docs/plans/2026-03-09-action-bar-plan.md +676 -0
  616. package/docs/plans/2026-03-10-react-integration-design.md +166 -0
  617. package/docs/request-response.md +77 -0
  618. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/recipe.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/recipe.md -->
2
2
 
3
- # Recipe Component
3
+ # Recipe
4
4
 
5
- The recipe component displays an interactive recipe card with a hero image, ingredient scaling based on serving size, step-by-step mode with per-step timers, ingredient checkboxes, and optional nutrition facts.
5
+ An interactive recipe card with ingredient scaling, step-by-step mode with per-step timers, ingredient checkboxes, and optional nutrition facts.
6
6
 
7
7
  ## Table of Contents
8
+
8
9
  - [Properties](#properties)
9
10
  - [Methods](#methods)
10
11
  - [Events](#events)
@@ -27,104 +28,53 @@ The recipe component displays an interactive recipe card with a hero image, ingr
27
28
  | `difficulty` | `'easy' \| 'medium' \| 'hard'` | `'medium'` | Difficulty level |
28
29
  | `cuisine` | `string` | `''` | Cuisine type (displayed as a tag) |
29
30
  | `variant` | `'card' \| 'full'` | `'full'` | Display variant |
30
- | `ingredients` | `RecipeIngredient[]` | `[]` | Ingredient list |
31
- | `steps` | `RecipeStep[]` | `[]` | Instruction steps |
32
- | `nutrition` | `RecipeNutrition \| null` | `null` | Nutrition facts per serving |
33
- | `tags` | `string[]` | `[]` | Recipe tags |
31
+ | `ingredients` | `RecipeIngredient[]` | `[]` | Ingredient list (JS only) |
32
+ | `steps` | `RecipeStep[]` | `[]` | Instruction steps (JS only) |
33
+ | `nutrition` | `RecipeNutrition \| null` | `null` | Nutrition facts per serving (JS only) |
34
+ | `tags` | `string[]` | `[]` | Recipe tags (JS only) |
34
35
 
35
- ### RecipeIngredient Interface
36
+ ### Type Interfaces
36
37
 
37
38
  ```typescript
38
39
  interface RecipeIngredient {
39
40
  name: string;
40
41
  amount: number;
41
42
  unit: string;
42
- group?: string; // Group header for ingredient sections (e.g. 'Sauce', 'Dough')
43
+ group?: string; // Group header (e.g. 'Sauce', 'Dough')
43
44
  }
44
- ```
45
45
 
46
- ### RecipeStep Interface
47
-
48
- ```typescript
49
46
  interface RecipeStep {
50
47
  text: string;
51
48
  image?: string; // Step photo URL
52
49
  tip?: string; // Pro tip text
53
- time?: number; // Timer duration in minutes (shows inline timer button)
50
+ time?: number; // Timer duration in minutes
54
51
  }
55
- ```
56
-
57
- ### RecipeNutrition Interface
58
52
 
59
- ```typescript
60
53
  interface RecipeNutrition {
61
54
  calories: number;
62
- protein: number; // in grams
63
- carbs: number; // in grams
64
- fat: number; // in grams
65
- fiber?: number; // in grams
66
- sodium?: number; // in mg
55
+ protein: number; // grams
56
+ carbs: number; // grams
57
+ fat: number; // grams
58
+ fiber?: number; // grams
59
+ sodium?: number; // mg
67
60
  }
68
61
  ```
69
62
 
70
63
  ## Methods
71
64
 
72
- #### `setServings(count: number): void`
73
- Adjust the serving count. All ingredient quantities scale proportionally.
74
-
75
- ```typescript
76
- recipe.setServings(8); // Doubles ingredients for a 4-serving base recipe
77
- ```
78
-
79
- #### `print(): void`
80
- Open a print-friendly view of the recipe.
81
-
82
- ```typescript
83
- recipe.print();
84
- ```
85
-
86
- #### `reset(): void`
87
- Reset all checked ingredients, completed steps, running timers, and serving count back to defaults.
88
-
89
- ```typescript
90
- recipe.reset();
91
- ```
65
+ | Method | Arguments | Description |
66
+ |--------|-----------|-------------|
67
+ | `setServings()` | `count: number` | Adjust serving count; all ingredient quantities scale proportionally |
68
+ | `print()` | — | Open a print-friendly view |
69
+ | `reset()` | | Reset checked ingredients, completed steps, timers, and serving count |
92
70
 
93
71
  ## Events
94
72
 
95
- #### `recipe-serving-change`
96
- Fired when the serving count changes.
97
-
98
- **Event Detail:**
99
- ```typescript
100
- {
101
- servings: number; // New serving count
102
- previousServings: number; // Previous serving count
103
- }
104
- ```
105
-
106
- #### `recipe-step-complete`
107
- Fired when a step is marked as complete or incomplete.
108
-
109
- **Event Detail:**
110
- ```typescript
111
- {
112
- stepIndex: number; // Zero-based step index
113
- completed: boolean; // Whether the step is now completed
114
- }
115
- ```
116
-
117
- #### `recipe-ingredient-check`
118
- Fired when an ingredient checkbox is toggled.
119
-
120
- **Event Detail:**
121
- ```typescript
122
- {
123
- ingredientIndex: number; // Zero-based ingredient index
124
- checked: boolean; // Whether the ingredient is now checked
125
- ingredient: RecipeIngredient; // The ingredient object
126
- }
127
- ```
73
+ | Event | Detail | Description |
74
+ |-------|--------|-------------|
75
+ | `recipe-serving-change` | `{ servings: number, previousServings: number }` | Serving count changed |
76
+ | `recipe-step-complete` | `{ stepIndex: number, completed: boolean }` | Step marked complete or incomplete |
77
+ | `recipe-ingredient-check` | `{ ingredientIndex: number, checked: boolean, ingredient: RecipeIngredient }` | Ingredient checkbox toggled |
128
78
 
129
79
  ## CSS Parts
130
80
 
@@ -132,76 +82,71 @@ Fired when an ingredient checkbox is toggled.
132
82
  |------|-------------|
133
83
  | `container` | The outer recipe container |
134
84
  | `hero` | The hero image area |
135
- | `header` | Title and description section |
85
+ | `header` | Title, description, and author section |
136
86
  | `meta` | Metadata bar (prep time, cook time, servings, difficulty) |
137
87
  | `content` | Main content area (ingredients + steps) |
138
88
  | `ingredients` | Ingredients section |
139
89
  | `steps` | Steps/instructions section |
140
90
  | `nutrition` | Nutrition facts panel |
141
- | `controls` | Serving size controls |
91
+ | `controls` | Bottom control buttons (step-by-step, print, reset) |
142
92
 
143
93
  ## Basic Usage
144
94
 
95
+ ```typescript
96
+ import 'snice/components/recipe/snice-recipe';
97
+ ```
98
+
145
99
  ```html
146
100
  <snice-recipe id="my-recipe"></snice-recipe>
147
-
148
- <script type="module">
149
- import 'snice/components/recipe/snice-recipe';
150
-
151
- const recipe = document.getElementById('my-recipe');
152
- recipe.title = 'Pasta Carbonara';
153
- recipe.prepTime = 10;
154
- recipe.cookTime = 20;
155
- recipe.servings = 4;
156
- recipe.ingredients = [
157
- { name: 'Spaghetti', amount: 400, unit: 'g' },
158
- { name: 'Pancetta', amount: 200, unit: 'g' }
159
- ];
160
- recipe.steps = [
161
- { text: 'Boil pasta in salted water.', time: 10 },
162
- { text: 'Fry pancetta until crispy.' }
163
- ];
164
- </script>
165
101
  ```
166
102
 
167
103
  ```typescript
168
- import 'snice/components/recipe/snice-recipe';
104
+ const recipe = document.getElementById('my-recipe');
105
+ recipe.title = 'Pasta Carbonara';
106
+ recipe.prepTime = 10;
107
+ recipe.cookTime = 20;
108
+ recipe.servings = 4;
109
+ recipe.ingredients = [
110
+ { name: 'Spaghetti', amount: 400, unit: 'g' },
111
+ { name: 'Pancetta', amount: 200, unit: 'g' }
112
+ ];
113
+ recipe.steps = [
114
+ { text: 'Boil pasta in salted water.', time: 10 },
115
+ { text: 'Fry pancetta until crispy.' }
116
+ ];
169
117
  ```
170
118
 
171
119
  ## Examples
172
120
 
173
121
  ### Full Recipe with All Features
174
122
 
175
- ```html
176
- <snice-recipe id="carbonara"></snice-recipe>
177
-
178
- <script type="module">
179
- const recipe = document.getElementById('carbonara');
180
- recipe.title = 'Pasta Carbonara';
181
- recipe.description = 'Classic Italian pasta with a creamy egg and cheese sauce.';
182
- recipe.image = '/images/carbonara.jpg';
183
- recipe.author = 'Chef Maria';
184
- recipe.prepTime = 10;
185
- recipe.cookTime = 20;
186
- recipe.servings = 4;
187
- recipe.difficulty = 'medium';
188
- recipe.cuisine = 'Italian';
189
- recipe.tags = ['pasta', 'italian', 'quick'];
190
- recipe.ingredients = [
191
- { name: 'Spaghetti', amount: 400, unit: 'g' },
192
- { name: 'Pancetta', amount: 200, unit: 'g' },
193
- { name: 'Eggs', amount: 4, unit: '', group: 'Sauce' },
194
- { name: 'Parmesan', amount: 100, unit: 'g', group: 'Sauce' },
195
- { name: 'Black pepper', amount: 2, unit: 'tsp', group: 'Sauce' }
196
- ];
197
- recipe.steps = [
198
- { text: 'Boil pasta in salted water.', time: 10 },
199
- { text: 'Fry pancetta until crispy.', tip: 'Use medium heat to render fat slowly.' },
200
- { text: 'Mix eggs and parmesan in a bowl.' },
201
- { text: 'Combine all ingredients off heat.', tip: 'The residual heat cooks the egg without scrambling.' }
202
- ];
203
- recipe.nutrition = { calories: 650, protein: 28, carbs: 72, fat: 24, fiber: 3 };
204
- </script>
123
+ Set all properties for a complete recipe with grouped ingredients, step tips, timers, and nutrition.
124
+
125
+ ```typescript
126
+ recipe.title = 'Pasta Carbonara';
127
+ recipe.description = 'Classic Italian pasta with a creamy egg and cheese sauce.';
128
+ recipe.image = '/images/carbonara.jpg';
129
+ recipe.author = 'Chef Maria';
130
+ recipe.prepTime = 10;
131
+ recipe.cookTime = 20;
132
+ recipe.servings = 4;
133
+ recipe.difficulty = 'medium';
134
+ recipe.cuisine = 'Italian';
135
+ recipe.tags = ['pasta', 'italian', 'quick'];
136
+ recipe.ingredients = [
137
+ { name: 'Spaghetti', amount: 400, unit: 'g' },
138
+ { name: 'Pancetta', amount: 200, unit: 'g' },
139
+ { name: 'Eggs', amount: 4, unit: '', group: 'Sauce' },
140
+ { name: 'Parmesan', amount: 100, unit: 'g', group: 'Sauce' },
141
+ { name: 'Black pepper', amount: 2, unit: 'tsp', group: 'Sauce' }
142
+ ];
143
+ recipe.steps = [
144
+ { text: 'Boil pasta in salted water.', time: 10 },
145
+ { text: 'Fry pancetta until crispy.', tip: 'Use medium heat to render fat slowly.' },
146
+ { text: 'Mix eggs and parmesan in a bowl.' },
147
+ { text: 'Combine all ingredients off heat.', tip: 'The residual heat cooks the egg without scrambling.' }
148
+ ];
149
+ recipe.nutrition = { calories: 650, protein: 28, carbs: 72, fat: 24, fiber: 3 };
205
150
  ```
206
151
 
207
152
  ### Card Variant
@@ -210,105 +155,51 @@ Use `variant="card"` for a compact card display.
210
155
 
211
156
  ```html
212
157
  <snice-recipe id="salad" variant="card"></snice-recipe>
213
-
214
- <script type="module">
215
- const recipe = document.getElementById('salad');
216
- recipe.title = 'Caesar Salad';
217
- recipe.image = '/images/caesar-salad.jpg';
218
- recipe.prepTime = 15;
219
- recipe.cookTime = 0;
220
- recipe.servings = 2;
221
- recipe.difficulty = 'easy';
222
- recipe.cuisine = 'American';
223
- recipe.ingredients = [
224
- { name: 'Romaine lettuce', amount: 1, unit: 'head' },
225
- { name: 'Croutons', amount: 100, unit: 'g' },
226
- { name: 'Parmesan', amount: 50, unit: 'g' },
227
- { name: 'Caesar dressing', amount: 60, unit: 'ml' }
228
- ];
229
- recipe.steps = [
230
- { text: 'Wash and chop the romaine lettuce.' },
231
- { text: 'Toss with dressing, croutons, and shaved parmesan.' }
232
- ];
233
- </script>
234
158
  ```
235
159
 
236
- ### Handling Serving Size Changes
160
+ ### Grouped Ingredients
237
161
 
238
- ```html
239
- <snice-recipe id="recipe-interactive"></snice-recipe>
240
-
241
- <script type="module">
242
- const recipe = document.getElementById('recipe-interactive');
243
- recipe.title = 'Chocolate Chip Cookies';
244
- recipe.servings = 24;
245
- recipe.difficulty = 'easy';
246
- recipe.ingredients = [
247
- { name: 'All-purpose flour', amount: 280, unit: 'g' },
248
- { name: 'Butter', amount: 230, unit: 'g' },
249
- { name: 'Sugar', amount: 200, unit: 'g' },
250
- { name: 'Chocolate chips', amount: 340, unit: 'g' },
251
- { name: 'Eggs', amount: 2, unit: '' }
252
- ];
253
- recipe.steps = [
254
- { text: 'Cream butter and sugar together.' },
255
- { text: 'Add eggs and mix until combined.' },
256
- { text: 'Fold in flour and chocolate chips.' },
257
- { text: 'Scoop onto baking sheet and bake.', time: 12 }
258
- ];
259
-
260
- recipe.addEventListener('recipe-serving-change', (e) => {
261
- console.log(`Servings changed: ${e.detail.previousServings} -> ${e.detail.servings}`);
262
- });
263
-
264
- recipe.addEventListener('recipe-ingredient-check', (e) => {
265
- console.log(`${e.detail.ingredient.name}: ${e.detail.checked ? 'checked' : 'unchecked'}`);
266
- });
267
- </script>
162
+ Use the `group` property on ingredients to create sections.
163
+
164
+ ```typescript
165
+ recipe.ingredients = [
166
+ { name: 'Bread flour', amount: 300, unit: 'g', group: 'Dough' },
167
+ { name: 'Yeast', amount: 7, unit: 'g', group: 'Dough' },
168
+ { name: 'Tomatoes', amount: 400, unit: 'g', group: 'Topping' },
169
+ { name: 'Mozzarella', amount: 200, unit: 'g', group: 'Topping' }
170
+ ];
268
171
  ```
269
172
 
270
- ### Recipe with Grouped Ingredients
173
+ ### Event Handling
271
174
 
272
- ```html
273
- <snice-recipe id="pizza"></snice-recipe>
274
-
275
- <script type="module">
276
- const recipe = document.getElementById('pizza');
277
- recipe.title = 'Margherita Pizza';
278
- recipe.prepTime = 30;
279
- recipe.cookTime = 15;
280
- recipe.servings = 2;
281
- recipe.difficulty = 'medium';
282
- recipe.ingredients = [
283
- { name: 'Bread flour', amount: 300, unit: 'g', group: 'Dough' },
284
- { name: 'Yeast', amount: 7, unit: 'g', group: 'Dough' },
285
- { name: 'Water', amount: 200, unit: 'ml', group: 'Dough' },
286
- { name: 'Olive oil', amount: 2, unit: 'tbsp', group: 'Dough' },
287
- { name: 'San Marzano tomatoes', amount: 400, unit: 'g', group: 'Topping' },
288
- { name: 'Fresh mozzarella', amount: 200, unit: 'g', group: 'Topping' },
289
- { name: 'Fresh basil', amount: 10, unit: 'leaves', group: 'Topping' }
290
- ];
291
- recipe.steps = [
292
- { text: 'Mix flour, yeast, water, and olive oil. Knead for 10 minutes.', time: 10 },
293
- { text: 'Let dough rise for 1 hour.', time: 60, tip: 'Cover with a damp cloth in a warm spot.' },
294
- { text: 'Crush tomatoes and spread on stretched dough.' },
295
- { text: 'Add torn mozzarella and bake at 250C.', time: 15 },
296
- { text: 'Add fresh basil after baking.' }
297
- ];
298
- </script>
175
+ Listen for events to track user interaction with the recipe.
176
+
177
+ ```typescript
178
+ recipe.addEventListener('recipe-serving-change', (e) => {
179
+ console.log(`Servings: ${e.detail.previousServings} -> ${e.detail.servings}`);
180
+ });
181
+
182
+ recipe.addEventListener('recipe-ingredient-check', (e) => {
183
+ console.log(`${e.detail.ingredient.name}: ${e.detail.checked ? 'checked' : 'unchecked'}`);
184
+ });
185
+
186
+ recipe.addEventListener('recipe-step-complete', (e) => {
187
+ console.log(`Step ${e.detail.stepIndex}: ${e.detail.completed ? 'done' : 'undone'}`);
188
+ });
299
189
  ```
300
190
 
301
- ### Print a Recipe
191
+ ### Print
302
192
 
303
- ```html
304
- <snice-recipe id="printable-recipe"></snice-recipe>
305
- <button onclick="document.getElementById('printable-recipe').print()">Print Recipe</button>
193
+ Use `print()` to open a print-friendly view.
194
+
195
+ ```typescript
196
+ recipe.print();
306
197
  ```
307
198
 
308
199
  ## Accessibility
309
200
 
310
- - **Keyboard support**: Ingredient checkboxes and step toggles are keyboard accessible
311
- - **Serving adjuster**: The serving size controls are operable via keyboard
312
- - **Screen readers**: Step numbers, ingredient amounts, and completion states are announced
313
- - **Timer buttons**: Inline timer buttons on steps with a `time` value are keyboard focusable
314
- - **Print view**: The `print()` method produces a clean layout for printing
201
+ - Ingredient checkboxes and step toggles are keyboard accessible
202
+ - Serving size +/- buttons have `aria-label` attributes
203
+ - Step numbers announce completion state
204
+ - Timer buttons are keyboard focusable
205
+ - Print view produces a clean layout
@@ -1,28 +1,23 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/sankey.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/sankey.md -->
2
2
 
3
3
  # Sankey
4
- `<snice-sankey>`
5
4
 
6
5
  An SVG-based Sankey diagram for visualizing flow between categories.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
9
8
 
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/sankey/snice-sankey';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-sankey.min.js"></script>
19
- ```
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
 
23
18
  | Property | Type | Default | Description |
24
19
  |----------|------|---------|-------------|
25
- | `data` | `SankeyData` | `{ nodes: [], links: [] }` | Nodes and links data (set via JS) |
20
+ | `data` | `SankeyData` | `{ nodes: [], links: [] }` | Nodes and links data (JS only) |
26
21
  | `nodeWidth` (attr: `node-width`) | `number` | `20` | Width of node rectangles |
27
22
  | `nodePadding` (attr: `node-padding`) | `number` | `10` | Vertical padding between nodes |
28
23
  | `alignment` | `'left' \| 'right' \| 'center' \| 'justify'` | `'justify'` | Leaf node alignment |
@@ -30,35 +25,43 @@ import 'snice/components/sankey/snice-sankey';
30
25
  | `showValues` (attr: `show-values`) | `boolean` | `true` | Show node values |
31
26
  | `animation` | `boolean` | `false` | Animate on initial render |
32
27
 
28
+ ### Type Interfaces
29
+
30
+ ```typescript
31
+ interface SankeyData {
32
+ nodes: SankeyNode[];
33
+ links: SankeyLink[];
34
+ }
35
+
36
+ interface SankeyNode {
37
+ id: string;
38
+ label?: string; // Defaults to id
39
+ color?: string; // Auto-assigned if omitted
40
+ }
41
+
42
+ interface SankeyLink {
43
+ source: string; // Source node id
44
+ target: string; // Target node id
45
+ value: number; // Flow value (determines link width)
46
+ color?: string; // Defaults to source node color
47
+ }
48
+ ```
49
+
33
50
  ## Events
34
51
 
35
52
  | Event | Detail | Description |
36
53
  |-------|--------|-------------|
37
54
  | `sankey-node-click` | `{ node: SankeyNode }` | Node clicked |
38
55
  | `sankey-link-click` | `{ link: SankeyLink }` | Link clicked |
39
- | `sankey-hover` | `{ type: 'node' \| 'link', item } \| null` | Hover state changed |
56
+ | `sankey-hover` | `{ type: 'node' \| 'link', item } \| null` | Hover state changed (null on mouse leave) |
40
57
 
41
58
  ## CSS Parts
42
59
 
43
- Style internal elements from outside the shadow DOM using `::part()`.
44
-
45
- | Part | Element | Description |
46
- |------|---------|-------------|
47
- | `base` | `<div>` | The outer Sankey container |
48
- | `chart` | `<div>` | The SVG chart area |
49
- | `tooltip` | `<div>` | The hover tooltip showing node/link details |
50
-
51
- ```css
52
- snice-sankey::part(base) {
53
- border: 1px solid #e5e7eb;
54
- border-radius: 8px;
55
- }
56
-
57
- snice-sankey::part(tooltip) {
58
- font-size: 0.875rem;
59
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
60
- }
61
- ```
60
+ | Part | Description |
61
+ |------|-------------|
62
+ | `base` | The outer Sankey container |
63
+ | `chart` | The SVG chart area |
64
+ | `tooltip` | The hover tooltip |
62
65
 
63
66
  ## Basic Usage
64
67
 
@@ -86,9 +89,7 @@ sankey.data = {
86
89
 
87
90
  ### Energy Flow
88
91
 
89
- ```html
90
- <snice-sankey show-labels show-values animation style="height: 400px;"></snice-sankey>
91
- ```
92
+ A multi-level Sankey diagram showing energy sources flowing to consumers.
92
93
 
93
94
  ```typescript
94
95
  sankey.data = {
@@ -108,36 +109,12 @@ sankey.data = {
108
109
  };
109
110
  ```
110
111
 
111
- ### Budget Breakdown
112
-
113
- ```html
114
- <snice-sankey show-labels show-values style="height: 300px;"></snice-sankey>
115
- ```
116
-
117
- ```typescript
118
- sankey.data = {
119
- nodes: [
120
- { id: 'salary', label: 'Salary', color: '#10b981' },
121
- { id: 'housing', label: 'Housing', color: '#ef4444' },
122
- { id: 'food', label: 'Food', color: '#f59e0b' },
123
- { id: 'savings', label: 'Savings', color: '#06b6d4' }
124
- ],
125
- links: [
126
- { source: 'salary', target: 'housing', value: 1500 },
127
- { source: 'salary', target: 'food', value: 600 },
128
- { source: 'salary', target: 'savings', value: 900 }
129
- ]
130
- };
131
- ```
132
-
133
112
  ### Alignment Options
134
113
 
135
- Use the `alignment` attribute to control how leaf nodes are positioned.
114
+ Use `alignment` to control how leaf nodes are positioned.
136
115
 
137
116
  ```html
138
117
  <snice-sankey alignment="left" show-labels></snice-sankey>
139
- <snice-sankey alignment="right" show-labels></snice-sankey>
140
- <snice-sankey alignment="center" show-labels></snice-sankey>
141
118
  <snice-sankey alignment="justify" show-labels></snice-sankey>
142
119
  ```
143
120
 
@@ -151,7 +128,7 @@ Use `node-width` and `node-padding` to adjust the layout.
151
128
 
152
129
  ### Animation
153
130
 
154
- Set the `animation` attribute for animated rendering.
131
+ Set `animation` for animated rendering on initial load.
155
132
 
156
133
  ```html
157
134
  <snice-sankey animation show-labels show-values></snice-sankey>
@@ -159,6 +136,8 @@ Set the `animation` attribute for animated rendering.
159
136
 
160
137
  ### Event Handling
161
138
 
139
+ Listen for click and hover events on nodes and links.
140
+
162
141
  ```typescript
163
142
  sankey.addEventListener('sankey-node-click', (e) => {
164
143
  console.log('Node:', e.detail.node.label);
@@ -175,24 +154,9 @@ sankey.addEventListener('sankey-hover', (e) => {
175
154
  });
176
155
  ```
177
156
 
178
- ## Data Types
179
-
180
- ```typescript
181
- interface SankeyData {
182
- nodes: SankeyNode[];
183
- links: SankeyLink[];
184
- }
185
-
186
- interface SankeyNode {
187
- id: string;
188
- label?: string; // Defaults to id
189
- color?: string; // Auto-assigned if omitted
190
- }
157
+ ## Accessibility
191
158
 
192
- interface SankeyLink {
193
- source: string; // Source node id
194
- target: string; // Target node id
195
- value: number; // Flow value (determines width)
196
- color?: string; // Defaults to source color
197
- }
198
- ```
159
+ - SVG rendered with `role="img"` and `aria-label`
160
+ - Hover highlights connected nodes/links and dims others
161
+ - Tooltips show node/link details on hover
162
+ - Responsive sizing via `ResizeObserver`