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,502 +1,238 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/chat.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/chat.md -->
2
2
 
3
- # snice-chat
3
+ # Chat Component
4
4
 
5
- A Slack-style chat interface component with messages, typing indicators, reactions, and file attachments.
5
+ Slack-style chat interface with messages, typing indicators, reactions, file attachments, and message threading.
6
6
 
7
- ## Properties
8
-
9
- | Property | Attribute | Type | Default | Description |
10
- | ----------------- | ------------------ | --------- | ------------------------ | ------------------------------------- |
11
- | `messages` | - | `ChatMessage[]` | `[]` | Chat messages (property only) |
12
- | `currentUser` | `current-user` | `string` | `"You"` | Current user name |
13
- | `currentAvatar` | `current-avatar` | `string` | `""` | Current user avatar URL |
14
- | `placeholder` | `placeholder` | `string` | `"Type a message..."` | Input placeholder text |
15
- | `allowFiles` | `allow-files` | `boolean` | `true` | Whether file uploads are enabled |
16
- | `showTyping` | `show-typing` | `boolean` | `true` | Whether to show typing indicators |
17
- | `showAvatars` | `show-avatars` | `boolean` | `true` | Whether to show user avatars |
18
- | `showTimestamps` | `show-timestamps` | `boolean` | `true` | Whether to show message timestamps |
19
-
20
- ## Methods
21
-
22
- ### `addMessage(message: Omit<ChatMessage, 'id'>): void`
23
-
24
- Add a new message to the chat.
25
-
26
- ```javascript
27
- chat.addMessage({
28
- type: 'text',
29
- content: 'Hello, world!',
30
- author: 'Alice',
31
- avatar: 'https://example.com/alice.jpg',
32
- timestamp: new Date(),
33
- });
34
- ```
35
-
36
- ### `updateMessage(messageId: string, updates: Partial<ChatMessage>): void`
37
-
38
- Update an existing message.
39
-
40
- ```javascript
41
- chat.updateMessage(messageId, {
42
- content: 'Updated content',
43
- edited: true,
44
- });
45
- ```
46
-
47
- ### `deleteMessage(messageId: string): void`
48
-
49
- Delete a message by ID.
50
-
51
- ```javascript
52
- chat.deleteMessage(messageId);
53
- ```
54
-
55
- ### `addTypingIndicator(user: string): void`
7
+ ## Table of Contents
8
+ - [Properties](#properties)
9
+ - [Methods](#methods)
10
+ - [Events](#events)
11
+ - [CSS Custom Properties](#css-custom-properties)
12
+ - [CSS Parts](#css-parts)
13
+ - [Basic Usage](#basic-usage)
14
+ - [Examples](#examples)
15
+ - [Accessibility](#accessibility)
56
16
 
57
- Add a typing indicator for a user.
58
-
59
- ```javascript
60
- chat.addTypingIndicator('Alice');
61
- ```
62
-
63
- ### `removeTypingIndicator(user: string): void`
64
-
65
- Remove a typing indicator for a user.
66
-
67
- ```javascript
68
- chat.removeTypingIndicator('Alice');
69
- ```
70
-
71
- ### `clear(): void`
17
+ ## Properties
72
18
 
73
- Clear all messages.
19
+ | Property | Type | Default | Description |
20
+ |----------|------|---------|-------------|
21
+ | `messages` | `ChatMessage[]` | `[]` | Chat messages (property only) |
22
+ | `currentUser` (attr: `current-user`) | `string` | `'You'` | Current user name |
23
+ | `currentAvatar` (attr: `current-avatar`) | `string` | `''` | Current user avatar URL |
24
+ | `placeholder` | `string` | `'Type a message...'` | Input placeholder text |
25
+ | `allowFiles` (attr: `allow-files`) | `boolean` | `true` | Enable file uploads |
26
+ | `showTyping` (attr: `show-typing`) | `boolean` | `true` | Show typing indicators |
27
+ | `showAvatars` (attr: `show-avatars`) | `boolean` | `true` | Show user avatars |
28
+ | `showTimestamps` (attr: `show-timestamps`) | `boolean` | `true` | Show message timestamps |
74
29
 
75
- ```javascript
76
- chat.clear();
77
- ```
30
+ ### ChatMessage Interface
78
31
 
79
- ### `scrollToBottom(): void`
32
+ ```typescript
33
+ interface ChatMessage {
34
+ id: string;
35
+ type: 'text' | 'file' | 'image' | 'system';
36
+ content: string;
37
+ author: string;
38
+ avatar?: string;
39
+ timestamp: Date;
40
+ edited?: boolean;
41
+ reactions?: MessageReaction[];
42
+ thread?: ChatMessage[];
43
+ attachment?: MessageAttachment;
44
+ }
80
45
 
81
- Scroll to the bottom of the chat.
46
+ interface MessageAttachment {
47
+ type: 'image' | 'file';
48
+ url: string;
49
+ name: string;
50
+ size?: number;
51
+ thumbnailUrl?: string;
52
+ }
82
53
 
83
- ```javascript
84
- chat.scrollToBottom();
54
+ interface MessageReaction {
55
+ emoji: string;
56
+ count: number;
57
+ users: string[];
58
+ }
85
59
  ```
86
60
 
87
- ### `scrollToMessage(messageId: string): void`
88
-
89
- Scroll to a specific message.
61
+ ## Methods
90
62
 
91
- ```javascript
92
- chat.scrollToMessage(messageId);
93
- ```
63
+ | Method | Arguments | Description |
64
+ |--------|-----------|-------------|
65
+ | `addMessage()` | `message: Omit<ChatMessage, 'id'>` | Add a new message |
66
+ | `updateMessage()` | `messageId: string, updates: Partial<ChatMessage>` | Update an existing message |
67
+ | `deleteMessage()` | `messageId: string` | Delete a message by ID |
68
+ | `addTypingIndicator()` | `user: string` | Show typing indicator for a user |
69
+ | `removeTypingIndicator()` | `user: string` | Remove typing indicator for a user |
70
+ | `clear()` | -- | Clear all messages |
71
+ | `scrollToBottom()` | -- | Scroll to the bottom of the chat |
72
+ | `scrollToMessage()` | `messageId: string` | Scroll to a specific message |
94
73
 
95
74
  ## Events
96
75
 
97
- ### `message-send`
98
-
99
- Emitted when the user sends a message.
100
-
101
- ```javascript
102
- chat.addEventListener('message-send', (e) => {
103
- console.log('Message:', e.detail.message);
104
- console.log('Attachments:', e.detail.attachments);
105
- });
106
- ```
107
-
108
- **Detail:**
109
- - `message: string` - The message text
110
- - `attachments?: File[]` - Optional file attachments
111
-
112
- ### `message-edit`
113
-
114
- Emitted when the user edits a message.
115
-
116
- ```javascript
117
- chat.addEventListener('message-edit', (e) => {
118
- console.log('Message ID:', e.detail.messageId);
119
- console.log('New content:', e.detail.newContent);
120
- });
121
- ```
122
-
123
- **Detail:**
124
- - `messageId: string` - The message ID
125
- - `newContent: string` - The new message content
126
-
127
- ### `message-delete`
128
-
129
- Emitted when the user deletes a message.
130
-
131
- ```javascript
132
- chat.addEventListener('message-delete', (e) => {
133
- console.log('Deleted:', e.detail.messageId);
134
- });
135
- ```
136
-
137
- **Detail:**
138
- - `messageId: string` - The message ID
139
-
140
- ### `message-react`
141
-
142
- Emitted when the user reacts to a message.
143
-
144
- ```javascript
145
- chat.addEventListener('message-react', (e) => {
146
- console.log('Message ID:', e.detail.messageId);
147
- console.log('Emoji:', e.detail.emoji);
148
- });
149
- ```
150
-
151
- **Detail:**
152
- - `messageId: string` - The message ID
153
- - `emoji: string` - The emoji reaction
154
-
155
- ### `message-thread`
156
-
157
- Emitted when the user starts a thread.
158
-
159
- ```javascript
160
- chat.addEventListener('message-thread', (e) => {
161
- console.log('Thread for:', e.detail.messageId);
162
- });
163
- ```
164
-
165
- **Detail:**
166
- - `messageId: string` - The message ID
167
-
168
- ### `typing-start`
169
-
170
- Emitted when the current user starts typing.
171
-
172
- ```javascript
173
- chat.addEventListener('typing-start', () => {
174
- console.log('User started typing');
175
- });
176
- ```
177
-
178
- ### `typing-stop`
179
-
180
- Emitted when the current user stops typing.
181
-
182
- ```javascript
183
- chat.addEventListener('typing-stop', () => {
184
- console.log('User stopped typing');
185
- });
186
- ```
76
+ | Event | Detail | Description |
77
+ |-------|--------|-------------|
78
+ | `message-send` | `{ message: string, attachments?: File[] }` | User sends a message |
79
+ | `message-edit` | `{ messageId: string, newContent: string }` | User edits a message |
80
+ | `message-delete` | `{ messageId: string }` | User deletes a message |
81
+ | `message-react` | `{ messageId: string, emoji: string }` | User reacts to a message |
82
+ | `message-thread` | `{ messageId: string }` | User starts a thread |
83
+ | `typing-start` | `{}` | Current user starts typing |
84
+ | `typing-stop` | `{}` | Current user stops typing |
85
+
86
+ ## CSS Custom Properties
87
+
88
+ | Property | Description |
89
+ |----------|-------------|
90
+ | `--snice-chat-height` | Chat container height |
91
+ | `--snice-chat-border-radius` | Container border radius |
92
+ | `--snice-chat-text-color` | Primary text color |
93
+ | `--snice-chat-background` | Background color |
94
+ | `--snice-chat-border-color` | Border color |
95
+ | `--snice-chat-author-color` | Author name color |
96
+ | `--snice-chat-timestamp-color` | Timestamp text color |
97
+ | `--snice-chat-system-color` | System message color |
98
+ | `--snice-chat-placeholder-color` | Input placeholder color |
99
+ | `--snice-chat-scrollbar-color` | Scrollbar thumb color |
100
+ | `--snice-chat-scrollbar-hover-color` | Scrollbar hover color |
101
+ | `--snice-chat-avatar-background` | Avatar background color |
102
+ | `--snice-chat-avatar-text-color` | Avatar text color |
103
+ | `--snice-chat-attachment-border` | Attachment border color |
104
+ | `--snice-chat-attachment-background` | Attachment background |
105
+ | `--snice-chat-attachment-icon-background` | Attachment icon background |
106
+ | `--snice-chat-attachment-icon-color` | Attachment icon color |
107
+ | `--snice-chat-reaction-background` | Reaction background |
108
+ | `--snice-chat-reaction-border` | Reaction border |
109
+ | `--snice-chat-reaction-hover-background` | Reaction hover background |
110
+ | `--snice-chat-reaction-active-background` | Active reaction background |
111
+ | `--snice-chat-reaction-active-color` | Active reaction text color |
112
+ | `--snice-chat-reaction-active-border` | Active reaction border |
113
+ | `--snice-chat-actions-background` | Actions menu background |
114
+ | `--snice-chat-action-color` | Action icon color |
115
+ | `--snice-chat-action-hover-background` | Action hover background |
116
+ | `--snice-chat-typing-color` | Typing indicator text color |
117
+ | `--snice-chat-typing-dot-color` | Typing indicator dot color |
118
+ | `--snice-chat-input-background` | Input field background |
119
+ | `--snice-chat-input-container-background` | Input area background |
120
+ | `--snice-chat-input-border` | Input border |
121
+ | `--snice-chat-input-focus-border` | Input focus border |
122
+ | `--snice-chat-button-color` | Button icon color |
123
+ | `--snice-chat-button-hover-background` | Button hover background |
124
+ | `--snice-chat-send-color` | Send button text color |
125
+ | `--snice-chat-send-background` | Send button background |
126
+ | `--snice-chat-send-hover-background` | Send button hover background |
127
+ | `--snice-chat-empty-color` | Empty state text color |
187
128
 
188
129
  ## CSS Parts
189
130
 
190
- Style internal elements from outside the shadow DOM using `::part()`.
191
-
192
- | Part | Element | Description |
193
- |------|---------|-------------|
194
- | `base` | `<div>` | The chat container |
195
- | `messages` | `<div>` | The scrollable messages area |
196
- | `input-area` | `<div>` | The input area wrapper |
197
- | `input-container` | `<div>` | Container holding the input and buttons |
198
- | `input` | `<textarea>` | The message input field |
199
-
200
- ```css
201
- snice-chat::part(base) {
202
- border-radius: 8px;
203
- overflow: hidden;
204
- }
205
-
206
- snice-chat::part(messages) {
207
- padding: 1rem;
208
- }
209
-
210
- snice-chat::part(input) {
211
- font-size: 0.875rem;
212
- }
213
- ```
131
+ | Part | Description |
132
+ |------|-------------|
133
+ | `base` | The chat container |
134
+ | `messages` | The scrollable messages area |
135
+ | `input-area` | The input area wrapper |
136
+ | `input-container` | Container holding the input and buttons |
137
+ | `input` | The message input field |
214
138
 
215
139
  ## Basic Usage
216
140
 
217
141
  ```html
218
142
  <snice-chat id="chat" current-user="You"></snice-chat>
143
+ ```
219
144
 
220
- <script type="module">
221
- import 'snice';
222
-
223
- const chat = document.getElementById('chat');
224
-
225
- // Listen for messages
226
- chat.addEventListener('message-send', (e) => {
227
- console.log('New message:', e.detail.message);
145
+ ```typescript
146
+ import 'snice/components/chat/snice-chat';
228
147
 
229
- // Add message to chat
230
- chat.addMessage({
231
- type: 'text',
232
- content: e.detail.message,
233
- author: 'You',
234
- timestamp: new Date(),
235
- });
148
+ chat.addEventListener('message-send', (e) => {
149
+ chat.addMessage({
150
+ type: 'text',
151
+ content: e.detail.message,
152
+ author: 'You',
153
+ timestamp: new Date(),
236
154
  });
237
- </script>
155
+ });
238
156
  ```
239
157
 
240
158
  ## Examples
241
159
 
242
- ### Basic Chat
243
-
244
- ```html
245
- <snice-chat id="chat"></snice-chat>
246
-
247
- <script type="module">
248
- import 'snice';
249
-
250
- const chat = document.getElementById('chat');
251
-
252
- chat.addEventListener('message-send', (e) => {
253
- chat.addMessage({
254
- type: 'text',
255
- content: e.detail.message,
256
- author: 'You',
257
- timestamp: new Date(),
258
- });
259
- });
260
- </script>
261
- ```
262
-
263
160
  ### With Avatars
264
161
 
265
- ```html
266
- <snice-chat id="chat" current-user="Alice" current-avatar="https://example.com/alice.jpg"></snice-chat>
267
-
268
- <script type="module">
269
- import 'snice';
162
+ Use `current-avatar` and the `avatar` field on messages for user profile images.
270
163
 
271
- const chat = document.getElementById('chat');
164
+ ```html
165
+ <snice-chat current-user="Alice" current-avatar="https://example.com/alice.jpg"></snice-chat>
272
166
 
167
+ <script>
273
168
  chat.addMessage({
274
- type: 'text',
275
- content: 'Hello!',
276
- author: 'Bob',
277
- avatar: 'https://example.com/bob.jpg',
278
- timestamp: new Date(),
169
+ type: 'text', content: 'Hello!', author: 'Bob',
170
+ avatar: 'https://example.com/bob.jpg', timestamp: new Date()
279
171
  });
280
172
  </script>
281
173
  ```
282
174
 
283
175
  ### With File Attachments
284
176
 
285
- ```html
286
- <snice-chat id="chat"></snice-chat>
287
-
288
- <script type="module">
289
- import 'snice';
177
+ Add messages with `attachment` objects for images and files.
290
178
 
291
- const chat = document.getElementById('chat');
292
-
293
- chat.addMessage({
294
- type: 'image',
295
- content: '',
296
- author: 'Alice',
297
- timestamp: new Date(),
298
- attachment: {
299
- type: 'image',
300
- url: 'https://example.com/image.jpg',
301
- name: 'vacation.jpg',
302
- },
303
- });
179
+ ```javascript
180
+ chat.addMessage({
181
+ type: 'image', content: '', author: 'Alice', timestamp: new Date(),
182
+ attachment: { type: 'image', url: 'https://example.com/image.jpg', name: 'vacation.jpg' }
183
+ });
304
184
 
305
- chat.addMessage({
306
- type: 'file',
307
- content: '',
308
- author: 'Bob',
309
- timestamp: new Date(),
310
- attachment: {
311
- type: 'file',
312
- url: 'https://example.com/document.pdf',
313
- name: 'report.pdf',
314
- size: 245760,
315
- },
316
- });
317
- </script>
185
+ chat.addMessage({
186
+ type: 'file', content: '', author: 'Bob', timestamp: new Date(),
187
+ attachment: { type: 'file', url: 'https://example.com/doc.pdf', name: 'report.pdf', size: 245760 }
188
+ });
318
189
  ```
319
190
 
320
191
  ### With Reactions
321
192
 
322
- ```html
323
- <snice-chat id="chat"></snice-chat>
324
-
325
- <script type="module">
326
- import 'snice';
327
-
328
- const chat = document.getElementById('chat');
193
+ Add messages with `reactions` and handle the `message-react` event.
329
194
 
330
- chat.addMessage({
331
- type: 'text',
332
- content: 'Great work!',
333
- author: 'Alice',
334
- timestamp: new Date(),
335
- reactions: [
336
- { emoji: '👍', count: 3, users: ['Bob', 'Charlie', 'Diana'] },
337
- { emoji: '🎉', count: 1, users: ['Eve'] },
338
- ],
339
- });
195
+ ```javascript
196
+ chat.addMessage({
197
+ type: 'text', content: 'Great work!', author: 'Alice', timestamp: new Date(),
198
+ reactions: [
199
+ { emoji: '\ud83d\udc4d', count: 3, users: ['Bob', 'Charlie', 'Diana'] },
200
+ { emoji: '\ud83c\udf89', count: 1, users: ['Eve'] }
201
+ ]
202
+ });
340
203
 
341
- chat.addEventListener('message-react', (e) => {
342
- const message = chat.messages.find((m) => m.id === e.detail.messageId);
343
- if (message) {
344
- const reactions = message.reactions || [];
345
- const existing = reactions.find((r) => r.emoji === e.detail.emoji);
346
- if (existing) {
347
- existing.count++;
348
- existing.users.push(chat.currentUser);
349
- } else {
350
- reactions.push({ emoji: e.detail.emoji, count: 1, users: [chat.currentUser] });
351
- }
352
- chat.updateMessage(e.detail.messageId, { reactions });
353
- }
354
- });
355
- </script>
204
+ chat.addEventListener('message-react', (e) => {
205
+ console.log('Reaction:', e.detail.emoji, 'on message:', e.detail.messageId);
206
+ });
356
207
  ```
357
208
 
358
209
  ### System Messages
359
210
 
360
- ```html
361
- <snice-chat id="chat"></snice-chat>
362
-
363
- <script type="module">
364
- import 'snice';
211
+ Use `type: 'system'` for notification-style messages.
365
212
 
366
- const chat = document.getElementById('chat');
367
-
368
- chat.addMessage({
369
- type: 'system',
370
- content: 'Alice joined the channel',
371
- author: 'System',
372
- timestamp: new Date(),
373
- });
374
- </script>
213
+ ```javascript
214
+ chat.addMessage({
215
+ type: 'system', content: 'Alice joined the channel', author: 'System', timestamp: new Date()
216
+ });
375
217
  ```
376
218
 
377
219
  ### Typing Indicators
378
220
 
379
- ```html
380
- <snice-chat id="chat"></snice-chat>
381
-
382
- <script type="module">
383
- import 'snice';
384
-
385
- const chat = document.getElementById('chat');
221
+ Use `addTypingIndicator()` and `removeTypingIndicator()` to show typing state.
386
222
 
387
- // Simulate Alice typing
388
- chat.addTypingIndicator('Alice');
389
-
390
- setTimeout(() => {
391
- chat.removeTypingIndicator('Alice');
392
- chat.addMessage({
393
- type: 'text',
394
- content: 'Sorry for the delay!',
395
- author: 'Alice',
396
- timestamp: new Date(),
397
- });
398
- }, 2000);
399
- </script>
400
- ```
223
+ ```javascript
224
+ chat.addTypingIndicator('Alice');
401
225
 
402
- ## Features
403
-
404
- - **Message types** - Text, images, files, and system messages
405
- - **Rich interactions** - Edit, delete, react to messages
406
- - **Typing indicators** - Show when users are typing
407
- - **File attachments** - Support for images and files
408
- - **Message reactions** - Emoji reactions with count
409
- - **User avatars** - Display user profile images or initials
410
- - **Timestamps** - Show message times
411
- - **Auto-scroll** - Automatically scroll to new messages
412
- - **Customizable styling** - CSS custom properties for theming
413
-
414
- ## Message Types
415
-
416
- The chat supports different message types:
417
-
418
- - `text` - Regular text message
419
- - `image` - Image attachment
420
- - `file` - File attachment
421
- - `system` - System notification
422
-
423
- ## Styling
424
-
425
- The component can be styled using CSS custom properties:
426
-
427
- ```css
428
- snice-chat {
429
- /* Dimensions */
430
- --snice-chat-height: 600px;
431
- --snice-chat-border-radius: 8px;
432
-
433
- /* Colors */
434
- --snice-chat-text-color: #1d1c1d;
435
- --snice-chat-background: #fff;
436
- --snice-chat-border-color: #ddd;
437
- --snice-chat-author-color: #1d1c1d;
438
- --snice-chat-timestamp-color: #616061;
439
- --snice-chat-system-color: #616061;
440
- --snice-chat-placeholder-color: #616061;
441
-
442
- /* Scrollbar */
443
- --snice-chat-scrollbar-color: #ccc;
444
- --snice-chat-scrollbar-hover-color: #999;
445
-
446
- /* Avatar */
447
- --snice-chat-avatar-background: #e0e0e0;
448
- --snice-chat-avatar-text-color: #fff;
449
-
450
- /* Attachments */
451
- --snice-chat-attachment-border: #ddd;
452
- --snice-chat-attachment-background: #f8f8f8;
453
- --snice-chat-attachment-icon-background: #e0e0e0;
454
- --snice-chat-attachment-icon-color: #666;
455
-
456
- /* Reactions */
457
- --snice-chat-reaction-background: #f0f0f0;
458
- --snice-chat-reaction-border: #ddd;
459
- --snice-chat-reaction-hover-background: #e0e0e0;
460
- --snice-chat-reaction-active-background: #1264a3;
461
- --snice-chat-reaction-active-color: #fff;
462
- --snice-chat-reaction-active-border: #1264a3;
463
-
464
- /* Actions */
465
- --snice-chat-actions-background: #fff;
466
- --snice-chat-action-color: #616061;
467
- --snice-chat-action-hover-background: #f0f0f0;
468
-
469
- /* Typing indicator */
470
- --snice-chat-typing-color: #616061;
471
- --snice-chat-typing-dot-color: #616061;
472
-
473
- /* Input */
474
- --snice-chat-input-background: #fff;
475
- --snice-chat-input-container-background: #fff;
476
- --snice-chat-input-border: #ddd;
477
- --snice-chat-input-focus-border: #1264a3;
478
- --snice-chat-button-color: #616061;
479
- --snice-chat-button-hover-background: #f0f0f0;
480
- --snice-chat-send-color: #fff;
481
- --snice-chat-send-background: #1264a3;
482
- --snice-chat-send-hover-background: #0e5a8e;
483
-
484
- /* Empty state */
485
- --snice-chat-empty-color: #616061;
486
- }
226
+ setTimeout(() => {
227
+ chat.removeTypingIndicator('Alice');
228
+ chat.addMessage({
229
+ type: 'text', content: 'Sorry for the delay!', author: 'Alice', timestamp: new Date()
230
+ });
231
+ }, 2000);
487
232
  ```
488
233
 
489
- ## Browser Support
234
+ ## Accessibility
490
235
 
491
- Works in all modern browsers that support:
492
- - Custom Elements v1
493
- - Shadow DOM
494
- - ES2020+
495
-
496
- ## TypeScript
497
-
498
- Full TypeScript support with exported types:
499
-
500
- ```typescript
501
- import type { ChatMessage, MessageType, SniceChatElement } from 'snice/chat';
502
- ```
236
+ - Keyboard navigation for messages and controls
237
+ - ARIA roles for chat structure
238
+ - Screen reader friendly message announcements