snice 4.28.0 → 4.30.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 (835) hide show
  1. package/README.md +3 -10
  2. package/adapters/react/SniceProvider.d.ts +71 -0
  3. package/adapters/react/SniceProvider.js +49 -0
  4. package/adapters/react/SniceProvider.js.map +1 -0
  5. package/adapters/react/SniceRouter.d.ts +44 -0
  6. package/adapters/react/SniceRouter.js +190 -0
  7. package/adapters/react/SniceRouter.js.map +1 -0
  8. package/adapters/react/action-bar.d.ts +30 -0
  9. package/adapters/react/action-bar.d.ts.map +1 -0
  10. package/adapters/react/action-bar.js +24 -0
  11. package/adapters/react/action-bar.js.map +1 -0
  12. package/adapters/react/action-bar.tsx +38 -0
  13. package/adapters/react/binpack.d.ts +35 -0
  14. package/adapters/react/binpack.d.ts.map +1 -0
  15. package/adapters/react/binpack.js +24 -0
  16. package/adapters/react/binpack.js.map +1 -0
  17. package/adapters/react/binpack.tsx +43 -0
  18. package/adapters/react/components.d.ts +6 -0
  19. package/adapters/react/components.d.ts.map +1 -1
  20. package/adapters/react/components.js +3 -0
  21. package/adapters/react/components.js.map +1 -1
  22. package/adapters/react/components.ts +6 -0
  23. package/adapters/react/grid.d.ts +36 -0
  24. package/adapters/react/grid.d.ts.map +1 -0
  25. package/adapters/react/grid.js +24 -0
  26. package/adapters/react/grid.js.map +1 -0
  27. package/adapters/react/grid.tsx +44 -0
  28. package/adapters/react/index.d.ts +5 -0
  29. package/adapters/react/index.d.ts.map +1 -1
  30. package/adapters/react/index.js +3 -2
  31. package/adapters/react/index.js.map +1 -1
  32. package/adapters/react/index.ts +6 -3
  33. package/adapters/react/matchRoute.d.ts +16 -0
  34. package/adapters/react/matchRoute.js +32 -0
  35. package/adapters/react/matchRoute.js.map +1 -0
  36. package/adapters/react/types.d.ts +1 -15
  37. package/adapters/react/types.d.ts.map +1 -1
  38. package/adapters/react/types.ts +1 -15
  39. package/adapters/react/useRequestHandler.d.ts +56 -0
  40. package/adapters/react/useRequestHandler.js +103 -0
  41. package/adapters/react/useRequestHandler.js.map +1 -0
  42. package/bin/snice.js +8 -13
  43. package/bin/templates/{pwa → default}/index.html +1 -1
  44. package/bin/templates/{pwa → default}/src/components/app-header.ts +36 -18
  45. package/bin/templates/{pwa → default}/src/components/notification-badge.ts +2 -21
  46. package/bin/templates/{pwa → default}/src/components/search-bar.ts +12 -12
  47. package/bin/templates/default/src/context.ts +17 -0
  48. package/bin/templates/{pwa → default}/src/controllers/notification-controller.ts +10 -15
  49. package/bin/templates/{pwa → default}/src/daemons/notifications.ts +0 -12
  50. package/bin/templates/{pwa → default}/src/main.ts +1 -7
  51. package/bin/templates/{pwa → default}/src/middleware/error.ts +1 -8
  52. package/bin/templates/{pwa → default}/src/pages/dashboard.ts +17 -18
  53. package/bin/templates/{pwa → default}/src/pages/data.ts +24 -24
  54. package/bin/templates/{pwa → default}/src/pages/login.ts +3 -6
  55. package/bin/templates/{pwa → default}/src/pages/notifications.ts +21 -19
  56. package/bin/templates/{pwa → default}/src/pages/profile.ts +10 -12
  57. package/bin/templates/{pwa → default}/src/pages/settings.ts +22 -22
  58. package/bin/templates/default/src/router.ts +13 -0
  59. package/bin/templates/default/src/styles/global.css +16 -0
  60. package/bin/templates/{pwa → default}/tsconfig.json +2 -1
  61. package/bin/templates/react/README.md +124 -0
  62. package/bin/templates/react/global.d.ts +10 -0
  63. package/bin/templates/react/index.html +15 -0
  64. package/bin/templates/react/package.json +31 -0
  65. package/bin/templates/react/src/App.tsx +112 -0
  66. package/bin/templates/react/src/components/AppHeader.tsx +85 -0
  67. package/bin/templates/react/src/components/AppLayout.tsx +11 -0
  68. package/bin/templates/react/src/components/NotificationBadge.tsx +13 -0
  69. package/bin/templates/react/src/components/SearchBar.tsx +63 -0
  70. package/bin/templates/react/src/daemons/notifications.ts +136 -0
  71. package/bin/templates/react/src/fetcher.ts +15 -0
  72. package/bin/templates/react/src/guards/auth.ts +6 -0
  73. package/bin/templates/react/src/main.tsx +27 -0
  74. package/bin/templates/react/src/middleware/auth.ts +16 -0
  75. package/bin/templates/react/src/middleware/error.ts +29 -0
  76. package/bin/templates/react/src/middleware/retry.ts +31 -0
  77. package/bin/templates/react/src/pages/DashboardPage.tsx +111 -0
  78. package/bin/templates/react/src/pages/DataPage.tsx +119 -0
  79. package/bin/templates/react/src/pages/LoginPage.tsx +46 -0
  80. package/bin/templates/react/src/pages/NotificationsPage.tsx +119 -0
  81. package/bin/templates/react/src/pages/ProfilePage.tsx +92 -0
  82. package/bin/templates/react/src/pages/SettingsPage.tsx +165 -0
  83. package/bin/templates/react/src/services/auth.ts +48 -0
  84. package/bin/templates/react/src/services/jwt.ts +35 -0
  85. package/bin/templates/react/src/services/storage.ts +24 -0
  86. package/bin/templates/react/src/styles/global.css +382 -0
  87. package/bin/templates/react/src/types/auth.ts +21 -0
  88. package/bin/templates/react/src/types/notifications.ts +9 -0
  89. package/bin/templates/react/tests/helpers/test-utils.ts +79 -0
  90. package/bin/templates/react/tests/middleware/auth.test.ts +67 -0
  91. package/bin/templates/react/tests/middleware/error.test.ts +105 -0
  92. package/bin/templates/react/tests/middleware/retry.test.ts +103 -0
  93. package/bin/templates/react/tests/services/auth.test.ts +89 -0
  94. package/bin/templates/react/tests/services/jwt.test.ts +76 -0
  95. package/bin/templates/react/tests/services/storage.test.ts +69 -0
  96. package/bin/templates/{base → react}/tsconfig.json +4 -6
  97. package/bin/templates/react/vite.config.ts +18 -0
  98. package/bin/templates/react/vitest.config.ts +18 -0
  99. package/dist/cdn/accordion/snice-accordion.js +1 -1
  100. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  101. package/dist/cdn/action-bar/README.md +27 -0
  102. package/dist/cdn/action-bar/snice-action-bar.js +249 -0
  103. package/dist/cdn/action-bar/snice-action-bar.js.map +1 -0
  104. package/dist/cdn/action-bar/snice-action-bar.min.js +12 -0
  105. package/dist/cdn/action-bar/snice-action-bar.min.js.map +1 -0
  106. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  107. package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
  108. package/dist/cdn/alert/snice-alert.js +1 -1
  109. package/dist/cdn/alert/snice-alert.min.js +1 -1
  110. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  111. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  112. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  113. package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
  114. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  115. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  116. package/dist/cdn/availability/snice-availability.js +1 -1
  117. package/dist/cdn/availability/snice-availability.min.js +1 -1
  118. package/dist/cdn/avatar/snice-avatar.js +1 -1
  119. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  120. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  121. package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
  122. package/dist/cdn/badge/snice-badge.js +1 -1
  123. package/dist/cdn/badge/snice-badge.min.js +1 -1
  124. package/dist/cdn/banner/snice-banner.js +1 -1
  125. package/dist/cdn/banner/snice-banner.min.js +1 -1
  126. package/dist/cdn/binpack/README.md +27 -0
  127. package/dist/cdn/binpack/snice-binpack.js +1037 -0
  128. package/dist/cdn/binpack/snice-binpack.js.map +1 -0
  129. package/dist/cdn/binpack/snice-binpack.min.js +13 -0
  130. package/dist/cdn/binpack/snice-binpack.min.js.map +1 -0
  131. package/dist/cdn/book/snice-book.js +1 -1
  132. package/dist/cdn/book/snice-book.min.js +1 -1
  133. package/dist/cdn/booking/snice-booking.js +1 -1
  134. package/dist/cdn/booking/snice-booking.min.js +1 -1
  135. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  136. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  137. package/dist/cdn/button/README.md +1 -1
  138. package/dist/cdn/button/snice-button.js +2 -2
  139. package/dist/cdn/button/snice-button.js.map +1 -1
  140. package/dist/cdn/button/snice-button.min.js +2 -2
  141. package/dist/cdn/button/snice-button.min.js.map +1 -1
  142. package/dist/cdn/calendar/snice-calendar.js +1 -1
  143. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  144. package/dist/cdn/camera/snice-camera.js +1 -1
  145. package/dist/cdn/camera/snice-camera.min.js +1 -1
  146. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  147. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  148. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  149. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  150. package/dist/cdn/card/snice-card.js +1 -1
  151. package/dist/cdn/card/snice-card.min.js +1 -1
  152. package/dist/cdn/carousel/snice-carousel.js +1 -1
  153. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  154. package/dist/cdn/cart/snice-cart.js +1 -1
  155. package/dist/cdn/cart/snice-cart.min.js +1 -1
  156. package/dist/cdn/chart/snice-chart.js +1 -1
  157. package/dist/cdn/chart/snice-chart.min.js +1 -1
  158. package/dist/cdn/chat/snice-chat.js +1 -1
  159. package/dist/cdn/chat/snice-chat.min.js +1 -1
  160. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  161. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  162. package/dist/cdn/chip/README.md +2 -2
  163. package/dist/cdn/chip/snice-chip.js +2 -2
  164. package/dist/cdn/chip/snice-chip.js.map +1 -1
  165. package/dist/cdn/chip/snice-chip.min.js +3 -3
  166. package/dist/cdn/chip/snice-chip.min.js.map +1 -1
  167. package/dist/cdn/code-block/snice-code-block.js +1 -1
  168. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  169. package/dist/cdn/color-display/snice-color-display.js +1 -1
  170. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  171. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  172. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  173. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  174. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  175. package/dist/cdn/comments/snice-comments.js +1 -1
  176. package/dist/cdn/comments/snice-comments.min.js +1 -1
  177. package/dist/cdn/countdown/snice-countdown.js +1 -1
  178. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  179. package/dist/cdn/cropper/snice-cropper.js +1 -1
  180. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  181. package/dist/cdn/data-card/snice-data-card.js +1 -1
  182. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  183. package/dist/cdn/date-picker/README.md +1 -1
  184. package/dist/cdn/date-picker/snice-date-picker.js +2 -2
  185. package/dist/cdn/date-picker/snice-date-picker.js.map +1 -1
  186. package/dist/cdn/date-picker/snice-date-picker.min.js +2 -2
  187. package/dist/cdn/date-picker/snice-date-picker.min.js.map +1 -1
  188. package/dist/cdn/date-range-picker/README.md +1 -1
  189. package/dist/cdn/date-range-picker/snice-date-range-picker.js +2 -2
  190. package/dist/cdn/date-range-picker/snice-date-range-picker.js.map +1 -1
  191. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +11 -11
  192. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js.map +1 -1
  193. package/dist/cdn/date-time-picker/README.md +1 -1
  194. package/dist/cdn/date-time-picker/snice-date-time-picker.js +2 -2
  195. package/dist/cdn/date-time-picker/snice-date-time-picker.js.map +1 -1
  196. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +2 -2
  197. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js.map +1 -1
  198. package/dist/cdn/diff/snice-diff.js +1 -1
  199. package/dist/cdn/diff/snice-diff.min.js +1 -1
  200. package/dist/cdn/divider/snice-divider.js +1 -1
  201. package/dist/cdn/divider/snice-divider.min.js +1 -1
  202. package/dist/cdn/doc/snice-doc.js +1 -1
  203. package/dist/cdn/doc/snice-doc.min.js +1 -1
  204. package/dist/cdn/draw/README.md +2 -2
  205. package/dist/cdn/draw/snice-draw.js +26 -4
  206. package/dist/cdn/draw/snice-draw.js.map +1 -1
  207. package/dist/cdn/draw/snice-draw.min.js +3 -3
  208. package/dist/cdn/draw/snice-draw.min.js.map +1 -1
  209. package/dist/cdn/drawer/snice-drawer.js +1 -1
  210. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  211. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  212. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  213. package/dist/cdn/estimate/snice-estimate.js +1 -1
  214. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  215. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  216. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  217. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  218. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  219. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  220. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  221. package/dist/cdn/flow/snice-flow.js +1 -1
  222. package/dist/cdn/flow/snice-flow.min.js +1 -1
  223. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  224. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  225. package/dist/cdn/funnel/snice-funnel.js +1 -1
  226. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  227. package/dist/cdn/gantt/snice-gantt.js +1 -1
  228. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  229. package/dist/cdn/gauge/snice-gauge.js +1 -1
  230. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  231. package/dist/cdn/grid/README.md +27 -0
  232. package/dist/cdn/grid/snice-grid.js +862 -0
  233. package/dist/cdn/grid/snice-grid.js.map +1 -0
  234. package/dist/cdn/grid/snice-grid.min.js +13 -0
  235. package/dist/cdn/grid/snice-grid.min.js.map +1 -0
  236. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  237. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  238. package/dist/cdn/image/snice-image.js +1 -1
  239. package/dist/cdn/image/snice-image.min.js +1 -1
  240. package/dist/cdn/input/snice-input.js +1 -1
  241. package/dist/cdn/input/snice-input.min.js +1 -1
  242. package/dist/cdn/invoice/snice-invoice.js +1 -1
  243. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  244. package/dist/cdn/kanban/snice-kanban.js +1 -1
  245. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  246. package/dist/cdn/key-value/snice-key-value.js +1 -1
  247. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  248. package/dist/cdn/kpi/snice-kpi.js +1 -1
  249. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  250. package/dist/cdn/layout/snice-layout.js +1 -1
  251. package/dist/cdn/layout/snice-layout.min.js +1 -1
  252. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  253. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  254. package/dist/cdn/link/snice-link.js +1 -1
  255. package/dist/cdn/link/snice-link.min.js +1 -1
  256. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  257. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  258. package/dist/cdn/list/snice-list.js +1 -1
  259. package/dist/cdn/list/snice-list.min.js +1 -1
  260. package/dist/cdn/location/snice-location.js +1 -1
  261. package/dist/cdn/location/snice-location.min.js +1 -1
  262. package/dist/cdn/login/README.md +2 -2
  263. package/dist/cdn/login/snice-login.js +2 -2
  264. package/dist/cdn/login/snice-login.js.map +1 -1
  265. package/dist/cdn/login/snice-login.min.js +2 -2
  266. package/dist/cdn/login/snice-login.min.js.map +1 -1
  267. package/dist/cdn/map/snice-map.js +1 -1
  268. package/dist/cdn/map/snice-map.min.js +1 -1
  269. package/dist/cdn/markdown/snice-markdown.js +1 -1
  270. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  271. package/dist/cdn/masonry/snice-masonry.js +1 -1
  272. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  273. package/dist/cdn/menu/snice-menu.js +1 -1
  274. package/dist/cdn/menu/snice-menu.min.js +1 -1
  275. package/dist/cdn/message-strip/README.md +2 -2
  276. package/dist/cdn/message-strip/snice-message-strip.js +2 -2
  277. package/dist/cdn/message-strip/snice-message-strip.js.map +1 -1
  278. package/dist/cdn/message-strip/snice-message-strip.min.js +6 -6
  279. package/dist/cdn/message-strip/snice-message-strip.min.js.map +1 -1
  280. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  281. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  282. package/dist/cdn/modal/snice-modal.js +1 -1
  283. package/dist/cdn/modal/snice-modal.min.js +1 -1
  284. package/dist/cdn/music-player/snice-music-player.js +1 -1
  285. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  286. package/dist/cdn/nav/snice-nav.js +1 -1
  287. package/dist/cdn/nav/snice-nav.min.js +1 -1
  288. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  289. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  290. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  291. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  292. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  293. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  294. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  295. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  296. package/dist/cdn/pagination/snice-pagination.js +1 -1
  297. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  298. package/dist/cdn/paint/README.md +2 -2
  299. package/dist/cdn/paint/snice-paint.js +26 -3
  300. package/dist/cdn/paint/snice-paint.js.map +1 -1
  301. package/dist/cdn/paint/snice-paint.min.js +3 -3
  302. package/dist/cdn/paint/snice-paint.min.js.map +1 -1
  303. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  304. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  305. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  306. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  307. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  308. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  309. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  310. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  311. package/dist/cdn/product-card/README.md +1 -1
  312. package/dist/cdn/product-card/snice-product-card.js +1 -1
  313. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  314. package/dist/cdn/progress/snice-progress.js +1 -1
  315. package/dist/cdn/progress/snice-progress.min.js +1 -1
  316. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  317. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  318. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  319. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  320. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  321. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  322. package/dist/cdn/radio/snice-radio.js +1 -1
  323. package/dist/cdn/radio/snice-radio.min.js +1 -1
  324. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  325. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  326. package/dist/cdn/rating/snice-rating.js +1 -1
  327. package/dist/cdn/rating/snice-rating.min.js +1 -1
  328. package/dist/cdn/receipt/snice-receipt.js +1 -1
  329. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  330. package/dist/cdn/recipe/snice-recipe.js +1 -1
  331. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  332. package/dist/cdn/runtime/README.md +2 -2
  333. package/dist/cdn/runtime/snice-runtime.esm.js +109 -16
  334. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  335. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  336. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  337. package/dist/cdn/runtime/snice-runtime.js +109 -15
  338. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  339. package/dist/cdn/runtime/snice-runtime.min.js +7 -7
  340. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  341. package/dist/cdn/sankey/snice-sankey.js +1 -1
  342. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  343. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  344. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  345. package/dist/cdn/select/snice-select.js +1 -1
  346. package/dist/cdn/select/snice-select.min.js +1 -1
  347. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  348. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  349. package/dist/cdn/slider/snice-slider.js +1 -1
  350. package/dist/cdn/slider/snice-slider.min.js +1 -1
  351. package/dist/cdn/sortable/snice-sortable.js +1 -1
  352. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  353. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  354. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  355. package/dist/cdn/spinner/snice-spinner.js +1 -1
  356. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  357. package/dist/cdn/split-button/snice-split-button.js +1 -1
  358. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  359. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  360. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  361. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  362. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  363. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  364. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  365. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  366. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  367. package/dist/cdn/step-input/snice-step-input.js +1 -1
  368. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  369. package/dist/cdn/stepper/snice-stepper.js +1 -1
  370. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  371. package/dist/cdn/switch/snice-switch.js +1 -1
  372. package/dist/cdn/switch/snice-switch.min.js +1 -1
  373. package/dist/cdn/table/README.md +1 -1
  374. package/dist/cdn/table/snice-table.js +2 -2
  375. package/dist/cdn/table/snice-table.js.map +1 -1
  376. package/dist/cdn/table/snice-table.min.js +2 -2
  377. package/dist/cdn/table/snice-table.min.js.map +1 -1
  378. package/dist/cdn/tabs/snice-tabs.js +1 -1
  379. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  380. package/dist/cdn/tag/README.md +1 -1
  381. package/dist/cdn/tag/snice-tag.js +2 -2
  382. package/dist/cdn/tag/snice-tag.js.map +1 -1
  383. package/dist/cdn/tag/snice-tag.min.js +3 -3
  384. package/dist/cdn/tag/snice-tag.min.js.map +1 -1
  385. package/dist/cdn/tag-input/README.md +2 -2
  386. package/dist/cdn/tag-input/snice-tag-input.js +2 -2
  387. package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
  388. package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
  389. package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
  390. package/dist/cdn/terminal/snice-terminal.js +1 -1
  391. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  392. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  393. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  394. package/dist/cdn/textarea/snice-textarea.js +1 -1
  395. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  396. package/dist/cdn/time-picker/README.md +1 -1
  397. package/dist/cdn/time-picker/snice-time-picker.js +2 -2
  398. package/dist/cdn/time-picker/snice-time-picker.js.map +1 -1
  399. package/dist/cdn/time-picker/snice-time-picker.min.js +2 -2
  400. package/dist/cdn/time-picker/snice-time-picker.min.js.map +1 -1
  401. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  402. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  403. package/dist/cdn/timeline/snice-timeline.js +1 -1
  404. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  405. package/dist/cdn/timer/snice-timer.js +1 -1
  406. package/dist/cdn/timer/snice-timer.min.js +1 -1
  407. package/dist/cdn/toast/README.md +1 -1
  408. package/dist/cdn/toast/snice-toast.js +7 -3
  409. package/dist/cdn/toast/snice-toast.js.map +1 -1
  410. package/dist/cdn/toast/snice-toast.min.js +6 -6
  411. package/dist/cdn/toast/snice-toast.min.js.map +1 -1
  412. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  413. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  414. package/dist/cdn/tree/snice-tree.js +1 -1
  415. package/dist/cdn/tree/snice-tree.min.js +1 -1
  416. package/dist/cdn/treemap/snice-treemap.js +1 -1
  417. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  418. package/dist/cdn/user-card/snice-user-card.js +1 -1
  419. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  420. package/dist/cdn/video-player/snice-video-player.js +1 -1
  421. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  422. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  423. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  424. package/dist/cdn/waterfall/README.md +1 -1
  425. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  426. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  427. package/dist/cdn/weather/snice-weather.js +1 -1
  428. package/dist/cdn/weather/snice-weather.min.js +1 -1
  429. package/dist/cdn/work-order/snice-work-order.js +1 -1
  430. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  431. package/dist/components/action-bar/snice-action-bar.d.ts +22 -0
  432. package/dist/components/action-bar/snice-action-bar.js +182 -0
  433. package/dist/components/action-bar/snice-action-bar.js.map +1 -0
  434. package/dist/components/action-bar/snice-action-bar.types.d.ts +17 -0
  435. package/dist/components/binpack/snice-binpack.d.ts +82 -0
  436. package/dist/components/binpack/snice-binpack.js +970 -0
  437. package/dist/components/binpack/snice-binpack.js.map +1 -0
  438. package/dist/components/binpack/snice-binpack.types.d.ts +52 -0
  439. package/dist/components/button/snice-button.js +1 -1
  440. package/dist/components/button/snice-button.js.map +1 -1
  441. package/dist/components/chip/snice-chip.js +1 -1
  442. package/dist/components/chip/snice-chip.js.map +1 -1
  443. package/dist/components/date-picker/snice-date-picker.js +1 -1
  444. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  445. package/dist/components/date-range-picker/snice-date-range-picker.js +1 -1
  446. package/dist/components/date-range-picker/snice-date-range-picker.js.map +1 -1
  447. package/dist/components/date-time-picker/snice-date-time-picker.js +1 -1
  448. package/dist/components/date-time-picker/snice-date-time-picker.js.map +1 -1
  449. package/dist/components/draw/snice-draw.d.ts +2 -0
  450. package/dist/components/draw/snice-draw.js +25 -3
  451. package/dist/components/draw/snice-draw.js.map +1 -1
  452. package/dist/components/grid/snice-grid.d.ts +73 -0
  453. package/dist/components/grid/snice-grid.js +795 -0
  454. package/dist/components/grid/snice-grid.js.map +1 -0
  455. package/dist/components/grid/snice-grid.types.d.ts +41 -0
  456. package/dist/components/message-strip/snice-message-strip.js +1 -1
  457. package/dist/components/message-strip/snice-message-strip.js.map +1 -1
  458. package/dist/components/paint/snice-paint.d.ts +2 -0
  459. package/dist/components/paint/snice-paint.js +25 -2
  460. package/dist/components/paint/snice-paint.js.map +1 -1
  461. package/dist/components/tag/snice-tag.js +1 -1
  462. package/dist/components/tag/snice-tag.js.map +1 -1
  463. package/dist/components/tag-input/snice-tag-input.js +1 -1
  464. package/dist/components/tag-input/snice-tag-input.js.map +1 -1
  465. package/dist/components/theme/theme.css +15 -0
  466. package/dist/components/time-picker/snice-time-picker.js +1 -1
  467. package/dist/components/time-picker/snice-time-picker.js.map +1 -1
  468. package/dist/components/toast/snice-toast-container.js +4 -0
  469. package/dist/components/toast/snice-toast-container.js.map +1 -1
  470. package/dist/components/toast/snice-toast.js +2 -2
  471. package/dist/create-request-handler.d.ts +42 -0
  472. package/dist/index.cjs +106 -12
  473. package/dist/index.cjs.map +1 -1
  474. package/dist/index.d.ts +2 -0
  475. package/dist/index.esm.js +106 -13
  476. package/dist/index.esm.js.map +1 -1
  477. package/dist/index.iife.js +106 -12
  478. package/dist/index.iife.js.map +1 -1
  479. package/dist/react/SniceProvider.d.ts +71 -0
  480. package/dist/react/SniceProvider.js +49 -0
  481. package/dist/react/SniceProvider.js.map +1 -0
  482. package/dist/react/SniceRouter.d.ts +44 -0
  483. package/dist/react/SniceRouter.js +190 -0
  484. package/dist/react/SniceRouter.js.map +1 -0
  485. package/dist/react/index.d.ts +3 -0
  486. package/dist/react/index.js +14 -0
  487. package/dist/react/index.js.map +1 -0
  488. package/dist/react/matchRoute.d.ts +16 -0
  489. package/dist/react/matchRoute.js +32 -0
  490. package/dist/react/matchRoute.js.map +1 -0
  491. package/dist/react/useRequestHandler.d.ts +56 -0
  492. package/dist/react/useRequestHandler.js +103 -0
  493. package/dist/react/useRequestHandler.js.map +1 -0
  494. package/dist/symbols.cjs +1 -1
  495. package/dist/symbols.esm.js +1 -1
  496. package/dist/transitions.cjs +1 -1
  497. package/dist/transitions.esm.js +1 -1
  498. package/dist/types/guard.d.ts +4 -11
  499. package/docs/ai/DEVELOPMENT.md +1 -1
  500. package/docs/ai/README.md +7 -7
  501. package/docs/ai/components/accordion.md +46 -80
  502. package/docs/ai/components/action-bar.md +75 -0
  503. package/docs/ai/components/activity-feed.md +7 -7
  504. package/docs/ai/components/alert.md +26 -44
  505. package/docs/ai/components/app-tiles.md +34 -39
  506. package/docs/ai/components/approval-flow.md +1 -1
  507. package/docs/ai/components/audio-recorder.md +35 -67
  508. package/docs/ai/components/availability.md +13 -34
  509. package/docs/ai/components/avatar-group.md +26 -13
  510. package/docs/ai/components/avatar.md +52 -36
  511. package/docs/ai/components/badge.md +21 -32
  512. package/docs/ai/components/banner.md +21 -43
  513. package/docs/ai/components/binpack.md +89 -0
  514. package/docs/ai/components/book.md +25 -23
  515. package/docs/ai/components/booking.md +31 -36
  516. package/docs/ai/components/breadcrumbs.md +36 -11
  517. package/docs/ai/components/button.md +33 -44
  518. package/docs/ai/components/calendar.md +37 -70
  519. package/docs/ai/components/camera-annotate.md +31 -64
  520. package/docs/ai/components/camera.md +38 -120
  521. package/docs/ai/components/candlestick.md +32 -52
  522. package/docs/ai/components/card.md +20 -30
  523. package/docs/ai/components/carousel.md +32 -32
  524. package/docs/ai/components/cart.md +24 -29
  525. package/docs/ai/components/chart.md +29 -114
  526. package/docs/ai/components/chat.md +38 -75
  527. package/docs/ai/components/checkbox.md +22 -41
  528. package/docs/ai/components/chip.md +18 -54
  529. package/docs/ai/components/code-block.md +57 -178
  530. package/docs/ai/components/color-display.md +12 -32
  531. package/docs/ai/components/color-picker.md +17 -39
  532. package/docs/ai/components/command-palette.md +49 -71
  533. package/docs/ai/components/comments.md +55 -36
  534. package/docs/ai/components/countdown.md +28 -30
  535. package/docs/ai/components/cropper.md +33 -33
  536. package/docs/ai/components/data-card.md +20 -14
  537. package/docs/ai/components/date-picker.md +40 -47
  538. package/docs/ai/components/date-range-picker.md +31 -15
  539. package/docs/ai/components/date-time-picker.md +23 -46
  540. package/docs/ai/components/diff.md +30 -31
  541. package/docs/ai/components/divider.md +17 -47
  542. package/docs/ai/components/doc.md +43 -68
  543. package/docs/ai/components/draw.md +35 -87
  544. package/docs/ai/components/drawer.md +48 -77
  545. package/docs/ai/components/empty-state.md +10 -44
  546. package/docs/ai/components/estimate.md +33 -58
  547. package/docs/ai/components/file-gallery.md +48 -100
  548. package/docs/ai/components/file-upload.md +17 -53
  549. package/docs/ai/components/flip-card.md +31 -23
  550. package/docs/ai/components/flow.md +37 -65
  551. package/docs/ai/components/form-builder.md +35 -75
  552. package/docs/ai/components/form-layout.md +10 -20
  553. package/docs/ai/components/funnel.md +33 -48
  554. package/docs/ai/components/gantt.md +27 -23
  555. package/docs/ai/components/gauge.md +16 -17
  556. package/docs/ai/components/grid.md +116 -0
  557. package/docs/ai/components/heatmap.md +21 -21
  558. package/docs/ai/components/image.md +7 -13
  559. package/docs/ai/components/input.md +38 -70
  560. package/docs/ai/components/invoice.md +35 -36
  561. package/docs/ai/components/kanban.md +32 -61
  562. package/docs/ai/components/key-value.md +32 -16
  563. package/docs/ai/components/kpi.md +38 -73
  564. package/docs/ai/components/layout.md +29 -23
  565. package/docs/ai/components/leaderboard.md +28 -37
  566. package/docs/ai/components/link-preview.md +12 -18
  567. package/docs/ai/components/link.md +10 -7
  568. package/docs/ai/components/list.md +21 -5
  569. package/docs/ai/components/location.md +21 -25
  570. package/docs/ai/components/login.md +14 -9
  571. package/docs/ai/components/map.md +27 -33
  572. package/docs/ai/components/markdown.md +20 -24
  573. package/docs/ai/components/masonry.md +10 -14
  574. package/docs/ai/components/mentions.md +26 -12
  575. package/docs/ai/components/menu.md +54 -52
  576. package/docs/ai/components/message-strip.md +20 -20
  577. package/docs/ai/components/metric-table.md +14 -21
  578. package/docs/ai/components/modal.md +27 -18
  579. package/docs/ai/components/music-player.md +49 -41
  580. package/docs/ai/components/nav.md +34 -31
  581. package/docs/ai/components/network-graph.md +27 -42
  582. package/docs/ai/components/notification-center.md +31 -33
  583. package/docs/ai/components/order-tracker.md +36 -27
  584. package/docs/ai/components/org-chart.md +36 -31
  585. package/docs/ai/components/pagination.md +34 -26
  586. package/docs/ai/components/paint.md +53 -91
  587. package/docs/ai/components/pdf-viewer.md +35 -36
  588. package/docs/ai/components/permission-matrix.md +26 -31
  589. package/docs/ai/components/podcast-player.md +64 -70
  590. package/docs/ai/components/pricing-table.md +37 -48
  591. package/docs/ai/components/product-card.md +58 -41
  592. package/docs/ai/components/progress-ring.md +20 -24
  593. package/docs/ai/components/progress.md +28 -45
  594. package/docs/ai/components/qr-code.md +25 -27
  595. package/docs/ai/components/qr-reader.md +20 -23
  596. package/docs/ai/components/radio.md +17 -15
  597. package/docs/ai/components/range-slider.md +22 -11
  598. package/docs/ai/components/rating.md +29 -33
  599. package/docs/ai/components/receipt.md +50 -127
  600. package/docs/ai/components/recipe.md +44 -42
  601. package/docs/ai/components/sankey.md +21 -30
  602. package/docs/ai/components/scheduler.md +29 -41
  603. package/docs/ai/components/segmented-control.md +11 -15
  604. package/docs/ai/components/select.md +58 -102
  605. package/docs/ai/components/skeleton.md +16 -30
  606. package/docs/ai/components/slider.md +26 -20
  607. package/docs/ai/components/sortable.md +25 -27
  608. package/docs/ai/components/sparkline.md +21 -17
  609. package/docs/ai/components/spinner.md +9 -5
  610. package/docs/ai/components/split-button.md +10 -13
  611. package/docs/ai/components/split-pane.md +19 -14
  612. package/docs/ai/components/spotlight.md +31 -26
  613. package/docs/ai/components/spreadsheet.md +51 -97
  614. package/docs/ai/components/stat-group.md +9 -19
  615. package/docs/ai/components/step-input.md +17 -15
  616. package/docs/ai/components/stepper.md +14 -15
  617. package/docs/ai/components/switch.md +15 -9
  618. package/docs/ai/components/table.md +24 -84
  619. package/docs/ai/components/tabs.md +18 -10
  620. package/docs/ai/components/tag-input.md +18 -29
  621. package/docs/ai/components/tag.md +10 -22
  622. package/docs/ai/components/terminal.md +9 -9
  623. package/docs/ai/components/testimonial.md +9 -19
  624. package/docs/ai/components/textarea.md +15 -16
  625. package/docs/ai/components/theme.md +3 -3
  626. package/docs/ai/components/time-picker.md +30 -49
  627. package/docs/ai/components/time-range-picker.md +16 -15
  628. package/docs/ai/components/timeline.md +5 -4
  629. package/docs/ai/components/timer.md +8 -8
  630. package/docs/ai/components/toast.md +24 -18
  631. package/docs/ai/components/tooltip.md +11 -22
  632. package/docs/ai/components/tree.md +9 -9
  633. package/docs/ai/components/treemap.md +14 -13
  634. package/docs/ai/components/user-card.md +21 -27
  635. package/docs/ai/components/video-player.md +35 -52
  636. package/docs/ai/components/virtual-scroller.md +1 -1
  637. package/docs/ai/components/waterfall.md +17 -16
  638. package/docs/ai/components/weather.md +19 -34
  639. package/docs/ai/components/work-order.md +58 -134
  640. package/docs/ai/patterns.md +87 -0
  641. package/docs/ai/react-integration.md +97 -0
  642. package/docs/components/accordion.md +72 -151
  643. package/docs/components/action-bar.md +185 -0
  644. package/docs/components/activity-feed.md +9 -14
  645. package/docs/components/alert.md +17 -109
  646. package/docs/components/app-tiles.md +58 -43
  647. package/docs/components/approval-flow.md +8 -14
  648. package/docs/components/audio-recorder.md +45 -51
  649. package/docs/components/availability.md +30 -45
  650. package/docs/components/avatar-group.md +34 -14
  651. package/docs/components/avatar.md +20 -55
  652. package/docs/components/badge.md +53 -470
  653. package/docs/components/banner.md +44 -30
  654. package/docs/components/binpack.md +208 -0
  655. package/docs/components/book.md +78 -57
  656. package/docs/components/booking.md +35 -87
  657. package/docs/components/breadcrumbs.md +74 -448
  658. package/docs/components/button.md +72 -603
  659. package/docs/components/calendar.md +77 -261
  660. package/docs/components/camera-annotate.md +44 -96
  661. package/docs/components/camera.md +94 -333
  662. package/docs/components/candlestick.md +79 -116
  663. package/docs/components/card.md +51 -689
  664. package/docs/components/carousel.md +29 -76
  665. package/docs/components/cart.md +44 -136
  666. package/docs/components/chart.md +95 -438
  667. package/docs/components/chat.md +175 -439
  668. package/docs/components/checkbox.md +52 -609
  669. package/docs/components/chip.md +45 -574
  670. package/docs/components/code-block.md +157 -421
  671. package/docs/components/color-display.md +45 -54
  672. package/docs/components/color-picker.md +103 -36
  673. package/docs/components/command-palette.md +98 -92
  674. package/docs/components/comments.md +16 -10
  675. package/docs/components/countdown.md +15 -20
  676. package/docs/components/cropper.md +14 -16
  677. package/docs/components/data-card.md +16 -15
  678. package/docs/components/date-picker.md +45 -25
  679. package/docs/components/date-range-picker.md +140 -87
  680. package/docs/components/date-time-picker.md +25 -28
  681. package/docs/components/diff.md +22 -17
  682. package/docs/components/divider.md +18 -20
  683. package/docs/components/doc.md +105 -197
  684. package/docs/components/draw.md +117 -223
  685. package/docs/components/drawer.md +113 -478
  686. package/docs/components/empty-state.md +13 -29
  687. package/docs/components/estimate.md +58 -118
  688. package/docs/components/file-gallery.md +123 -495
  689. package/docs/components/file-upload.md +36 -123
  690. package/docs/components/flip-card.md +30 -34
  691. package/docs/components/flow.md +74 -89
  692. package/docs/components/form-builder.md +59 -86
  693. package/docs/components/form-layout.md +21 -31
  694. package/docs/components/funnel.md +21 -22
  695. package/docs/components/gantt.md +5 -5
  696. package/docs/components/gauge.md +5 -23
  697. package/docs/components/grid.md +249 -0
  698. package/docs/components/heatmap.md +13 -55
  699. package/docs/components/image.md +28 -32
  700. package/docs/components/input.md +25 -14
  701. package/docs/components/invoice.md +34 -33
  702. package/docs/components/kanban.md +99 -394
  703. package/docs/components/key-value.md +22 -12
  704. package/docs/components/kpi.md +41 -112
  705. package/docs/components/layout.md +7 -13
  706. package/docs/components/leaderboard.md +52 -76
  707. package/docs/components/link-preview.md +20 -16
  708. package/docs/components/link.md +22 -19
  709. package/docs/components/list.md +44 -26
  710. package/docs/components/location.md +9 -13
  711. package/docs/components/login.md +42 -36
  712. package/docs/components/map.md +24 -46
  713. package/docs/components/markdown.md +14 -25
  714. package/docs/components/masonry.md +15 -13
  715. package/docs/components/mentions.md +36 -25
  716. package/docs/components/menu.md +39 -46
  717. package/docs/components/message-strip.md +15 -51
  718. package/docs/components/metric-table.md +50 -72
  719. package/docs/components/modal.md +32 -43
  720. package/docs/components/music-player.md +41 -49
  721. package/docs/components/nav.md +23 -13
  722. package/docs/components/network-graph.md +14 -13
  723. package/docs/components/notification-center.md +68 -172
  724. package/docs/components/order-tracker.md +72 -117
  725. package/docs/components/org-chart.md +58 -207
  726. package/docs/components/pagination.md +67 -89
  727. package/docs/components/paint.md +86 -172
  728. package/docs/components/pdf-viewer.md +46 -151
  729. package/docs/components/permission-matrix.md +61 -112
  730. package/docs/components/podcast-player.md +41 -119
  731. package/docs/components/pricing-table.md +104 -147
  732. package/docs/components/product-card.md +94 -197
  733. package/docs/components/progress-ring.md +29 -32
  734. package/docs/components/progress.md +30 -61
  735. package/docs/components/qr-code.md +53 -61
  736. package/docs/components/qr-reader.md +53 -42
  737. package/docs/components/radio.md +42 -40
  738. package/docs/components/range-slider.md +41 -30
  739. package/docs/components/rating.md +50 -84
  740. package/docs/components/receipt.md +91 -129
  741. package/docs/components/recipe.md +107 -216
  742. package/docs/components/sankey.md +47 -83
  743. package/docs/components/scheduler.md +81 -184
  744. package/docs/components/segmented-control.md +48 -40
  745. package/docs/components/select.md +107 -129
  746. package/docs/components/skeleton.md +33 -47
  747. package/docs/components/slider.md +49 -53
  748. package/docs/components/sortable.md +43 -186
  749. package/docs/components/sparkline.md +26 -25
  750. package/docs/components/spinner.md +32 -37
  751. package/docs/components/split-button.md +43 -23
  752. package/docs/components/split-pane.md +41 -58
  753. package/docs/components/spotlight.md +53 -145
  754. package/docs/components/spreadsheet.md +84 -307
  755. package/docs/components/stat-group.md +27 -61
  756. package/docs/components/step-input.md +44 -41
  757. package/docs/components/stepper.md +55 -89
  758. package/docs/components/switch.md +39 -39
  759. package/docs/components/table.md +27 -32
  760. package/docs/components/tabs.md +36 -27
  761. package/docs/components/tag-input.md +50 -176
  762. package/docs/components/tag.md +12 -50
  763. package/docs/components/terminal.md +32 -37
  764. package/docs/components/testimonial.md +24 -81
  765. package/docs/components/textarea.md +9 -14
  766. package/docs/components/theme.md +10 -23
  767. package/docs/components/time-picker.md +48 -72
  768. package/docs/components/time-range-picker.md +22 -41
  769. package/docs/components/timeline.md +7 -14
  770. package/docs/components/timer.md +16 -32
  771. package/docs/components/toast.md +19 -45
  772. package/docs/components/tooltip.md +13 -115
  773. package/docs/components/tree.md +2 -19
  774. package/docs/components/treemap.md +19 -43
  775. package/docs/components/user-card.md +13 -22
  776. package/docs/components/video-player.md +53 -227
  777. package/docs/components/virtual-scroller.md +11 -44
  778. package/docs/components/waterfall.md +58 -137
  779. package/docs/components/weather.md +94 -153
  780. package/docs/components/work-order.md +56 -143
  781. package/docs/plans/2026-03-09-action-bar-design.md +104 -0
  782. package/docs/plans/2026-03-09-action-bar-plan.md +676 -0
  783. package/docs/plans/2026-03-10-grid-component-design.md +138 -0
  784. package/docs/plans/2026-03-10-grid-component-plan.md +716 -0
  785. package/docs/plans/2026-03-10-react-integration-design.md +166 -0
  786. package/docs/plans/2026-03-10-react-integration-plan.md +1178 -0
  787. package/docs/react-integration.md +508 -0
  788. package/docs/request-response.md +63 -0
  789. package/package.json +1 -1
  790. package/bin/templates/base/README.md +0 -33
  791. package/bin/templates/base/global.d.ts +0 -14
  792. package/bin/templates/base/index.html +0 -13
  793. package/bin/templates/base/package.json +0 -21
  794. package/bin/templates/base/src/components/counter-button.ts +0 -88
  795. package/bin/templates/base/src/components/counter-button.types.ts +0 -7
  796. package/bin/templates/base/src/components/feature-card.ts +0 -59
  797. package/bin/templates/base/src/components/feature-card.types.ts +0 -5
  798. package/bin/templates/base/src/controllers/counter-controller.ts +0 -24
  799. package/bin/templates/base/src/main.ts +0 -24
  800. package/bin/templates/base/src/pages/about-page.ts +0 -68
  801. package/bin/templates/base/src/pages/home-page.ts +0 -105
  802. package/bin/templates/base/src/pages/not-found-page.ts +0 -55
  803. package/bin/templates/base/src/router.ts +0 -9
  804. package/bin/templates/base/src/styles/global.css +0 -27
  805. package/bin/templates/base/src/types/api-response.ts +0 -5
  806. package/bin/templates/base/src/types/status.ts +0 -1
  807. package/bin/templates/base/src/types/theme.ts +0 -1
  808. package/bin/templates/base/src/types/user.ts +0 -5
  809. package/bin/templates/base/vite.config.ts +0 -38
  810. package/bin/templates/pwa/public/vite.svg +0 -1
  811. package/bin/templates/pwa/src/router.ts +0 -20
  812. package/bin/templates/pwa/src/styles/global.css +0 -64
  813. /package/bin/templates/{pwa → default}/README.md +0 -0
  814. /package/bin/templates/{pwa → default}/global.d.ts +0 -0
  815. /package/bin/templates/{pwa → default}/package.json +0 -0
  816. /package/bin/templates/{pwa → default}/public/icons/.gitkeep +0 -0
  817. /package/bin/templates/{base → default}/public/vite.svg +0 -0
  818. /package/bin/templates/{pwa → default}/src/fetcher.ts +0 -0
  819. /package/bin/templates/{pwa → default}/src/guards/auth.ts +0 -0
  820. /package/bin/templates/{pwa → default}/src/middleware/auth.ts +0 -0
  821. /package/bin/templates/{pwa → default}/src/middleware/retry.ts +0 -0
  822. /package/bin/templates/{pwa → default}/src/services/auth.ts +0 -0
  823. /package/bin/templates/{pwa → default}/src/services/jwt.ts +0 -0
  824. /package/bin/templates/{pwa → default}/src/services/storage.ts +0 -0
  825. /package/bin/templates/{pwa → default}/src/types/auth.ts +0 -0
  826. /package/bin/templates/{pwa → default}/src/types/notifications.ts +0 -0
  827. /package/bin/templates/{pwa → default}/tests/helpers/test-utils.ts +0 -0
  828. /package/bin/templates/{pwa → default}/tests/middleware/auth.test.ts +0 -0
  829. /package/bin/templates/{pwa → default}/tests/middleware/error.test.ts +0 -0
  830. /package/bin/templates/{pwa → default}/tests/middleware/retry.test.ts +0 -0
  831. /package/bin/templates/{pwa → default}/tests/services/auth.test.ts +0 -0
  832. /package/bin/templates/{pwa → default}/tests/services/jwt.test.ts +0 -0
  833. /package/bin/templates/{pwa → default}/tests/services/storage.test.ts +0 -0
  834. /package/bin/templates/{pwa → default}/vite.config.ts +0 -0
  835. /package/bin/templates/{pwa → default}/vitest.config.ts +0 -0
@@ -4,67 +4,63 @@ Interactive recipe card with ingredient scaling, step-by-step mode, per-step tim
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- title: string // Recipe title
9
- description: string // Short description
10
- image: string // Hero image URL
11
- author: string // Author name
12
- prepTime: number // Prep time in minutes (attr: prep-time)
13
- cookTime: number // Cook time in minutes (attr: cook-time)
14
- servings: number // Base serving count (default: 4)
15
- difficulty: 'easy' | 'medium' | 'hard' // Difficulty level (default: 'medium')
16
- cuisine: string // Cuisine type (shown as tag)
17
- variant: 'card' | 'full' // Display variant (default: 'full')
18
- ingredients: RecipeIngredient[] // Ingredient list
19
- steps: RecipeStep[] // Instruction steps
20
- nutrition: RecipeNutrition | null // Nutrition facts per serving
21
- tags: string[] // Recipe tags
7
+ ```typescript
8
+ title: string = '';
9
+ description: string = '';
10
+ image: string = ''; // Hero image URL
11
+ author: string = '';
12
+ prepTime: number = 0; // attr: prep-time, minutes
13
+ cookTime: number = 0; // attr: cook-time, minutes
14
+ servings: number = 4;
15
+ difficulty: 'easy'|'medium'|'hard' = 'medium';
16
+ cuisine: string = ''; // Shown as tag
17
+ variant: 'card'|'full' = 'full';
18
+ ingredients: RecipeIngredient[] = []; // JS only
19
+ steps: RecipeStep[] = []; // JS only
20
+ nutrition: RecipeNutrition | null = null; // JS only
21
+ tags: string[] = []; // JS only
22
22
  ```
23
23
 
24
- ### Types
24
+ ## Types
25
25
 
26
- ```ts
26
+ ```typescript
27
27
  interface RecipeIngredient {
28
- name: string;
29
- amount: number;
30
- unit: string;
31
- group?: string; // Group header for ingredient sections
28
+ name: string; amount: number; unit: string; group?: string;
32
29
  }
33
-
34
30
  interface RecipeStep {
35
- text: string;
36
- image?: string; // Step photo URL
37
- tip?: string; // Pro tip text
38
- time?: number; // Timer duration in minutes
31
+ text: string; image?: string; tip?: string; time?: number; // minutes
39
32
  }
40
-
41
33
  interface RecipeNutrition {
42
- calories: number;
43
- protein: number;
44
- carbs: number;
45
- fat: number;
46
- fiber?: number;
47
- sodium?: number; // in mg
34
+ calories: number; protein: number; carbs: number; fat: number;
35
+ fiber?: number; sodium?: number;
48
36
  }
49
37
  ```
50
38
 
51
39
  ## Methods
52
40
 
53
- - `setServings(count: number)` -- Adjust serving count (scales ingredients)
54
- - `print()` -- Print the recipe
55
- - `reset()` -- Reset checked ingredients, completed steps, timers, and servings
41
+ - `setServings(count)` - Adjust serving count (scales ingredients)
42
+ - `print()` - Print the recipe
43
+ - `reset()` - Reset checked ingredients, completed steps, timers, servings
56
44
 
57
45
  ## Events
58
46
 
59
- - `recipe-serving-change` -> `{ servings: number; previousServings: number }` -- Serving count changed
60
- - `recipe-step-complete` -> `{ stepIndex: number; completed: boolean }` -- Step toggled
61
- - `recipe-ingredient-check` -> `{ ingredientIndex: number; checked: boolean; ingredient: RecipeIngredient }` -- Ingredient checked/unchecked
47
+ - `recipe-serving-change` `{ servings: number, previousServings: number }`
48
+ - `recipe-step-complete` `{ stepIndex: number, completed: boolean }`
49
+ - `recipe-ingredient-check` `{ ingredientIndex: number, checked: boolean, ingredient: RecipeIngredient }`
62
50
 
63
51
  ## CSS Parts
64
52
 
65
- `container`, `hero`, `header`, `meta`, `content`, `ingredients`, `steps`, `nutrition`, `controls`
53
+ - `container` - Outer recipe container
54
+ - `hero` - Hero image area
55
+ - `header` - Title/description/author
56
+ - `meta` - Metadata bar (times, servings, difficulty)
57
+ - `content` - Main content (ingredients + steps)
58
+ - `ingredients` - Ingredients section
59
+ - `steps` - Instructions section
60
+ - `nutrition` - Nutrition facts panel
61
+ - `controls` - Bottom control buttons
66
62
 
67
- ## Usage
63
+ ## Basic Usage
68
64
 
69
65
  ```typescript
70
66
  recipe.title = 'Pasta Carbonara';
@@ -81,9 +77,15 @@ recipe.ingredients = [
81
77
  ];
82
78
  recipe.steps = [
83
79
  { text: 'Boil pasta in salted water.', time: 10 },
84
- { text: 'Fry pancetta until crispy.', tip: 'Use medium heat to render fat slowly.' },
80
+ { text: 'Fry pancetta until crispy.', tip: 'Use medium heat.' },
85
81
  { text: 'Mix eggs and parmesan.' },
86
82
  { text: 'Combine all ingredients off heat.' }
87
83
  ];
88
84
  recipe.nutrition = { calories: 650, protein: 28, carbs: 72, fat: 24 };
89
85
  ```
86
+
87
+ ## Accessibility
88
+
89
+ - Keyboard accessible checkboxes, step toggles, and timer buttons
90
+ - Serving adjuster buttons have aria-labels
91
+ - Print-friendly layout via `print()`
@@ -5,36 +5,39 @@ SVG-based Sankey diagram for flow visualization between categories.
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- data: SankeyData = { nodes: [], links: [] };
9
- nodeWidth: number = 20;
10
- nodePadding: number = 10;
8
+ data: SankeyData = { nodes: [], links: [] }; // JS only
9
+ nodeWidth: number = 20; // attr: node-width
10
+ nodePadding: number = 10; // attr: node-padding
11
11
  alignment: 'left'|'right'|'center'|'justify' = 'justify';
12
- showLabels: boolean = true;
13
- showValues: boolean = true;
12
+ showLabels: boolean = true; // attr: show-labels
13
+ showValues: boolean = true; // attr: show-values
14
14
  animation: boolean = false;
15
15
  ```
16
16
 
17
17
  ## Types
18
18
 
19
19
  ```typescript
20
- interface SankeyData {
21
- nodes: SankeyNode[];
22
- links: SankeyLink[];
23
- }
20
+ interface SankeyData { nodes: SankeyNode[]; links: SankeyLink[]; }
24
21
  interface SankeyNode { id: string; label?: string; color?: string; }
25
22
  interface SankeyLink { source: string; target: string; value: number; color?: string; }
26
23
  ```
27
24
 
28
25
  ## Events
29
26
 
30
- - `sankey-node-click` → `{ node: SankeyNode }` — node clicked
31
- - `sankey-link-click` → `{ link: SankeyLink }` — link clicked
32
- - `sankey-hover` → `{ type: 'node'|'link', item: SankeyNode|SankeyLink } | null` — hover change
27
+ - `sankey-node-click` → `{ node: SankeyNode }`
28
+ - `sankey-link-click` → `{ link: SankeyLink }`
29
+ - `sankey-hover` → `{ type: 'node'|'link', item } | null`
33
30
 
34
- ## Usage
31
+ ## CSS Parts
32
+
33
+ - `base` - Outer container
34
+ - `chart` - SVG chart area
35
+ - `tooltip` - Hover tooltip
36
+
37
+ ## Basic Usage
35
38
 
36
39
  ```html
37
- <snice-sankey show-labels show-values animation></snice-sankey>
40
+ <snice-sankey show-labels show-values animation style="height: 300px;"></snice-sankey>
38
41
  ```
39
42
 
40
43
  ```typescript
@@ -49,20 +52,8 @@ sankey.data = {
49
52
  };
50
53
  ```
51
54
 
52
- **CSS Parts:**
53
- - `base` - The outer Sankey container
54
- - `chart` - The SVG chart area
55
- - `tooltip` - The hover tooltip element
56
-
57
- ## Features
55
+ ## Accessibility
58
56
 
59
- - SVG rendering with curved bezier link paths
60
- - Sankey layout algorithm with iterative node relaxation
61
- - Link width proportional to flow value
62
- - Hover highlighting (dims non-connected nodes/links)
63
- - Tooltips on hover for nodes and links
64
- - Responsive sizing via ResizeObserver
65
- - Animation on initial render
66
- - 4 alignment modes
67
- - Custom node/link colors
68
- - Accessible: role="img" with aria-label
57
+ - SVG `role="img"` with `aria-label`
58
+ - Hover highlighting dims non-connected elements
59
+ - Responsive via ResizeObserver
@@ -5,33 +5,25 @@ Multi-resource week/day/month scheduler with drag-to-create, move, and resize ev
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- resources: SchedulerResource[] = [] // Resource list (JS only)
9
- events: SchedulerEvent[] = [] // Event list (JS only)
10
- view: SchedulerView = 'week' // 'day' | 'week' | 'month'
11
- date: Date | string = new Date() // Current date
12
- granularity: number = 60 // Slot size in minutes (15, 30, 60)
13
- startHour: number = 0 // attribute: start-hour
14
- endHour: number = 24 // attribute: end-hour
8
+ resources: SchedulerResource[] = []; // JS only
9
+ events: SchedulerEvent[] = []; // JS only
10
+ view: 'day'|'week'|'month' = 'week';
11
+ date: Date | string = new Date();
12
+ granularity: number = 60; // Slot size in minutes (15, 30, 60)
13
+ startHour: number = 0; // attr: start-hour
14
+ endHour: number = 24; // attr: end-hour
15
15
  ```
16
16
 
17
17
  ## Types
18
18
 
19
19
  ```typescript
20
20
  interface SchedulerResource {
21
- id: string | number;
22
- name: string;
23
- avatar?: string; // Avatar image URL
24
- color?: string; // Accent color
21
+ id: string | number; name: string; avatar?: string; color?: string;
25
22
  }
26
-
27
23
  interface SchedulerEvent {
28
- id: string | number;
29
- resourceId: string | number;
30
- start: Date | string;
31
- end: Date | string;
32
- title: string;
33
- color?: string;
34
- data?: any;
24
+ id: string | number; resourceId: string | number;
25
+ start: Date | string; end: Date | string;
26
+ title: string; color?: string; data?: any;
35
27
  }
36
28
  ```
37
29
 
@@ -41,23 +33,23 @@ interface SchedulerEvent {
41
33
  - `removeEvent(id: string | number)` - Remove event by ID
42
34
  - `scrollToDate(date: Date | string)` - Navigate to date
43
35
  - `scrollToResource(id: string | number)` - Scroll resource into view
44
- - `navigatePrev()` - Go to previous period
45
- - `navigateNext()` - Go to next period
46
- - `navigateToday()` - Go to today
47
36
 
48
37
  ## Events
49
38
 
50
- - `event-create` → `{ event: SchedulerEvent }` - Drag-created event
51
- - `event-move` → `{ event: SchedulerEvent; oldResourceId: string | number; oldStart: Date | string; oldEnd: Date | string }`
52
- - `event-resize` → `{ event: SchedulerEvent; oldStart: Date | string; oldEnd: Date | string }`
39
+ - `event-create` → `{ event: SchedulerEvent }`
40
+ - `event-move` → `{ event, oldResourceId, oldStart, oldEnd }`
41
+ - `event-resize` → `{ event, oldStart, oldEnd }`
53
42
  - `event-click` → `{ event: SchedulerEvent }`
54
- - `slot-click` → `{ resourceId: string | number; start: Date; end: Date }`
43
+ - `slot-click` → `{ resourceId, start: Date, end: Date }`
55
44
 
56
- ## Slots
45
+ ## CSS Parts
57
46
 
58
- None
47
+ - `base` - Main container
48
+ - `header` - Navigation header with view toggle
49
+ - `resources` - Resource sidebar
50
+ - `grid` - Time grid area
59
51
 
60
- ## Usage
52
+ ## Basic Usage
61
53
 
62
54
  ```html
63
55
  <snice-scheduler start-hour="8" end-hour="18" granularity="30"></snice-scheduler>
@@ -66,23 +58,19 @@ None
66
58
  ```typescript
67
59
  scheduler.resources = [
68
60
  { id: '1', name: 'Dr. Smith', color: '#2196f3' },
69
- { id: '2', name: 'Room A', color: '#ff9800' },
61
+ { id: '2', name: 'Room A', color: '#ff9800' }
70
62
  ];
71
63
  scheduler.events = [
72
- { id: '1', resourceId: '1', start: new Date(2025,5,15,9,0), end: new Date(2025,5,15,10,30), title: 'Consultation' },
64
+ { id: '1', resourceId: '1', start: new Date(2025,5,15,9,0), end: new Date(2025,5,15,10,30), title: 'Consultation' }
73
65
  ];
74
66
 
75
- scheduler.addEventListener('event-click', e => console.log(e.detail.event));
76
- scheduler.addEventListener('slot-click', e => console.log(e.detail.resourceId, e.detail.start));
67
+ scheduler.addEventListener('slot-click', e => {
68
+ scheduler.addEvent({ id: Date.now(), resourceId: e.detail.resourceId, start: e.detail.start, end: e.detail.end, title: 'New' });
69
+ });
77
70
  ```
78
71
 
79
- ## Features
72
+ ## Accessibility
80
73
 
81
- - Day/week/month view toggle
82
- - Resource sidebar with avatars and colors
83
- - Drag to move events between resources
84
- - Resize events via edge handles
85
- - Click empty slots to trigger slot-click
86
- - Drag on grid to create events
74
+ - Keyboard navigation with arrow keys
75
+ - ARIA labels on resources and time slots
87
76
  - Current time indicator
88
- - Today/prev/next navigation
@@ -6,42 +6,38 @@ Multi-option switcher with sliding indicator. One selected at a time.
6
6
 
7
7
  ```typescript
8
8
  value: string = '';
9
- options: SegmentedControlOption[] = []; // { value, label, icon?, disabled? }
9
+ options: SegmentedControlOption[] = []; // JS only: { value, label, icon?, disabled? }
10
10
  size: 'small'|'medium'|'large' = 'medium';
11
11
  disabled: boolean = false;
12
12
  ```
13
13
 
14
+ ## Events
15
+
16
+ - `value-change` → `{ value: string, previousValue: string, option: SegmentedControlOption, control }`
17
+
14
18
  ## CSS Parts
15
19
 
16
20
  - `base` - Root container
17
21
  - `indicator` - Sliding selection indicator
18
22
  - `segment` - Individual option button
19
23
 
20
- ## Events
21
-
22
- - `value-change` → `{ value, previousValue, option, control }`
23
-
24
- ## Usage
24
+ ## Basic Usage
25
25
 
26
26
  ```html
27
- <snice-segmented-control></snice-segmented-control>
27
+ <snice-segmented-control value="week"></snice-segmented-control>
28
28
  ```
29
29
 
30
30
  ```typescript
31
31
  control.options = [
32
32
  { value: 'day', label: 'Day' },
33
33
  { value: 'week', label: 'Week' },
34
- { value: 'month', label: 'Month' },
34
+ { value: 'month', label: 'Month' }
35
35
  ];
36
- control.value = 'week';
37
36
  control.addEventListener('value-change', (e) => console.log(e.detail.value));
38
37
  ```
39
38
 
40
- ## Notes
39
+ ## Accessibility
41
40
 
42
- - Options set via JS property (array), not child elements
41
+ - ARIA radiogroup/radio roles
43
42
  - Sliding indicator animates between selections
44
- - If no value set, first non-disabled option is selected
45
- - ARIA radiogroup/radio roles for accessibility
46
- - Diff from tabs: no content panes, just a value selector
47
- - Diff from switch: more than two options
43
+ - First non-disabled option selected if no value set
@@ -1,142 +1,98 @@
1
1
  # snice-select
2
2
 
3
- Customizable dropdown selection with single/multiple selection, search, editable input, and icons.
3
+ Customizable dropdown selection with single/multiple, search, editable input, and icons.
4
4
 
5
5
  ## Components
6
6
 
7
- ### snice-select (Container)
7
+ - `snice-select` - Container with trigger, dropdown, form integration
8
+ - `snice-option` - Declarative option elements
9
+
10
+ ## Properties
11
+
12
+ ### snice-select
8
13
 
9
14
  ```typescript
10
- value: string = ''; // Selected value (comma-separated for multiple)
11
- disabled: boolean = false; // Disabled state
12
- required: boolean = false; // Required for form validation
13
- invalid: boolean = false; // Invalid state styling
14
- readonly: boolean = false; // Readonly state
15
- multiple: boolean = false; // Allow multiple selection
16
- searchable: boolean = false; // Show search input in dropdown
17
- clearable: boolean = false; // Show clear button
18
- editable: boolean = false; // Editable text input trigger (replaces button)
19
- allowFreeText: boolean = false; // attr: allow-free-text allow values not in options
15
+ value: string = ''; // Comma-separated for multiple
16
+ disabled: boolean = false;
17
+ required: boolean = false;
18
+ invalid: boolean = false;
19
+ readonly: boolean = false;
20
+ loading: boolean = false;
21
+ multiple: boolean = false;
22
+ searchable: boolean = false;
23
+ clearable: boolean = false;
24
+ editable: boolean = false; // Text input trigger instead of button
25
+ allowFreeText: boolean = false; // attr: allow-free-text
20
26
  remote: boolean = false; // Remote search via @request('select/search')
21
- searchDebounce: number = 300; // attr: search-debounce — debounce ms for remote search
22
- open: boolean = false; // Dropdown open state
23
- loading: boolean = false; // Loading state (shows spinner)
27
+ searchDebounce: number = 300; // attr: search-debounce
28
+ open: boolean = false;
24
29
  size: 'small'|'medium'|'large' = 'medium';
25
- name: string = ''; // Form field name
26
- label: string = ''; // Label text
30
+ name: string = '';
31
+ label: string = '';
27
32
  placeholder: string = 'Select an option';
28
- maxHeight: string = '200px'; // Max dropdown height
29
- options: SelectOption[] = []; // Programmatic options (works alongside <snice-option> children)
33
+ maxHeight: string = '200px'; // attr: max-height
34
+ options: SelectOption[] = []; // JS only, works alongside <snice-option> children
30
35
  ```
31
36
 
32
- **Methods:**
33
- ```typescript
34
- selectOption(value: string) // Select option by value
35
- clear() // Clear selection
36
- openDropdown() // Open dropdown
37
- closeDropdown() // Close dropdown
38
- toggleDropdown() // Toggle dropdown
39
- focus() // Focus trigger (or input in editable mode)
40
- blur() // Blur and close
41
- ```
37
+ ### snice-option
42
38
 
43
- **Events:**
44
39
  ```typescript
45
- 'select-change' // { value, option, select }
46
- 'select-open' // { select }
47
- 'select-close' // { select }
40
+ value: string = ''; // Falls back to label
41
+ label: string = ''; // Falls back to textContent
42
+ disabled: boolean = false;
43
+ selected: boolean = false;
44
+ icon: string = ''; // Icon URL
48
45
  ```
49
46
 
50
- ### snice-option (Option Item)
47
+ ## Methods
51
48
 
52
- ```typescript
53
- value: string = ''; // Option value (defaults to label)
54
- label: string = ''; // Option label (defaults to textContent)
55
- disabled: boolean = false; // Disabled state
56
- selected: boolean = false; // Initially selected
57
- icon: string = ''; // Icon URL
58
- ```
49
+ - `focus()` / `blur()` - Focus/blur trigger
50
+ - `clear()` - Clear selection
51
+ - `openDropdown()` / `closeDropdown()` / `toggleDropdown()` - Dropdown control
52
+ - `selectOption(value)` - Select by value
59
53
 
60
- **Getter:**
61
- ```typescript
62
- optionData // { value, label, disabled, selected, icon }
63
- ```
54
+ ## Events
55
+
56
+ - `select-change` → `{ value: string | string[], option?, select }`
57
+ - `select-open` → `{ select }`
58
+ - `select-close` → `{ select }`
59
+
60
+ ## CSS Parts
64
61
 
65
- ## Usage
62
+ - `label`, `trigger`, `value`, `input`, `arrow`, `spinner`
63
+ - `dropdown`, `search`, `search-input`, `options`, `option`
64
+
65
+ ## Basic Usage
66
66
 
67
67
  ```html
68
- <!-- Standard button-trigger select -->
68
+ <!-- Declarative options -->
69
69
  <snice-select label="Choose" name="choice">
70
70
  <snice-option value="1">Option 1</snice-option>
71
71
  <snice-option value="2">Option 2</snice-option>
72
72
  </snice-select>
73
73
 
74
- <!-- Editable input-trigger select -->
74
+ <!-- Editable input mode -->
75
75
  <snice-select editable label="Fruit" placeholder="Type or select..."></snice-select>
76
76
  ```
77
77
 
78
78
  ```typescript
79
- // Programmatic options (required for editable mode or in addition to children)
80
79
  select.options = [
81
80
  { value: 'apple', label: 'Apple' },
82
- { value: 'banana', label: 'Banana', icon: '/icons/banana.svg' },
83
- { value: 'cherry', label: 'Cherry', disabled: true },
81
+ { value: 'banana', label: 'Banana', icon: '/icons/banana.svg' }
84
82
  ];
85
-
86
- select.addEventListener('select-change', (e) => {
87
- console.log(e.detail.value);
88
- });
89
-
90
- select.selectOption('1');
83
+ select.addEventListener('select-change', (e) => console.log(e.detail.value));
91
84
  ```
92
85
 
93
86
  ## Editable Mode
94
87
 
95
- When `editable` is set:
96
- - Renders a text `<input>` instead of a `<button>` trigger
97
- - Typing filters options in the dropdown
98
- - Focus opens the dropdown
99
- - Blur commits the value and closes
100
- - If no match and `allow-free-text` is set, accepts custom value
101
- - If no match and no `allow-free-text`, reverts to last valid value
102
- - Options set via JS `options` property (array), child `<snice-option>` elements, or both (merged)
103
-
104
- ## Remote Search (@request/@respond)
105
-
106
- When `remote` is set with `searchable` or `editable`:
107
- - Typing fires `@request('select/search')` with `{ query, select }` after debounce
108
- - Controller `@respond('select/search')` returns `SelectOption[]`
109
- - Dropdown shows spinner while waiting, then refreshes with results
110
- - Opening dropdown triggers initial search with current query
111
- - `loading` property no longer closes dropdown when `remote` is true
112
-
113
- ```typescript
114
- // Controller
115
- @respond('select/search')
116
- async handleSearch(req, respond) {
117
- const results = await fetch(`/api/users?q=${req.query}`).then(r => r.json());
118
- respond(results.map(u => ({ value: u.id, label: u.name })));
119
- }
120
- ```
121
-
122
- ## Features
123
-
124
- - Single and multiple selection
125
- - Search filtering (in-dropdown or editable input)
126
- - Remote async search via @request/@respond
127
- - Editable text input mode (replaces combobox)
128
- - Keyboard navigation
129
- - Form integration
130
- - Icons in options
131
- - Clearable selection
132
- - Disabled options
133
- - Programmatic options array (works alongside child elements)
88
+ - `editable` renders text input instead of button
89
+ - Typing filters options; blur commits value
90
+ - `allow-free-text` accepts values not in options list
91
+ - `remote` + `editable` enables async search via @request/@respond
134
92
 
135
- ## Notes
93
+ ## Accessibility
136
94
 
137
- - Options can be nested (uses querySelectorAll, not just direct children)
138
- - Multiple selection values are comma-separated
139
- - Hidden native select for form submission
95
+ - Hidden native `<select>` for form submission
96
+ - Arrow keys, Enter, Escape for keyboard navigation
140
97
  - Dropdown closes on outside click
141
- - Search shows in dropdown when open (non-editable mode)
142
- - Child `<snice-option>` elements take precedence when both children and programmatic options are provided
98
+ - Children take precedence over `options` array
@@ -13,41 +13,27 @@ count: number = 1;
13
13
  spacing: string = '8px';
14
14
  ```
15
15
 
16
- **CSS Parts:**
17
- - `base` - Outer skeleton container
18
- - `bone` - Individual skeleton placeholder element
16
+ ## CSS Custom Properties
19
17
 
20
- ## Usage
18
+ - `--skeleton-bg` - Background color
19
+ - `--skeleton-highlight` - Wave highlight color
20
+ - `--skeleton-duration` - Animation duration (`1.5s`)
21
21
 
22
- ```html
23
- <!-- Text placeholder -->
24
- <snice-skeleton variant="text"></snice-skeleton>
25
- <snice-skeleton variant="text" width="200px"></snice-skeleton>
22
+ ## CSS Parts
26
23
 
27
- <!-- Circular (avatar) -->
28
- <snice-skeleton variant="circular" width="40px" height="40px"></snice-skeleton>
24
+ - `base` - Outer container
25
+ - `bone` - Individual placeholder element
29
26
 
30
- <!-- Rectangular -->
31
- <snice-skeleton variant="rectangular" width="100%" height="200px"></snice-skeleton>
27
+ ## Basic Usage
32
28
 
33
- <!-- Rounded (card) -->
34
- <snice-skeleton variant="rounded" width="300px" height="150px"></snice-skeleton>
35
-
36
- <!-- Multiple lines -->
29
+ ```html
37
30
  <snice-skeleton variant="text" count="3"></snice-skeleton>
38
- <snice-skeleton variant="text" count="5" spacing="12px"></snice-skeleton>
39
-
40
- <!-- Animation types -->
31
+ <snice-skeleton variant="circular" width="48px" height="48px"></snice-skeleton>
32
+ <snice-skeleton variant="rectangular" width="100%" height="200px"></snice-skeleton>
33
+ <snice-skeleton variant="rounded" width="300px" height="150px"></snice-skeleton>
41
34
  <snice-skeleton animation="pulse"></snice-skeleton>
42
- <snice-skeleton animation="wave"></snice-skeleton>
43
- <snice-skeleton animation="none"></snice-skeleton>
44
-
45
- <!-- Complex layout -->
46
- <div style="display: flex; gap: 16px;">
47
- <snice-skeleton variant="circular" width="48px" height="48px"></snice-skeleton>
48
- <div style="flex: 1;">
49
- <snice-skeleton variant="text" width="40%"></snice-skeleton>
50
- <snice-skeleton variant="text" width="60%"></snice-skeleton>
51
- </div>
52
- </div>
53
35
  ```
36
+
37
+ ## Accessibility
38
+
39
+ - Decorative only; use `aria-busy="true"` on container while loading