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,18 +4,18 @@ Full-featured video player with custom controls, keyboard shortcuts, PiP, and fu
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- src: string = ''
9
- poster: string = ''
10
- autoplay: boolean = false
11
- muted: boolean = false
12
- loop: boolean = false
13
- controls: boolean = true
14
- playbackRate: number = 1 // attribute: playback-rate
15
- currentTime: number = 0 // attribute: current-time
16
- volume: number = 1 // 0-1
17
- variant: 'default' | 'minimal' | 'cinema' = 'default'
18
- readonly duration: number // read-only, set from video metadata
7
+ ```typescript
8
+ src: string = '';
9
+ poster: string = '';
10
+ autoplay: boolean = false;
11
+ muted: boolean = false;
12
+ loop: boolean = false;
13
+ controls: boolean = true;
14
+ playbackRate: number = 1; // attr: playback-rate
15
+ currentTime: number = 0; // attr: current-time
16
+ volume: number = 1; // 0-1
17
+ variant: 'default'|'minimal'|'cinema' = 'default';
18
+ duration: number; // read-only
19
19
  ```
20
20
 
21
21
  ## Methods
@@ -23,42 +23,28 @@ readonly duration: number // read-only, set from video metadata
23
23
  - `play()` - Start playback (async)
24
24
  - `pause()` - Pause playback
25
25
  - `toggle()` - Toggle play/pause
26
- - `seekTo(time: number)` - Seek to time in seconds
26
+ - `seekTo(time)` - Seek to time in seconds
27
27
  - `requestFullscreen()` - Enter fullscreen (async)
28
28
  - `exitFullscreen()` - Exit fullscreen (async)
29
29
  - `requestPictureInPicture()` - Toggle picture-in-picture (async)
30
- - `setPlaybackRate(rate: number)` - Set playback speed
31
-
32
- ## Slots
33
-
34
- - `default` - `<source>` elements for multiple formats
30
+ - `setPlaybackRate(rate)` - Set playback speed
35
31
 
36
32
  ## Events
37
33
 
38
- - `video-play` -> `{ player: SniceVideoPlayerElement }`
39
- - `video-pause` -> `{ player: SniceVideoPlayerElement }`
40
- - `video-ended` -> `{ player: SniceVideoPlayerElement }`
41
- - `video-time-update` -> `{ player: SniceVideoPlayerElement; currentTime: number; duration: number }`
42
- - `video-fullscreen-change` -> `{ player: SniceVideoPlayerElement; fullscreen: boolean }`
43
- - `video-volume-change` -> `{ player: SniceVideoPlayerElement; volume: number; muted: boolean }`
44
-
45
- ## Keyboard Shortcuts
46
-
47
- - Space/K: Toggle play/pause
48
- - F: Toggle fullscreen
49
- - M: Toggle mute
50
- - ArrowRight/ArrowLeft: Seek forward/backward 5s
51
- - ArrowUp/ArrowDown: Volume up/down 10%
34
+ - `video-play` -> `{ player }`
35
+ - `video-pause` -> `{ player }`
36
+ - `video-ended` -> `{ player }`
37
+ - `video-time-update` -> `{ player, currentTime, duration }`
38
+ - `video-fullscreen-change` -> `{ player, fullscreen }`
39
+ - `video-volume-change` -> `{ player, volume, muted }`
52
40
 
53
- ## Variants
41
+ ## Slots
54
42
 
55
- - `default` - Full controls, progress bar, PiP, rate selector
56
- - `minimal` - Simplified controls, no rate/PiP buttons
57
- - `cinema` - Larger controls, no border radius, box shadow
43
+ - `(default)` - `<source>` elements for multiple formats
58
44
 
59
45
  ## CSS Custom Properties
60
46
 
61
- - `--snice-video-overlay-bg` - Video background color (default: `rgb(0 0 0)`)
47
+ - `--snice-video-overlay-bg` - Video background (default: `rgb(0 0 0)`)
62
48
  - `--snice-video-overlay-alpha` - Overlay with alpha (default: `rgb(0 0 0 / 0.5)`)
63
49
  - `--snice-video-controls-color` - Controls text/icon color (default: `rgb(255 255 255)`)
64
50
  - `--snice-video-controls-hover-bg` - Button hover background (default: `rgb(255 255 255 / 0.15)`)
@@ -77,31 +63,28 @@ readonly duration: number // read-only, set from video metadata
77
63
  - `--snice-focus-ring-width` - Button focus ring width
78
64
  - `--snice-focus-ring-color` - Button focus ring color
79
65
 
80
- **CSS Parts:**
66
+ ## CSS Parts
67
+
81
68
  - `base` - Outer container element
82
69
  - `video` - The `<video>` element
83
70
  - `controls` - Control bar container
84
71
  - `progress` - Progress track element
85
72
 
86
- ## Usage
73
+ ## Keyboard Navigation
74
+
75
+ - Space/K: Toggle play/pause
76
+ - F: Toggle fullscreen
77
+ - M: Toggle mute
78
+ - ArrowRight/ArrowLeft: Seek forward/backward 5s
79
+ - ArrowUp/ArrowDown: Volume up/down 10%
80
+
81
+ ## Basic Usage
87
82
 
88
83
  ```html
89
- <snice-video-player
90
- src="video.mp4"
91
- poster="poster.jpg"
92
- controls
93
- ></snice-video-player>
84
+ <snice-video-player src="video.mp4" poster="poster.jpg"></snice-video-player>
94
85
 
95
- <!-- Multiple sources -->
96
86
  <snice-video-player poster="poster.jpg">
97
87
  <source src="video.webm" type="video/webm">
98
88
  <source src="video.mp4" type="video/mp4">
99
89
  </snice-video-player>
100
90
  ```
101
-
102
- ```typescript
103
- player.addEventListener('video-ended', () => {
104
- console.log('Video finished');
105
- });
106
- player.play();
107
- ```
@@ -29,7 +29,7 @@ interface VirtualScrollerItem {
29
29
 
30
30
  - `base` - The outer scroller container
31
31
 
32
- ## Usage
32
+ ## Basic Usage
33
33
 
34
34
  ```html
35
35
  <snice-virtual-scroller style="height: 400px;" item-height="60"></snice-virtual-scroller>
@@ -4,24 +4,24 @@ Waterfall chart (bridge chart) showing cumulative effect of sequential positive/
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- data: WaterfallDataPoint[] = []
9
- orientation: 'vertical' | 'horizontal' = 'vertical'
10
- showValues: boolean = true // attribute: show-values
11
- showConnectors: boolean = true // attribute: show-connectors
12
- animated: boolean = false
7
+ ```typescript
8
+ data: WaterfallDataPoint[] = [];
9
+ orientation: 'vertical'|'horizontal' = 'vertical';
10
+ showValues: boolean = true; // attr: show-values
11
+ showConnectors: boolean = true; // attr: show-connectors
12
+ animated: boolean = false;
13
13
 
14
14
  interface WaterfallDataPoint {
15
- label: string
16
- value: number
17
- type?: 'increase' | 'decrease' | 'total' // auto-detected from value sign if omitted
15
+ label: string;
16
+ value: number;
17
+ type?: 'increase'|'decrease'|'total'; // auto-detected from value sign if omitted
18
18
  }
19
19
  ```
20
20
 
21
21
  ## Events
22
22
 
23
- - `bar-click` `{ item: WaterfallDataPoint; index: number }` — bar clicked
24
- - `bar-hover` `{ item: WaterfallDataPoint; index: number }` — bar hovered
23
+ - `bar-click` -> `{ item: WaterfallDataPoint, index: number }`
24
+ - `bar-hover` -> `{ item: WaterfallDataPoint, index: number }`
25
25
 
26
26
  ## CSS Custom Properties
27
27
 
@@ -34,7 +34,12 @@ interface WaterfallDataPoint {
34
34
  - `--snice-transition-fast` - Bar hover transition (default: `150ms`)
35
35
  - `--snice-font-weight-medium` - Value text weight
36
36
 
37
- ## Usage
37
+ ## CSS Parts
38
+
39
+ - `base` - Main waterfall container
40
+ - `chart` - Chart rendering area
41
+
42
+ ## Basic Usage
38
43
 
39
44
  ```html
40
45
  <snice-waterfall show-values show-connectors></snice-waterfall>
@@ -53,7 +58,3 @@ chart.addEventListener('bar-click', (e) => {
53
58
  console.log(`Clicked: ${e.detail.item.label} (${e.detail.item.value})`);
54
59
  });
55
60
  ```
56
-
57
- **CSS Parts:**
58
- - `base` - Main waterfall container
59
- - `chart` - Chart rendering area
@@ -4,46 +4,29 @@ Weather display card with current conditions, humidity, wind, and multi-day fore
4
4
 
5
5
  ## Properties
6
6
 
7
- ```ts
8
- data: WeatherData | null = null
9
- unit: 'celsius' | 'fahrenheit' = 'celsius'
10
- variant: 'compact' | 'full' = 'full'
7
+ ```typescript
8
+ data: WeatherData | null = null;
9
+ unit: 'celsius'|'fahrenheit' = 'celsius';
10
+ variant: 'compact'|'full' = 'full';
11
11
 
12
12
  interface WeatherData {
13
- temp: number
14
- condition: string // e.g. "Sunny", "Partly Cloudy", "Rain"
15
- icon?: string // emoji or custom icon (auto-detected from condition if omitted)
16
- humidity?: number // percentage
17
- wind?: number // km/h
18
- forecast?: WeatherForecastDay[]
13
+ temp: number;
14
+ condition: string; // e.g. "Sunny", "Partly Cloudy", "Rain"
15
+ icon?: string; // emoji or custom icon (auto-detected from condition if omitted)
16
+ humidity?: number; // percentage
17
+ wind?: number; // km/h
18
+ forecast?: WeatherForecastDay[];
19
19
  }
20
20
 
21
21
  interface WeatherForecastDay {
22
- day: string // e.g. "Mon", "Tue"
23
- high: number
24
- low: number
25
- condition: string
26
- icon?: string
22
+ day: string; // e.g. "Mon", "Tue"
23
+ high: number;
24
+ low: number;
25
+ condition: string;
26
+ icon?: string;
27
27
  }
28
28
  ```
29
29
 
30
- ## Variants
31
-
32
- - `full` - Shows current weather, details (humidity/wind), and forecast
33
- - `compact` - Current temp and icon only; hides details and forecast
34
-
35
- ## Auto-detected Icons
36
-
37
- When `icon` is omitted, mapped from `condition` string:
38
- - sun/clear -> sun emoji
39
- - partly cloud -> partly cloudy emoji
40
- - cloud -> cloud emoji
41
- - rain -> rain emoji
42
- - snow -> snow emoji
43
- - thunder/storm -> thunderstorm emoji
44
- - fog/mist -> fog emoji
45
- - wind -> wind emoji
46
-
47
30
  ## CSS Custom Properties
48
31
 
49
32
  - `--snice-color-background-element` - Card background (default: `rgb(252 251 249)`)
@@ -56,16 +39,18 @@ When `icon` is omitted, mapped from `condition` string:
56
39
  - `--snice-border-radius-lg` - Card border radius (default: `0.5rem`)
57
40
  - `--snice-spacing-lg` - Card padding (default: `1.5rem`)
58
41
 
59
- **CSS Parts:**
42
+ ## CSS Parts
43
+
60
44
  - `base` - Outer weather card div
61
45
  - `current` - Current conditions section (icon + temp + condition)
62
46
  - `details` - Details row (humidity and wind)
63
47
  - `forecast` - Multi-day forecast section
64
48
 
65
- ## Usage
49
+ ## Basic Usage
66
50
 
67
51
  ```html
68
52
  <snice-weather unit="celsius" variant="full"></snice-weather>
53
+ <snice-weather unit="fahrenheit" variant="compact"></snice-weather>
69
54
  ```
70
55
 
71
56
  ```typescript
@@ -5,37 +5,24 @@ Service/maintenance work order with tasks, parts, labor, asset tracking, QR code
5
5
  ## Properties
6
6
 
7
7
  ```typescript
8
- woNumber: string = '' // attribute: wo-number
9
- date: string = '' // Date string
10
- dueDate: string = '' // attribute: due-date
11
- priority: WorkOrderPriority = 'medium' // 'low' | 'medium' | 'high' | 'urgent'
12
- status: WorkOrderStatus = 'open' // 'open' | 'in-progress' | 'completed' | 'cancelled'
13
- customer: WorkOrderCustomer | null = null // { name, address?, phone?, email? }
14
- description: string = '' // Scope of work text
15
- tasks: WorkOrderTask[] = [] // { description, assignee?, completed?, hours? }
16
- parts: WorkOrderPart[] = [] // { name, partNumber?, quantity, unitCost }
17
- asset: WorkOrderAsset | null = null // { id, name, location?, serial?, lastService? }
18
- laborRate: number = 0 // attribute: labor-rate; $/hr
19
- notes: string = '' // Additional notes
20
- variant: WorkOrderVariant = 'standard' // 'standard' | 'compact' | 'field-service' | 'maintenance' | 'detailed'
21
- showQr: boolean = false // attribute: show-qr; show QR code slot
22
- qrData: string = '' // attribute: qr-data; data for QR code
23
- qrPosition: QrPosition = 'top-right' // attribute: qr-position; 'top-right' | 'header' | 'footer'
8
+ woNumber: string = ''; // attr: wo-number
9
+ date: string = '';
10
+ dueDate: string = ''; // attr: due-date
11
+ priority: 'low'|'medium'|'high'|'urgent' = 'medium';
12
+ status: 'open'|'in-progress'|'completed'|'cancelled' = 'open';
13
+ customer: WorkOrderCustomer | null = null; // { name, address?, phone?, email? }
14
+ description: string = '';
15
+ tasks: WorkOrderTask[] = []; // { description, assignee?, completed?, hours? }
16
+ parts: WorkOrderPart[] = []; // { name, partNumber?, quantity, unitCost }
17
+ asset: WorkOrderAsset | null = null; // { id, name, location?, serial?, lastService? }
18
+ laborRate: number = 0; // attr: labor-rate; $/hr
19
+ notes: string = '';
20
+ variant: 'standard'|'compact'|'field-service'|'maintenance'|'detailed' = 'standard';
21
+ showQr: boolean = false; // attr: show-qr
22
+ qrData: string = ''; // attr: qr-data
23
+ qrPosition: 'top-right'|'header'|'footer' = 'top-right'; // attr: qr-position
24
24
  ```
25
25
 
26
- ## Slots
27
-
28
- - `(default)` - Additional content after main sections
29
- - `signature` - Custom signature content (e.g., canvas, image)
30
- - `qr` - Custom QR code content (rendered at qr-position)
31
- - `footer` - Custom footer content
32
-
33
- ## Events
34
-
35
- - `task-toggle` -> `{ index: number, task: WorkOrderTask, completed: boolean }`
36
- - `status-change` -> `{ previousStatus: WorkOrderStatus, status: WorkOrderStatus }`
37
- - `wo-sign` -> `{ woNumber: string, timestamp: string }`
38
-
39
26
  ## Methods
40
27
 
41
28
  - `getTotalPartsCost()` - Sum of part quantities * unit costs
@@ -45,15 +32,48 @@ qrPosition: QrPosition = 'top-right' // attribute: qr-position; 't
45
32
  - `print()` - Trigger browser print
46
33
  - `toJSON()` - Returns WorkOrderJSON with all data + computed totals
47
34
 
48
- ## Variants
35
+ ## Events
36
+
37
+ - `task-toggle` -> `{ index, task, completed }`
38
+ - `status-change` -> `{ previousStatus, status }`
39
+ - `wo-sign` -> `{ woNumber, timestamp }`
40
+
41
+ ## Slots
42
+
43
+ - `(default)` - Additional content after main sections
44
+ - `signature` - Custom signature content (e.g., canvas, image)
45
+ - `qr` - Custom QR code content (rendered at qr-position)
46
+ - `footer` - Custom footer content
47
+
48
+ ## CSS Parts
49
49
 
50
- - `standard` - Clean, structured service work order
51
- - `compact` - Dense layout, reduced spacing, smaller typography
52
- - `field-service` - Big checkboxes (1.75rem), bordered tasks, large signature area
53
- - `maintenance` - Equipment-focused with highlighted asset section
54
- - `detailed` - Full accounting: monospace part numbers, wider cost summary
50
+ - `base` - Root container
51
+ - `header` - Header section
52
+ - `title` / `wo-number` / `date` / `due-date` - Header fields
53
+ - `priority` / `status` - Badge elements
54
+ - `customer` / `customer-name` / `customer-address` / `customer-contact`
55
+ - `asset` / `asset-id` / `asset-name`
56
+ - `description` / `description-label` / `description-content`
57
+ - `tasks` / `task` / `task-checkbox` / `task-description` / `task-assignee`
58
+ - `parts` / `parts-table` / `parts-row` / `part-name` / `part-number` / `part-qty` / `part-cost` / `parts-total`
59
+ - `labor` / `labor-hours` / `labor-rate` / `labor-total`
60
+ - `costs` / `grand-total`
61
+ - `notes` / `notes-label` / `notes-content`
62
+ - `signature` / `signature-line` / `signature-date` / `sign-button`
63
+ - `qr-container` / `footer`
55
64
 
56
- ## Usage
65
+ ## CSS Custom Properties
66
+
67
+ - `--wo-max-width` - Max container width (default: `50rem`)
68
+ - `--wo-bg` / `--wo-bg-element` - Background colors
69
+ - `--wo-text` / `--wo-text-secondary` - Text colors
70
+ - `--wo-border` / `--wo-accent` - Border and accent colors
71
+ - `--wo-priority-{low,medium,high,urgent}-{bg,text}` - Priority badge colors
72
+ - `--wo-task-checkbox-size` - Checkbox size (default: `1.25rem`)
73
+ - `--wo-signature-line-color` - Signature line color
74
+ - `--wo-qr-size` - QR code size (default: `5rem`)
75
+
76
+ ## Basic Usage
57
77
 
58
78
  ```html
59
79
  <snice-work-order
@@ -62,11 +82,10 @@ qrPosition: QrPosition = 'top-right' // attribute: qr-position; 't
62
82
  due-date="2024-03-20"
63
83
  priority="high"
64
84
  status="in-progress"
85
+ labor-rate="75"
65
86
  variant="field-service"
66
87
  show-qr
67
- qr-data="https://app.example.com/wo/2024-001"
68
88
  qr-position="top-right">
69
- <img slot="qr" src="qr.png" alt="QR" />
70
89
  </snice-work-order>
71
90
  ```
72
91
 
@@ -83,103 +102,8 @@ wo.parts = [
83
102
  { name: 'Compressor', partNumber: 'CP-200', quantity: 1, unitCost: 450 }
84
103
  ];
85
104
  wo.laborRate = 75;
86
- wo.notes = 'Customer prefers morning appointments';
87
105
 
88
106
  wo.addEventListener('task-toggle', e => console.log(e.detail));
89
107
  wo.addEventListener('wo-sign', e => console.log('Signed:', e.detail));
108
+ console.log('Total:', wo.getTotalCost());
90
109
  ```
91
-
92
- ## CSS Parts
93
-
94
- ```css
95
- ::part(base) /* Main container */
96
- ::part(header) /* Header section */
97
- ::part(title) /* "Work Order" label */
98
- ::part(wo-number) /* WO number heading */
99
- ::part(date) /* Date value */
100
- ::part(due-date) /* Due date value */
101
- ::part(priority) /* Priority badge */
102
- ::part(status) /* Status badge */
103
- ::part(customer) /* Customer section */
104
- ::part(customer-name) /* Customer name value */
105
- ::part(customer-address) /* Customer address value */
106
- ::part(customer-contact) /* Customer phone value */
107
- ::part(asset) /* Asset section (maintenance) */
108
- ::part(asset-id) /* Asset ID value */
109
- ::part(asset-name) /* Asset name value */
110
- ::part(description) /* Description section */
111
- ::part(description-label) /* Description heading */
112
- ::part(description-content) /* Description text */
113
- ::part(tasks) /* Tasks section */
114
- ::part(task) /* Individual task row */
115
- ::part(task-checkbox) /* Task checkbox button */
116
- ::part(task-description) /* Task description text */
117
- ::part(task-assignee) /* Task assignee name */
118
- ::part(parts) /* Parts section */
119
- ::part(parts-table) /* Parts table */
120
- ::part(parts-row) /* Parts table row */
121
- ::part(part-name) /* Part name cell */
122
- ::part(part-number) /* Part number cell */
123
- ::part(part-qty) /* Part quantity cell */
124
- ::part(part-cost) /* Part unit cost cell */
125
- ::part(parts-total) /* Parts subtotal */
126
- ::part(labor) /* Labor section */
127
- ::part(labor-hours) /* Total labor hours */
128
- ::part(labor-rate) /* Labor rate display */
129
- ::part(labor-total) /* Labor cost total */
130
- ::part(notes) /* Notes section */
131
- ::part(notes-label) /* Notes heading */
132
- ::part(notes-content) /* Notes text */
133
- ::part(costs) /* Cost summary section */
134
- ::part(grand-total) /* Grand total amount */
135
- ::part(signature) /* Signature section */
136
- ::part(signature-line) /* Signature line */
137
- ::part(signature-date) /* Signature date line */
138
- ::part(sign-button) /* Sign work order button */
139
- ::part(qr-container) /* QR code container */
140
- ::part(footer) /* Footer */
141
- ```
142
-
143
- ## CSS Custom Properties
144
-
145
- ```css
146
- --wo-max-width /* Max container width (default: 50rem) */
147
- --wo-bg /* Background color */
148
- --wo-bg-element /* Element background */
149
- --wo-text /* Primary text color */
150
- --wo-text-secondary /* Secondary text color */
151
- --wo-text-tertiary /* Tertiary text color */
152
- --wo-border /* Border color */
153
- --wo-accent /* Accent/primary color */
154
- --wo-success /* Success color */
155
- --wo-danger /* Danger color */
156
- --wo-priority-low-bg /* Low priority badge bg */
157
- --wo-priority-low-text /* Low priority badge text */
158
- --wo-priority-medium-bg /* Medium priority badge bg */
159
- --wo-priority-medium-text /* Medium priority badge text */
160
- --wo-priority-high-bg /* High priority badge bg */
161
- --wo-priority-high-text /* High priority badge text */
162
- --wo-priority-urgent-bg /* Urgent priority badge bg */
163
- --wo-priority-urgent-text /* Urgent priority badge text */
164
- --wo-status-open-bg /* Open status badge bg */
165
- --wo-status-open-text /* Open status badge text */
166
- --wo-status-in-progress-bg /* In-progress status bg */
167
- --wo-status-in-progress-text /* In-progress status text */
168
- --wo-status-completed-bg /* Completed status bg */
169
- --wo-status-completed-text /* Completed status text */
170
- --wo-status-cancelled-bg /* Cancelled status bg */
171
- --wo-status-cancelled-text /* Cancelled status text */
172
- --wo-task-checkbox-size /* Checkbox dimensions (default: 1.25rem) */
173
- --wo-task-completed-text /* Completed task text color */
174
- --wo-signature-line-color /* Signature line color */
175
- --wo-qr-size /* QR code container size (default: 5rem) */
176
- ```
177
-
178
- ## Notes
179
-
180
- - Totals auto-compute from parts costs + (labor hours * labor rate)
181
- - Task checkboxes toggle completed state and emit `task-toggle`
182
- - Status changes emit `status-change` event
183
- - `asset` property is for equipment/maintenance tracking (prominent in `maintenance` variant)
184
- - QR slot renders at configurable position; use with any QR library
185
- - Print-friendly: badges use borders, checkboxes use B&W, signature lines darken, page breaks managed
@@ -163,6 +163,69 @@ class UserProfile extends HTMLElement {
163
163
  // Wiring: <user-profile controller="api"></user-profile>
164
164
  ```
165
165
 
166
+ ### Vanilla JS: createRequestHandler
167
+
168
+ Handle `@request` channels without decorators. Useful for non-Snice code,
169
+ third-party integrations, or vanilla JS apps.
170
+
171
+ ```typescript
172
+ import { createRequestHandler } from 'snice';
173
+
174
+ // Scoped to an ancestor element (catches bubbling requests)
175
+ const cleanup = createRequestHandler(containerEl, {
176
+ 'fetch-user': async (payload) => {
177
+ const res = await fetch(`/api/users/${payload.id}`);
178
+ return res.json();
179
+ },
180
+ 'save-settings': async (payload) => {
181
+ await fetch('/api/settings', { method: 'POST', body: JSON.stringify(payload) });
182
+ return { ok: true };
183
+ }
184
+ });
185
+
186
+ // Global handler (listens on document)
187
+ const cleanup2 = createRequestHandler(document, {
188
+ 'fetch-user': async (payload) => ({ name: 'Jane', id: payload.id }),
189
+ });
190
+
191
+ // Remove all listeners
192
+ cleanup();
193
+ ```
194
+
195
+ ### React: useRequestHandler
196
+
197
+ React hook equivalent. Lives in `src/react/`, built to `adapters/react/`.
198
+
199
+ ```tsx
200
+ import { useRequestHandler } from 'snice/react/useRequestHandler';
201
+
202
+ function App() {
203
+ const containerRef = useRef<HTMLDivElement>(null);
204
+
205
+ useRequestHandler(containerRef, {
206
+ 'fetch-user': async (payload) => {
207
+ const res = await fetch(`/api/users/${payload.id}`);
208
+ return res.json();
209
+ },
210
+ });
211
+
212
+ return (
213
+ <div ref={containerRef}>
214
+ <snice-user-card />
215
+ </div>
216
+ );
217
+ }
218
+
219
+ // Global handler (null ref = document)
220
+ useRequestHandler(null, {
221
+ 'fetch-user': async (payload) => ({ name: 'Jane' }),
222
+ });
223
+ ```
224
+
225
+ Route map callbacks always use the latest version (ref-stable) — no need
226
+ for `useCallback` or stable references. Re-subscribes only when channel
227
+ names change.
228
+
166
229
  ## Fetch with Middleware
167
230
 
168
231
  ```typescript
@@ -404,3 +467,27 @@ class SearchBox extends HTMLElement {
404
467
  }
405
468
  }
406
469
  ```
470
+
471
+ ## React Router
472
+
473
+ ```tsx
474
+ import { SniceRouter, Route, useSniceContext } from 'snice/react';
475
+
476
+ function App() {
477
+ return (
478
+ <SniceRouter mode="hash" context={{ user, theme: 'dark' }} layout={AppShell}>
479
+ <Route path="/" page={HomePage} />
480
+ <Route path="/settings" page={SettingsPage} guard={authGuard} guardRedirect="/login" />
481
+ <Route path="/legacy" page="legacy-dashboard" />
482
+ <Route path="/login" page={LoginPage} layout={false} />
483
+ </SniceRouter>
484
+ );
485
+ }
486
+
487
+ function AppShell({ children }) {
488
+ const ctx = useSniceContext();
489
+ return <div className="shell"><nav>...</nav><main>{children}</main></div>;
490
+ }
491
+
492
+ const authGuard = (ctx, params) => !!ctx.user;
493
+ ```