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,20 +1,19 @@
1
- <!-- AI: For a low-token version of this doc, use docs/ai/components/button.md instead -->
1
+ <!-- AI: For the AI-optimized version of this doc, see docs/ai/components/button.md -->
2
2
 
3
3
  # Button Component
4
+ `<snice-button>`
4
5
 
5
- The button component provides an interactive element for user actions. It supports multiple variants, sizes, states (loading, disabled), styles (outline, pill, circle), and icons. When `href` is set, clicking navigates via `window.location` (not rendered as an anchor).
6
+ The button component provides an interactive element for user actions. It supports multiple variants, sizes, states (loading, disabled), styles (outline, pill, circle), and icons. When `href` is set, clicking navigates via `window.location` (not rendered as an anchor). Form-associated for `submit`/`reset` support.
6
7
 
7
8
  ## Table of Contents
8
9
  - [Properties](#properties)
9
10
  - [Methods](#methods)
10
11
  - [Events](#events)
11
12
  - [Slots](#slots)
13
+ - [CSS Parts](#css-parts)
12
14
  - [Basic Usage](#basic-usage)
13
15
  - [Examples](#examples)
14
16
  - [Accessibility](#accessibility)
15
- - [Browser Support](#browser-support)
16
- - [Common Patterns](#common-patterns)
17
- - [Variant Colors](#variant-colors)
18
17
 
19
18
  ## Properties
20
19
 
@@ -28,121 +27,54 @@ The button component provides an interactive element for user actions. It suppor
28
27
  | `outline` | `boolean` | `false` | Use outline style |
29
28
  | `pill` | `boolean` | `false` | Use pill (fully rounded) shape |
30
29
  | `circle` | `boolean` | `false` | Use circle shape (icon only) |
31
- | `href` | `string` | `''` | URL to navigate to (uses window.location, not an anchor tag) |
32
- | `target` | `string` | `''` | Link target attribute |
30
+ | `href` | `string` | `''` | URL to navigate to on click |
31
+ | `target` | `string` | `''` | Link target (e.g. `_blank`) |
33
32
  | `download` | `string` | `''` | Download attribute for file downloads |
34
- | `icon` | `string` | `''` | Icon (URL, image file, emoji). Use slot for icon fonts. |
35
- | `iconPlacement` | `'start' \| 'end'` | `'start'` | Icon position relative to label |
33
+ | `icon` | `string` | `''` | Icon (emoji, URL, image file). Use the `icon` slot for icon fonts. |
34
+ | `iconPlacement` (attr: `icon-placement`) | `'start' \| 'end'` | `'start'` | Icon position relative to label |
36
35
 
37
36
  ## Methods
38
37
 
39
- #### `focus(options?: FocusOptions): void`
40
- Focus the button programmatically.
41
-
42
- ```typescript
43
- button.focus();
44
- button.focus({ preventScroll: true });
45
- ```
46
-
47
- #### `blur(): void`
48
- Remove focus from the button.
49
-
50
- ```typescript
51
- button.blur();
52
- ```
53
-
54
- #### `click(): void`
55
- Programmatically click the button.
56
-
57
- ```typescript
58
- button.click();
59
- ```
60
-
61
- #### `setLoading(loading: boolean): void`
62
- Set the loading state programmatically.
63
-
64
- ```typescript
65
- button.setLoading(true);
66
- ```
67
-
68
- #### `setDisabled(disabled: boolean): void`
69
- Set the disabled state programmatically.
70
-
71
- ```typescript
72
- button.setDisabled(true);
73
- ```
74
-
75
- #### `setVariant(variant: ButtonVariant): void`
76
- Set the variant programmatically.
77
-
78
- ```typescript
79
- button.setVariant('success');
80
- ```
38
+ | Method | Arguments | Description |
39
+ |--------|-----------|-------------|
40
+ | `focus()` | `options?: FocusOptions` | Focus the button |
41
+ | `blur()` | -- | Remove focus |
42
+ | `click()` | -- | Programmatic click |
43
+ | `setLoading()` | `loading: boolean` | Set loading state |
44
+ | `setDisabled()` | `disabled: boolean` | Set disabled state |
45
+ | `setVariant()` | `variant: ButtonVariant` | Set variant |
81
46
 
82
47
  ## Events
83
48
 
84
- #### `button-click`
85
- Fired when the button is clicked.
86
-
87
- **Event Detail:**
88
- ```typescript
89
- {
90
- originalEvent: MouseEvent;
91
- }
92
- ```
49
+ | Event | Detail | Description |
50
+ |-------|--------|-------------|
51
+ | `button-click` | `{ originalEvent: MouseEvent }` | Fired when the button is clicked |
93
52
 
94
53
  ## Slots
95
54
 
96
- | Slot Name | Description |
97
- |-----------|-------------|
98
- | `icon` | Custom icon content. Overrides the `icon` property when present. Useful for external CSS icon fonts like Material Symbols or Font Awesome that require specific styling to work inside shadow DOM. |
55
+ | Name | Description |
56
+ |------|-------------|
99
57
  | (default) | Button label content |
58
+ | `icon` | Custom icon content. Overrides the `icon` property. Use for icon fonts (Material Symbols, Font Awesome, etc.). |
100
59
 
101
60
  ### Icon Slot Usage
102
61
 
103
- Use the `icon` slot for icon fonts (Material Symbols, Font Awesome, etc.) or inline SVGs. The slot gives you full control over the icon element and its styling.
62
+ Use the `icon` slot for icon fonts or inline SVGs:
104
63
 
105
- #### Material Symbols
106
64
  ```html
107
- <!-- Load the font in your document head -->
108
- <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet" />
109
-
65
+ <!-- Material Symbols -->
110
66
  <snice-button variant="primary">
111
67
  <span slot="icon" class="material-symbols-outlined">save</span>
112
68
  Save
113
69
  </snice-button>
114
70
 
115
- <!-- With fill/weight variations -->
116
- <snice-button>
117
- <span slot="icon" class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1">favorite</span>
118
- Liked
119
- </snice-button>
120
-
121
- <!-- Rounded variant -->
122
- <snice-button>
123
- <span slot="icon" class="material-symbols-rounded">home</span>
124
- Home
125
- </snice-button>
126
- ```
127
-
128
- #### Font Awesome
129
- ```html
130
- <!-- Load Font Awesome in your document head -->
131
- <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet" />
132
-
71
+ <!-- Font Awesome -->
133
72
  <snice-button variant="danger">
134
73
  <i slot="icon" class="fa-solid fa-trash"></i>
135
74
  Delete
136
75
  </snice-button>
137
76
 
138
- <snice-button>
139
- <i slot="icon" class="fa-regular fa-heart"></i>
140
- Like
141
- </snice-button>
142
- ```
143
-
144
- #### Inline SVG
145
- ```html
77
+ <!-- Inline SVG -->
146
78
  <snice-button>
147
79
  <svg slot="icon" viewBox="0 0 24 24" width="20" height="20">
148
80
  <path d="M12 2L2 7l10 5 10-5-10-5z" fill="currentColor"/>
@@ -151,8 +83,8 @@ Use the `icon` slot for icon fonts (Material Symbols, Font Awesome, etc.) or inl
151
83
  </snice-button>
152
84
  ```
153
85
 
154
- #### Placement
155
86
  The `icon-placement` property works with both the slot and the `icon` property:
87
+
156
88
  ```html
157
89
  <snice-button icon-placement="end">
158
90
  <span slot="icon" class="material-symbols-outlined">arrow_forward</span>
@@ -162,6 +94,8 @@ The `icon-placement` property works with both the slot and the `icon` property:
162
94
 
163
95
  > **Note**: The `icon` slot takes precedence over the `icon` property when both are present.
164
96
 
97
+ > **Note**: `icon="home"` renders as plain text, not a Material icon. Use the `icon` slot for icon fonts.
98
+
165
99
  ## CSS Parts
166
100
 
167
101
  | Part | Description |
@@ -173,39 +107,32 @@ The `icon-placement` property works with both the slot and the `icon` property:
173
107
 
174
108
  ## Basic Usage
175
109
 
176
- ```html
177
- <snice-button>Click me</snice-button>
178
- ```
179
-
180
110
  ```typescript
181
111
  import 'snice/components/button/snice-button';
182
112
  ```
183
113
 
114
+ ```html
115
+ <snice-button>Click me</snice-button>
116
+ ```
117
+
184
118
  ## Examples
185
119
 
186
- ### Basic Buttons
120
+ ### Variants
121
+
122
+ Use the `variant` attribute to set the button's visual style.
187
123
 
188
124
  ```html
189
- <!-- Default button -->
190
125
  <snice-button>Default</snice-button>
191
-
192
- <!-- Primary button -->
193
126
  <snice-button variant="primary">Primary</snice-button>
194
-
195
- <!-- Success button -->
196
127
  <snice-button variant="success">Success</snice-button>
197
-
198
- <!-- Warning button -->
199
128
  <snice-button variant="warning">Warning</snice-button>
200
-
201
- <!-- Danger button -->
202
129
  <snice-button variant="danger">Danger</snice-button>
203
-
204
- <!-- Text button -->
205
130
  <snice-button variant="text">Text Only</snice-button>
206
131
  ```
207
132
 
208
- ### Button Sizes
133
+ ### Sizes
134
+
135
+ Use the `size` attribute to change the button's size.
209
136
 
210
137
  ```html
211
138
  <snice-button size="small">Small</snice-button>
@@ -215,503 +142,89 @@ import 'snice/components/button/snice-button';
215
142
 
216
143
  ### Outline Buttons
217
144
 
145
+ Use the `outline` attribute for a transparent background with a border.
146
+
218
147
  ```html
219
148
  <snice-button outline>Default Outline</snice-button>
220
149
  <snice-button variant="primary" outline>Primary Outline</snice-button>
221
- <snice-button variant="success" outline>Success Outline</snice-button>
222
- <snice-button variant="warning" outline>Warning Outline</snice-button>
223
150
  <snice-button variant="danger" outline>Danger Outline</snice-button>
224
151
  ```
225
152
 
226
153
  ### Pill Buttons
227
154
 
155
+ Use the `pill` attribute for fully rounded corners.
156
+
228
157
  ```html
229
158
  <snice-button pill>Default Pill</snice-button>
230
159
  <snice-button variant="primary" pill>Primary Pill</snice-button>
231
- <snice-button variant="success" pill>Success Pill</snice-button>
232
160
  ```
233
161
 
234
162
  ### Circle Buttons
235
163
 
164
+ Use `circle` for icon-only circular buttons.
165
+
236
166
  ```html
237
167
  <snice-button circle icon="/icons/plus.svg"></snice-button>
238
168
  <snice-button variant="primary" circle icon="/icons/edit.svg"></snice-button>
239
- <snice-button variant="danger" circle icon="/icons/delete.svg"></snice-button>
240
169
  ```
241
170
 
242
- ### Button States
171
+ ### States
243
172
 
244
173
  ```html
245
- <!-- Disabled -->
246
174
  <snice-button disabled>Disabled</snice-button>
247
175
  <snice-button variant="primary" disabled>Primary Disabled</snice-button>
248
-
249
- <!-- Loading -->
250
176
  <snice-button loading>Loading...</snice-button>
251
177
  <snice-button variant="primary" loading>Saving...</snice-button>
252
-
253
- <!-- Disabled and loading cannot be clicked -->
254
- <snice-button disabled loading>Processing...</snice-button>
255
178
  ```
256
179
 
257
180
  ### Buttons with Icons
258
181
 
259
- For icon fonts (Material Symbols, Font Awesome, etc.), use the `icon` slot — see [Icon Slot Usage](#icon-slot-usage) above.
260
-
261
- The `icon` **property** is for simple cases: emoji, image URLs, and image files.
262
-
263
- > **⚠️ `icon="home"` renders as plain text, not a Material icon.** Use the `icon` slot for icon fonts.
182
+ The `icon` **property** is for emoji, image URLs, and image files:
264
183
 
265
184
  ```html
266
- <!-- Emoji -->
267
- <snice-button icon="">Next</snice-button>
268
- <snice-button icon="🏠">Home</snice-button>
269
- <snice-button icon="💾" variant="primary">Save</snice-button>
270
-
271
- <!-- Image URL -->
272
- <snice-button icon="/icons/arrow-right.svg">Next</snice-button>
273
- <snice-button icon="https://example.com/icon.png">External</snice-button>
274
-
275
- <!-- Image file (auto-detected by extension) -->
276
- <snice-button icon="logo.svg">Brand</snice-button>
277
-
278
- <!-- Icon placement -->
279
- <snice-button icon="→" icon-placement="end">Next</snice-button>
280
-
281
- <!-- Icon-only circle button -->
282
- <snice-button circle icon="⚙️"></snice-button>
283
- <snice-button circle icon="×"></snice-button>
284
-
285
- <!-- Scheme overrides (force rendering mode) -->
286
- <snice-button icon="img://filename">Force as image</snice-button>
287
- <snice-button icon="text://content">Force as text</snice-button>
185
+ <snice-button icon="->">Next</snice-button>
186
+ <snice-button icon="/icons/save.svg" variant="primary">Save</snice-button>
187
+ <snice-button icon="->" icon-placement="end">Next</snice-button>
288
188
  ```
289
189
 
290
190
  ### Link Buttons
291
191
 
292
- ```html
293
- <!-- Basic link -->
294
- <snice-button href="/page">Go to Page</snice-button>
295
-
296
- <!-- External link -->
297
- <snice-button href="https://example.com" target="_blank">
298
- Visit Site
299
- </snice-button>
300
-
301
- <!-- Download link -->
302
- <snice-button href="/files/document.pdf" download="document.pdf">
303
- Download PDF
304
- </snice-button>
305
-
306
- <!-- Link with icon -->
307
- <snice-button
308
- href="/docs"
309
- icon="/icons/book.svg"
310
- variant="primary">
311
- View Docs
312
- </snice-button>
313
- ```
314
-
315
- ### Button Groups
192
+ Use `href` to navigate on click.
316
193
 
317
194
  ```html
318
- <style>
319
- .button-group {
320
- display: inline-flex;
321
- gap: 0.5rem;
322
- }
323
-
324
- .button-group--attached {
325
- display: inline-flex;
326
- gap: 0;
327
- }
328
-
329
- .button-group--attached snice-button:not(:first-child):not(:last-child) {
330
- border-radius: 0;
331
- }
332
-
333
- .button-group--attached snice-button:first-child {
334
- border-top-right-radius: 0;
335
- border-bottom-right-radius: 0;
336
- }
337
-
338
- .button-group--attached snice-button:last-child {
339
- border-top-left-radius: 0;
340
- border-bottom-left-radius: 0;
341
- }
342
- </style>
343
-
344
- <!-- Spaced group -->
345
- <div class="button-group">
346
- <snice-button>Cancel</snice-button>
347
- <snice-button variant="primary">Save</snice-button>
348
- </div>
349
-
350
- <!-- Attached group -->
351
- <div class="button-group--attached">
352
- <snice-button outline>Left</snice-button>
353
- <snice-button outline>Center</snice-button>
354
- <snice-button outline>Right</snice-button>
355
- </div>
195
+ <snice-button href="/page">Go to Page</snice-button>
196
+ <snice-button href="https://example.com" target="_blank">Visit Site</snice-button>
197
+ <snice-button href="/files/document.pdf" download="document.pdf">Download PDF</snice-button>
356
198
  ```
357
199
 
358
200
  ### Form Buttons
359
201
 
360
202
  ```html
361
203
  <form id="user-form">
362
- <label>
363
- Name:
364
- <input type="text" name="name" required>
365
- </label>
366
-
367
- <label>
368
- Email:
369
- <input type="email" name="email" required>
370
- </label>
371
-
372
- <div class="button-group">
373
- <snice-button type="reset">Reset</snice-button>
374
- <snice-button variant="primary" type="submit">Submit</snice-button>
375
- </div>
204
+ <input type="text" name="name" required>
205
+ <snice-button type="reset">Reset</snice-button>
206
+ <snice-button variant="primary" type="submit">Submit</snice-button>
376
207
  </form>
377
-
378
- <script type="module">
379
- import 'snice/components/button/snice-button';
380
-
381
- const form = document.getElementById('user-form');
382
- const submitButton = form.querySelector('snice-button[type="submit"]');
383
-
384
- form.addEventListener('submit', async (e) => {
385
- e.preventDefault();
386
-
387
- // Show loading state
388
- submitButton.loading = true;
389
- submitButton.textContent = 'Submitting...';
390
-
391
- try {
392
- const formData = new FormData(form);
393
- const response = await fetch('/api/users', {
394
- method: 'POST',
395
- body: formData
396
- });
397
-
398
- if (!response.ok) throw new Error('Submission failed');
399
-
400
- alert('Form submitted successfully!');
401
- } catch (error) {
402
- alert('Error: ' + error.message);
403
- } finally {
404
- // Reset loading state
405
- submitButton.loading = false;
406
- submitButton.textContent = 'Submit';
407
- }
408
- });
409
- </script>
410
208
  ```
411
209
 
412
210
  ### Async Action Handling
413
211
 
414
- ```html
415
- <snice-button
416
- id="save-btn"
417
- variant="primary"
418
- icon="/icons/save.svg">
419
- Save Changes
420
- </snice-button>
421
-
422
- <script type="module">
423
- import type { SniceButtonElement } from 'snice/components/button/snice-button.types';
424
-
425
- const button = document.getElementById('save-btn') as SniceButtonElement;
426
-
427
- button.addEventListener('click', async () => {
428
- // Show loading state
429
- button.loading = true;
430
- const originalText = button.textContent;
431
- button.textContent = 'Saving...';
432
-
433
- try {
434
- // Simulate API call
435
- await new Promise(resolve => setTimeout(resolve, 2000));
436
-
437
- // Success feedback
438
- button.variant = 'success';
439
- button.textContent = 'Saved!';
440
-
441
- setTimeout(() => {
442
- button.variant = 'primary';
443
- button.textContent = originalText;
444
- button.loading = false;
445
- }, 1500);
446
-
447
- } catch (error) {
448
- // Error feedback
449
- button.variant = 'danger';
450
- button.textContent = 'Save Failed';
451
- button.loading = false;
452
-
453
- setTimeout(() => {
454
- button.variant = 'primary';
455
- button.textContent = originalText;
456
- }, 2000);
457
- }
458
- });
459
- </script>
460
- ```
461
-
462
- ### Confirmation Dialog
463
-
464
- ```html
465
- <snice-button
466
- id="delete-btn"
467
- variant="danger"
468
- outline
469
- icon="/icons/trash.svg">
470
- Delete Account
471
- </snice-button>
472
-
473
- <script type="module">
474
- import type { SniceButtonElement } from 'snice/components/button/snice-button.types';
475
-
476
- const button = document.getElementById('delete-btn') as SniceButtonElement;
477
-
478
- button.addEventListener('click', async () => {
479
- const confirmed = confirm('Are you sure you want to delete your account? This action cannot be undone.');
480
-
481
- if (!confirmed) return;
482
-
483
- button.loading = true;
484
- button.disabled = true;
485
-
486
- try {
487
- await fetch('/api/account', { method: 'DELETE' });
488
- alert('Account deleted successfully');
489
- window.location.href = '/goodbye';
490
- } catch (error) {
491
- alert('Failed to delete account');
492
- button.loading = false;
493
- button.disabled = false;
494
- }
495
- });
496
- </script>
497
- ```
498
-
499
- ### Icon Buttons with Tooltips
500
-
501
- ```html
502
- <style>
503
- .icon-button-group {
504
- display: inline-flex;
505
- gap: 0.5rem;
506
- }
507
- </style>
508
-
509
- <div class="icon-button-group">
510
- <snice-button
511
- circle
512
- icon="/icons/bold.svg"
513
- variant="default"
514
- outline
515
- title="Bold">
516
- </snice-button>
517
-
518
- <snice-button
519
- circle
520
- icon="/icons/italic.svg"
521
- variant="default"
522
- outline
523
- title="Italic">
524
- </snice-button>
525
-
526
- <snice-button
527
- circle
528
- icon="/icons/underline.svg"
529
- variant="default"
530
- outline
531
- title="Underline">
532
- </snice-button>
533
- </div>
534
- ```
535
-
536
- ### Call-to-Action Buttons
537
-
538
- ```html
539
- <style>
540
- .cta-section {
541
- text-align: center;
542
- padding: 3rem;
543
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
544
- color: white;
545
- border-radius: 0.5rem;
546
- }
547
-
548
- .cta-buttons {
549
- display: flex;
550
- gap: 1rem;
551
- justify-content: center;
552
- margin-top: 2rem;
553
- }
554
- </style>
555
-
556
- <div class="cta-section">
557
- <h2>Ready to get started?</h2>
558
- <p>Join thousands of users already using our platform.</p>
559
-
560
- <div class="cta-buttons">
561
- <snice-button size="large" variant="default">
562
- Learn More
563
- </snice-button>
564
- <snice-button size="large" variant="primary">
565
- Get Started Free
566
- </snice-button>
567
- </div>
568
- </div>
569
- ```
570
-
571
- ### Toolbar Buttons
572
-
573
- ```html
574
- <style>
575
- .toolbar {
576
- display: flex;
577
- gap: 0.25rem;
578
- padding: 0.5rem;
579
- background: #f3f4f6;
580
- border-radius: 0.375rem;
581
- width: fit-content;
582
- }
583
- </style>
584
-
585
- <div class="toolbar">
586
- <snice-button circle icon="/icons/undo.svg" size="small" outline title="Undo"></snice-button>
587
- <snice-button circle icon="/icons/redo.svg" size="small" outline title="Redo"></snice-button>
588
- <div style="width: 1px; background: #d1d5db; margin: 0 0.25rem;"></div>
589
- <snice-button circle icon="/icons/copy.svg" size="small" outline title="Copy"></snice-button>
590
- <snice-button circle icon="/icons/paste.svg" size="small" outline title="Paste"></snice-button>
591
- <snice-button circle icon="/icons/cut.svg" size="small" outline title="Cut"></snice-button>
592
- <div style="width: 1px; background: #d1d5db; margin: 0 0.25rem;"></div>
593
- <snice-button circle icon="/icons/align-left.svg" size="small" outline title="Align Left"></snice-button>
594
- <snice-button circle icon="/icons/align-center.svg" size="small" outline title="Align Center"></snice-button>
595
- <snice-button circle icon="/icons/align-right.svg" size="small" outline title="Align Right"></snice-button>
596
- </div>
597
- ```
598
-
599
- ### Social Login Buttons
600
-
601
- ```html
602
- <style>
603
- .social-buttons {
604
- display: flex;
605
- flex-direction: column;
606
- gap: 0.75rem;
607
- max-width: 20rem;
608
- }
609
- </style>
610
-
611
- <div class="social-buttons">
612
- <snice-button
613
- variant="default"
614
- icon="/icons/google.svg"
615
- style="width: 100%;">
616
- Continue with Google
617
- </snice-button>
618
-
619
- <snice-button
620
- variant="default"
621
- icon="/icons/github.svg"
622
- style="width: 100%;">
623
- Continue with GitHub
624
- </snice-button>
625
-
626
- <snice-button
627
- variant="default"
628
- icon="/icons/twitter.svg"
629
- style="width: 100%;">
630
- Continue with Twitter
631
- </snice-button>
632
- </div>
633
- ```
634
-
635
- ### Pagination Buttons
636
-
637
- ```html
638
- <style>
639
- .pagination {
640
- display: flex;
641
- gap: 0.25rem;
642
- align-items: center;
212
+ ```typescript
213
+ const button = document.querySelector('snice-button');
214
+
215
+ button.addEventListener('click', async () => {
216
+ button.loading = true;
217
+ try {
218
+ await saveData();
219
+ button.variant = 'success';
220
+ button.textContent = 'Saved!';
221
+ } catch (error) {
222
+ button.variant = 'danger';
223
+ button.textContent = 'Failed';
224
+ } finally {
225
+ button.loading = false;
643
226
  }
644
- </style>
645
-
646
- <div class="pagination">
647
- <snice-button icon="/icons/chevron-left.svg" outline disabled>Previous</snice-button>
648
-
649
- <snice-button outline>1</snice-button>
650
- <snice-button variant="primary">2</snice-button>
651
- <snice-button outline>3</snice-button>
652
- <snice-button outline>4</snice-button>
653
- <snice-button outline>5</snice-button>
654
-
655
- <snice-button icon="/icons/chevron-right.svg" icon-placement="end" outline>Next</snice-button>
656
- </div>
657
- ```
658
-
659
- ### Upload Button
660
-
661
- ```html
662
- <input type="file" id="file-input" style="display: none;" accept="image/*">
663
-
664
- <snice-button
665
- id="upload-btn"
666
- variant="primary"
667
- icon="/icons/upload.svg">
668
- Upload Image
669
- </snice-button>
670
-
671
- <script type="module">
672
- import type { SniceButtonElement } from 'snice/components/button/snice-button.types';
673
-
674
- const button = document.getElementById('upload-btn') as SniceButtonElement;
675
- const input = document.getElementById('file-input');
676
-
677
- button.addEventListener('click', () => {
678
- input.click();
679
- });
680
-
681
- input.addEventListener('change', async (e) => {
682
- const file = e.target.files[0];
683
- if (!file) return;
684
-
685
- button.loading = true;
686
- button.textContent = 'Uploading...';
687
-
688
- try {
689
- const formData = new FormData();
690
- formData.append('file', file);
691
-
692
- const response = await fetch('/api/upload', {
693
- method: 'POST',
694
- body: formData
695
- });
696
-
697
- if (!response.ok) throw new Error('Upload failed');
698
-
699
- button.variant = 'success';
700
- button.textContent = 'Uploaded!';
701
-
702
- setTimeout(() => {
703
- button.variant = 'primary';
704
- button.textContent = 'Upload Image';
705
- button.loading = false;
706
- }, 2000);
707
-
708
- } catch (error) {
709
- alert('Upload failed: ' + error.message);
710
- button.textContent = 'Upload Image';
711
- button.loading = false;
712
- }
713
- });
714
- </script>
227
+ });
715
228
  ```
716
229
 
717
230
  ## Accessibility
@@ -720,47 +233,3 @@ The `icon` **property** is for simple cases: emoji, image URLs, and image files.
720
233
  - **Focus indicators**: Clear focus states for keyboard navigation
721
234
  - **ARIA attributes**: Proper roles and states for screen readers
722
235
  - **Disabled state**: Properly disabled buttons cannot be focused or activated
723
- - **Link semantics**: When using href, renders as accessible link
724
-
725
- ## Browser Support
726
-
727
- - Modern browsers (Chrome, Firefox, Safari, Edge)
728
- - Requires Custom Elements v1 and Shadow DOM support
729
-
730
- ## Common Patterns
731
-
732
- ### Primary Action
733
- ```html
734
- <snice-button variant="primary">Save Changes</snice-button>
735
- ```
736
-
737
- ### Secondary Action
738
- ```html
739
- <snice-button variant="default">Cancel</snice-button>
740
- ```
741
-
742
- ### Destructive Action
743
- ```html
744
- <snice-button variant="danger" outline>Delete</snice-button>
745
- ```
746
-
747
- ### Icon-Only Action
748
- ```html
749
- <snice-button circle icon="/icons/edit.svg"></snice-button>
750
- ```
751
-
752
- ### Form Submit
753
- ```html
754
- <snice-button variant="primary" type="submit">Submit</snice-button>
755
- ```
756
-
757
- ## Variant Colors
758
-
759
- | Variant | Color Scheme | Use Case |
760
- |---------|-------------|----------|
761
- | `default` | Gray | Secondary actions, cancel |
762
- | `primary` | Blue | Primary actions, submit |
763
- | `success` | Green | Confirmations, positive actions |
764
- | `warning` | Orange | Caution actions, important notices |
765
- | `danger` | Red | Destructive actions, delete |
766
- | `text` | Transparent | Tertiary actions, links |