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,8 +1,18 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/calendar.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/calendar.md -->
2
2
 
3
3
  # Calendar Component
4
4
 
5
- Display and select dates with event support.
5
+ Display and select dates with event support, date restrictions, and locale-aware formatting.
6
+
7
+ ## Table of Contents
8
+ - [Properties](#properties)
9
+ - [Methods](#methods)
10
+ - [Events](#events)
11
+ - [CSS Parts](#css-parts)
12
+ - [Basic Usage](#basic-usage)
13
+ - [Examples](#examples)
14
+ - [Keyboard Navigation](#keyboard-navigation)
15
+ - [Accessibility](#accessibility)
6
16
 
7
17
  ## Properties
8
18
 
@@ -11,89 +21,15 @@ Display and select dates with event support.
11
21
  | `value` | `Date \| string` | `new Date()` | Selected date |
12
22
  | `view` | `'month' \| 'week' \| 'day'` | `'month'` | Calendar view |
13
23
  | `events` | `CalendarEvent[]` | `[]` | Calendar events |
14
- | `minDate` | `Date \| string` | `''` | Minimum selectable date |
15
- | `maxDate` | `Date \| string` | `''` | Maximum selectable date |
16
- | `disabledDates` | `(Date \| string)[]` | `[]` | Disabled dates |
17
- | `highlightToday` | `boolean` | `true` | Highlight today's date |
18
- | `showWeekNumbers` | `boolean` | `false` | Show week numbers |
19
- | `firstDayOfWeek` | `number` | `0` | First day of week (0=Sun, 1=Mon) |
24
+ | `minDate` (attr: `min-date`) | `Date \| string` | `''` | Minimum selectable date |
25
+ | `maxDate` (attr: `max-date`) | `Date \| string` | `''` | Maximum selectable date |
26
+ | `disabledDates` (attr: `disabled-dates`) | `(Date \| string)[]` | `[]` | Disabled dates |
27
+ | `highlightToday` (attr: `highlight-today`) | `boolean` | `true` | Highlight today's date |
28
+ | `showWeekNumbers` (attr: `show-week-numbers`) | `boolean` | `false` | Show week numbers |
29
+ | `firstDayOfWeek` (attr: `first-day-of-week`) | `number` | `0` | First day of week (0=Sun, 1=Mon) |
20
30
  | `locale` | `string` | `'en-US'` | Locale for formatting |
21
31
 
22
- ## Methods
23
-
24
- ### `goToToday(): void`
25
- Navigate to today's date.
26
-
27
- ```javascript
28
- calendar.goToToday();
29
- ```
30
-
31
- ### `goToDate(date: Date | string): void`
32
- Navigate to specific date.
33
-
34
- ```javascript
35
- calendar.goToDate(new Date(2024, 5, 15));
36
- ```
37
-
38
- ### `previousMonth(): void`
39
- Navigate to previous month.
40
-
41
- ```javascript
42
- calendar.previousMonth();
43
- ```
44
-
45
- ### `nextMonth(): void`
46
- Navigate to next month.
47
-
48
- ```javascript
49
- calendar.nextMonth();
50
- ```
51
-
52
- ### `previousWeek(): void`
53
- Navigate to previous week.
54
-
55
- ```javascript
56
- calendar.previousWeek();
57
- ```
58
-
59
- ### `nextWeek(): void`
60
- Navigate to next week.
61
-
62
- ```javascript
63
- calendar.nextWeek();
64
- ```
65
-
66
- ### `previousDay(): void`
67
- Navigate to previous day.
68
-
69
- ```javascript
70
- calendar.previousDay();
71
- ```
72
-
73
- ### `nextDay(): void`
74
- Navigate to next day.
75
-
76
- ```javascript
77
- calendar.nextDay();
78
- ```
79
-
80
- ### `getDisplayedMonth(): { month: number; year: number }`
81
- Get currently displayed month.
82
-
83
- ```javascript
84
- const { month, year } = calendar.getDisplayedMonth();
85
- console.log(`Showing ${month + 1}/${year}`);
86
- ```
87
-
88
- ### `getEventsForDate(date: Date | string): CalendarEvent[]`
89
- Get events for specific date.
90
-
91
- ```javascript
92
- const events = calendar.getEventsForDate(new Date());
93
- console.log(`Today has ${events.length} events`);
94
- ```
95
-
96
- ## CalendarEvent Interface
32
+ ### CalendarEvent Interface
97
33
 
98
34
  ```typescript
99
35
  interface CalendarEvent {
@@ -106,39 +42,37 @@ interface CalendarEvent {
106
42
  }
107
43
  ```
108
44
 
109
- ## Events
110
-
111
- ### `calendar-change`
112
- Dispatched when selected date changes.
113
-
114
- ```javascript
115
- calendar.addEventListener('calendar-change', (e) => {
116
- console.log('Selected:', e.detail.value);
117
- });
118
- ```
119
-
120
- **Detail:** `{ value: Date, calendar: SniceCalendarElement }`
45
+ ## Methods
121
46
 
122
- ### `calendar-event-click`
123
- Dispatched when event is clicked.
47
+ | Method | Arguments | Returns | Description |
48
+ |--------|-----------|---------|-------------|
49
+ | `goToToday()` | -- | `void` | Navigate to today's date |
50
+ | `goToDate()` | `date: Date \| string` | `void` | Navigate to specific date |
51
+ | `previousMonth()` | -- | `void` | Navigate to previous month |
52
+ | `nextMonth()` | -- | `void` | Navigate to next month |
53
+ | `previousWeek()` | -- | `void` | Navigate to previous week |
54
+ | `nextWeek()` | -- | `void` | Navigate to next week |
55
+ | `previousDay()` | -- | `void` | Navigate to previous day |
56
+ | `nextDay()` | -- | `void` | Navigate to next day |
57
+ | `getDisplayedMonth()` | -- | `{ month: number; year: number }` | Get currently displayed month |
58
+ | `getEventsForDate()` | `date: Date \| string` | `CalendarEvent[]` | Get events for specific date |
124
59
 
125
- ```javascript
126
- calendar.addEventListener('calendar-event-click', (e) => {
127
- console.log('Event clicked:', e.detail.event);
128
- });
129
- ```
60
+ ## Events
130
61
 
131
- **Detail:** `{ event: CalendarEvent, calendar: SniceCalendarElement }`
62
+ | Event | Detail | Description |
63
+ |-------|--------|-------------|
64
+ | `calendar-change` | `{ value: Date, calendar: SniceCalendarElement }` | Fired when selected date changes |
65
+ | `calendar-event-click` | `{ event: CalendarEvent, calendar: SniceCalendarElement }` | Fired when an event is clicked |
132
66
 
133
67
  ## CSS Parts
134
68
 
135
69
  Style internal elements from outside the shadow DOM using `::part()`.
136
70
 
137
- | Part | Element | Description |
138
- |------|---------|-------------|
139
- | `base` | `<div>` | The main calendar container |
140
- | `header` | `<div>` | The header with month title and navigation buttons |
141
- | `grid` | `<div>` | The day cells grid |
71
+ | Part | Description |
72
+ |------|-------------|
73
+ | `base` | The main calendar container |
74
+ | `header` | The header with month title and navigation buttons |
75
+ | `grid` | The day cells grid |
142
76
 
143
77
  ```css
144
78
  snice-calendar::part(base) {
@@ -150,10 +84,6 @@ snice-calendar::part(header) {
150
84
  padding: 1rem;
151
85
  font-weight: 600;
152
86
  }
153
-
154
- snice-calendar::part(grid) {
155
- gap: 2px;
156
- }
157
87
  ```
158
88
 
159
89
  ## Basic Usage
@@ -163,6 +93,8 @@ snice-calendar::part(grid) {
163
93
  ```
164
94
 
165
95
  ```typescript
96
+ import 'snice/components/calendar/snice-calendar';
97
+
166
98
  calendar.addEventListener('calendar-change', (e) => {
167
99
  console.log('Selected date:', e.detail.value);
168
100
  });
@@ -170,42 +102,29 @@ calendar.addEventListener('calendar-change', (e) => {
170
102
 
171
103
  ## Examples
172
104
 
173
- ### Basic Calendar
174
-
175
- ```html
176
- <snice-calendar></snice-calendar>
177
- ```
178
-
179
105
  ### With Events
180
106
 
107
+ Use the `events` property to display events on the calendar.
108
+
181
109
  ```typescript
182
110
  calendar.events = [
183
- {
184
- id: 1,
185
- title: 'Team Meeting',
186
- start: new Date(2024, 5, 15, 10, 0),
187
- color: '#2196f3'
188
- },
189
- {
190
- id: 2,
191
- title: 'Project Deadline',
192
- start: new Date(2024, 5, 20),
193
- color: '#f44336'
194
- }
111
+ { id: 1, title: 'Team Meeting', start: new Date(2024, 5, 15, 10, 0), color: '#2196f3' },
112
+ { id: 2, title: 'Project Deadline', start: new Date(2024, 5, 20), color: '#f44336' }
195
113
  ];
196
114
  ```
197
115
 
198
- ### With Date Restrictions
116
+ ### Date Restrictions
117
+
118
+ Use `min-date` and `max-date` to constrain the selectable date range.
199
119
 
200
120
  ```html
201
- <snice-calendar
202
- min-date="2024-01-01"
203
- max-date="2024-12-31">
204
- </snice-calendar>
121
+ <snice-calendar min-date="2024-01-01" max-date="2024-12-31"></snice-calendar>
205
122
  ```
206
123
 
207
124
  ### Disabled Dates
208
125
 
126
+ Use the `disabledDates` property to prevent selection of specific dates.
127
+
209
128
  ```javascript
210
129
  calendar.disabledDates = [
211
130
  new Date(2024, 5, 10),
@@ -216,11 +135,15 @@ calendar.disabledDates = [
216
135
 
217
136
  ### Week Starting Monday
218
137
 
138
+ Use `first-day-of-week` to change the starting day.
139
+
219
140
  ```html
220
141
  <snice-calendar first-day-of-week="1"></snice-calendar>
221
142
  ```
222
143
 
223
- ### French Locale
144
+ ### Locale
145
+
146
+ Use the `locale` attribute for locale-aware date formatting.
224
147
 
225
148
  ```html
226
149
  <snice-calendar locale="fr-FR"></snice-calendar>
@@ -228,34 +151,32 @@ calendar.disabledDates = [
228
151
 
229
152
  ### With Week Numbers
230
153
 
154
+ Set `show-week-numbers` to display ISO week numbers.
155
+
231
156
  ```html
232
157
  <snice-calendar show-week-numbers></snice-calendar>
233
158
  ```
234
159
 
235
160
  ### Programmatic Navigation
236
161
 
162
+ Use methods to control navigation from JavaScript.
163
+
237
164
  ```javascript
238
- // Go to today
239
165
  calendar.goToToday();
240
-
241
- // Go to specific date
242
166
  calendar.goToDate(new Date(2024, 11, 25));
243
-
244
- // Navigate months
245
167
  calendar.previousMonth();
246
168
  calendar.nextMonth();
247
169
  ```
248
170
 
249
171
  ### Event Handling
250
172
 
173
+ Listen for date selection and event clicks.
174
+
251
175
  ```javascript
252
- // Date selection
253
176
  calendar.addEventListener('calendar-change', (e) => {
254
177
  console.log('Date selected:', e.detail.value);
255
- updateBookingForm(e.detail.value);
256
178
  });
257
179
 
258
- // Event clicks
259
180
  calendar.addEventListener('calendar-event-click', (e) => {
260
181
  showEventDetails(e.detail.event);
261
182
  });
@@ -263,8 +184,9 @@ calendar.addEventListener('calendar-event-click', (e) => {
263
184
 
264
185
  ### Booking System
265
186
 
187
+ Combine events, disabled dates, and event handling for a booking workflow.
188
+
266
189
  ```typescript
267
- // Load bookings
268
190
  const bookings = await fetchBookings();
269
191
  calendar.events = bookings.map(b => ({
270
192
  id: b.id,
@@ -273,11 +195,8 @@ calendar.events = bookings.map(b => ({
273
195
  color: b.confirmed ? '#4caf50' : '#ff9800'
274
196
  }));
275
197
 
276
- // Disable fully booked dates
277
- const fullyBooked = await getFullyBookedDates();
278
- calendar.disabledDates = fullyBooked;
198
+ calendar.disabledDates = await getFullyBookedDates();
279
199
 
280
- // Handle new booking
281
200
  calendar.addEventListener('calendar-change', (e) => {
282
201
  if (hasAvailability(e.detail.value)) {
283
202
  showBookingForm(e.detail.value);
@@ -285,133 +204,30 @@ calendar.addEventListener('calendar-change', (e) => {
285
204
  });
286
205
  ```
287
206
 
288
- ### Holiday Calendar
289
-
290
- ```javascript
291
- calendar.events = [
292
- { id: 1, title: 'New Year', start: '2024-01-01', color: '#f44336' },
293
- { id: 2, title: 'Independence Day', start: '2024-07-04', color: '#2196f3' },
294
- { id: 3, title: 'Thanksgiving', start: '2024-11-28', color: '#ff9800' },
295
- { id: 4, title: 'Christmas', start: '2024-12-25', color: '#4caf50' }
296
- ];
297
- ```
298
-
299
- ### Meeting Scheduler
300
-
301
- ```typescript
302
- // Show team meetings
303
- calendar.events = teamMeetings.map(m => ({
304
- id: m.id,
305
- title: m.title,
306
- start: m.startTime,
307
- end: m.endTime,
308
- color: m.recurring ? '#9c27b0' : '#2196f3',
309
- data: m
310
- }));
311
-
312
- // Click to see meeting details
313
- calendar.addEventListener('calendar-event-click', (e) => {
314
- const meeting = e.detail.event;
315
- showModal({
316
- title: meeting.title,
317
- attendees: meeting.data.attendees,
318
- location: meeting.data.location
319
- });
320
- });
321
- ```
322
-
323
- ### Availability Checker
324
-
325
- ```javascript
326
- // Mark unavailable dates
327
- calendar.disabledDates = unavailableDates;
328
-
329
- // Set date range
330
- const today = new Date();
331
- calendar.minDate = today;
332
- calendar.maxDate = new Date(today.getFullYear(), today.getMonth() + 3, 0);
333
-
334
- // Handle selection
335
- calendar.addEventListener('calendar-change', (e) => {
336
- checkAvailability(e.detail.value).then(slots => {
337
- if (slots.length > 0) {
338
- showTimeSlots(slots);
339
- } else {
340
- alert('No availability on this date');
341
- }
342
- });
343
- });
344
- ```
345
-
346
207
  ### Multi-Event Days
347
208
 
209
+ Use `getEventsForDate()` to query events for a specific date.
210
+
348
211
  ```javascript
349
- // Multiple events per day
350
212
  calendar.events = [
351
213
  { id: 1, title: 'Morning Standup', start: '2024-06-15 09:00', color: '#2196f3' },
352
214
  { id: 2, title: 'Client Meeting', start: '2024-06-15 14:00', color: '#4caf50' },
353
215
  { id: 3, title: 'Team Sync', start: '2024-06-15 16:00', color: '#ff9800' }
354
216
  ];
355
217
 
356
- // Get all events for a date
357
- const date = new Date(2024, 5, 15);
358
- const dayEvents = calendar.getEventsForDate(date);
359
- console.log(`${dayEvents.length} events on ${date.toLocaleDateString()}`);
360
- ```
361
-
362
- ### Vacation Planner
363
-
364
- ```javascript
365
- // Show approved vacations
366
- calendar.events = vacations.map(v => ({
367
- id: v.id,
368
- title: `${v.employee} - Vacation`,
369
- start: v.startDate,
370
- end: v.endDate,
371
- color: '#9c27b0'
372
- }));
373
-
374
- // Block company holidays
375
- calendar.disabledDates = companyHolidays;
376
-
377
- // Request new vacation
378
- calendar.addEventListener('calendar-change', (e) => {
379
- if (canRequestVacation(e.detail.value)) {
380
- showVacationRequestForm(e.detail.value);
381
- }
382
- });
218
+ const dayEvents = calendar.getEventsForDate(new Date(2024, 5, 15));
219
+ console.log(`${dayEvents.length} events on this date`);
383
220
  ```
384
221
 
385
- ### Dynamic Event Updates
222
+ ## Keyboard Navigation
386
223
 
387
- ```javascript
388
- // Add event
389
- function addEvent(event) {
390
- calendar.events = [...calendar.events, event];
391
- }
392
-
393
- // Remove event
394
- function removeEvent(id) {
395
- calendar.events = calendar.events.filter(e => e.id !== id);
396
- }
397
-
398
- // Update event
399
- function updateEvent(id, updates) {
400
- calendar.events = calendar.events.map(e =>
401
- e.id === id ? { ...e, ...updates } : e
402
- );
403
- }
404
- ```
224
+ - Arrow keys to navigate between dates
225
+ - Enter to select a date
226
+ - Tab to move between controls
405
227
 
406
228
  ## Accessibility
407
229
 
408
- - Keyboard navigation (arrow keys)
230
+ - Keyboard navigation with arrow keys
409
231
  - ARIA labels for dates and events
410
232
  - Screen reader friendly
411
233
  - Focus management
412
-
413
- ## Browser Support
414
-
415
- - Modern browsers with Custom Elements v1 support
416
- - Date formatting via Intl API
417
- - Touch and mouse support
@@ -1,8 +1,8 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/camera-annotate.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/camera-annotate.md -->
2
2
 
3
3
  # Camera Annotate Component
4
4
 
5
- The camera annotate component combines camera capture with freehand drawing and labeled annotations. It provides a workflow for taking pictures, drawing shapes on them, and adding descriptive labels to each annotation.
5
+ Combines camera capture with freehand drawing and labeled annotations. Provides a workflow for taking pictures, drawing shapes on them, and adding descriptive labels to each annotation.
6
6
 
7
7
  ## Table of Contents
8
8
  - [Properties](#properties)
@@ -11,46 +11,42 @@ The camera annotate component combines camera capture with freehand drawing and
11
11
  - [CSS Parts](#css-parts)
12
12
  - [Basic Usage](#basic-usage)
13
13
  - [Examples](#examples)
14
- - [Annotation Workflow](#annotation-workflow)
15
14
  - [Accessibility](#accessibility)
16
- - [Browser Support](#browser-support)
17
15
 
18
16
  ## Properties
19
17
 
20
18
  | Property | Type | Default | Description |
21
19
  |----------|------|---------|-------------|
22
20
  | `mode` | `'camera' \| 'annotate'` | `'camera'` | Current mode of the component |
23
- | `auto-rotate-colors` | `boolean` | `true` | Automatically cycle through preset colors for each new annotation |
24
- | `show-labels-panel` | `boolean` | `true` | Show the sidebar panel with annotation labels |
21
+ | `autoRotateColors` (attr: `auto-rotate-colors`) | `boolean` | `true` | Automatically cycle through preset colors for each new annotation |
22
+ | `showLabelsPanel` (attr: `show-labels-panel`) | `boolean` | `true` | Show the sidebar panel with annotation labels |
25
23
 
26
24
  ## Methods
27
25
 
28
- | Method | Return Type | Description |
29
- |--------|-------------|-------------|
30
- | `capture()` | `Promise<void>` | Capture current camera frame and switch to annotate mode |
31
- | `exportImage(options?)` | `string` | Export annotated image as data URL. Options: `{ includeLabels?: boolean }` |
32
- | `exportAnnotations()` | `AnnotationData` | Export all annotation data as a serializable object |
33
- | `importAnnotations(data)` | `void` | Load annotation data from a previously exported object |
34
- | `clearAnnotations()` | `void` | Remove all annotations and strokes |
26
+ | Method | Arguments | Returns | Description |
27
+ |--------|-----------|---------|-------------|
28
+ | `capture()` | -- | `Promise<void>` | Capture current camera frame and switch to annotate mode |
29
+ | `exportImage()` | `options?: { includeLabels?: boolean }` | `string` | Export annotated image as data URL |
30
+ | `exportAnnotations()` | -- | `AnnotationData` | Export all annotation data as a serializable object |
31
+ | `importAnnotations()` | `data: AnnotationData` | `void` | Load annotation data from a previously exported object |
32
+ | `clearAnnotations()` | -- | `void` | Remove all annotations and strokes |
35
33
 
36
34
  ## Events
37
35
 
38
36
  | Event | Detail | Description |
39
37
  |-------|--------|-------------|
40
- | `capture` | `{ dataURL, width, height }` | Fired when an image is captured from the camera |
41
- | `annotate` | `{ annotation }` | Fired when a new annotation (shape) is drawn |
42
- | `annotation-change` | `{ annotations }` | Fired when annotations are modified (add, remove, visibility, label) |
38
+ | `capture` | `{ dataURL: string, width: number, height: number }` | Fired when an image is captured from the camera |
39
+ | `annotate` | `{ annotation: Annotation }` | Fired when a new annotation (shape) is drawn |
40
+ | `annotation-change` | `{ annotations: Annotation[] }` | Fired when annotations are modified (add, remove, visibility, label) |
43
41
 
44
42
  ## CSS Parts
45
43
 
46
- Style internal elements from outside the shadow DOM using `::part()`.
47
-
48
- | Part | Element | Description |
49
- |------|---------|-------------|
50
- | `base` | `<div>` | Outer layout container |
51
- | `canvas` | `<div>` | Canvas area containing the video feed and drawing surface |
52
- | `toolbar` | `<div>` | Toolbar with capture/retake, undo, clear, and export buttons |
53
- | `sidebar` | `<div>` | Sidebar panel with color palette and annotation labels |
44
+ | Part | Description |
45
+ |------|-------------|
46
+ | `base` | Outer layout container |
47
+ | `canvas` | Canvas area containing the video feed and drawing surface |
48
+ | `toolbar` | Toolbar with capture/retake, undo, clear, and export buttons |
49
+ | `sidebar` | Sidebar panel with color palette and annotation labels |
54
50
 
55
51
  ```css
56
52
  snice-camera-annotate::part(base) {
@@ -76,26 +72,26 @@ import 'snice/components/camera-annotate/snice-camera-annotate';
76
72
 
77
73
  ## Examples
78
74
 
79
- ### Default Camera Annotator
80
-
81
- ```html
82
- <snice-camera-annotate></snice-camera-annotate>
83
- ```
84
-
85
75
  ### Without Labels Panel
86
76
 
77
+ Hide the sidebar by setting `show-labels-panel` to false.
78
+
87
79
  ```html
88
80
  <snice-camera-annotate show-labels-panel="false"></snice-camera-annotate>
89
81
  ```
90
82
 
91
83
  ### Manual Color Selection
92
84
 
85
+ Disable auto-rotation to choose colors manually from the palette.
86
+
93
87
  ```html
94
88
  <snice-camera-annotate auto-rotate-colors="false"></snice-camera-annotate>
95
89
  ```
96
90
 
97
91
  ### Listening to Events
98
92
 
93
+ Use events to track capture and annotation changes.
94
+
99
95
  ```html
100
96
  <snice-camera-annotate id="annotator"></snice-camera-annotate>
101
97
 
@@ -118,85 +114,37 @@ import 'snice/components/camera-annotate/snice-camera-annotate';
118
114
 
119
115
  ### Save and Load Annotations
120
116
 
121
- ```html
122
- <snice-camera-annotate id="annotator"></snice-camera-annotate>
117
+ Use `exportAnnotations()` and `importAnnotations()` to persist annotation data.
123
118
 
124
- <script type="module">
125
- const annotator = document.getElementById('annotator');
119
+ ```javascript
120
+ // Save
121
+ const data = annotator.exportAnnotations();
122
+ localStorage.setItem('annotations', JSON.stringify(data));
126
123
 
127
- // Save
128
- function saveAnnotations() {
129
- const data = annotator.exportAnnotations();
130
- localStorage.setItem('annotations', JSON.stringify(data));
131
- }
132
-
133
- // Load
134
- function loadAnnotations() {
135
- const json = localStorage.getItem('annotations');
136
- if (json) {
137
- annotator.importAnnotations(JSON.parse(json));
138
- }
139
- }
140
- </script>
124
+ // Load
125
+ const json = localStorage.getItem('annotations');
126
+ if (json) {
127
+ annotator.importAnnotations(JSON.parse(json));
128
+ }
141
129
  ```
142
130
 
143
131
  ### Export Image
144
132
 
145
- ```html
146
- <snice-camera-annotate id="annotator"></snice-camera-annotate>
147
- <button onclick="downloadImage()">Download</button>
148
-
149
- <script type="module">
150
- function downloadImage() {
151
- const annotator = document.getElementById('annotator');
133
+ Use `exportImage()` to download the annotated image with or without labels.
152
134
 
153
- // Without labels on the image
154
- const imageOnly = annotator.exportImage();
135
+ ```javascript
136
+ const imageOnly = annotator.exportImage();
137
+ const withLabels = annotator.exportImage({ includeLabels: true });
155
138
 
156
- // With labels rendered on the image
157
- const withLabels = annotator.exportImage({ includeLabels: true });
158
-
159
- // Download
160
- const a = document.createElement('a');
161
- a.href = withLabels;
162
- a.download = 'annotated.png';
163
- a.click();
164
- }
165
- </script>
139
+ const a = document.createElement('a');
140
+ a.href = withLabels;
141
+ a.download = 'annotated.png';
142
+ a.click();
166
143
  ```
167
144
 
168
- ## Annotation Workflow
169
-
170
- 1. **Camera Mode**: The component starts showing a live camera feed
171
- 2. **Capture**: Click the "Capture" button to take a photo
172
- 3. **Annotate Mode**: Draw shapes on the captured image using freehand strokes
173
- 4. **Label**: Type labels for each annotation in the sidebar
174
- 5. **Manage**: Show/hide individual annotations, toggle all, or delete specific ones
175
- 6. **Export**: Save annotation data as JSON or export the annotated image
176
- 7. **Retake**: Click "Retake" to return to camera mode and start fresh
177
-
178
- ### Color System
179
-
180
- - **Preset Palette**: 12 preset colors displayed as swatches in the sidebar
181
- - **Auto Rotate**: When enabled (default), each new annotation automatically gets the next color from the palette
182
- - **Manual Selection**: Click any color swatch to set the active drawing color
183
-
184
- ### Visual Highlighting
185
-
186
- When you hover over an annotation label in the sidebar:
187
- - The corresponding shape is highlighted at full opacity
188
- - All other shapes dim to 20% opacity with a grayscale filter
189
- - This makes it easy to identify which shape belongs to which label
190
-
191
145
  ## Accessibility
192
146
 
193
147
  - Color swatches have title attributes showing the hex value
194
148
  - Annotation visibility toggles have descriptive title text
195
149
  - Delete buttons have clear title labels
196
150
  - The sidebar scrolls independently when annotations exceed available space
197
-
198
- ## Browser Support
199
-
200
- - Modern browsers (Chrome, Firefox, Safari, Edge)
201
- - Requires camera access via `getUserMedia`
202
- - Requires Custom Elements v1 and Shadow DOM support