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,8 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/countdown.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/countdown.md -->
2
2
 
3
3
  # Countdown Component
4
4
 
5
- The countdown component displays a countdown timer to a target date with live-updating segments for days, hours, minutes, and seconds. It supports three visual variants (simple, flip, circular) and configurable display formats.
5
+ A countdown timer to a target date with live-updating segments for days, hours, minutes, and seconds. Supports three visual variants (simple, flip, circular) and configurable display formats.
6
6
 
7
7
  ## Table of Contents
8
8
  - [Properties](#properties)
@@ -30,8 +30,6 @@ The countdown component displays a countdown timer to a target date with live-up
30
30
 
31
31
  ## CSS Custom Properties
32
32
 
33
- The countdown component uses standard Snice design tokens:
34
-
35
33
  | Property | Description |
36
34
  |----------|-------------|
37
35
  | `--snice-font-family` | Font family |
@@ -47,15 +45,13 @@ The countdown component uses standard Snice design tokens:
47
45
 
48
46
  ## CSS Parts
49
47
 
50
- Style internal elements from outside the shadow DOM using `::part()`.
51
-
52
- | Part | Element | Description |
53
- |------|---------|-------------|
54
- | `base` | `<div>` | Outer countdown container |
55
- | `segment` | `<div>` | Individual time segment (days, hours, etc.) |
56
- | `value` | `<span>` | Digit value within a segment |
57
- | `label` | `<span>` | Text label within a segment (e.g. "Days") |
58
- | `separator` | `<span>` | Colon separator between segments |
48
+ | Part | Description |
49
+ |------|-------------|
50
+ | `base` | Outer countdown container |
51
+ | `segment` | Individual time segment (days, hours, etc.) |
52
+ | `value` | Digit value within a segment |
53
+ | `label` | Text label within a segment (e.g. "Days") |
54
+ | `separator` | Colon separator between segments |
59
55
 
60
56
  ```css
61
57
  snice-countdown::part(value) {
@@ -109,9 +105,9 @@ Use `variant="circular"` to display each segment inside a circular progress ring
109
105
  <snice-countdown target="2026-06-15T18:00:00Z" variant="circular" format="hms"></snice-countdown>
110
106
  ```
111
107
 
112
- ### Short Format (Minutes and Seconds)
108
+ ### Short Format
113
109
 
114
- Use `format="ms"` for a short countdown that only shows minutes and seconds.
110
+ Use `format="ms"` for a countdown that only shows minutes and seconds.
115
111
 
116
112
  ```html
117
113
  <snice-countdown target="2026-02-22T12:30:00Z" format="ms" variant="simple"></snice-countdown>
@@ -135,7 +131,6 @@ Listen for completion and tick events to trigger actions.
135
131
 
136
132
  countdown.addEventListener('countdown-tick', (e) => {
137
133
  if (e.detail.total <= 60) {
138
- // Last minute — add urgency styling
139
134
  countdown.style.color = 'red';
140
135
  }
141
136
  });
@@ -144,7 +139,7 @@ Listen for completion and tick events to trigger actions.
144
139
 
145
140
  ## Accessibility
146
141
 
147
- - **Live updates**: The countdown updates every second with current values
148
- - **Completion state**: A `.complete` CSS class is added to the host element when the countdown finishes, allowing for visual feedback
149
- - **Labels**: Each time segment (days, hours, minutes, seconds) has a descriptive label below the digits
150
- - **Screen readers**: Segment labels provide context for the displayed numbers
142
+ - Live updates every second with current values
143
+ - A `.complete` CSS class is added to the host element when the countdown finishes
144
+ - Each time segment has a descriptive label below the digits
145
+ - Segment labels provide context for screen readers
@@ -1,8 +1,8 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/cropper.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/cropper.md -->
2
2
 
3
3
  # Cropper Component
4
4
 
5
- The cropper component provides an image cropping tool with a draggable and resizable crop area, rotation, zoom controls, optional aspect ratio locking, and a rule-of-thirds grid overlay. It outputs cropped images as Blob objects in PNG, JPEG, or WebP format.
5
+ An image cropping tool with a draggable and resizable crop area, rotation, zoom controls, optional aspect ratio locking, and a rule-of-thirds grid overlay. Outputs cropped images as Blob objects in PNG, JPEG, or WebP format.
6
6
 
7
7
  ## Table of Contents
8
8
  - [Properties](#properties)
@@ -31,7 +31,7 @@ The cropper component provides an image cropping tool with a draggable and resiz
31
31
  | `crop()` | -- | `Promise<Blob \| null>` | Produce a cropped image Blob from the current crop area |
32
32
  | `rotate()` | `degrees: number` | `void` | Rotate the image by the given degrees (cumulative) |
33
33
  | `zoom()` | `level: number` | `void` | Set the zoom level (range: 0.1 to 10) |
34
- | `reset()` | -- | `void` | Reset rotation, zoom, and crop area to their defaults |
34
+ | `reset()` | -- | `void` | Reset rotation, zoom, and crop area to defaults |
35
35
 
36
36
  ## Events
37
37
 
@@ -55,13 +55,11 @@ The cropper component provides an image cropping tool with a draggable and resiz
55
55
 
56
56
  ## CSS Parts
57
57
 
58
- Style internal elements from outside the shadow DOM using `::part()`.
59
-
60
- | Part | Element | Description |
61
- |------|---------|-------------|
62
- | `base` | `<div>` | Outer cropper container |
63
- | `image-container` | `<div>` | Image display area |
64
- | `crop-area` | `<div>` | Draggable/resizable crop region with handles |
58
+ | Part | Description |
59
+ |------|-------------|
60
+ | `base` | Outer cropper container |
61
+ | `image-container` | Image display area |
62
+ | `crop-area` | Draggable/resizable crop region with handles |
65
63
 
66
64
  ```css
67
65
  snice-cropper::part(base) {
@@ -103,7 +101,7 @@ Load an image and let the user crop it freely.
103
101
  const blob = await cropper.crop();
104
102
  if (blob) {
105
103
  const url = URL.createObjectURL(blob);
106
- window.open(url); // Preview the cropped image
104
+ window.open(url);
107
105
  }
108
106
  }
109
107
  window.handleCrop = handleCrop;
@@ -141,7 +139,7 @@ Lock to a widescreen aspect ratio for video thumbnails or banner images.
141
139
  Use the `rotate()` and `zoom()` methods for image adjustment.
142
140
 
143
141
  ```html
144
- <snice-cropper id="editor" src="/photos/vacation.jpg" aspect-ratio="0"></snice-cropper>
142
+ <snice-cropper id="editor" src="/photos/vacation.jpg"></snice-cropper>
145
143
 
146
144
  <div style="display: flex; gap: 0.5rem; margin-top: 1rem;">
147
145
  <button onclick="document.getElementById('editor').rotate(-90)">Rotate Left</button>
@@ -173,7 +171,7 @@ Track the crop area position and dimensions in real time.
173
171
 
174
172
  ## Accessibility
175
173
 
176
- - **Drag interaction**: The crop area can be repositioned by dragging, and resized via 8 corner and edge handles
177
- - **Rule-of-thirds grid**: An overlay grid helps with composition alignment
178
- - **Visual feedback**: A dark mask outside the crop area clearly indicates the cropped region
179
- - **Aspect ratio enforcement**: When `aspectRatio` is set, resize handles maintain the locked ratio automatically
174
+ - Drag interaction: The crop area can be repositioned by dragging, and resized via 8 corner and edge handles
175
+ - Rule-of-thirds grid overlay helps with composition alignment
176
+ - Dark mask outside the crop area clearly indicates the cropped region
177
+ - When `aspectRatio` is set, resize handles maintain the locked ratio automatically
@@ -1,4 +1,4 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/data-card.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/data-card.md -->
2
2
 
3
3
  # Data Card
4
4
  `<snice-data-card>`
@@ -13,25 +13,13 @@ A key-value detail panel for displaying structured data with grouped sections, m
13
13
  - [CSS Parts](#css-parts)
14
14
  - [Basic Usage](#basic-usage)
15
15
  - [Examples](#examples)
16
-
17
- ## Importing
18
-
19
- **ESM (bundler)**
20
- ```typescript
21
- import 'snice/components/data-card/snice-data-card';
22
- ```
23
-
24
- **CDN**
25
- ```html
26
- <script src="snice-runtime.min.js"></script>
27
- <script src="snice-data-card.min.js"></script>
28
- ```
16
+ - [Accessibility](#accessibility)
29
17
 
30
18
  ## Properties
31
19
 
32
20
  | Property | Type | Default | Description |
33
21
  |----------|------|---------|-------------|
34
- | `fields` | `DataCardField[]` | `[]` | Array of field objects |
22
+ | `fields` | `DataCardField[]` | `[]` | Array of field objects (JS only, no attribute) |
35
23
  | `editable` | `boolean` | `false` | Enable global edit mode |
36
24
  | `variant` | `'default' \| 'horizontal' \| 'compact'` | `'default'` | Layout variant |
37
25
 
@@ -107,6 +95,12 @@ import 'snice/components/data-card/snice-data-card';
107
95
  </script>
108
96
  ```
109
97
 
98
+ **CDN**
99
+ ```html
100
+ <script src="snice-runtime.min.js"></script>
101
+ <script src="snice-data-card.min.js"></script>
102
+ ```
103
+
110
104
  ## Examples
111
105
 
112
106
  ### Value Types
@@ -203,3 +197,10 @@ Use `getValues()` and `setValues()` for programmatic data access.
203
197
  card.setValues({ Name: 'Jane', Age: 25 });
204
198
  </script>
205
199
  ```
200
+
201
+ ## Accessibility
202
+
203
+ - Edit mode inputs support Enter to save and Escape to cancel
204
+ - Edit toggle button is hidden when no fields are editable
205
+ - Links open in new tabs with `rel="noopener"` for security
206
+ - Use `slot="title"` to provide a descriptive heading for the card
@@ -1,22 +1,19 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/date-picker.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/date-picker.md -->
2
2
 
3
3
  # Date Picker
4
4
  `<snice-date-picker>`
5
5
 
6
- Calendar-based date input with format options and validation.
6
+ Calendar-based date input with format options and validation. Form-associated custom element.
7
7
 
8
- ## Importing
9
-
10
- **ESM (bundler)**
11
- ```typescript
12
- import 'snice/components/date-picker/snice-date-picker';
13
- ```
14
-
15
- **CDN**
16
- ```html
17
- <script src="snice-runtime.min.js"></script>
18
- <script src="snice-date-picker.min.js"></script>
19
- ```
8
+ ## Table of Contents
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [CSS Parts](#css-parts)
13
+ - [Basic Usage](#basic-usage)
14
+ - [Examples](#examples)
15
+ - [Keyboard Navigation](#keyboard-navigation)
16
+ - [Accessibility](#accessibility)
20
17
 
21
18
  ## Properties
22
19
 
@@ -36,26 +33,26 @@ import 'snice/components/date-picker/snice-date-picker';
36
33
  | `required` | `required` | `boolean` | `false` | Marks as required |
37
34
  | `invalid` | `invalid` | `boolean` | `false` | Shows invalid styling |
38
35
  | `clearable` | `clearable` | `boolean` | `false` | Shows clear button |
39
- | `min` | `min` | `string` | `''` | Minimum selectable date |
40
- | `max` | `max` | `string` | `''` | Maximum selectable date |
36
+ | `min` | `min` | `string` | `''` | Minimum selectable date (ISO format) |
37
+ | `max` | `max` | `string` | `''` | Maximum selectable date (ISO format) |
41
38
  | `name` | `name` | `string` | `''` | Form field name |
42
39
  | `showCalendar` | `show-calendar` | `boolean` | `false` | Calendar visibility |
43
- | `firstDayOfWeek` | `first-day-of-week` | `number` | `0` | First day of week (0=Sun) |
40
+ | `firstDayOfWeek` | `first-day-of-week` | `number` | `0` | First day of week (0=Sun, 1=Mon) |
44
41
 
45
42
  ## Methods
46
43
 
47
44
  | Method | Arguments | Description |
48
45
  |--------|-----------|-------------|
49
- | `focus()` | | Focuses the input |
50
- | `blur()` | | Removes focus |
51
- | `clear()` | | Clears the selected date |
52
- | `open()` | | Opens the calendar popup |
53
- | `close()` | | Closes the calendar popup |
46
+ | `focus()` | -- | Focuses the input |
47
+ | `blur()` | -- | Removes focus |
48
+ | `clear()` | -- | Clears the selected date |
49
+ | `open()` | -- | Opens the calendar popup |
50
+ | `close()` | -- | Closes the calendar popup |
54
51
  | `selectDate()` | `date: Date` | Programmatically selects a date |
55
52
  | `goToMonth()` | `year: number, month: number` | Navigates calendar to a month |
56
- | `goToToday()` | | Selects today's date |
57
- | `checkValidity()` | | Returns input validity |
58
- | `reportValidity()` | | Reports input validity |
53
+ | `goToToday()` | -- | Selects today's date |
54
+ | `checkValidity()` | -- | Returns input validity |
55
+ | `reportValidity()` | -- | Reports input validity |
59
56
  | `setCustomValidity()` | `message: string` | Sets custom validation message |
60
57
 
61
58
  ## Events
@@ -93,6 +90,12 @@ import 'snice/components/date-picker/snice-date-picker';
93
90
  <snice-date-picker label="Select date"></snice-date-picker>
94
91
  ```
95
92
 
93
+ **CDN**
94
+ ```html
95
+ <script src="snice-runtime.min.js"></script>
96
+ <script src="snice-date-picker.min.js"></script>
97
+ ```
98
+
96
99
  ## Examples
97
100
 
98
101
  ### Variants
@@ -204,3 +207,20 @@ dp.addEventListener('datepicker-change', (e) => {
204
207
  console.log('ISO:', e.detail.iso);
205
208
  });
206
209
  ```
210
+
211
+ ## Keyboard Navigation
212
+
213
+ - **Enter / Space** on input opens the calendar
214
+ - **Escape** closes the calendar and returns focus to input
215
+ - **Tab** navigates between focusable elements in the calendar
216
+ - Calendar days are focusable buttons with aria-labels
217
+
218
+ ## Accessibility
219
+
220
+ - Form-associated custom element with `ElementInternals`
221
+ - Calendar popup uses `popover="manual"` for proper layering
222
+ - Day buttons include `aria-label` with formatted date
223
+ - Input supports `aria-invalid` when in invalid state
224
+ - Required fields show visual indicator on the label
225
+ - Calendar toggle button has `aria-label="Open calendar"`
226
+ - Clear button has `aria-label="Clear"`
@@ -1,39 +1,130 @@
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/date-range-picker.md -->
2
+
1
3
  # Date Range Picker
4
+ `<snice-date-range-picker>`
5
+
6
+ Date range selection with an interactive calendar dropdown, optional presets sidebar, year picker, and support for multiple date formats. Form-associated custom element.
7
+
8
+ ## Table of Contents
9
+ - [Properties](#properties)
10
+ - [Methods](#methods)
11
+ - [Events](#events)
12
+ - [CSS Parts](#css-parts)
13
+ - [Basic Usage](#basic-usage)
14
+ - [Examples](#examples)
15
+ - [Accessibility](#accessibility)
16
+
17
+ ## Properties
18
+
19
+ | Property | Attribute | Type | Default | Description |
20
+ |----------|-----------|------|---------|-------------|
21
+ | `start` | `start` | `string` | `''` | Start date (formatted string or ISO) |
22
+ | `end` | `end` | `string` | `''` | End date (formatted string or ISO) |
23
+ | `size` | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Input size |
24
+ | `variant` | `variant` | `'outlined' \| 'filled' \| 'underlined'` | `'outlined'` | Input style variant |
25
+ | `format` | `format` | `DateRangeFormat` | `'mm/dd/yyyy'` | Date display format |
26
+ | `placeholder` | `placeholder` | `string` | `''` | Input placeholder text |
27
+ | `label` | `label` | `string` | `''` | Label text |
28
+ | `helperText` | `helper-text` | `string` | `''` | Helper text below input |
29
+ | `errorText` | `error-text` | `string` | `''` | Error text below input |
30
+ | `disabled` | `disabled` | `boolean` | `false` | Disables the component |
31
+ | `readonly` | `readonly` | `boolean` | `false` | Makes the component read-only |
32
+ | `loading` | `loading` | `boolean` | `false` | Shows loading spinner |
33
+ | `required` | `required` | `boolean` | `false` | Marks as required |
34
+ | `invalid` | `invalid` | `boolean` | `false` | Shows error styling |
35
+ | `clearable` | `clearable` | `boolean` | `false` | Shows clear button |
36
+ | `min` | `min` | `string` | `''` | Minimum selectable date (ISO format) |
37
+ | `max` | `max` | `string` | `''` | Maximum selectable date (ISO format) |
38
+ | `name` | `name` | `string` | `''` | Form field name |
39
+ | `columns` | `columns` | `number` | `1` | Calendar columns (1 or 2) |
40
+ | `firstDayOfWeek` | `first-day-of-week` | `number` | `0` | First day of week (0=Sun) |
41
+ | `presets` | N/A | `DateRangePreset[]` | `[]` | Preset ranges (JS only) |
42
+ | `showCalendar` | `show-calendar` | `boolean` | `false` | Calendar visibility |
43
+
44
+ ### DateRangePreset Object
2
45
 
3
- The `<snice-date-range-picker>` component provides date range selection with an interactive calendar dropdown, optional presets sidebar, year picker, and support for multiple date formats.
46
+ ```typescript
47
+ interface DateRangePreset {
48
+ label: string;
49
+ start: Date;
50
+ end: Date;
51
+ }
52
+ ```
53
+
54
+ ### Supported Formats
55
+
56
+ `'mm/dd/yyyy'` | `'dd/mm/yyyy'` | `'yyyy-mm-dd'` | `'yyyy/mm/dd'` | `'dd-mm-yyyy'` | `'mm-dd-yyyy'` | `'mmmm dd, yyyy'`
57
+
58
+ ## Methods
59
+
60
+ | Method | Arguments | Description |
61
+ |--------|-----------|-------------|
62
+ | `open()` | -- | Open the calendar dropdown |
63
+ | `close()` | -- | Close the calendar dropdown |
64
+ | `clear()` | -- | Clear both dates |
65
+ | `focus()` | -- | Focus the input |
66
+ | `blur()` | -- | Blur the input |
67
+ | `selectRange()` | `start: Date, end: Date` | Programmatically select a date range |
68
+ | `checkValidity()` | -- | Check form validity |
69
+ | `reportValidity()` | -- | Report form validity |
70
+ | `setCustomValidity()` | `message: string` | Set custom validation message |
71
+
72
+ ## Events
73
+
74
+ | Event | Detail | Description |
75
+ |-------|--------|-------------|
76
+ | `daterange-change` | `{ start, end, startDate, endDate, startIso, endIso }` | Range selected or cleared |
77
+ | `daterange-open` | `{ dateRangePicker }` | Calendar opened |
78
+ | `daterange-close` | `{ dateRangePicker }` | Calendar closed |
79
+ | `daterange-clear` | `{ dateRangePicker }` | Range cleared |
80
+ | `daterange-preset` | `{ label, start, end, dateRangePicker }` | Preset selected |
81
+ | `daterange-focus` | `{ dateRangePicker }` | Input focused |
82
+ | `daterange-blur` | `{ dateRangePicker }` | Input blurred |
83
+
84
+ ## CSS Parts
85
+
86
+ | Part | Description |
87
+ |------|-------------|
88
+ | `input` | The text input element |
89
+ | `calendar-toggle` | Calendar icon button |
90
+ | `clear` | Clear button |
91
+ | `spinner` | Loading spinner |
92
+ | `calendar` | Calendar dropdown container |
93
+ | `helper-text` | Helper text element |
94
+ | `error-text` | Error text element |
4
95
 
5
96
  ## Basic Usage
6
97
 
98
+ ```typescript
99
+ import 'snice/components/date-range-picker/snice-date-range-picker';
100
+ ```
101
+
7
102
  ```html
8
- <snice-date-range-picker
9
- label="Select Date Range"
10
- clearable
11
- ></snice-date-range-picker>
103
+ <snice-date-range-picker label="Select Date Range" clearable></snice-date-range-picker>
12
104
  ```
13
105
 
14
- ## Dual Column Calendar
106
+ **CDN**
107
+ ```html
108
+ <script src="snice-runtime.min.js"></script>
109
+ <script src="snice-date-range-picker.min.js"></script>
110
+ ```
111
+
112
+ ## Examples
113
+
114
+ ### Dual Column Calendar
15
115
 
16
- Show two months side-by-side for easier range selection:
116
+ Use the `columns` attribute to show two months side-by-side for easier range selection.
17
117
 
18
118
  ```html
19
- <snice-date-range-picker
20
- label="Booking Dates"
21
- columns="2"
22
- clearable
23
- ></snice-date-range-picker>
119
+ <snice-date-range-picker label="Booking Dates" columns="2" clearable></snice-date-range-picker>
24
120
  ```
25
121
 
26
- ## Presets
122
+ ### Presets
27
123
 
28
- Add quick-select preset buttons to the calendar sidebar. Presets are set via JavaScript since they contain Date objects:
124
+ Set the `presets` property via JavaScript to add quick-select preset buttons to the calendar sidebar.
29
125
 
30
126
  ```html
31
- <snice-date-range-picker
32
- id="my-picker"
33
- label="Report Period"
34
- columns="2"
35
- clearable
36
- ></snice-date-range-picker>
127
+ <snice-date-range-picker id="my-picker" label="Report Period" columns="2" clearable></snice-date-range-picker>
37
128
  ```
38
129
 
39
130
  ```typescript
@@ -48,32 +139,36 @@ picker.presets = [
48
139
 
49
140
  Hovering over a preset shows a dashed preview of the range on the calendar. Clicking a preset selects both dates and closes the calendar.
50
141
 
51
- ## Date Formats
142
+ ### Date Formats
143
+
144
+ Use the `format` attribute to control how dates are displayed.
52
145
 
53
146
  ```html
54
- <snice-date-range-picker format="mm/dd/yyyy"></snice-date-range-picker> <!-- 03/06/2026 -->
55
- <snice-date-range-picker format="dd/mm/yyyy"></snice-date-range-picker> <!-- 06/03/2026 -->
56
- <snice-date-range-picker format="yyyy-mm-dd"></snice-date-range-picker> <!-- 2026-03-06 -->
57
- <snice-date-range-picker format="mmmm dd, yyyy"></snice-date-range-picker> <!-- March 06, 2026 -->
147
+ <snice-date-range-picker format="mm/dd/yyyy"></snice-date-range-picker>
148
+ <snice-date-range-picker format="dd/mm/yyyy"></snice-date-range-picker>
149
+ <snice-date-range-picker format="yyyy-mm-dd"></snice-date-range-picker>
150
+ <snice-date-range-picker format="mmmm dd, yyyy"></snice-date-range-picker>
58
151
  ```
59
152
 
60
153
  The `start` and `end` attributes accept ISO format (`yyyy-mm-dd`) regardless of the display format.
61
154
 
62
- ## Sizes and Variants
155
+ ### Sizes and Variants
156
+
157
+ Use the `size` and `variant` attributes to control the input appearance.
63
158
 
64
159
  ```html
65
- <!-- Sizes -->
66
160
  <snice-date-range-picker size="small"></snice-date-range-picker>
67
161
  <snice-date-range-picker size="medium"></snice-date-range-picker>
68
162
  <snice-date-range-picker size="large"></snice-date-range-picker>
69
163
 
70
- <!-- Variants -->
71
164
  <snice-date-range-picker variant="outlined"></snice-date-range-picker>
72
165
  <snice-date-range-picker variant="filled"></snice-date-range-picker>
73
166
  <snice-date-range-picker variant="underlined"></snice-date-range-picker>
74
167
  ```
75
168
 
76
- ## States
169
+ ### States
170
+
171
+ Use `required`, `invalid`, `disabled`, `readonly`, and `loading` for different interaction states.
77
172
 
78
173
  ```html
79
174
  <snice-date-range-picker required helper-text="Required field"></snice-date-range-picker>
@@ -83,11 +178,11 @@ The `start` and `end` attributes accept ISO format (`yyyy-mm-dd`) regardless of
83
178
  <snice-date-range-picker loading></snice-date-range-picker>
84
179
  ```
85
180
 
86
- ## Year Picker
181
+ ### Year Picker
87
182
 
88
183
  Click the year in the calendar header to open a 12-year grid. Navigate between year ranges with the arrow buttons, then click a year to return to the day view.
89
184
 
90
- ## Form Integration
185
+ ### Form Integration
91
186
 
92
187
  The component is form-associated. When used inside a `<form>` with a `name` attribute, it submits two values: `{name}-start` and `{name}-end`.
93
188
 
@@ -98,63 +193,21 @@ The component is form-associated. When used inside a `<form>` with a `name` attr
98
193
  </form>
99
194
  ```
100
195
 
101
- ## Properties
102
-
103
- | Property | Attribute | Type | Default | Description |
104
- |----------|-----------|------|---------|-------------|
105
- | `start` | `start` | `string` | `''` | Start date (formatted string or ISO) |
106
- | `end` | `end` | `string` | `''` | End date (formatted string or ISO) |
107
- | `size` | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Input size |
108
- | `variant` | `variant` | `'outlined' \| 'filled' \| 'underlined'` | `'outlined'` | Input style variant |
109
- | `format` | `format` | `DateRangeFormat` | `'mm/dd/yyyy'` | Date display format |
110
- | `label` | `label` | `string` | `''` | Label text |
111
- | `helperText` | `helper-text` | `string` | `''` | Helper text below input |
112
- | `errorText` | `error-text` | `string` | `''` | Error text below input |
113
- | `disabled` | `disabled` | `boolean` | `false` | Disables the component |
114
- | `readonly` | `readonly` | `boolean` | `false` | Makes the component read-only |
115
- | `loading` | `loading` | `boolean` | `false` | Shows loading spinner |
116
- | `required` | `required` | `boolean` | `false` | Marks as required |
117
- | `invalid` | `invalid` | `boolean` | `false` | Shows error styling |
118
- | `clearable` | `clearable` | `boolean` | `false` | Shows clear button |
119
- | `min` | `min` | `string` | `''` | Minimum selectable date |
120
- | `max` | `max` | `string` | `''` | Maximum selectable date |
121
- | `name` | `name` | `string` | `''` | Form field name |
122
- | `columns` | `columns` | `number` | `1` | Calendar columns (1 or 2) |
123
- | `firstDayOfWeek` | `first-day-of-week` | `number` | `0` | First day of week (0=Sun) |
124
- | `presets` | N/A | `DateRangePreset[]` | `[]` | Preset ranges (JS only) |
125
-
126
- ## Events
196
+ ### Event Handling
127
197
 
128
- | Event | Detail | Description |
129
- |-------|--------|-------------|
130
- | `daterange-change` | `{ start, end, startDate, endDate, startIso, endIso }` | Range selected or cleared |
131
- | `daterange-open` | `{ dateRangePicker }` | Calendar opened |
132
- | `daterange-close` | `{ dateRangePicker }` | Calendar closed |
133
- | `daterange-clear` | `{ dateRangePicker }` | Range cleared |
134
- | `daterange-preset` | `{ label, start, end }` | Preset selected |
198
+ Listen for range changes using the `daterange-change` event.
135
199
 
136
- ## Methods
137
-
138
- | Method | Description |
139
- |--------|-------------|
140
- | `open()` | Open the calendar dropdown |
141
- | `close()` | Close the calendar dropdown |
142
- | `clear()` | Clear both dates |
143
- | `focus()` | Focus the input |
144
- | `blur()` | Blur the input |
145
- | `selectRange(start, end)` | Programmatically select a date range |
146
- | `checkValidity()` | Check form validity |
147
- | `reportValidity()` | Report form validity |
148
- | `setCustomValidity(msg)` | Set custom validation message |
200
+ ```typescript
201
+ picker.addEventListener('daterange-change', (e) => {
202
+ console.log('Start:', e.detail.startIso, 'End:', e.detail.endIso);
203
+ });
204
+ ```
149
205
 
150
- ## CSS Parts
206
+ ## Accessibility
151
207
 
152
- | Part | Description |
153
- |------|-------------|
154
- | `input` | The text input element |
155
- | `calendar-toggle` | Calendar icon button |
156
- | `clear` | Clear button |
157
- | `spinner` | Loading spinner |
158
- | `calendar` | Calendar dropdown container |
159
- | `error-text` | Error text element |
160
- | `helper-text` | Helper text element |
208
+ - Form-associated custom element with `ElementInternals`
209
+ - Calendar popup uses `popover="manual"` for proper layering
210
+ - Navigation buttons have `aria-label` attributes
211
+ - Required fields show visual indicator on the label
212
+ - Calendar toggle button has `aria-label="Toggle calendar"`
213
+ - Clear button has `aria-label="Clear"`