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,24 +1,24 @@
1
1
  # snice-comments
2
2
 
3
- Threaded comment system with replies, likes, avatars, and real-time relative timestamps.
3
+ Threaded comment system with replies, likes, avatars, and relative timestamps.
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- comments: Comment[] = [] // Array of comment objects (set via JS)
9
- currentUser: string = '' // attr: current-user — name of logged-in user (enables delete on own comments)
10
- allowReplies: boolean = true // attr: allow-replies — enable nested replies
11
- allowLikes: boolean = true // attr: allow-likes — enable like/unlike
12
- maxDepth: number = 3 // attr: max-depth — max nesting depth for replies
7
+ ```typescript
8
+ comments: Comment[] = []; // Set via JS
9
+ currentUser: string = ''; // attribute: current-user
10
+ allowReplies: boolean = true; // attribute: allow-replies
11
+ allowLikes: boolean = true; // attribute: allow-likes
12
+ maxDepth: number = 3; // attribute: max-depth
13
13
  ```
14
14
 
15
- ## Types
15
+ ### Comment Type
16
16
 
17
- ```ts
17
+ ```typescript
18
18
  interface Comment {
19
19
  id: string;
20
20
  author: string;
21
- avatar?: string; // URL for avatar image
21
+ avatar?: string;
22
22
  text: string;
23
23
  timestamp: string; // ISO date string
24
24
  replies?: Comment[];
@@ -27,48 +27,67 @@ interface Comment {
27
27
  }
28
28
  ```
29
29
 
30
- ## Events
30
+ ## Methods
31
31
 
32
- - `comment-add` -> `{ id: string, text: string, author: string }`
33
- - `comment-reply` -> `{ id: string, text: string, author: string, parentId: string }`
34
- - `comment-delete` -> `{ id: string }`
35
- - `comment-like` -> `{ id: string, likes: number, liked: boolean }`
32
+ - `addComment(text: string, parentId?: string)` - Add top-level or reply comment
33
+ - `deleteComment(id: string)` - Remove a comment by ID
34
+ - `likeComment(id: string)` - Toggle like on a comment
36
35
 
37
- ## Methods
36
+ ## Events
38
37
 
39
- - `addComment(text: string, parentId?: string): void` Add top-level or reply comment
40
- - `deleteComment(id: string): void` Remove a comment by ID
41
- - `likeComment(id: string): void` Toggle like on a comment
38
+ - `comment-add` -> `{ id, text, author }` - New top-level comment
39
+ - `comment-reply` -> `{ id, text, author, parentId }` - Reply submitted
40
+ - `comment-delete` -> `{ id }` - Comment deleted
41
+ - `comment-like` -> `{ id, likes, liked }` - Like toggled
42
42
 
43
43
  ## CSS Custom Properties
44
44
 
45
45
  ```css
46
- --comments-bg /* Background color */
47
- --comments-border /* Border color */
48
- --comments-text /* Primary text */
49
- --comments-text-secondary /* Author name, secondary text */
50
- --comments-text-tertiary /* Timestamps, placeholders */
51
- --comments-primary /* Submit button, active like color */
52
- --comments-danger /* Delete action hover color */
53
- --comments-bg-element /* Avatar background, hover states */
46
+ --comments-bg /* Background color */
47
+ --comments-border /* Border color */
48
+ --comments-text /* Primary text */
49
+ --comments-text-secondary /* Author name, secondary text */
50
+ --comments-text-tertiary /* Timestamps, placeholders */
51
+ --comments-primary /* Submit button, active like color */
52
+ --comments-danger /* Delete action hover color */
53
+ --comments-bg-element /* Avatar background, hover states */
54
54
  ```
55
55
 
56
56
  ## CSS Parts
57
57
 
58
- - `base` Root container
59
- - `input-area` New comment input area
60
- - `list` Comments list container
58
+ - `base` - Root container
59
+ - `input-area` - New comment input area
60
+ - `list` - Comments list container
61
61
 
62
- ## Usage
62
+ ## Basic Usage
63
63
 
64
64
  ```html
65
- <snice-comments current-user="Alice" allow-replies max-depth="3"></snice-comments>
65
+ <snice-comments current-user="Alice" allow-replies allow-likes></snice-comments>
66
66
  ```
67
67
 
68
68
  ```typescript
69
- comments.comments = [
70
- { id: '1', author: 'Bob', text: 'Great post!', timestamp: '2026-02-20T10:00:00Z', likes: 3 },
71
- { id: '2', author: 'Alice', text: 'Thanks!', timestamp: '2026-02-20T11:00:00Z', likes: 0 }
69
+ import 'snice/components/comments/snice-comments';
70
+
71
+ el.comments = [
72
+ { id: '1', author: 'Bob', text: 'Great post!', timestamp: '2026-02-20T10:00:00Z', likes: 3 }
72
73
  ];
73
- comments.addEventListener('comment-add', e => console.log(e.detail));
74
+ el.addEventListener('comment-add', (e) => console.log(e.detail));
74
75
  ```
76
+
77
+ ### Declarative
78
+
79
+ ```html
80
+ <snice-comments current-user="John">
81
+ <snice-comment author="Alice" timestamp="2026-01-15T10:30:00Z" likes="3">
82
+ Great article!
83
+ <snice-comment author="Bob" timestamp="2026-01-15T11:00:00Z">Reply</snice-comment>
84
+ </snice-comment>
85
+ </snice-comments>
86
+ ```
87
+
88
+ ## Accessibility
89
+
90
+ - Tab through comments, Enter/Space to activate
91
+ - Relative timestamps
92
+ - Delete only on own comments
93
+ - Semantic markup for screen readers
@@ -1,60 +1,58 @@
1
1
  # snice-countdown
2
2
 
3
- Countdown timer to a target date with multiple display formats and visual variants.
3
+ Countdown timer to a target date with multiple visual variants and display formats.
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- target: string = '' // attr: target — ISO date string to count down to
9
- format: CountdownFormat = 'dhms' // attr: format — 'dhms' | 'hms' | 'ms'
10
- variant: CountdownVariant = 'simple' // attr: variant — 'simple' | 'flip' | 'circular'
7
+ ```typescript
8
+ target: string = ''; // ISO date string
9
+ format: 'dhms'|'hms'|'ms' = 'dhms'; // Display segments
10
+ variant: 'simple'|'flip'|'circular' = 'simple'; // Visual style
11
11
  ```
12
12
 
13
13
  ## Events
14
14
 
15
- - `countdown-complete` `void` - Fires when countdown reaches zero
16
- - `countdown-tick` `{ days, hours, minutes, seconds, total }` - Fires every second
15
+ - `countdown-complete` -> `void` - Countdown reached zero
16
+ - `countdown-tick` -> `{ days, hours, minutes, seconds, total }` - Fires every second
17
17
 
18
18
  ## CSS Custom Properties
19
19
 
20
- Uses standard snice design tokens:
21
-
22
20
  ```css
23
21
  --snice-font-family
24
- --snice-font-size-2xl /* Digit size */
25
- --snice-font-size-xs /* Label size */
26
- --snice-color-text /* Digit color */
27
- --snice-color-text-secondary /* Label color */
28
- --snice-color-text-tertiary /* Separator color */
22
+ --snice-font-size-2xl /* Digit size */
23
+ --snice-font-size-xs /* Label size */
24
+ --snice-color-text /* Digit color */
25
+ --snice-color-text-secondary /* Label color */
26
+ --snice-color-text-tertiary /* Separator color */
29
27
  --snice-color-background-element /* Flip variant card bg */
30
- --snice-color-border /* Flip variant border */
31
- --snice-color-primary /* Circular variant ring color */
32
- --snice-color-success /* Complete state color */
28
+ --snice-color-border /* Flip variant border */
29
+ --snice-color-primary /* Circular variant ring color */
30
+ --snice-color-success /* Complete state color */
33
31
  ```
34
32
 
35
- **CSS Parts:**
33
+ ## CSS Parts
34
+
36
35
  - `base` - Outer countdown container
37
36
  - `segment` - Individual time segment (days, hours, etc.)
38
37
  - `value` - Digit value within a segment
39
38
  - `label` - Text label within a segment (e.g. "Days")
40
39
  - `separator` - Colon separator between segments
41
40
 
42
- ## Behavior
43
-
44
- - Ticks every second, auto-stops on completion
45
- - Adds `.complete` class to host when finished
46
- - `format` controls which segments display:
47
- - `dhms`: Days, Hours, Min, Sec
48
- - `hms`: Hours, Min, Sec
49
- - `ms`: Min, Sec
50
-
51
- ## Usage
41
+ ## Basic Usage
52
42
 
53
43
  ```html
54
- <snice-countdown target="2026-12-31T00:00:00Z" format="dhms" variant="flip"></snice-countdown>
44
+ <snice-countdown target="2026-12-31T00:00:00Z" variant="flip" format="dhms"></snice-countdown>
55
45
  ```
56
46
 
57
47
  ```typescript
48
+ import 'snice/components/countdown/snice-countdown';
49
+
58
50
  cd.addEventListener('countdown-complete', () => alert('Done!'));
59
- cd.addEventListener('countdown-tick', e => console.log(e.detail.total));
51
+ cd.addEventListener('countdown-tick', (e) => console.log(e.detail.total));
60
52
  ```
53
+
54
+ ## Accessibility
55
+
56
+ - Live updates every second
57
+ - `.complete` class added to host on finish
58
+ - Descriptive labels on each segment
@@ -1,28 +1,28 @@
1
1
  # snice-cropper
2
2
 
3
- Image cropping component with draggable/resizable crop area, rotation, zoom, aspect ratio lock, and rule-of-thirds grid.
3
+ Image cropping with draggable/resizable crop area, rotation, zoom, aspect ratio lock, and rule-of-thirds grid.
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- src: string = '' // attr: src — Image URL to crop
9
- aspectRatio: number = 0 // attr: aspect-ratio — Lock ratio (0 = free, e.g. 1.777 for 16:9)
10
- minWidth: number = 20 // attr: min-width — Min crop width in px
11
- minHeight: number = 20 // attr: min-height — Min crop height in px
12
- outputType: CropperOutputType = 'png' // attr: output-type — 'png' | 'jpeg' | 'webp'
7
+ ```typescript
8
+ src: string = ''; // Image URL
9
+ aspectRatio: number = 0; // attribute: aspect-ratio (0 = free, 1 = square, 1.777 = 16:9)
10
+ minWidth: number = 20; // attribute: min-width
11
+ minHeight: number = 20; // attribute: min-height
12
+ outputType: 'png'|'jpeg'|'webp' = 'png'; // attribute: output-type
13
13
  ```
14
14
 
15
- ## Events
15
+ ## Methods
16
16
 
17
- - `crop-change` -> `{ rect: { x: number, y: number, width: number, height: number } }` — Fires on crop area move/resize
18
- - `crop-complete` -> `{ blob: Blob | null }` Fires after `crop()` produces output
17
+ - `crop(): Promise<Blob | null>` - Produce cropped image blob
18
+ - `rotate(degrees: number)` - Rotate image (cumulative)
19
+ - `zoom(level: number)` - Set zoom level (0.1 to 10)
20
+ - `reset()` - Reset rotation, zoom, and crop area
19
21
 
20
- ## Methods
22
+ ## Events
21
23
 
22
- - `crop(): Promise<Blob | null>` Produce cropped image blob
23
- - `rotate(degrees: number): void` Rotate image by degrees (cumulative)
24
- - `zoom(level: number): void` — Set zoom level (0.1 to 10)
25
- - `reset(): void` — Reset rotation, zoom, and crop area to defaults
24
+ - `crop-change` -> `{ rect: { x, y, width, height } }` - Crop area moved/resized
25
+ - `crop-complete` -> `{ blob: Blob | null }` - After crop() produces output
26
26
 
27
27
  ## CSS Custom Properties
28
28
 
@@ -31,36 +31,36 @@ outputType: CropperOutputType = 'png' // attr: output-type — 'png' | '
31
31
  --snice-color-border /* Container border */
32
32
  --snice-border-radius-lg /* Container radius */
33
33
  --cropper-overlay /* Overlay mask color (default: rgb(0 0 0 / 0.5)) */
34
- --cropper-border-color /* Crop area border color (default: rgb(255 255 255)) */
35
- --cropper-guide-color /* Rule-of-thirds guide color (default: rgb(255 255 255 / 0.4)) */
36
- --cropper-handle-color /* Resize handle fill (default: rgb(255 255 255)) */
37
- --cropper-handle-border /* Resize handle border (default: rgb(0 0 0 / 0.3)) */
34
+ --cropper-border-color /* Crop area border (default: rgb(255 255 255)) */
35
+ --cropper-guide-color /* Guide lines (default: rgb(255 255 255 / 0.4)) */
36
+ --cropper-handle-color /* Handle fill (default: rgb(255 255 255)) */
37
+ --cropper-handle-border /* Handle border (default: rgb(0 0 0 / 0.3)) */
38
38
  ```
39
39
 
40
- **CSS Parts:**
41
- - `base` - Outer cropper container div
40
+ ## CSS Parts
41
+
42
+ - `base` - Outer cropper container
42
43
  - `image-container` - Image display area
43
44
  - `crop-area` - Draggable/resizable crop region
44
45
 
45
- ## Behavior
46
-
47
- - Crop area is draggable (move) and resizable via 8 corner/edge handles
48
- - Rule-of-thirds grid overlay on crop area
49
- - Dark mask outside crop area
50
- - Aspect ratio enforced on resize when `aspectRatio > 0`
51
-
52
- ## Usage
46
+ ## Basic Usage
53
47
 
54
48
  ```html
55
49
  <snice-cropper src="/photo.jpg" aspect-ratio="1" output-type="jpeg"></snice-cropper>
56
50
  ```
57
51
 
58
52
  ```typescript
59
- const blob = await cropper.crop();
53
+ import 'snice/components/cropper/snice-cropper';
60
54
 
61
- // Rotate 90 degrees clockwise
55
+ const blob = await cropper.crop();
62
56
  cropper.rotate(90);
63
-
64
- // Zoom in
65
57
  cropper.zoom(1.5);
58
+ cropper.reset();
66
59
  ```
60
+
61
+ ## Accessibility
62
+
63
+ - Drag to reposition, 8 handles to resize
64
+ - Rule-of-thirds grid overlay
65
+ - Dark mask indicates crop region
66
+ - Aspect ratio enforced on resize when set
@@ -5,18 +5,18 @@ Key-value detail panel with grouped sections, multiple value types, and edit-in-
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- fields: DataCardField[] = [];
9
- editable: boolean = false; // Global edit mode toggle
8
+ fields: DataCardField[] = []; // JS only (attribute: false)
9
+ editable: boolean = false; // Global edit mode toggle
10
10
  variant: 'default'|'horizontal'|'compact' = 'default';
11
11
 
12
12
  interface DataCardField {
13
13
  label: string;
14
14
  value: string | number;
15
- type?: 'text'|'link'|'badge'|'date'|'currency'; // default: 'text'
16
- editable?: boolean; // per-field edit override
17
- group?: string; // section grouping
18
- icon?: string; // icon prefix
19
- href?: string; // for type='link'
15
+ type?: 'text'|'link'|'badge'|'date'|'currency'; // default: 'text'
16
+ editable?: boolean; // per-field edit override
17
+ group?: string; // section grouping
18
+ icon?: string; // icon prefix
19
+ href?: string; // for type='link'
20
20
  badgeVariant?: 'default'|'primary'|'success'|'warning'|'danger';
21
21
  }
22
22
  ```
@@ -26,33 +26,39 @@ interface DataCardField {
26
26
  - `getValues()` → `Record<string, string|number>` - Get all field values as label:value map
27
27
  - `setValues(data)` - Update field values by label
28
28
 
29
- ## Slots
30
-
31
- - `header` - Custom header content
32
- - `title` - Title text within default header
33
-
34
29
  ## Events
35
30
 
36
31
  - `field-change` → `{ field, value, previousValue }` - Field value changed
37
32
  - `field-save` → `{ field, value }` - Field value saved
38
33
 
34
+ ## Slots
35
+
36
+ - `header` - Custom header content
37
+ - `title` - Title text within default header
38
+
39
39
  ## CSS Parts
40
40
 
41
41
  - `container`, `header`, `title`, `edit-toggle`
42
42
  - `group`, `group-title`
43
43
  - `field`, `field-icon`, `field-label`, `field-value`, `field-input`, `field-save`, `field-edit`
44
44
 
45
- ## Usage
45
+ ## Basic Usage
46
46
 
47
47
  ```html
48
48
  <snice-data-card variant="default"></snice-data-card>
49
49
  ```
50
50
 
51
51
  ```typescript
52
- details.fields = [
52
+ card.fields = [
53
53
  { label: 'Name', value: 'John Doe', group: 'Personal' },
54
54
  { label: 'Email', value: 'john@example.com', type: 'link', href: 'mailto:john@example.com', group: 'Personal' },
55
55
  { label: 'Status', value: 'Active', type: 'badge', badgeVariant: 'success', group: 'Account' },
56
56
  { label: 'Balance', value: '$1,250.00', type: 'currency', group: 'Account' }
57
57
  ];
58
58
  ```
59
+
60
+ ## Accessibility
61
+
62
+ - Enter to save, Escape to cancel in edit mode
63
+ - Edit toggle hidden when no fields are editable
64
+ - Links use `rel="noopener"` and `target="_blank"`
@@ -1,6 +1,6 @@
1
1
  # snice-date-picker
2
2
 
3
- Calendar-based date input with format options and validation.
3
+ Calendar-based date input with format options and validation. Form-associated custom element.
4
4
 
5
5
  ## Properties
6
6
 
@@ -8,22 +8,22 @@ Calendar-based date input with format options and validation.
8
8
  value: string = '';
9
9
  format: 'yyyy-mm-dd'|'mm/dd/yyyy'|'dd/mm/yyyy'|'yyyy/mm/dd'|'dd-mm-yyyy'|'mm-dd-yyyy'|'mmmm dd, yyyy' = 'mm/dd/yyyy';
10
10
  variant: 'outlined'|'filled'|'underlined' = 'outlined';
11
+ size: 'small'|'medium'|'large' = 'medium';
11
12
  placeholder: string = '';
13
+ label: string = '';
14
+ helperText: string = ''; // attribute: helper-text
15
+ errorText: string = ''; // attribute: error-text
12
16
  disabled: boolean = false;
17
+ readonly: boolean = false;
18
+ loading: boolean = false;
13
19
  required: boolean = false;
14
20
  invalid: boolean = false;
15
- readonly: boolean = false;
16
21
  clearable: boolean = false;
17
- loading: boolean = false;
18
22
  min: string = ''; // Min date (ISO format)
19
23
  max: string = ''; // Max date (ISO format)
20
- size: 'small'|'medium'|'large' = 'medium';
21
24
  name: string = '';
22
- label: string = '';
23
- helperText: string = ''; // attribute: helper-text
24
- errorText: string = ''; // attribute: error-text
25
25
  showCalendar: boolean = false; // attribute: show-calendar
26
- firstDayOfWeek: number = 0; // attribute: first-day-of-week, 0=Sun, 1=Mon, etc.
26
+ firstDayOfWeek: number = 0; // attribute: first-day-of-week, 0=Sun, 1=Mon
27
27
  ```
28
28
 
29
29
  ## Methods
@@ -42,55 +42,48 @@ firstDayOfWeek: number = 0; // attribute: first-day-of-week, 0=Sun, 1=Mon, et
42
42
 
43
43
  ## Events
44
44
 
45
- - `datepicker-input` → {value, datePicker}
46
- - `datepicker-change` → {value, date, formatted, iso, datePicker}
47
- - `datepicker-focus` → {datePicker}
48
- - `datepicker-blur` → {datePicker}
49
- - `datepicker-open` → {datePicker}
50
- - `datepicker-close` → {datePicker}
51
- - `datepicker-clear` → {datePicker}
52
- - `datepicker-select` → {date, formatted, iso, datePicker}
45
+ - `datepicker-input` → `{ value, datePicker }`
46
+ - `datepicker-change` → `{ value, date, formatted, iso, datePicker }`
47
+ - `datepicker-focus` → `{ datePicker }`
48
+ - `datepicker-blur` → `{ datePicker }`
49
+ - `datepicker-open` → `{ datePicker }`
50
+ - `datepicker-close` → `{ datePicker }`
51
+ - `datepicker-clear` → `{ datePicker }`
52
+ - `datepicker-select` → `{ date, formatted, iso, datePicker }`
53
53
 
54
- ## Usage
54
+ ## CSS Parts
55
55
 
56
- ```html
57
- <!-- Basic -->
58
- <snice-date-picker label="Select date"></snice-date-picker>
56
+ - `input` - Text input element
57
+ - `calendar-toggle` - Calendar icon button
58
+ - `clear` - Clear button
59
+ - `spinner` - Loading spinner
60
+ - `calendar` - Calendar popup container
61
+ - `helper-text` - Helper text element
62
+ - `error-text` - Error text element
59
63
 
60
- <!-- With format -->
61
- <snice-date-picker format="dd/mm/yyyy"></snice-date-picker>
64
+ ## Basic Usage
62
65
 
63
- <!-- With min/max -->
66
+ ```html
67
+ <snice-date-picker label="Select date"></snice-date-picker>
68
+ <snice-date-picker format="dd/mm/yyyy" clearable></snice-date-picker>
64
69
  <snice-date-picker min="2024-01-01" max="2024-12-31"></snice-date-picker>
65
-
66
- <!-- Clearable -->
67
- <snice-date-picker value="2024-03-15" clearable></snice-date-picker>
68
-
69
- <!-- Disabled/readonly -->
70
- <snice-date-picker disabled></snice-date-picker>
71
- <snice-date-picker readonly></snice-date-picker>
72
-
73
- <!-- Form integration -->
74
70
  <snice-date-picker name="birthdate" required></snice-date-picker>
75
-
76
- <!-- Event handling -->
77
- <snice-date-picker id="dp"></snice-date-picker>
78
71
  ```
79
72
 
80
73
  ```typescript
81
74
  dp.addEventListener('datepicker-change', (e) => {
82
- console.log('Date:', e.detail.value);
75
+ console.log('Date:', e.detail.formatted, 'ISO:', e.detail.iso);
83
76
  });
84
77
  ```
85
78
 
86
- ## Features
87
-
88
- - Form-associated custom element
89
- - Calendar popup with month/year navigation
90
- - Year picker (click year in header → 12-year grid, navigate ranges, click to select)
91
- - 7 date format options
92
- - Min/max date validation
93
- - Clearable with X button
94
- - 3 sizes, 3 variants
95
- - Keyboard accessible
96
- - Invalid state styling
79
+ ## Keyboard Navigation
80
+
81
+ - Enter/Space on input opens calendar
82
+ - Escape closes calendar, returns focus to input
83
+
84
+ ## Accessibility
85
+
86
+ - Form-associated with ElementInternals
87
+ - Calendar uses popover="manual"
88
+ - Day buttons have aria-label with formatted date
89
+ - aria-invalid on input when invalid
@@ -29,17 +29,7 @@ presets: DateRangePreset[] = []; // attribute: false (JS only)
29
29
  showCalendar: boolean = false; // attr: show-calendar
30
30
  ```
31
31
 
32
- ## Formats
33
-
34
- `'mm/dd/yyyy'` | `'dd/mm/yyyy'` | `'yyyy-mm-dd'` | `'yyyy/mm/dd'` | `'dd-mm-yyyy'` | `'mm-dd-yyyy'` | `'mmmm dd, yyyy'`
35
-
36
- ## Events
37
-
38
- - `daterange-change` → `{ start, end, startDate, endDate, startIso, endIso }`
39
- - `daterange-open` → `{ dateRangePicker }`
40
- - `daterange-close` → `{ dateRangePicker }`
41
- - `daterange-clear` → `{ dateRangePicker }`
42
- - `daterange-preset` → `{ label, start, end }`
32
+ Formats: `'mm/dd/yyyy'`|`'dd/mm/yyyy'`|`'yyyy-mm-dd'`|`'yyyy/mm/dd'`|`'dd-mm-yyyy'`|`'mm-dd-yyyy'`|`'mmmm dd, yyyy'`
43
33
 
44
34
  ## Methods
45
35
 
@@ -51,19 +41,45 @@ showCalendar: boolean = false; // attr: show-calendar
51
41
  - `reportValidity()` - Report validation to user, returns `boolean`
52
42
  - `setCustomValidity(message)` - Set custom validation message
53
43
 
54
- ## Presets
44
+ ## Events
55
45
 
56
- ```js
46
+ - `daterange-change` → `{ start, end, startDate, endDate, startIso, endIso }`
47
+ - `daterange-open` → `{ dateRangePicker }`
48
+ - `daterange-close` → `{ dateRangePicker }`
49
+ - `daterange-clear` → `{ dateRangePicker }`
50
+ - `daterange-preset` → `{ label, start, end, dateRangePicker }`
51
+ - `daterange-focus` → `{ dateRangePicker }`
52
+ - `daterange-blur` → `{ dateRangePicker }`
53
+
54
+ ## CSS Parts
55
+
56
+ `input`, `calendar-toggle`, `clear`, `spinner`, `calendar`, `helper-text`, `error-text`
57
+
58
+ ## Basic Usage
59
+
60
+ ```html
61
+ <snice-date-range-picker label="Select Range" clearable columns="2"></snice-date-range-picker>
62
+ ```
63
+
64
+ ```typescript
65
+ // Presets (JS only)
57
66
  picker.presets = [
58
67
  { label: 'Last 7 days', start: new Date(Date.now() - 7*86400000), end: new Date() },
59
68
  { label: 'This month', start: new Date(2026, 2, 1), end: new Date(2026, 2, 31) },
60
69
  ];
70
+
71
+ // Events
72
+ picker.addEventListener('daterange-change', (e) => {
73
+ console.log(e.detail.startIso, e.detail.endIso);
74
+ });
61
75
  ```
62
76
 
63
77
  ## Form Integration
64
78
 
65
79
  `formAssociated: true`. Submits `{name}-start` and `{name}-end` via FormData.
66
80
 
67
- ## CSS Parts
81
+ ## Accessibility
68
82
 
69
- `input`, `calendar-toggle`, `clear`, `spinner`, `calendar`, `error-text`, `helper-text`
83
+ - Form-associated with ElementInternals
84
+ - Calendar uses popover="manual"
85
+ - Navigation buttons have aria-labels