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,16 +1,16 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/file-upload.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/file-upload.md -->
2
2
 
3
- # File Upload Component
3
+ # File Upload
4
4
 
5
- The `<snice-file-upload>` component provides a file upload interface with drag-and-drop support, file previews, and validation.
5
+ The `<snice-file-upload>` component provides a file upload interface with drag-and-drop support, file previews, and validation. It is a form-associated custom element.
6
6
 
7
7
  ## Table of Contents
8
8
  - [Properties](#properties)
9
9
  - [Methods](#methods)
10
10
  - [Events](#events)
11
+ - [CSS Parts](#css-parts)
11
12
  - [Basic Usage](#basic-usage)
12
13
  - [Examples](#examples)
13
- - [Features](#features)
14
14
 
15
15
  ## Properties
16
16
 
@@ -20,64 +20,49 @@ The `<snice-file-upload>` component provides a file upload interface with drag-a
20
20
  | `variant` | `'outlined' \| 'filled'` | `'outlined'` | Visual style variant |
21
21
  | `accept` | `string` | `''` | Allowed file types (same as input accept) |
22
22
  | `multiple` | `boolean` | `false` | Allow multiple file selection |
23
- | `label` | `string` | `''` | Label text |
24
- | `helperText` | `string` | `''` | Helper text below upload area |
25
- | `errorText` | `string` | `''` | Error message (shown when invalid) |
26
23
  | `disabled` | `boolean` | `false` | Whether upload is disabled |
27
24
  | `required` | `boolean` | `false` | Whether upload is required |
28
25
  | `invalid` | `boolean` | `false` | Whether to show invalid state |
29
- | `maxSize` | `number` | `-1` | Maximum file size in bytes (-1 = no limit) |
30
- | `maxFiles` | `number` | `-1` | Maximum number of files (-1 = no limit) |
26
+ | `label` | `string` | `''` | Label text |
27
+ | `helperText` (attr: `helper-text`) | `string` | `''` | Helper text below upload area |
28
+ | `errorText` (attr: `error-text`) | `string` | `''` | Error message (shown when invalid) |
29
+ | `maxSize` (attr: `max-size`) | `number` | `-1` | Maximum file size in bytes (-1 = no limit) |
30
+ | `maxFiles` (attr: `max-files`) | `number` | `-1` | Maximum number of files (-1 = no limit) |
31
31
  | `name` | `string` | `''` | Form field name |
32
- | `dragDrop` | `boolean` | `true` | Enable drag-and-drop |
33
- | `showPreview` | `boolean` | `true` | Show image previews |
32
+ | `dragDrop` (attr: `drag-drop`) | `boolean` | `true` | Enable drag-and-drop |
33
+ | `showPreview` (attr: `show-preview`) | `boolean` | `true` | Show image previews |
34
34
  | `files` | `FileList \| null` | `null` | Selected files (read-only) |
35
35
 
36
36
  ## Methods
37
37
 
38
- ### `clear(): void`
39
- Remove all selected files.
40
-
41
- ```typescript
42
- upload.clear();
43
- ```
44
-
45
- ### `removeFile(index: number): void`
46
- Remove a specific file by index.
47
-
48
- ```typescript
49
- upload.removeFile(0); // Remove first file
50
- ```
38
+ | Method | Arguments | Description |
39
+ |--------|-----------|-------------|
40
+ | `clear()` | -- | Remove all selected files |
41
+ | `removeFile(index)` | `index: number` | Remove a specific file by index |
51
42
 
52
43
  ## Events
53
44
 
54
- ### `file-upload-change`
55
- Fired when files are added or removed.
45
+ | Event | Detail | Description |
46
+ |-------|--------|-------------|
47
+ | `file-upload-change` | `{ files: File[], fileUpload: SniceFileUploadElement }` | Fired when files are added or removed |
48
+ | `file-upload-error` | `{ message: string, fileUpload: SniceFileUploadElement }` | Fired when file validation fails |
56
49
 
57
- **Detail**: `{ files: File[], fileUpload: SniceFileUploadElement }`
58
-
59
- ```typescript
60
- upload.addEventListener('file-upload-change', (e) => {
61
- console.log('Selected files:', e.detail.files);
62
- e.detail.files.forEach(file => {
63
- console.log(`- ${file.name} (${file.size} bytes)`);
64
- });
65
- });
66
- ```
50
+ ## CSS Parts
67
51
 
68
- ### `file-upload-error`
69
- Fired when file validation fails.
52
+ | Part | Description |
53
+ |------|-------------|
54
+ | `upload-area` | Drop zone container |
55
+ | `input` | Hidden file input |
56
+ | `file-item` | Individual file entry |
57
+ | `error-text` | Error text element |
58
+ | `helper-text` | Helper text element |
70
59
 
71
- **Detail**: `{ message: string, fileUpload: SniceFileUploadElement }`
60
+ ## Basic Usage
72
61
 
73
62
  ```typescript
74
- upload.addEventListener('file-upload-error', (e) => {
75
- console.error('Upload error:', e.detail.message);
76
- });
63
+ import 'snice/components/file-upload/snice-file-upload';
77
64
  ```
78
65
 
79
- ## Basic Usage
80
-
81
66
  ```html
82
67
  <snice-file-upload
83
68
  label="Upload Documents"
@@ -87,8 +72,6 @@ upload.addEventListener('file-upload-error', (e) => {
87
72
  ```
88
73
 
89
74
  ```typescript
90
- import 'snice/components/file-upload/snice-file-upload';
91
-
92
75
  const upload = document.querySelector('snice-file-upload');
93
76
  upload.addEventListener('file-upload-change', (e) => {
94
77
  console.log('Files:', e.detail.files);
@@ -164,37 +147,6 @@ upload.addEventListener('file-upload-change', (e) => {
164
147
  ></snice-file-upload>
165
148
  ```
166
149
 
167
- ### File Type Restrictions
168
-
169
- ```html
170
- <!-- Images only -->
171
- <snice-file-upload accept="image/*" label="Images"></snice-file-upload>
172
-
173
- <!-- Specific formats -->
174
- <snice-file-upload accept=".pdf,.doc,.docx" label="Documents"></snice-file-upload>
175
-
176
- <!-- Multiple types -->
177
- <snice-file-upload accept="image/*,.pdf" label="Images and PDFs"></snice-file-upload>
178
- ```
179
-
180
- ### With Size Validation
181
-
182
- ```html
183
- <snice-file-upload
184
- label="Upload Photo"
185
- accept="image/*"
186
- max-size="5242880"
187
- helper-text="Maximum 5MB"
188
- ></snice-file-upload>
189
-
190
- <script>
191
- const upload = document.querySelector('snice-file-upload');
192
- upload.addEventListener('file-upload-error', (e) => {
193
- alert(e.detail.message);
194
- });
195
- </script>
196
- ```
197
-
198
150
  ### Form Integration
199
151
 
200
152
  ```html
@@ -213,63 +165,24 @@ upload.addEventListener('file-upload-error', (e) => {
213
165
  <script>
214
166
  document.getElementById('upload-form').addEventListener('submit', async (e) => {
215
167
  e.preventDefault();
216
-
217
168
  const formData = new FormData(e.target);
218
169
  const files = formData.getAll('documents');
219
-
220
170
  console.log(`Uploading ${files.length} file(s)...`);
221
-
222
- // Upload to server
223
- const response = await fetch('/api/upload', {
224
- method: 'POST',
225
- body: formData
226
- });
227
-
228
- console.log('Upload complete!');
229
171
  });
230
172
  </script>
231
173
  ```
232
174
 
233
175
  ### Managing Files Programmatically
234
176
 
235
- ```html
236
- <snice-file-upload id="file-upload" multiple></snice-file-upload>
237
- <button onclick="clearFiles()">Clear All</button>
238
- <button onclick="removeFirst()">Remove First</button>
239
-
240
- <script>
241
- const upload = document.getElementById('file-upload');
242
-
243
- function clearFiles() {
244
- upload.clear();
245
- }
246
-
247
- function removeFirst() {
248
- upload.removeFile(0);
249
- }
177
+ ```typescript
178
+ upload.clear();
179
+ upload.removeFile(0);
250
180
 
251
181
  upload.addEventListener('file-upload-change', (e) => {
252
182
  console.log(`${e.detail.files.length} file(s) selected`);
253
183
  });
254
- </script>
255
- ```
256
-
257
- ## CSS Parts
258
-
259
- | Part | Description |
260
- |------|-------------|
261
- | `upload-area` | Drop zone container |
262
- | `input` | Hidden file input |
263
- | `file-item` | Individual file entry |
264
- | `error-text` | Error text element |
265
- | `helper-text` | Helper text element |
266
184
 
267
- ## Features
268
-
269
- - **Drag and Drop**: Native drag-and-drop support with visual feedback
270
- - **Image Preview**: Automatic thumbnail generation for image files
271
- - **File Validation**: Size and type validation with error messaging
272
- - **Multiple Files**: Support for single or multiple file selection
273
- - **File Management**: Add and remove files before upload
274
- - **Form Integration**: Form-associated custom element
275
- - **Accessibility**: Full keyboard support and ARIA attributes
185
+ upload.addEventListener('file-upload-error', (e) => {
186
+ console.error('Upload error:', e.detail.message);
187
+ });
188
+ ```
@@ -1,6 +1,6 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/flip-card.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/flip-card.md -->
2
2
 
3
- # Flip Card Component
3
+ # Flip Card
4
4
 
5
5
  The flip card component creates a two-sided card with a CSS 3D flip animation. Content is placed in front and back slots, and the card can be flipped by clicking, keyboard interaction, or programmatically.
6
6
 
@@ -9,10 +9,11 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
9
9
  - [Methods](#methods)
10
10
  - [Events](#events)
11
11
  - [Slots](#slots)
12
- - [CSS Custom Properties](#css-custom-properties)
13
12
  - [CSS Parts](#css-parts)
13
+ - [CSS Custom Properties](#css-custom-properties)
14
14
  - [Basic Usage](#basic-usage)
15
15
  - [Examples](#examples)
16
+ - [Keyboard Navigation](#keyboard-navigation)
16
17
  - [Accessibility](#accessibility)
17
18
 
18
19
  ## Properties
@@ -29,7 +30,7 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
29
30
  | Method | Arguments | Description |
30
31
  |--------|-----------|-------------|
31
32
  | `flip()` | -- | Toggle between front and back faces |
32
- | `flipTo()` | `side: 'front' \| 'back'` | Flip to a specific side |
33
+ | `flipTo(side)` | `side: 'front' \| 'back'` | Flip to a specific side |
33
34
 
34
35
  ## Events
35
36
 
@@ -44,21 +45,13 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
44
45
  | `front` | Content displayed on the front face of the card |
45
46
  | `back` | Content displayed on the back face of the card |
46
47
 
47
- ## CSS Custom Properties
48
-
49
- | Property | Description |
50
- |----------|-------------|
51
- | `--flip-duration` | Animation duration (automatically set from the `duration` property) |
52
-
53
48
  ## CSS Parts
54
49
 
55
- Style internal elements from outside the shadow DOM using `::part()`.
56
-
57
- | Part | Element | Description |
58
- |------|---------|-------------|
59
- | `base` | `<div>` | The outer flip card container |
60
- | `front` | `<div>` | The front face container |
61
- | `back` | `<div>` | The back face container |
50
+ | Part | Description |
51
+ |------|-------------|
52
+ | `base` | The outer flip card container |
53
+ | `front` | The front face container |
54
+ | `back` | The back face container |
62
55
 
63
56
  ```css
64
57
  snice-flip-card::part(base) {
@@ -74,8 +67,18 @@ snice-flip-card::part(back) {
74
67
  }
75
68
  ```
76
69
 
70
+ ## CSS Custom Properties
71
+
72
+ | Property | Description |
73
+ |----------|-------------|
74
+ | `--flip-duration` | Animation duration (automatically set from the `duration` property) |
75
+
77
76
  ## Basic Usage
78
77
 
78
+ ```typescript
79
+ import 'snice/components/flip-card/snice-flip-card';
80
+ ```
81
+
79
82
  ```html
80
83
  <snice-flip-card style="width: 300px; height: 200px;">
81
84
  <div slot="front">Front side</div>
@@ -83,10 +86,6 @@ snice-flip-card::part(back) {
83
86
  </snice-flip-card>
84
87
  ```
85
88
 
86
- ```typescript
87
- import 'snice/components/flip-card/snice-flip-card';
88
- ```
89
-
90
89
  ## Examples
91
90
 
92
91
  ### Horizontal Flip (Default)
@@ -126,13 +125,11 @@ Use `direction="vertical"` to flip the card around the X axis.
126
125
  Set `duration` to control the speed of the flip animation.
127
126
 
128
127
  ```html
129
- <!-- Slow flip -->
130
128
  <snice-flip-card duration="1200" style="width: 250px; height: 180px;">
131
129
  <div slot="front">Slow flip (1.2s)</div>
132
130
  <div slot="back">Back side</div>
133
131
  </snice-flip-card>
134
132
 
135
- <!-- Fast flip -->
136
133
  <snice-flip-card duration="200" style="width: 250px; height: 180px;">
137
134
  <div slot="front">Fast flip (0.2s)</div>
138
135
  <div slot="back">Back side</div>
@@ -155,17 +152,13 @@ Disable click-to-flip and control the card from JavaScript.
155
152
  </div>
156
153
  </snice-flip-card>
157
154
 
158
- <div style="margin-top: 1rem; display: flex; gap: 0.5rem;">
159
- <button onclick="document.getElementById('controlled-card').flipTo('front')">Show Front</button>
160
- <button onclick="document.getElementById('controlled-card').flipTo('back')">Show Back</button>
161
- <button onclick="document.getElementById('controlled-card').flip()">Toggle</button>
162
- </div>
155
+ <button onclick="document.getElementById('controlled-card').flipTo('front')">Show Front</button>
156
+ <button onclick="document.getElementById('controlled-card').flipTo('back')">Show Back</button>
157
+ <button onclick="document.getElementById('controlled-card').flip()">Toggle</button>
163
158
  ```
164
159
 
165
160
  ### Flashcard Study Deck
166
161
 
167
- Build a flashcard-style study app by listening to flip events.
168
-
169
162
  ```html
170
163
  <snice-flip-card id="flashcard" direction="vertical" style="width: 350px; height: 250px;">
171
164
  <div slot="front" style="display: flex; align-items: center; justify-content: center; font-size: 1.25rem; padding: 2rem; text-align: center;">
@@ -177,8 +170,6 @@ Build a flashcard-style study app by listening to flip events.
177
170
  </snice-flip-card>
178
171
 
179
172
  <script type="module">
180
- import 'snice/components/flip-card/snice-flip-card';
181
-
182
173
  const card = document.getElementById('flashcard');
183
174
  card.addEventListener('flip-change', (e) => {
184
175
  console.log(`Now showing: ${e.detail.side}`);
@@ -186,9 +177,14 @@ Build a flashcard-style study app by listening to flip events.
186
177
  </script>
187
178
  ```
188
179
 
180
+ ## Keyboard Navigation
181
+
182
+ When `click-to-flip` is enabled:
183
+ - **Enter** / **Space** -- Toggle the card flip
184
+
189
185
  ## Accessibility
190
186
 
191
187
  - **Keyboard support**: When `click-to-flip` is enabled, pressing Enter or Space toggles the card
192
- - **Focus management**: The card is focusable and has `tabindex="0"` when click-to-flip is enabled
193
- - **ARIA attributes**: The component conveys state for assistive technologies
188
+ - **Focus management**: The card is focusable with `tabindex="0"` when click-to-flip is enabled
189
+ - **ARIA attributes**: The component uses `role="button"` and `aria-label` to convey state for assistive technologies
194
190
  - **Visible content**: Both sides of the card accept arbitrary slotted content, allowing for accessible markup on each face
@@ -1,70 +1,98 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/flow.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/flow.md -->
2
2
 
3
3
  # Flow
4
- `<snice-flow>`
5
4
 
6
5
  A node-based flow/diagram editor component for building visual workflows, data pipelines, and node graphs. Features draggable nodes with input/output ports, bezier curve edges, zoom/pan canvas, snap-to-grid, and a minimap overview.
7
6
 
8
- ## Importing
7
+ ## Table of Contents
8
+ - [Properties](#properties)
9
+ - [Methods](#methods)
10
+ - [Events](#events)
11
+ - [CSS Parts](#css-parts)
12
+ - [Basic Usage](#basic-usage)
13
+ - [Examples](#examples)
14
+
15
+ ## Properties
16
+
17
+ | Property | Type | Default | Description |
18
+ |----------|------|---------|-------------|
19
+ | `nodes` | `FlowNode[]` | `[]` | Array of node definitions (set via JS) |
20
+ | `edges` | `FlowEdge[]` | `[]` | Array of edge definitions (set via JS) |
21
+ | `snapToGrid` (attr: `snap-to-grid`) | `boolean` | `true` | Snap node positions to grid |
22
+ | `gridSize` (attr: `grid-size`) | `number` | `20` | Grid spacing in pixels |
23
+ | `zoomEnabled` (attr: `zoom-enabled`) | `boolean` | `true` | Enable mouse wheel zoom |
24
+ | `panEnabled` (attr: `pan-enabled`) | `boolean` | `true` | Enable background pan |
25
+ | `minimap` | `boolean` | `true` | Show minimap overview |
26
+ | `editable` | `boolean` | `true` | Allow drawing new edges |
27
+
28
+ ### FlowNode Interface
9
29
 
10
- **ESM (bundler)**
11
30
  ```typescript
12
- import 'snice/components/flow/snice-flow';
13
- ```
31
+ interface FlowNode {
32
+ id: string;
33
+ x: number;
34
+ y: number;
35
+ type?: string; // Shown as small label above title
36
+ data?: Record<string, unknown>; // Custom data payload
37
+ label?: string; // Node title
38
+ width?: number; // Default: 160
39
+ height?: number; // Default: 80
40
+ inputs?: FlowPort[]; // Input ports (left side)
41
+ outputs?: FlowPort[]; // Output ports (right side)
42
+ color?: string; // Header background color
43
+ selected?: boolean;
44
+ }
14
45
 
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-flow.min.js"></script>
46
+ interface FlowPort {
47
+ id: string;
48
+ label?: string;
49
+ type?: string;
50
+ }
19
51
  ```
20
52
 
21
- ## Properties
53
+ ### FlowEdge Interface
22
54
 
23
- | Property | Type | Default | Attribute | Description |
24
- |----------|------|---------|-----------|-------------|
25
- | `nodes` | `FlowNode[]` | `[]` | - | Array of node definitions (set via JS) |
26
- | `edges` | `FlowEdge[]` | `[]` | - | Array of edge definitions (set via JS) |
27
- | `snapToGrid` | `boolean` | `true` | `snap-to-grid` | Snap node positions to grid |
28
- | `gridSize` | `number` | `20` | `grid-size` | Grid spacing in pixels |
29
- | `zoomEnabled` | `boolean` | `true` | `zoom-enabled` | Enable mouse wheel zoom |
30
- | `panEnabled` | `boolean` | `true` | `pan-enabled` | Enable background pan |
31
- | `minimap` | `boolean` | `true` | `minimap` | Show minimap overview |
32
- | `editable` | `boolean` | `true` | `editable` | Allow drawing new edges |
55
+ ```typescript
56
+ interface FlowEdge {
57
+ id: string;
58
+ source: string; // Source node id
59
+ target: string; // Target node id
60
+ sourcePort?: string; // Source port id
61
+ targetPort?: string; // Target port id
62
+ label?: string; // Edge label (shown at midpoint)
63
+ color?: string; // Custom stroke color
64
+ animated?: boolean; // Dashed animated stroke
65
+ }
66
+ ```
33
67
 
34
68
  ## Methods
35
69
 
36
- | Method | Description |
37
- |--------|-------------|
38
- | `addNode(node)` | Add a node to the canvas |
39
- | `removeNode(id)` | Remove a node and its connected edges |
40
- | `addEdge(edge)` | Add an edge between two ports |
41
- | `removeEdge(id)` | Remove an edge |
42
- | `fitView()` | Auto-zoom to fit all nodes in view |
70
+ | Method | Arguments | Description |
71
+ |--------|-----------|-------------|
72
+ | `addNode(node)` | `node: FlowNode` | Add a node to the canvas |
73
+ | `removeNode(id)` | `id: string` | Remove a node and its connected edges |
74
+ | `addEdge(edge)` | `edge: FlowEdge` | Add an edge between two ports |
75
+ | `removeEdge(id)` | `id: string` | Remove an edge |
76
+ | `fitView()` | -- | Auto-zoom to fit all nodes in view |
43
77
 
44
78
  ## Events
45
79
 
46
80
  | Event | Detail | Description |
47
81
  |-------|--------|-------------|
48
- | `node-drag` | `{ node, x, y }` | Node was dragged to new position |
49
- | `node-select` | `{ node }` | Node selected (null when deselected) |
50
- | `edge-connect` | `{ edge }` | New edge created by dragging between ports |
51
- | `edge-disconnect` | `{ edge }` | Edge removed |
52
- | `canvas-click` | `{ x, y }` | Background canvas clicked |
53
-
54
- ## CSS Custom Properties
55
-
56
- The component uses standard snice theme tokens with fallbacks. Override with custom properties on the host element.
82
+ | `node-drag` | `{ node: FlowNode, x: number, y: number }` | Node was dragged to new position |
83
+ | `node-select` | `{ node: FlowNode \| null }` | Node selected (null when deselected) |
84
+ | `edge-connect` | `{ edge: FlowEdge }` | New edge created by dragging between ports |
85
+ | `edge-disconnect` | `{ edge: FlowEdge }` | Edge removed |
86
+ | `canvas-click` | `{ x: number, y: number }` | Background canvas clicked |
57
87
 
58
88
  ## CSS Parts
59
89
 
60
- Style internal elements from outside the shadow DOM using `::part()`.
61
-
62
- | Part | Element | Description |
63
- |------|---------|-------------|
64
- | `base` | `<div>` | Outer flow container |
65
- | `canvas` | `<svg>` | SVG layer for edges and connections |
66
- | `nodes` | `<div>` | Container for all node elements |
67
- | `minimap` | `<div>` | Minimap overview panel |
90
+ | Part | Description |
91
+ |------|-------------|
92
+ | `base` | Outer flow container |
93
+ | `canvas` | SVG layer for edges and connections |
94
+ | `nodes` | Container for all node elements |
95
+ | `minimap` | Minimap overview panel |
68
96
 
69
97
  ```css
70
98
  snice-flow::part(base) {
@@ -159,7 +187,6 @@ flow.edges = [
159
187
  ### Programmatic API
160
188
 
161
189
  ```javascript
162
- // Add nodes and edges dynamically
163
190
  flow.addNode({
164
191
  id: 'new-node', x: 200, y: 200, label: 'New Node',
165
192
  inputs: [{ id: 'in', label: 'In' }],
@@ -171,55 +198,13 @@ flow.addEdge({
171
198
  sourcePort: 'out', targetPort: 'in',
172
199
  });
173
200
 
174
- // Remove
175
201
  flow.removeNode('new-node'); // also removes connected edges
176
202
  flow.removeEdge('new-edge');
177
203
 
178
- // Fit all nodes into view
179
204
  flow.fitView();
180
205
  ```
181
206
 
182
- ### Drawing Edges
183
-
184
- Users can create connections by clicking and dragging from a port dot on one node to a port dot on another node. A preview bezier curve shows while dragging.
185
-
186
- ## Types
187
-
188
- ```typescript
189
- interface FlowNode {
190
- id: string;
191
- x: number;
192
- y: number;
193
- type?: string; // Shown as small label above title
194
- data?: Record<string, unknown>; // Custom data payload
195
- label?: string; // Node title
196
- width?: number; // Default: 160
197
- height?: number; // Default: 80
198
- inputs?: FlowPort[]; // Input ports (left side)
199
- outputs?: FlowPort[]; // Output ports (right side)
200
- color?: string; // Header background color
201
- selected?: boolean;
202
- }
203
-
204
- interface FlowPort {
205
- id: string;
206
- label?: string;
207
- type?: string;
208
- }
209
-
210
- interface FlowEdge {
211
- id: string;
212
- source: string; // Source node id
213
- target: string; // Target node id
214
- sourcePort?: string; // Source port id
215
- targetPort?: string; // Target port id
216
- label?: string; // Edge label (shown at midpoint)
217
- color?: string; // Custom stroke color
218
- animated?: boolean; // Dashed animated stroke
219
- }
220
- ```
221
-
222
- ## Interaction
207
+ ### Interaction
223
208
 
224
209
  - **Drag nodes**: Click and drag a node to move it. Snaps to grid if enabled.
225
210
  - **Draw edges**: Click and drag from a port dot to another port dot.