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
@@ -5,13 +5,13 @@ Slide-out panel from any viewport side with focus trap and dismissal options. Su
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- open: boolean = false; // Visibility state
8
+ open: boolean = false;
9
9
  position: 'left'|'right'|'top'|'bottom' = 'left';
10
10
  size: 'small'|'medium'|'large'|'xl'|'xxl'|'xxxl'|'full' = 'medium';
11
11
  inline: boolean = false; // Sit in document flow (no overlay/backdrop/focus-trap)
12
12
  breakpoint: number = 0; // Viewport px width: above → inline, below → overlay
13
- noHeader: boolean = false; // attribute: no-header — hide header entirely
14
- noFooter: boolean = false; // attribute: no-footer — hide footer entirely
13
+ noHeader: boolean = false; // attribute: no-header
14
+ noFooter: boolean = false; // attribute: no-footer
15
15
  noBackdrop: boolean = false; // attribute: no-backdrop
16
16
  noBackdropDismiss: boolean = false; // attribute: no-backdrop-dismiss
17
17
  noEscapeDismiss: boolean = false; // attribute: no-escape-dismiss
@@ -23,30 +23,42 @@ contained: boolean = false; // Position relative to parent
23
23
 
24
24
  ## Methods
25
25
 
26
- ```typescript
27
- show() // Open drawer
28
- hide() // Close drawer
29
- toggle() // Toggle drawer
30
- ```
26
+ - `show()` - Open drawer
27
+ - `hide()` - Close drawer
28
+ - `toggle()` - Toggle drawer
31
29
 
32
30
  ## Events
33
31
 
34
- ```typescript
35
- 'drawer-open' // { drawer }
36
- 'drawer-close' // { drawer }
37
- ```
32
+ - `drawer-open` → `{ drawer }` - Drawer opened
33
+ - `drawer-close` → `{ drawer }` - Drawer closed
38
34
 
39
35
  ## Slots
40
36
 
41
- ```html
42
- <snice-drawer>
43
- <h2 slot="title">Title</h2>
44
- <div>Body content</div>
45
- <div slot="footer">Actions</div>
46
- </snice-drawer>
47
- ```
37
+ - `(default)` - Body content
38
+ - `title` - Header title text
39
+ - `footer` - Footer actions
40
+
41
+ ## CSS Custom Properties
42
+
43
+ - `--drawer-width-small` through `--drawer-width-xxxl` - Width per size
44
+ - `--drawer-height-small` through `--drawer-height-xxxl` - Height per size (top/bottom)
45
+ - `--drawer-bg` - Background (default: `var(--snice-color-background, white)`)
46
+ - `--drawer-shadow` - Shadow (default: `var(--snice-shadow-lg)`)
47
+ - `--drawer-backdrop` - Backdrop color (default: `rgba(0, 0, 0, 0.5)`)
48
+ - `--drawer-transition` - Transition timing
49
+ - `--drawer-z-index` - Z-index (default: `1050`)
50
+
51
+ ## CSS Parts
52
+
53
+ - `backdrop` - Backdrop overlay
54
+ - `base` - Drawer panel container
55
+ - `header` - Header section
56
+ - `title` - Title wrapper (h2)
57
+ - `close` - Close button
58
+ - `body` - Body content section
59
+ - `footer` - Footer section
48
60
 
49
- ## Usage
61
+ ## Basic Usage
50
62
 
51
63
  ```html
52
64
  <snice-drawer id="menu" position="left">
@@ -66,10 +78,9 @@ drawer.toggle();
66
78
 
67
79
  ## Inline Mode
68
80
 
69
- Renders in document flow — no overlay, backdrop, focus trap, or escape handler. Drawer panel is always visible.
81
+ Renders in document flow — no overlay, backdrop, focus trap, or escape handler.
70
82
 
71
83
  ```html
72
- <!-- Always-visible sidebar -->
73
84
  <div style="display:flex; height:100vh">
74
85
  <snice-drawer inline position="left" size="small">
75
86
  <span slot="title">Sidebar</span>
@@ -79,73 +90,33 @@ Renders in document flow — no overlay, backdrop, focus trap, or escape handler
79
90
  </div>
80
91
  ```
81
92
 
82
- - CSS uses border separator instead of box-shadow
83
- - `open` property is ignored (always visible)
84
- - Border direction matches `position` (left→border-right, right→border-left, etc.)
85
-
86
93
  ## Breakpoint Mode
87
94
 
88
- Responsive switching: inline above the breakpoint, overlay below. Uses `window.matchMedia`.
95
+ Responsive: inline above breakpoint, overlay below. Uses `window.matchMedia`.
89
96
 
90
97
  ```html
91
- <!-- Inline on desktop (≥768px), overlay on mobile (<768px) -->
92
- <snice-drawer breakpoint="768" position="left" size="small">
93
- <span slot="title">Navigation</span>
94
- ...
95
- </snice-drawer>
98
+ <snice-drawer breakpoint="768" position="left" size="small">...</snice-drawer>
96
99
  ```
97
100
 
98
- - Sets/removes the `inline` attribute dynamically via matchMedia listener
99
- - Crossing the breakpoint while open: overlay behaviors torn down/set up automatically
100
- - Listener cleaned up on `@dispose()`
101
- - `@watch('breakpoint')` tears down old listener and sets up new one when value changes
102
-
103
101
  ## Push Content with `<snice-drawer-target>`
104
102
 
105
- Use `<snice-drawer-target>` to wrap content that should be pushed when a drawer opens. The target watches the drawer's `[open]` attribute via MutationObserver and applies a `translateX()` or `translateY()` transform.
106
-
107
- ```typescript
108
- // snice-drawer-target properties
109
- for: string = ''; // ID of the linked drawer
110
- push: string = ''; // Current push amount (e.g. '240px'), set automatically
111
- ```
112
-
113
103
  ```html
114
- <snice-drawer id="nav" position="left" size="small" contained push-content>
115
- <span slot="title">Nav</span>
116
- </snice-drawer>
104
+ <snice-drawer id="nav" position="left" size="small" contained push-content>...</snice-drawer>
117
105
  <snice-drawer-target for="nav">
118
- <main>This content slides when drawer opens</main>
106
+ <main>Content slides when drawer opens</main>
119
107
  </snice-drawer-target>
120
108
  ```
121
109
 
122
- - Target measures drawer panel width/height directly via `shadowRoot.querySelector('.drawer').offsetWidth`
123
- - Left/right drawers → `translateX`, top/bottom → `translateY`
124
- - Transition: `transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)`
125
- - Resets parent `scrollLeft`/`scrollTop` after transform change (prevents `overflow:hidden` scroll bug)
126
- - Cleanup on disconnect via `@dispose()`
127
-
128
- ## Features
129
-
130
- - Slides from any edge (left, right, top, bottom)
131
- - Multiple size options
132
- - Focus trap with Tab navigation
133
- - Focus restoration on close
134
- - Backdrop click to close
135
- - Escape key to close
136
- - Push content mode via `<snice-drawer-target>`
137
- - Persistent mode (no close button)
138
- - Inline mode (persistent sidebar in document flow)
139
- - Breakpoint mode (responsive inline ↔ overlay switching)
140
- - Contained mode uses `overflow: clip` to prevent scroll bugs during transform animations
141
- - ARIA attributes (role, aria-modal, aria-hidden)
110
+ Target properties: `for: string` (drawer ID), `push: string` (auto-set amount).
142
111
 
143
- ## CSS Parts
112
+ ## Keyboard Navigation
144
113
 
145
- - `backdrop` - Backdrop overlay
146
- - `base` - The drawer panel container
147
- - `header` - Header section
148
- - `title` - Title wrapper (h2)
149
- - `close` - Close button
150
- - `body` - Body content section
151
- - `footer` - Footer section
114
+ - Escape closes drawer (unless no-escape-dismiss/persistent)
115
+ - Tab/Shift+Tab cycles focusable elements (focus trapped)
116
+
117
+ ## Accessibility
118
+
119
+ - role=dialog, aria-modal=true on drawer
120
+ - aria-hidden reflects visibility
121
+ - Focus trap + focus restoration
122
+ - Contained mode skips focus trap and body scroll lock
@@ -13,15 +13,15 @@ actionText: string = ''; // attribute: action-text
13
13
  actionHref: string = ''; // attribute: action-href
14
14
  ```
15
15
 
16
+ ## Events
17
+
18
+ - `empty-state-action` → `{ emptyState: SniceEmptyStateElement }`
19
+
16
20
  ## Slots
17
21
 
18
22
  - `icon` - Custom icon content (overrides `icon` property)
19
23
  - (default) - Custom content below the action button
20
24
 
21
- ## Events
22
-
23
- - `empty-state-action` → `{ emptyState }`
24
-
25
25
  ## CSS Parts
26
26
 
27
27
  - `container` - Outer empty state wrapper
@@ -30,39 +30,25 @@ actionHref: string = ''; // attribute: action-href
30
30
  - `description` - Description paragraph
31
31
  - `action` - Action button or link
32
32
 
33
- ## Usage
33
+ ## Basic Usage
34
34
 
35
- ```html
36
- <!-- Basic -->
37
- <snice-empty-state></snice-empty-state>
35
+ ```typescript
36
+ import 'snice/components/empty-state/snice-empty-state';
37
+ ```
38
38
 
39
- <!-- Custom (icon supports: URL, image files, emoji, text) -->
39
+ ```html
40
40
  <snice-empty-state
41
41
  icon="🔍"
42
42
  title="No results found"
43
43
  description="Try adjusting your search"
44
+ action-text="Clear Search"
44
45
  ></snice-empty-state>
45
46
 
46
- <!-- ⚠️ icon="search_off" renders as PLAIN TEXT. Use the icon slot for icon fonts. -->
47
-
48
47
  <!-- Icon SLOT — for Material Symbols, Font Awesome, SVGs -->
49
48
  <snice-empty-state title="No results">
50
49
  <span slot="icon" class="material-symbols-outlined" style="font-size: 4rem;">search_off</span>
51
50
  </snice-empty-state>
52
51
 
53
- <!-- Icon PROPERTY — for emoji, URLs, image files only -->
54
- <snice-empty-state
55
- icon="/icons/empty.svg"
56
- title="No items"
57
- ></snice-empty-state>
58
-
59
- <!-- With action -->
60
- <snice-empty-state
61
- title="No items yet"
62
- description="Get started by creating your first item"
63
- action-text="Create Item"
64
- ></snice-empty-state>
65
-
66
52
  <!-- With link -->
67
53
  <snice-empty-state
68
54
  title="Page not found"
@@ -72,11 +58,7 @@ actionHref: string = ''; // attribute: action-href
72
58
 
73
59
  <!-- Sizes -->
74
60
  <snice-empty-state size="small"></snice-empty-state>
75
- <snice-empty-state size="medium"></snice-empty-state>
76
61
  <snice-empty-state size="large"></snice-empty-state>
77
-
78
- <!-- Events -->
79
- <snice-empty-state id="empty" action-text="Click"></snice-empty-state>
80
62
  ```
81
63
 
82
64
  ```typescript
@@ -84,19 +66,3 @@ empty.addEventListener('empty-state-action', () => {
84
66
  console.log('Action clicked');
85
67
  });
86
68
  ```
87
-
88
- ```html
89
-
90
- <!-- Custom content -->
91
- <snice-empty-state title="No data">
92
- <div>Custom HTML content here</div>
93
- </snice-empty-state>
94
- ```
95
-
96
- ## Features
97
-
98
- - Customizable icon (URL, image files, emoji), title, description. Use slot for icon fonts.
99
- - Optional action button or link
100
- - 3 sizes
101
- - Slot for custom content
102
- - Accessible
@@ -5,42 +5,34 @@ Professional estimate/quote document with from/to parties, line items, optional
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- estimateNumber: string = '' // attribute: estimate-number
9
- date: string = '' // Estimate date
10
- expiryDate: string = '' // attribute: expiry-date
11
- status: EstimateStatus = 'draft' // 'draft' | 'sent' | 'accepted' | 'declined' | 'expired'
12
- currency: string = '$' // Currency symbol
13
- taxRate: number = 0 // attribute: tax-rate — percentage
14
- discount: number = 0 // Discount percentage
15
- notes: string = '' // Footer notes
16
- terms: string = '' // Terms & conditions
17
- variant: EstimateVariant = 'standard' // 'standard' | 'comparison' | 'professional' | 'creative' | 'minimal'
18
- showQr: boolean = false // attribute: show-qr
19
- qrData: string = '' // attribute: qr-data
20
- qrPosition: QrPosition = 'top-right' // attribute: qr-position — 'top-right' | 'bottom-right' | 'footer'
21
- from: EstimateParty | null = null // Sender party data (JS only)
22
- to: EstimateParty | null = null // Recipient party data (JS only)
23
- items: EstimateItem[] = [] // Line items (JS only)
8
+ estimateNumber: string = ''; // attribute: estimate-number
9
+ date: string = '';
10
+ expiryDate: string = ''; // attribute: expiry-date
11
+ status: EstimateStatus = 'draft'; // 'draft'|'sent'|'accepted'|'declined'|'expired'
12
+ currency: string = '$';
13
+ taxRate: number = 0; // attribute: tax-rate
14
+ discount: number = 0;
15
+ notes: string = '';
16
+ terms: string = '';
17
+ variant: EstimateVariant = 'standard'; // 'standard'|'comparison'|'professional'|'creative'|'minimal'
18
+ showQr: boolean = false; // attribute: show-qr
19
+ qrData: string = ''; // attribute: qr-data
20
+ qrPosition: QrPosition = 'top-right'; // attribute: qr-position — 'top-right'|'bottom-right'|'footer'
21
+ from: EstimateParty | null = null; // JS only
22
+ to: EstimateParty | null = null; // JS only
23
+ items: EstimateItem[] = []; // JS only
24
24
  ```
25
25
 
26
- ## Types
26
+ ## Methods
27
27
 
28
- ```typescript
29
- interface EstimateParty {
30
- name: string;
31
- address?: string;
32
- email?: string;
33
- phone?: string;
34
- }
35
-
36
- interface EstimateItem {
37
- description: string;
38
- quantity: number;
39
- unitPrice: number;
40
- optional?: boolean; // Item can be toggled on/off
41
- included?: boolean; // Whether optional item is included
42
- }
43
- ```
28
+ - `print()` - Trigger browser print
29
+ - `toJSON(): EstimateJSON` - Returns full estimate data with computed totals
30
+
31
+ ## Events
32
+
33
+ - `estimate-accept` → `{ estimateNumber: string; items: EstimateItem[]; total: number }`
34
+ - `estimate-decline` → `{ estimateNumber: string }`
35
+ - `item-toggle` → `{ index: number; item: EstimateItem; included: boolean }`
44
36
 
45
37
  ## Slots
46
38
 
@@ -48,26 +40,19 @@ interface EstimateItem {
48
40
  - `qr` - Custom QR code content
49
41
  - `footer` - Footer content
50
42
 
51
- ## Events
52
-
53
- - `estimate-accept` → `{ estimateNumber: string; items: EstimateItem[]; total: number }`
54
- - `estimate-decline` → `{ estimateNumber: string }`
55
- - `item-toggle` → `{ index: number; item: EstimateItem; included: boolean }`
43
+ ## CSS Parts
56
44
 
57
- ## Methods
45
+ `base`, `header`, `logo`, `title`, `status`, `expiry`, `expiry-date`, `meta`, `parties`, `party`, `party-label`, `party-name`, `party-detail`, `table`, `table-header`, `table-row`, `table-cell`, `item-toggle`, `summary`, `subtotal`, `discount-row`, `tax-row`, `total`, `notes`, `notes-label`, `notes-content`, `terms`, `actions`, `accept-button`, `decline-button`, `footer`, `qr-container`, `qr`, `comparison`, `option`, `option-button`
58
46
 
59
- - `print()` - Trigger browser print
60
- - `toJSON()` - Returns full estimate data with computed totals
47
+ ## CSS Custom Properties
61
48
 
62
- ## Variants
49
+ `--estimate-max-width`, `--estimate-bg`, `--estimate-border`, `--estimate-text`, `--estimate-accent`, `--estimate-header-padding`, `--estimate-section-padding`, `--estimate-radius`, `--estimate-title-size`, `--estimate-accept-bg`, `--estimate-decline-text`, `--estimate-total-bg`, `--estimate-qr-size`
63
50
 
64
- - `standard` - Clean professional layout
65
- - `comparison` - Card-based option selector (one card per item)
66
- - `professional` - Dark header gradient, shadow, accent labels
67
- - `creative` - Gradient header, rounded pill buttons, vibrant colors
68
- - `minimal` - No borders/shadows, flat typography, reduced spacing
51
+ ## Basic Usage
69
52
 
70
- ## Usage
53
+ ```typescript
54
+ import 'snice/components/estimate/snice-estimate';
55
+ ```
71
56
 
72
57
  ```html
73
58
  <snice-estimate estimate-number="EST-001" date="2026-01-15" status="sent" tax-rate="10">
@@ -82,16 +67,6 @@ est.items = [
82
67
  { description: 'Brand Identity', quantity: 1, unitPrice: 5000 },
83
68
  { description: 'SEO Audit', quantity: 1, unitPrice: 1500, optional: true, included: false }
84
69
  ];
85
- est.terms = 'Payment due within 30 days';
86
-
87
70
  est.addEventListener('estimate-accept', e => console.log('Accepted:', e.detail));
88
71
  est.addEventListener('item-toggle', e => console.log('Item toggled:', e.detail));
89
72
  ```
90
-
91
- <!-- Comparison variant -->
92
- <snice-estimate variant="comparison"></snice-estimate>
93
- ```
94
-
95
- ## CSS Parts
96
-
97
- `base`, `header`, `logo`, `title`, `status`, `expiry`, `expiry-date`, `meta`, `parties`, `party`, `party-label`, `party-name`, `party-detail`, `table`, `table-header`, `table-row`, `table-cell`, `item-toggle`, `summary`, `subtotal`, `discount-row`, `tax-row`, `total`, `notes`, `notes-label`, `notes-content`, `terms`, `actions`, `accept-button`, `decline-button`, `footer`, `qr-container`, `qr`, `comparison`, `option`, `option-button`
@@ -18,128 +18,76 @@ autoUpload: boolean = true; // attribute: auto-upload
18
18
  showDropzone: boolean = true; // attribute: show-dropzone
19
19
  showAddButton: boolean = false; // attribute: show-add-button
20
20
  showHeader: boolean = true; // attribute: show-header
21
- files: GalleryFile[]; // read-only
21
+ files: GalleryFile[]; // read-only getter
22
22
  ```
23
23
 
24
- ## Getters
24
+ ## Methods
25
25
 
26
+ Getters:
26
27
  - `files: GalleryFile[]` - Get all files
27
28
  - `customActions: CustomAction[]` - Get all custom actions
28
- - `getFile(fileId): GalleryFile | undefined` - Get specific file
29
- - `getCustomAction(actionId): CustomAction | undefined` - Get specific action
30
- - `isPending(fileId): boolean` - Check if pending
31
- - `isUploading(fileId): boolean` - Check if uploading
32
- - `isPaused(fileId): boolean` - Check if paused
33
- - `isCompleted(fileId): boolean` - Check if completed
34
- - `hasError(fileId): boolean` - Check if has error
35
- - `canAddFiles(): boolean` - Check if can add more files
36
-
37
- ## File Management
38
-
39
- - `addFiles(files: FileList | File[])` - Add files to gallery
40
- - `addFileWithPreview(file: File, previewDataUrl: string)` - Add file with preview
41
- - `removeFile(fileId: string)` - Remove file
42
- - `clear()` - Remove all files
43
- - `clearCompleted()` - Remove completed files
44
- - `clearErrors()` - Remove files with errors
45
-
46
- ## Upload Control
47
-
48
- - `pauseUpload(fileId: string)` - Pause upload
49
- - `resumeUpload(fileId: string)` - Resume upload
50
- - `retryUpload(fileId: string)` - Retry failed upload
51
- - `cancelUpload(fileId: string)` - Cancel and remove upload
52
- - `pauseAll()` - Pause all uploading files
53
- - `resumeAll()` - Resume all paused files
54
- - `retryAll()` - Retry all errored files
55
- - `cancelAll()` - Cancel all active uploads
56
-
57
- ## Custom Actions
58
-
59
- - `addCustomAction(icon: string, text: string): string` - Add custom action, returns actionId
60
- - `removeCustomAction(actionId: string)` - Remove action
61
- - `clearCustomActions()` - Remove all actions
62
-
63
- ## Utility
64
-
65
- - `openFilePicker()` - Open file picker dialog
66
- - `setFileBadge(fileId: string, badge: string, position?: 'top-left'|'top-right'|'bottom-left'|'bottom-right')` - Add badge overlay to file preview (supports HTML)
67
- - `removeFileBadge(fileId: string)` - Remove badge from file
29
+ - `getFile(fileId): GalleryFile | undefined`
30
+ - `getCustomAction(actionId): CustomAction | undefined`
31
+ - `isPending(fileId): boolean`
32
+ - `isUploading(fileId): boolean`
33
+ - `isPaused(fileId): boolean`
34
+ - `isCompleted(fileId): boolean`
35
+ - `hasError(fileId): boolean`
36
+ - `canAddFiles(): boolean`
37
+
38
+ File management:
39
+ - `addFiles(files: FileList | File[])`
40
+ - `addFileWithPreview(file: File, previewDataUrl: string)`
41
+ - `removeFile(fileId: string)`
42
+ - `clear()` / `clearCompleted()` / `clearErrors()`
43
+
44
+ Upload control:
45
+ - `pauseUpload(fileId)` / `resumeUpload(fileId)` / `retryUpload(fileId)` / `cancelUpload(fileId)`
46
+ - `pauseAll()` / `resumeAll()` / `retryAll()` / `cancelAll()`
47
+
48
+ Custom actions:
49
+ - `addCustomAction(icon: string, text: string): string`
50
+ - `removeCustomAction(actionId)` / `clearCustomActions()`
51
+
52
+ Utility:
53
+ - `openFilePicker()`
54
+ - `setFileBadge(fileId, badge, position?)` / `removeFileBadge(fileId)`
68
55
 
69
56
  ## Events
70
57
 
71
- - `files-change` - {files, component}
72
- - `upload-progress` - {file, progress, component}
73
- - `upload-complete` - {file, response: UploadResponse, component}
74
- - `upload-error` - {file, error, component}
75
- - `upload-pause` - {file, component}
76
- - `file-remove` - {file, component}
77
- - `custom-action-click` - {actionId, component}
78
- - `gallery-error` - {message, component}
58
+ - `files-change` `{ files, component }`
59
+ - `upload-progress` `{ file, progress, component }`
60
+ - `upload-complete` `{ file, response: UploadResponse, component }`
61
+ - `upload-error` `{ file, error, component }`
62
+ - `upload-pause` `{ file, component }`
63
+ - `file-remove` `{ file, component }`
64
+ - `custom-action-click` `{ actionId, component }`
65
+ - `gallery-error` `{ message, component }`
79
66
 
80
- ## Types
67
+ ## CSS Parts
81
68
 
82
- ```typescript
83
- interface GalleryFile {
84
- id: string;
85
- file: File;
86
- preview?: string;
87
- uploadProgress: number;
88
- uploadStatus: 'pending'|'uploading'|'paused'|'completed'|'error';
89
- error?: string;
90
- badge?: string; // HTML content for badge overlay
91
- badgePosition?: 'top-left'|'top-right'|'bottom-left'|'bottom-right';
92
- }
93
-
94
- interface UploadRequest {
95
- file: File;
96
- fileId: string;
97
- onProgress?: (progress: number) => void;
98
- signal?: AbortSignal;
99
- }
100
-
101
- interface UploadResponse {
102
- success: boolean;
103
- fileId: string;
104
- url?: string;
105
- error?: string;
106
- }
107
- ```
108
-
109
- **CSS Parts:**
110
- - `base` - Outer gallery container div
69
+ - `base` - Outer gallery container
111
70
  - `dropzone` - Drag-and-drop upload zone
112
71
  - `gallery` - File thumbnails grid/list area
113
72
 
114
- ## Upload Handler
115
-
116
- Uses `@request/@respond` pattern (`file-gallery-upload`). Handler receives `UploadRequest`, returns `UploadResponse`.
73
+ ## Basic Usage
117
74
 
118
- ## Usage
75
+ ```typescript
76
+ import 'snice/components/file-gallery/snice-file-gallery';
77
+ ```
119
78
 
120
79
  ```html
121
- <!-- Basic -->
122
80
  <snice-file-gallery></snice-file-gallery>
123
-
124
- <!-- Images only -->
125
81
  <snice-file-gallery accept="image/*"></snice-file-gallery>
126
-
127
- <!-- Manual upload -->
128
82
  <snice-file-gallery auto-upload="false"></snice-file-gallery>
129
-
130
- <!-- Limits -->
131
83
  <snice-file-gallery max-files="3" max-size="2097152"></snice-file-gallery>
132
-
133
- <!-- List view -->
134
84
  <snice-file-gallery view="list"></snice-file-gallery>
135
-
136
- <!-- Add button mode -->
137
- <snice-file-gallery show-dropzone="false" show-add-button="true" max-files="6"></snice-file-gallery>
138
-
139
- <!-- Events -->
85
+ <snice-file-gallery show-dropzone="false" show-add-button="true"></snice-file-gallery>
140
86
  ```
141
87
 
142
88
  ```typescript
143
- gallery.addEventListener('files-change', (e) => console.log(e.detail.files));
144
- gallery.addEventListener('upload-complete', (e) => console.log(e.detail.response));
89
+ gallery.addEventListener('files-change', e => console.log(e.detail.files));
90
+ gallery.addEventListener('upload-complete', e => console.log(e.detail.response));
145
91
  ```
92
+
93
+ Uses `@request/@respond` pattern (`file-gallery-upload`). Handler receives `UploadRequest { file, fileId, onProgress?, signal? }`, returns `UploadResponse { success, fileId, url?, error? }`.