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
@@ -1,26 +1,20 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/spreadsheet.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/spreadsheet.md -->
2
2
 
3
- # Spreadsheet Component
3
+ # Spreadsheet
4
4
 
5
- The spreadsheet component provides an Excel-like editable grid with formula support, multi-cell range selection, undo/redo, column resizing, context menus, copy/paste, and an auto-expanding grid. It supports both reading and editing tabular data with full keyboard-driven navigation.
5
+ An Excel-like editable grid with formula support, multi-cell range selection, undo/redo, column resizing, context menus, copy/paste, and auto-expanding rows and columns.
6
6
 
7
7
  ## Table of Contents
8
+
8
9
  - [Properties](#properties)
9
10
  - [Methods](#methods)
10
11
  - [Events](#events)
11
- - [CSS Custom Properties](#css-custom-properties)
12
12
  - [CSS Parts](#css-parts)
13
+ - [CSS Custom Properties](#css-custom-properties)
13
14
  - [Basic Usage](#basic-usage)
14
- - [Formula Support](#formula-support)
15
15
  - [Examples](#examples)
16
- - [Multi-Cell Selection](#multi-cell-selection)
17
- - [Column Resizing](#column-resizing)
18
- - [Context Menu](#context-menu)
19
- - [Undo/Redo](#undoredo)
20
- - [Auto-Expanding Grid](#auto-expanding-grid)
21
- - [Keyboard Shortcuts](#keyboard-shortcuts)
16
+ - [Keyboard Navigation](#keyboard-navigation)
22
17
  - [Accessibility](#accessibility)
23
- - [Browser Support](#browser-support)
24
18
 
25
19
  ## Properties
26
20
 
@@ -28,119 +22,45 @@ The spreadsheet component provides an Excel-like editable grid with formula supp
28
22
  |----------|------|---------|-------------|
29
23
  | `data` | `any[][]` | `[]` | Two-dimensional array of cell values |
30
24
  | `columns` | `SpreadsheetColumn[]` | `[]` | Column definitions with header, type, and width |
31
- | `readonly` | `boolean` | `false` | Prevents cell editing when true |
25
+ | `readonly` | `boolean` | `false` | Prevents cell editing |
32
26
 
33
27
  ### SpreadsheetColumn
34
28
 
35
29
  ```typescript
36
30
  interface SpreadsheetColumn {
37
31
  header: string; // Column header text
38
- type?: 'text' | 'number' | 'date' | 'boolean' | 'select'; // Cell type
32
+ type?: 'text' | 'number' | 'date' | 'boolean' | 'select';
39
33
  width?: number; // Column width in pixels
40
- options?: string[]; // Available options for 'select' type cells
41
- }
42
- ```
43
-
44
- ### CellPosition
45
-
46
- ```typescript
47
- interface CellPosition {
48
- row: number;
49
- col: number;
50
- }
51
- ```
52
-
53
- ### CellRange
54
-
55
- ```typescript
56
- interface CellRange {
57
- start: CellPosition;
58
- end: CellPosition;
34
+ options?: string[]; // Options for 'select' type cells
59
35
  }
60
36
  ```
61
37
 
62
38
  ## Methods
63
39
 
64
- #### `getCell(row: number, col: number): any`
65
- Get the resolved value of a cell. For formula cells, returns the computed result.
66
-
67
- ```typescript
68
- const value = spreadsheet.getCell(0, 1); // Get value at row 0, column 1
69
- ```
70
-
71
- #### `setCell(row: number, col: number, value: any): void`
72
- Set a cell value. Auto-expands the data grid if the position is beyond current bounds. The change is added to the undo stack.
73
-
74
- ```typescript
75
- spreadsheet.setCell(0, 1, 250);
76
- spreadsheet.setCell(2, 0, '=SUM(B1:B2)');
77
- ```
78
-
79
- #### `getData(): any[][]`
80
- Get a copy of all current data.
81
-
82
- ```typescript
83
- const allData = spreadsheet.getData();
84
- console.log(allData);
85
- ```
86
-
87
- #### `setData(data: any[][]): void`
88
- Replace all data in the spreadsheet.
89
-
90
- ```typescript
91
- spreadsheet.setData([
92
- ['Alice', 100],
93
- ['Bob', 200],
94
- ['Total', '=SUM(B1:B2)']
95
- ]);
96
- ```
40
+ | Method | Arguments | Returns | Description |
41
+ |--------|-----------|---------|-------------|
42
+ | `getCell()` | `row: number, col: number` | `any` | Get resolved cell value (formulas return computed result) |
43
+ | `setCell()` | `row: number, col: number, value: any` | `void` | Set cell value (auto-expands grid, adds to undo stack) |
44
+ | `getData()` | -- | `any[][]` | Get a copy of all current data |
45
+ | `setData()` | `data: any[][]` | `void` | Replace all data |
97
46
 
98
47
  ## Events
99
48
 
100
- ### `cell-change`
101
- Fired when a cell value is modified.
49
+ | Event | Detail | Description |
50
+ |-------|--------|-------------|
51
+ | `cell-change` | `{ row: number, col: number, value: any, oldValue: any }` | A cell value was modified |
52
+ | `cell-select` | `{ row: number, col: number }` | A cell was selected |
53
+ | `row-select` | `{ row: number }` | A row was selected (clicked row number) |
54
+ | `column-sort` | `{ col: number, direction: 'asc' \| 'desc' }` | A column header was clicked to sort |
102
55
 
103
- **Event Detail:**
104
- ```typescript
105
- {
106
- row: number;
107
- col: number;
108
- value: any;
109
- oldValue: any;
110
- }
111
- ```
112
-
113
- ### `cell-select`
114
- Fired when a cell is selected.
115
-
116
- **Event Detail:**
117
- ```typescript
118
- {
119
- row: number;
120
- col: number;
121
- }
122
- ```
123
-
124
- ### `row-select`
125
- Fired when a row is selected (by clicking the row number).
126
-
127
- **Event Detail:**
128
- ```typescript
129
- {
130
- row: number;
131
- }
132
- ```
56
+ ## CSS Parts
133
57
 
134
- ### `column-sort`
135
- Fired when a column header is clicked to sort.
136
-
137
- **Event Detail:**
138
- ```typescript
139
- {
140
- col: number;
141
- direction: 'asc' | 'desc';
142
- }
143
- ```
58
+ | Part | Description |
59
+ |------|-------------|
60
+ | `formula-bar` | The formula bar with cell reference and input field |
61
+ | `base` | The main spreadsheet grid area |
62
+ | `status-bar` | The bottom status bar showing selection statistics |
63
+ | `context-menu` | The right-click context menu |
144
64
 
145
65
  ## CSS Custom Properties
146
66
 
@@ -156,66 +76,17 @@ Fired when a column header is clicked to sort.
156
76
  | `--snice-color-text-secondary` | Formula bar cell reference text | _(theme default)_ |
157
77
  | `--snice-color-text-tertiary` | Row numbers, status bar labels, add buttons | _(theme default)_ |
158
78
 
159
- ## CSS Parts
160
-
161
- Style internal elements from outside the shadow DOM using `::part()`.
162
-
163
- | Part | Element | Description |
164
- |------|---------|-------------|
165
- | `formula-bar` | `<div>` | The formula bar with cell reference and input field |
166
- | `base` | `<div>` | The main spreadsheet grid area |
167
- | `status-bar` | `<div>` | The bottom status bar showing selection statistics |
168
- | `context-menu` | `<div>` | The right-click context menu |
169
-
170
- ```css
171
- snice-spreadsheet::part(formula-bar) {
172
- background: #f9fafb;
173
- border-bottom: 1px solid #e5e7eb;
174
- }
175
-
176
- snice-spreadsheet::part(status-bar) {
177
- font-size: 0.75rem;
178
- background: #f9fafb;
179
- }
180
- ```
181
-
182
79
  ## Basic Usage
183
80
 
184
- ```html
185
- <snice-spreadsheet></snice-spreadsheet>
186
- ```
187
-
188
81
  ```typescript
189
82
  import 'snice/components/spreadsheet/snice-spreadsheet';
190
83
  ```
191
84
 
192
- ## Formula Support
193
-
194
- Cells starting with `=` are evaluated as formulas. Supported functions:
195
-
196
- | Function | Description | Example |
197
- |----------|-------------|---------|
198
- | `SUM` | Sum of values in range | `=SUM(A1:A5)` |
199
- | `AVG` / `AVERAGE` | Average of values in range | `=AVG(B1:B10)` |
200
- | `COUNT` | Count of non-empty cells in range | `=COUNT(A1:A10)` |
201
- | `MIN` | Minimum value in range | `=MIN(C1:C5)` |
202
- | `MAX` | Maximum value in range | `=MAX(C1:C5)` |
203
-
204
- Cell references use spreadsheet-style notation (A1, B2, etc.) where letters are columns and numbers are rows.
205
-
206
- ## Examples
207
-
208
- ### Basic Spreadsheet with Column Types
209
-
210
- Define columns with different cell types and populate with data.
211
-
212
85
  ```html
213
- <snice-spreadsheet id="basic-sheet"></snice-spreadsheet>
86
+ <snice-spreadsheet id="sheet"></snice-spreadsheet>
214
87
 
215
- <script type="module">
216
- import 'snice/components/spreadsheet/snice-spreadsheet';
217
-
218
- const sheet = document.getElementById('basic-sheet');
88
+ <script>
89
+ const sheet = document.getElementById('sheet');
219
90
  sheet.columns = [
220
91
  { header: 'Name', type: 'text' },
221
92
  { header: 'Amount', type: 'number', width: 100 },
@@ -229,166 +100,77 @@ Define columns with different cell types and populate with data.
229
100
  </script>
230
101
  ```
231
102
 
232
- ### Spreadsheet with Formulas
103
+ ## Examples
233
104
 
234
- Use formula cells to calculate totals and summaries.
105
+ ### Formula Support
235
106
 
236
- ```html
237
- <snice-spreadsheet id="formula-sheet"></snice-spreadsheet>
107
+ Cells starting with `=` are evaluated as formulas. Supported functions: `SUM`, `AVG`/`AVERAGE`, `COUNT`, `MIN`, `MAX`. Cell references use spreadsheet-style notation (A1, B2).
238
108
 
239
- <script type="module">
240
- const sheet = document.getElementById('formula-sheet');
241
- sheet.columns = [
242
- { header: 'Item', type: 'text', width: 150 },
243
- { header: 'Q1', type: 'number', width: 80 },
244
- { header: 'Q2', type: 'number', width: 80 },
245
- { header: 'Q3', type: 'number', width: 80 },
246
- { header: 'Q4', type: 'number', width: 80 }
247
- ];
248
- sheet.data = [
249
- ['Revenue', 1200, 1400, 1100, 1600],
250
- ['Expenses', 800, 900, 750, 1000],
251
- ['Profit', '=SUM(B1:B1)-SUM(B2:B2)', '=SUM(C1:C1)-SUM(C2:C2)', '=SUM(D1:D1)-SUM(D2:D2)', '=SUM(E1:E1)-SUM(E2:E2)'],
252
- ['Average', '=AVG(B1:B2)', '=AVG(C1:C2)', '=AVG(D1:D2)', '=AVG(E1:E2)']
253
- ];
254
- </script>
109
+ ```typescript
110
+ sheet.data = [
111
+ ['Revenue', 1200, 1400, 1100],
112
+ ['Expenses', 800, 900, 750],
113
+ ['Profit', '=B1-B2', '=C1-C2', '=D1-D2'],
114
+ ['Total', '=SUM(B1:B2)', '=AVG(C1:C2)', '=MAX(D1:D2)']
115
+ ];
255
116
  ```
256
117
 
257
- ### Read-Only Spreadsheet
118
+ ### Read-Only
258
119
 
259
- Display tabular data in a non-editable spreadsheet.
120
+ Set `readonly` to display data without editing.
260
121
 
261
122
  ```html
262
- <snice-spreadsheet id="readonly-sheet" readonly></snice-spreadsheet>
263
-
264
- <script type="module">
265
- const sheet = document.getElementById('readonly-sheet');
266
- sheet.columns = [
267
- { header: 'Employee', type: 'text', width: 150 },
268
- { header: 'Department', type: 'text', width: 120 },
269
- { header: 'Salary', type: 'number', width: 100 }
270
- ];
271
- sheet.data = [
272
- ['Jane Doe', 'Engineering', 95000],
273
- ['John Smith', 'Marketing', 78000],
274
- ['Lisa Chen', 'Engineering', 102000],
275
- ['Total', '', '=SUM(C1:C3)']
276
- ];
277
- </script>
278
- ```
279
-
280
- ### Listening for Cell Changes
281
-
282
- Track edits by listening for the `cell-change` event.
283
-
284
- ```html
285
- <snice-spreadsheet id="tracked-sheet"></snice-spreadsheet>
286
- <p id="change-log">Edit a cell to see changes here.</p>
287
-
288
- <script type="module">
289
- import type { SniceSpreadsheetElement } from 'snice/components/spreadsheet/snice-spreadsheet.types';
290
-
291
- const sheet = document.getElementById('tracked-sheet') as SniceSpreadsheetElement;
292
- const log = document.getElementById('change-log');
293
-
294
- sheet.columns = [
295
- { header: 'Product', type: 'text' },
296
- { header: 'Price', type: 'number', width: 80 },
297
- { header: 'In Stock', type: 'boolean' }
298
- ];
299
- sheet.data = [
300
- ['Widget', 9.99, true],
301
- ['Gadget', 24.99, false],
302
- ['Gizmo', 14.99, true]
303
- ];
304
-
305
- sheet.addEventListener('cell-change', (e) => {
306
- log.textContent = `Cell [${e.detail.row}, ${e.detail.col}] changed from "${e.detail.oldValue}" to "${e.detail.value}"`;
307
- });
308
- </script>
123
+ <snice-spreadsheet readonly></snice-spreadsheet>
309
124
  ```
310
125
 
311
126
  ### Date and Boolean Columns
312
127
 
313
128
  Use specialized cell types for dates and checkboxes.
314
129
 
315
- ```html
316
- <snice-spreadsheet id="typed-sheet"></snice-spreadsheet>
317
-
318
- <script type="module">
319
- const sheet = document.getElementById('typed-sheet');
320
- sheet.columns = [
321
- { header: 'Task', type: 'text', width: 200 },
322
- { header: 'Due Date', type: 'date', width: 120 },
323
- { header: 'Complete', type: 'boolean', width: 80 }
324
- ];
325
- sheet.data = [
326
- ['Design mockups', '2026-03-01', false],
327
- ['Write tests', '2026-03-05', true],
328
- ['Deploy to staging', '2026-03-10', false]
329
- ];
330
- </script>
130
+ ```typescript
131
+ sheet.columns = [
132
+ { header: 'Task', type: 'text', width: 200 },
133
+ { header: 'Due Date', type: 'date', width: 120 },
134
+ { header: 'Complete', type: 'boolean', width: 80 }
135
+ ];
136
+ sheet.data = [
137
+ ['Design mockups', '2026-03-01', false],
138
+ ['Write tests', '2026-03-05', true],
139
+ ];
331
140
  ```
332
141
 
333
- ## Multi-Cell Selection
142
+ ### Event Handling
334
143
 
335
- The spreadsheet supports selecting a range of cells, similar to Excel or Google Sheets.
336
-
337
- - **Click and drag**: Click a cell and drag to select a range
338
- - **Shift+Click**: Click a cell, then Shift+Click another to select the range between them
339
- - **Shift+Arrow keys**: Extend the selection one cell at a time in the arrow direction
340
-
341
- When a range is selected:
342
- - The anchor cell (where selection started) has a thick blue border
343
- - Other cells in the range have a light blue fill
344
- - The **status bar** at the bottom shows COUNT, SUM, and AVG of numeric cells in the selection
345
-
346
- ## Column Resizing
347
-
348
- Drag the right edge of any column header to resize it. A blue highlight appears on hover to indicate the resize handle. The minimum column width is 40px.
349
-
350
- ## Context Menu
351
-
352
- Right-click any cell to open the context menu with these options:
353
-
354
- | Action | Description |
355
- |--------|-------------|
356
- | Cut | Copy selected cell(s) and clear |
357
- | Copy | Copy selected cell(s) to clipboard |
358
- | Paste | Paste from clipboard |
359
- | Insert Row Above | Add empty row above current |
360
- | Insert Row Below | Add empty row below current |
361
- | Delete Row | Remove current row |
362
- | Insert Column Left | Add empty column to the left |
363
- | Insert Column Right | Add empty column to the right |
364
- | Delete Column | Remove current column |
365
- | Clear Cell(s) | Clear selected cell(s) contents |
366
-
367
- The context menu closes when clicking outside, pressing Escape, or selecting an action.
368
-
369
- ## Undo/Redo
370
-
371
- The spreadsheet maintains an undo/redo history stack (up to 100 entries) for cell value changes.
144
+ ```typescript
145
+ sheet.addEventListener('cell-change', (e) => {
146
+ console.log(`Cell [${e.detail.row}, ${e.detail.col}]: ${e.detail.oldValue} -> ${e.detail.value}`);
147
+ });
372
148
 
373
- - **Ctrl+Z**: Undo the last change
374
- - **Ctrl+Y** or **Ctrl+Shift+Z**: Redo the last undone change
149
+ sheet.addEventListener('column-sort', (e) => {
150
+ console.log(`Column ${e.detail.col} sorted ${e.detail.direction}`);
151
+ });
152
+ ```
375
153
 
376
- The undo history tracks the row, column, old value, and new value for each change.
154
+ ### Multi-Cell Selection
377
155
 
378
- ## Auto-Expanding Grid
156
+ - Click and drag to select a range
157
+ - Shift+Click to extend selection from the anchor cell
158
+ - Shift+Arrow keys to grow selection one cell at a time
159
+ - Status bar shows COUNT, SUM, and AVG of numeric cells in the selection
379
160
 
380
- The grid auto-expands to create an infinite spreadsheet feel:
161
+ ### Context Menu
381
162
 
382
- - **"+" row**: A "+" button row at the bottom appends a new empty row when clicked
383
- - **"+" column**: A "+" button at the right end of the header appends a new empty column
384
- - **Tab at last column**: When editing the last column and pressing Tab, a new column is added automatically
385
- - **Enter at last row**: When editing the last row and pressing Enter, a new row is added automatically
163
+ Right-click any cell for options: Cut, Copy, Paste, Insert Row Above/Below, Delete Row, Insert Column Left/Right, Delete Column, Clear Cell(s).
386
164
 
387
- ### Empty State
165
+ ### Auto-Expanding Grid
388
166
 
389
- When the data array is empty, the spreadsheet displays a centered message: "Double-click or start typing to add data". Double-clicking the empty state creates the first cell and enters edit mode.
167
+ - "+" button row at bottom appends a new empty row
168
+ - "+" button at right of header appends a new empty column
169
+ - Tab at the last column auto-adds a new column
170
+ - Enter at the last row auto-adds a new row
171
+ - Empty state shows "Double-click or start typing to add data"
390
172
 
391
- ## Keyboard Shortcuts
173
+ ## Keyboard Navigation
392
174
 
393
175
  | Shortcut | Action |
394
176
  |----------|--------|
@@ -403,18 +185,13 @@ When the data array is empty, the spreadsheet displays a centered message: "Doub
403
185
  | Ctrl+V | Paste (supports tab-separated multi-cell paste) |
404
186
  | Ctrl+Z | Undo |
405
187
  | Ctrl+Y / Ctrl+Shift+Z | Redo |
406
- | Any printable key | Start editing with that character (type-to-edit) |
188
+ | Any printable key | Start editing with that character |
407
189
 
408
190
  ## Accessibility
409
191
 
410
- - **Keyboard navigation**: Full keyboard support for navigating, editing, and selecting cells
411
- - **Focus management**: Selected cell receives visible focus indicator with 2px blue border
412
- - **Column sorting**: Sort buttons in headers are keyboard accessible
413
- - **Edit mode**: Enter/F2 activates cell editing, Escape cancels
414
- - **Type-to-edit**: Simply start typing to begin editing the selected cell
415
- - **Undo/Redo**: Ctrl+Z and Ctrl+Y provide full change history navigation
416
-
417
- ## Browser Support
418
-
419
- - Modern browsers (Chrome, Firefox, Safari, Edge)
420
- - Requires Custom Elements v1 and Shadow DOM support
192
+ - Full keyboard navigation for cells, editing, and selection
193
+ - Visible focus indicator (2px blue border) on selected cell
194
+ - Column sort buttons are keyboard accessible
195
+ - Enter/F2 activates editing, Escape cancels
196
+ - Undo/redo history (up to 100 entries) via Ctrl+Z and Ctrl+Y
197
+ - Frozen row numbers (sticky left) and column headers (sticky top)
@@ -1,47 +1,34 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/stat-group.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/stat-group.md -->
2
2
 
3
3
  # Stat Group
4
4
 
5
- `<snice-stat-group>`
6
-
7
5
  A coordinated row of KPI cards with consistent sizing, trend indicators, and responsive grid layout.
8
6
 
9
7
  ## Table of Contents
8
+
10
9
  - [Properties](#properties)
11
10
  - [Events](#events)
12
11
  - [CSS Parts](#css-parts)
13
12
  - [Basic Usage](#basic-usage)
14
13
  - [Examples](#examples)
15
-
16
- ## Importing
17
-
18
- **ESM (bundler)**
19
- ```typescript
20
- import 'snice/components/stat-group/snice-stat-group';
21
- ```
22
-
23
- **CDN**
24
- ```html
25
- <script src="snice-runtime.min.js"></script>
26
- <script src="snice-stat-group.min.js"></script>
27
- ```
14
+ - [Accessibility](#accessibility)
28
15
 
29
16
  ## Properties
30
17
 
31
18
  | Property | Type | Default | Description |
32
19
  |----------|------|---------|-------------|
33
20
  | `stats` | `StatItem[]` | `[]` | Array of stat objects to display |
34
- | `columns` | `number` | `0` | Number of columns (0 = auto-fit) |
21
+ | `columns` | `number` | `0` | Number of columns (0 = auto-fit based on width) |
35
22
  | `variant` | `'card' \| 'minimal' \| 'bordered'` | `'card'` | Visual style variant |
36
23
 
37
- ### StatItem Interface
24
+ ### StatItem
38
25
 
39
26
  ```typescript
40
27
  interface StatItem {
41
28
  label: string; // Stat label text
42
29
  value: string | number; // Display value
43
30
  trend?: 'up' | 'down' | 'neutral'; // Trend direction
44
- trendValue?: string; // Trend comparison text
31
+ trendValue?: string; // Trend comparison text (e.g. "+12.5%")
45
32
  icon?: string; // Icon text or emoji
46
33
  color?: string; // Accent color for icon and value
47
34
  }
@@ -51,7 +38,7 @@ interface StatItem {
51
38
 
52
39
  | Event | Detail | Description |
53
40
  |-------|--------|-------------|
54
- | `stat-click` | `{ stat: StatItem, index: number }` | Fired when a stat card is clicked |
41
+ | `stat-click` | `{ stat: StatItem, index: number }` | A stat card was clicked |
55
42
 
56
43
  ## CSS Parts
57
44
 
@@ -60,16 +47,6 @@ interface StatItem {
60
47
  | `base` | The grid container element |
61
48
  | `stat` | Individual stat card element |
62
49
 
63
- ```css
64
- snice-stat-group::part(stat) {
65
- border-radius: 1rem;
66
- }
67
-
68
- snice-stat-group::part(base) {
69
- gap: 2rem;
70
- }
71
- ```
72
-
73
50
  ## Basic Usage
74
51
 
75
52
  ```typescript
@@ -82,7 +59,7 @@ import 'snice/components/stat-group/snice-stat-group';
82
59
  <script>
83
60
  document.getElementById('stats').stats = [
84
61
  { label: 'Revenue', value: '$45,231', trend: 'up', trendValue: '+12.5%' },
85
- { label: 'Users', value: '2,338', trend: 'up', trendValue: '+8.2%' }
62
+ { label: 'Users', value: '2,338', trend: 'up', trendValue: '+8.2%' },
86
63
  ];
87
64
  </script>
88
65
  ```
@@ -91,7 +68,7 @@ import 'snice/components/stat-group/snice-stat-group';
91
68
 
92
69
  ### Variants
93
70
 
94
- Use the `variant` attribute to change the visual style of the stat cards.
71
+ Use `variant` to change the visual style of the stat cards.
95
72
 
96
73
  ```html
97
74
  <!-- Card (default) - bordered cards with hover effects -->
@@ -106,7 +83,7 @@ Use the `variant` attribute to change the visual style of the stat cards.
106
83
 
107
84
  ### Fixed Column Count
108
85
 
109
- Use the `columns` attribute to set a specific number of columns. When set to `0` (default), columns auto-fit based on available width.
86
+ Use `columns` to set a specific number of columns. Default `0` auto-fits based on width.
110
87
 
111
88
  ```html
112
89
  <snice-stat-group columns="2"></snice-stat-group>
@@ -115,44 +92,33 @@ Use the `columns` attribute to set a specific number of columns. When set to `0`
115
92
 
116
93
  ### Trend Indicators
117
94
 
118
- Each stat can display a trend direction and value showing comparison data.
95
+ Each stat can display a trend direction with comparison text.
119
96
 
120
- ```html
121
- <script>
122
- el.stats = [
123
- { label: 'Revenue', value: '$45K', trend: 'up', trendValue: '+12.5% vs last month' },
124
- { label: 'Churn', value: '2.3%', trend: 'down', trendValue: '-0.5%' },
125
- { label: 'Conversion', value: '3.2%', trend: 'neutral', trendValue: '0.0%' }
126
- ];
127
- </script>
97
+ ```typescript
98
+ el.stats = [
99
+ { label: 'Revenue', value: '$45K', trend: 'up', trendValue: '+12.5% vs last month' },
100
+ { label: 'Churn', value: '2.3%', trend: 'down', trendValue: '-0.5%' },
101
+ { label: 'Conversion', value: '3.2%', trend: 'neutral', trendValue: '0.0%' }
102
+ ];
128
103
  ```
129
104
 
130
105
  ### With Icons and Colors
131
106
 
132
107
  Customize each stat with an icon and accent color.
133
108
 
134
- ```html
135
- <script>
136
- el.stats = [
137
- { label: 'Revenue', value: '$45,231', icon: '$', color: 'rgb(22 163 74)', trend: 'up', trendValue: '+12.5%' },
138
- { label: 'Orders', value: '1,245', icon: '\u{1F4E6}', trend: 'down', trendValue: '-3.1%' }
139
- ];
140
- </script>
109
+ ```typescript
110
+ el.stats = [
111
+ { label: 'Revenue', value: '$45,231', icon: '$', color: 'rgb(22 163 74)', trend: 'up', trendValue: '+12.5%' },
112
+ { label: 'Orders', value: '1,245', icon: '\u{1F4E6}', trend: 'down', trendValue: '-3.1%' }
113
+ ];
141
114
  ```
142
115
 
143
- ### Handling Clicks
144
-
145
- Listen for the `stat-click` event to respond when a user clicks a stat card.
146
-
147
- ```html
148
- <snice-stat-group id="clickable-stats"></snice-stat-group>
116
+ ### Event Handling
149
117
 
150
- <script>
151
- document.getElementById('clickable-stats').addEventListener('stat-click', e => {
152
- console.log('Clicked stat:', e.detail.stat.label);
153
- console.log('Index:', e.detail.index);
154
- });
155
- </script>
118
+ ```typescript
119
+ el.addEventListener('stat-click', (e) => {
120
+ console.log('Clicked:', e.detail.stat.label, 'at index', e.detail.index);
121
+ });
156
122
  ```
157
123
 
158
124
  ## Accessibility