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.
- package/README.md +3 -10
- package/adapters/react/SniceProvider.d.ts +71 -0
- package/adapters/react/SniceProvider.js +49 -0
- package/adapters/react/SniceProvider.js.map +1 -0
- package/adapters/react/SniceRouter.d.ts +44 -0
- package/adapters/react/SniceRouter.js +190 -0
- package/adapters/react/SniceRouter.js.map +1 -0
- package/adapters/react/action-bar.d.ts +30 -0
- package/adapters/react/action-bar.d.ts.map +1 -0
- package/adapters/react/action-bar.js +24 -0
- package/adapters/react/action-bar.js.map +1 -0
- package/adapters/react/action-bar.tsx +38 -0
- package/adapters/react/binpack.d.ts +35 -0
- package/adapters/react/binpack.d.ts.map +1 -0
- package/adapters/react/binpack.js +24 -0
- package/adapters/react/binpack.js.map +1 -0
- package/adapters/react/binpack.tsx +43 -0
- package/adapters/react/components.d.ts +6 -0
- package/adapters/react/components.d.ts.map +1 -1
- package/adapters/react/components.js +3 -0
- package/adapters/react/components.js.map +1 -1
- package/adapters/react/components.ts +6 -0
- package/adapters/react/grid.d.ts +36 -0
- package/adapters/react/grid.d.ts.map +1 -0
- package/adapters/react/grid.js +24 -0
- package/adapters/react/grid.js.map +1 -0
- package/adapters/react/grid.tsx +44 -0
- package/adapters/react/index.d.ts +5 -0
- package/adapters/react/index.d.ts.map +1 -1
- package/adapters/react/index.js +3 -2
- package/adapters/react/index.js.map +1 -1
- package/adapters/react/index.ts +6 -3
- package/adapters/react/matchRoute.d.ts +16 -0
- package/adapters/react/matchRoute.js +32 -0
- package/adapters/react/matchRoute.js.map +1 -0
- package/adapters/react/types.d.ts +1 -15
- package/adapters/react/types.d.ts.map +1 -1
- package/adapters/react/types.ts +1 -15
- package/adapters/react/useRequestHandler.d.ts +56 -0
- package/adapters/react/useRequestHandler.js +103 -0
- package/adapters/react/useRequestHandler.js.map +1 -0
- package/bin/snice.js +8 -13
- package/bin/templates/{pwa → default}/index.html +1 -1
- package/bin/templates/{pwa → default}/src/components/app-header.ts +36 -18
- package/bin/templates/{pwa → default}/src/components/notification-badge.ts +2 -21
- package/bin/templates/{pwa → default}/src/components/search-bar.ts +12 -12
- package/bin/templates/default/src/context.ts +17 -0
- package/bin/templates/{pwa → default}/src/controllers/notification-controller.ts +10 -15
- package/bin/templates/{pwa → default}/src/daemons/notifications.ts +0 -12
- package/bin/templates/{pwa → default}/src/main.ts +1 -7
- package/bin/templates/{pwa → default}/src/middleware/error.ts +1 -8
- package/bin/templates/{pwa → default}/src/pages/dashboard.ts +17 -18
- package/bin/templates/{pwa → default}/src/pages/data.ts +24 -24
- package/bin/templates/{pwa → default}/src/pages/login.ts +3 -6
- package/bin/templates/{pwa → default}/src/pages/notifications.ts +21 -19
- package/bin/templates/{pwa → default}/src/pages/profile.ts +10 -12
- package/bin/templates/{pwa → default}/src/pages/settings.ts +22 -22
- package/bin/templates/default/src/router.ts +13 -0
- package/bin/templates/default/src/styles/global.css +16 -0
- package/bin/templates/{pwa → default}/tsconfig.json +2 -1
- package/bin/templates/react/README.md +124 -0
- package/bin/templates/react/global.d.ts +10 -0
- package/bin/templates/react/index.html +15 -0
- package/bin/templates/react/package.json +31 -0
- package/bin/templates/react/src/App.tsx +112 -0
- package/bin/templates/react/src/components/AppHeader.tsx +85 -0
- package/bin/templates/react/src/components/AppLayout.tsx +11 -0
- package/bin/templates/react/src/components/NotificationBadge.tsx +13 -0
- package/bin/templates/react/src/components/SearchBar.tsx +63 -0
- package/bin/templates/react/src/daemons/notifications.ts +136 -0
- package/bin/templates/react/src/fetcher.ts +15 -0
- package/bin/templates/react/src/guards/auth.ts +6 -0
- package/bin/templates/react/src/main.tsx +27 -0
- package/bin/templates/react/src/middleware/auth.ts +16 -0
- package/bin/templates/react/src/middleware/error.ts +29 -0
- package/bin/templates/react/src/middleware/retry.ts +31 -0
- package/bin/templates/react/src/pages/DashboardPage.tsx +111 -0
- package/bin/templates/react/src/pages/DataPage.tsx +119 -0
- package/bin/templates/react/src/pages/LoginPage.tsx +46 -0
- package/bin/templates/react/src/pages/NotificationsPage.tsx +119 -0
- package/bin/templates/react/src/pages/ProfilePage.tsx +92 -0
- package/bin/templates/react/src/pages/SettingsPage.tsx +165 -0
- package/bin/templates/react/src/services/auth.ts +48 -0
- package/bin/templates/react/src/services/jwt.ts +35 -0
- package/bin/templates/react/src/services/storage.ts +24 -0
- package/bin/templates/react/src/styles/global.css +382 -0
- package/bin/templates/react/src/types/auth.ts +21 -0
- package/bin/templates/react/src/types/notifications.ts +9 -0
- package/bin/templates/react/tests/helpers/test-utils.ts +79 -0
- package/bin/templates/react/tests/middleware/auth.test.ts +67 -0
- package/bin/templates/react/tests/middleware/error.test.ts +105 -0
- package/bin/templates/react/tests/middleware/retry.test.ts +103 -0
- package/bin/templates/react/tests/services/auth.test.ts +89 -0
- package/bin/templates/react/tests/services/jwt.test.ts +76 -0
- package/bin/templates/react/tests/services/storage.test.ts +69 -0
- package/bin/templates/{base → react}/tsconfig.json +4 -6
- package/bin/templates/react/vite.config.ts +18 -0
- package/bin/templates/react/vitest.config.ts +18 -0
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/accordion/snice-accordion.min.js +1 -1
- package/dist/cdn/action-bar/README.md +27 -0
- package/dist/cdn/action-bar/snice-action-bar.js +249 -0
- package/dist/cdn/action-bar/snice-action-bar.js.map +1 -0
- package/dist/cdn/action-bar/snice-action-bar.min.js +12 -0
- package/dist/cdn/action-bar/snice-action-bar.min.js.map +1 -0
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/alert/snice-alert.min.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/availability/snice-availability.min.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar/snice-avatar.min.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/banner/snice-banner.min.js +1 -1
- package/dist/cdn/binpack/README.md +27 -0
- package/dist/cdn/binpack/snice-binpack.js +1037 -0
- package/dist/cdn/binpack/snice-binpack.js.map +1 -0
- package/dist/cdn/binpack/snice-binpack.min.js +13 -0
- package/dist/cdn/binpack/snice-binpack.min.js.map +1 -0
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/book/snice-book.min.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/booking/snice-booking.min.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
- package/dist/cdn/button/README.md +1 -1
- package/dist/cdn/button/snice-button.js +2 -2
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +2 -2
- package/dist/cdn/button/snice-button.min.js.map +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera/snice-camera.min.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/card/snice-card.min.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/carousel/snice-carousel.min.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/cart/snice-cart.min.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/chat/snice-chat.min.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
- package/dist/cdn/chip/README.md +2 -2
- package/dist/cdn/chip/snice-chip.js +2 -2
- package/dist/cdn/chip/snice-chip.js.map +1 -1
- package/dist/cdn/chip/snice-chip.min.js +3 -3
- package/dist/cdn/chip/snice-chip.min.js.map +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-display/snice-color-display.min.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/comments/snice-comments.min.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/countdown/snice-countdown.min.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/cropper/snice-cropper.min.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js +1 -1
- package/dist/cdn/date-picker/README.md +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +2 -2
- package/dist/cdn/date-picker/snice-date-picker.js.map +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +2 -2
- package/dist/cdn/date-picker/snice-date-picker.min.js.map +1 -1
- package/dist/cdn/date-range-picker/README.md +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +2 -2
- package/dist/cdn/date-range-picker/snice-date-range-picker.js.map +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +11 -11
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js.map +1 -1
- package/dist/cdn/date-time-picker/README.md +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +2 -2
- package/dist/cdn/date-time-picker/snice-date-time-picker.js.map +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +2 -2
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js.map +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/diff/snice-diff.min.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/divider/snice-divider.min.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/doc/snice-doc.min.js +1 -1
- package/dist/cdn/draw/README.md +2 -2
- package/dist/cdn/draw/snice-draw.js +26 -4
- package/dist/cdn/draw/snice-draw.js.map +1 -1
- package/dist/cdn/draw/snice-draw.min.js +3 -3
- package/dist/cdn/draw/snice-draw.min.js.map +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/estimate/snice-estimate.min.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/flow/snice-flow.min.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gantt/snice-gantt.min.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/gauge/snice-gauge.min.js +1 -1
- package/dist/cdn/grid/README.md +27 -0
- package/dist/cdn/grid/snice-grid.js +862 -0
- package/dist/cdn/grid/snice-grid.js.map +1 -0
- package/dist/cdn/grid/snice-grid.min.js +13 -0
- package/dist/cdn/grid/snice-grid.min.js.map +1 -0
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/input/snice-input.min.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/invoice/snice-invoice.min.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/kanban/snice-kanban.min.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/key-value/snice-key-value.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/layout/snice-layout.min.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link/snice-link.min.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/list/snice-list.min.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/location/snice-location.min.js +1 -1
- package/dist/cdn/login/README.md +2 -2
- package/dist/cdn/login/snice-login.js +2 -2
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +2 -2
- package/dist/cdn/login/snice-login.min.js.map +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/map/snice-map.min.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/markdown/snice-markdown.min.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/masonry/snice-masonry.min.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/menu/snice-menu.min.js +1 -1
- package/dist/cdn/message-strip/README.md +2 -2
- package/dist/cdn/message-strip/snice-message-strip.js +2 -2
- package/dist/cdn/message-strip/snice-message-strip.js.map +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +6 -6
- package/dist/cdn/message-strip/snice-message-strip.min.js.map +1 -1
- package/dist/cdn/metric-table/snice-metric-table.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/music-player/snice-music-player.min.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/nav/snice-nav.min.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/pagination/snice-pagination.min.js +1 -1
- package/dist/cdn/paint/README.md +2 -2
- package/dist/cdn/paint/snice-paint.js +26 -3
- package/dist/cdn/paint/snice-paint.js.map +1 -1
- package/dist/cdn/paint/snice-paint.min.js +3 -3
- package/dist/cdn/paint/snice-paint.min.js.map +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
- package/dist/cdn/product-card/README.md +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/product-card/snice-product-card.min.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/radio/snice-radio.min.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/rating/snice-rating.min.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js +1 -1
- package/dist/cdn/runtime/README.md +2 -2
- package/dist/cdn/runtime/snice-runtime.esm.js +109 -16
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +109 -15
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +7 -7
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/select/snice-select.min.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/slider/snice-slider.min.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sortable/snice-sortable.min.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/spinner/snice-spinner.min.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/step-input/snice-step-input.min.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/stepper/snice-stepper.min.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/switch/snice-switch.min.js +1 -1
- package/dist/cdn/table/README.md +1 -1
- package/dist/cdn/table/snice-table.js +2 -2
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +2 -2
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tabs/snice-tabs.min.js +1 -1
- package/dist/cdn/tag/README.md +1 -1
- package/dist/cdn/tag/snice-tag.js +2 -2
- package/dist/cdn/tag/snice-tag.js.map +1 -1
- package/dist/cdn/tag/snice-tag.min.js +3 -3
- package/dist/cdn/tag/snice-tag.min.js.map +1 -1
- package/dist/cdn/tag-input/README.md +2 -2
- package/dist/cdn/tag-input/snice-tag-input.js +2 -2
- package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
- package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/textarea/snice-textarea.min.js +1 -1
- package/dist/cdn/time-picker/README.md +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +2 -2
- package/dist/cdn/time-picker/snice-time-picker.js.map +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +2 -2
- package/dist/cdn/time-picker/snice-time-picker.min.js.map +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/timer/snice-timer.min.js +1 -1
- package/dist/cdn/toast/README.md +1 -1
- package/dist/cdn/toast/snice-toast.js +7 -3
- package/dist/cdn/toast/snice-toast.js.map +1 -1
- package/dist/cdn/toast/snice-toast.min.js +6 -6
- package/dist/cdn/toast/snice-toast.min.js.map +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/tree/snice-tree.min.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/user-card/snice-user-card.min.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/video-player/snice-video-player.min.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
- package/dist/cdn/waterfall/README.md +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/weather/snice-weather.min.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/cdn/work-order/snice-work-order.min.js +1 -1
- package/dist/components/action-bar/snice-action-bar.d.ts +22 -0
- package/dist/components/action-bar/snice-action-bar.js +182 -0
- package/dist/components/action-bar/snice-action-bar.js.map +1 -0
- package/dist/components/action-bar/snice-action-bar.types.d.ts +17 -0
- package/dist/components/binpack/snice-binpack.d.ts +82 -0
- package/dist/components/binpack/snice-binpack.js +970 -0
- package/dist/components/binpack/snice-binpack.js.map +1 -0
- package/dist/components/binpack/snice-binpack.types.d.ts +52 -0
- package/dist/components/button/snice-button.js +1 -1
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/chip/snice-chip.js +1 -1
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.js +1 -1
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/components/date-range-picker/snice-date-range-picker.js.map +1 -1
- package/dist/components/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/components/date-time-picker/snice-date-time-picker.js.map +1 -1
- package/dist/components/draw/snice-draw.d.ts +2 -0
- package/dist/components/draw/snice-draw.js +25 -3
- package/dist/components/draw/snice-draw.js.map +1 -1
- package/dist/components/grid/snice-grid.d.ts +73 -0
- package/dist/components/grid/snice-grid.js +795 -0
- package/dist/components/grid/snice-grid.js.map +1 -0
- package/dist/components/grid/snice-grid.types.d.ts +41 -0
- package/dist/components/message-strip/snice-message-strip.js +1 -1
- package/dist/components/message-strip/snice-message-strip.js.map +1 -1
- package/dist/components/paint/snice-paint.d.ts +2 -0
- package/dist/components/paint/snice-paint.js +25 -2
- package/dist/components/paint/snice-paint.js.map +1 -1
- package/dist/components/tag/snice-tag.js +1 -1
- package/dist/components/tag/snice-tag.js.map +1 -1
- package/dist/components/tag-input/snice-tag-input.js +1 -1
- package/dist/components/tag-input/snice-tag-input.js.map +1 -1
- package/dist/components/theme/theme.css +15 -0
- package/dist/components/time-picker/snice-time-picker.js +1 -1
- package/dist/components/time-picker/snice-time-picker.js.map +1 -1
- package/dist/components/toast/snice-toast-container.js +4 -0
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.js +2 -2
- package/dist/create-request-handler.d.ts +42 -0
- package/dist/index.cjs +106 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +106 -13
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +106 -12
- package/dist/index.iife.js.map +1 -1
- package/dist/react/SniceProvider.d.ts +71 -0
- package/dist/react/SniceProvider.js +49 -0
- package/dist/react/SniceProvider.js.map +1 -0
- package/dist/react/SniceRouter.d.ts +44 -0
- package/dist/react/SniceRouter.js +190 -0
- package/dist/react/SniceRouter.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.js +14 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/matchRoute.d.ts +16 -0
- package/dist/react/matchRoute.js +32 -0
- package/dist/react/matchRoute.js.map +1 -0
- package/dist/react/useRequestHandler.d.ts +56 -0
- package/dist/react/useRequestHandler.js +103 -0
- package/dist/react/useRequestHandler.js.map +1 -0
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/dist/types/guard.d.ts +4 -11
- package/docs/ai/DEVELOPMENT.md +1 -1
- package/docs/ai/README.md +7 -7
- package/docs/ai/components/accordion.md +46 -80
- package/docs/ai/components/action-bar.md +75 -0
- package/docs/ai/components/activity-feed.md +7 -7
- package/docs/ai/components/alert.md +26 -44
- package/docs/ai/components/app-tiles.md +34 -39
- package/docs/ai/components/approval-flow.md +1 -1
- package/docs/ai/components/audio-recorder.md +35 -67
- package/docs/ai/components/availability.md +13 -34
- package/docs/ai/components/avatar-group.md +26 -13
- package/docs/ai/components/avatar.md +52 -36
- package/docs/ai/components/badge.md +21 -32
- package/docs/ai/components/banner.md +21 -43
- package/docs/ai/components/binpack.md +89 -0
- package/docs/ai/components/book.md +25 -23
- package/docs/ai/components/booking.md +31 -36
- package/docs/ai/components/breadcrumbs.md +36 -11
- package/docs/ai/components/button.md +33 -44
- package/docs/ai/components/calendar.md +37 -70
- package/docs/ai/components/camera-annotate.md +31 -64
- package/docs/ai/components/camera.md +38 -120
- package/docs/ai/components/candlestick.md +32 -52
- package/docs/ai/components/card.md +20 -30
- package/docs/ai/components/carousel.md +32 -32
- package/docs/ai/components/cart.md +24 -29
- package/docs/ai/components/chart.md +29 -114
- package/docs/ai/components/chat.md +38 -75
- package/docs/ai/components/checkbox.md +22 -41
- package/docs/ai/components/chip.md +18 -54
- package/docs/ai/components/code-block.md +57 -178
- package/docs/ai/components/color-display.md +12 -32
- package/docs/ai/components/color-picker.md +17 -39
- package/docs/ai/components/command-palette.md +49 -71
- package/docs/ai/components/comments.md +55 -36
- package/docs/ai/components/countdown.md +28 -30
- package/docs/ai/components/cropper.md +33 -33
- package/docs/ai/components/data-card.md +20 -14
- package/docs/ai/components/date-picker.md +40 -47
- package/docs/ai/components/date-range-picker.md +31 -15
- package/docs/ai/components/date-time-picker.md +23 -46
- package/docs/ai/components/diff.md +30 -31
- package/docs/ai/components/divider.md +17 -47
- package/docs/ai/components/doc.md +43 -68
- package/docs/ai/components/draw.md +35 -87
- package/docs/ai/components/drawer.md +48 -77
- package/docs/ai/components/empty-state.md +10 -44
- package/docs/ai/components/estimate.md +33 -58
- package/docs/ai/components/file-gallery.md +48 -100
- package/docs/ai/components/file-upload.md +17 -53
- package/docs/ai/components/flip-card.md +31 -23
- package/docs/ai/components/flow.md +37 -65
- package/docs/ai/components/form-builder.md +35 -75
- package/docs/ai/components/form-layout.md +10 -20
- package/docs/ai/components/funnel.md +33 -48
- package/docs/ai/components/gantt.md +27 -23
- package/docs/ai/components/gauge.md +16 -17
- package/docs/ai/components/grid.md +116 -0
- package/docs/ai/components/heatmap.md +21 -21
- package/docs/ai/components/image.md +7 -13
- package/docs/ai/components/input.md +38 -70
- package/docs/ai/components/invoice.md +35 -36
- package/docs/ai/components/kanban.md +32 -61
- package/docs/ai/components/key-value.md +32 -16
- package/docs/ai/components/kpi.md +38 -73
- package/docs/ai/components/layout.md +29 -23
- package/docs/ai/components/leaderboard.md +28 -37
- package/docs/ai/components/link-preview.md +12 -18
- package/docs/ai/components/link.md +10 -7
- package/docs/ai/components/list.md +21 -5
- package/docs/ai/components/location.md +21 -25
- package/docs/ai/components/login.md +14 -9
- package/docs/ai/components/map.md +27 -33
- package/docs/ai/components/markdown.md +20 -24
- package/docs/ai/components/masonry.md +10 -14
- package/docs/ai/components/mentions.md +26 -12
- package/docs/ai/components/menu.md +54 -52
- package/docs/ai/components/message-strip.md +20 -20
- package/docs/ai/components/metric-table.md +14 -21
- package/docs/ai/components/modal.md +27 -18
- package/docs/ai/components/music-player.md +49 -41
- package/docs/ai/components/nav.md +34 -31
- package/docs/ai/components/network-graph.md +27 -42
- package/docs/ai/components/notification-center.md +31 -33
- package/docs/ai/components/order-tracker.md +36 -27
- package/docs/ai/components/org-chart.md +36 -31
- package/docs/ai/components/pagination.md +34 -26
- package/docs/ai/components/paint.md +53 -91
- package/docs/ai/components/pdf-viewer.md +35 -36
- package/docs/ai/components/permission-matrix.md +26 -31
- package/docs/ai/components/podcast-player.md +64 -70
- package/docs/ai/components/pricing-table.md +37 -48
- package/docs/ai/components/product-card.md +58 -41
- package/docs/ai/components/progress-ring.md +20 -24
- package/docs/ai/components/progress.md +28 -45
- package/docs/ai/components/qr-code.md +25 -27
- package/docs/ai/components/qr-reader.md +20 -23
- package/docs/ai/components/radio.md +17 -15
- package/docs/ai/components/range-slider.md +22 -11
- package/docs/ai/components/rating.md +29 -33
- package/docs/ai/components/receipt.md +50 -127
- package/docs/ai/components/recipe.md +44 -42
- package/docs/ai/components/sankey.md +21 -30
- package/docs/ai/components/scheduler.md +29 -41
- package/docs/ai/components/segmented-control.md +11 -15
- package/docs/ai/components/select.md +58 -102
- package/docs/ai/components/skeleton.md +16 -30
- package/docs/ai/components/slider.md +26 -20
- package/docs/ai/components/sortable.md +25 -27
- package/docs/ai/components/sparkline.md +21 -17
- package/docs/ai/components/spinner.md +9 -5
- package/docs/ai/components/split-button.md +10 -13
- package/docs/ai/components/split-pane.md +19 -14
- package/docs/ai/components/spotlight.md +31 -26
- package/docs/ai/components/spreadsheet.md +51 -97
- package/docs/ai/components/stat-group.md +9 -19
- package/docs/ai/components/step-input.md +17 -15
- package/docs/ai/components/stepper.md +14 -15
- package/docs/ai/components/switch.md +15 -9
- package/docs/ai/components/table.md +24 -84
- package/docs/ai/components/tabs.md +18 -10
- package/docs/ai/components/tag-input.md +18 -29
- package/docs/ai/components/tag.md +10 -22
- package/docs/ai/components/terminal.md +9 -9
- package/docs/ai/components/testimonial.md +9 -19
- package/docs/ai/components/textarea.md +15 -16
- package/docs/ai/components/theme.md +3 -3
- package/docs/ai/components/time-picker.md +30 -49
- package/docs/ai/components/time-range-picker.md +16 -15
- package/docs/ai/components/timeline.md +5 -4
- package/docs/ai/components/timer.md +8 -8
- package/docs/ai/components/toast.md +24 -18
- package/docs/ai/components/tooltip.md +11 -22
- package/docs/ai/components/tree.md +9 -9
- package/docs/ai/components/treemap.md +14 -13
- package/docs/ai/components/user-card.md +21 -27
- package/docs/ai/components/video-player.md +35 -52
- package/docs/ai/components/virtual-scroller.md +1 -1
- package/docs/ai/components/waterfall.md +17 -16
- package/docs/ai/components/weather.md +19 -34
- package/docs/ai/components/work-order.md +58 -134
- package/docs/ai/patterns.md +87 -0
- package/docs/ai/react-integration.md +97 -0
- package/docs/components/accordion.md +72 -151
- package/docs/components/action-bar.md +185 -0
- package/docs/components/activity-feed.md +9 -14
- package/docs/components/alert.md +17 -109
- package/docs/components/app-tiles.md +58 -43
- package/docs/components/approval-flow.md +8 -14
- package/docs/components/audio-recorder.md +45 -51
- package/docs/components/availability.md +30 -45
- package/docs/components/avatar-group.md +34 -14
- package/docs/components/avatar.md +20 -55
- package/docs/components/badge.md +53 -470
- package/docs/components/banner.md +44 -30
- package/docs/components/binpack.md +208 -0
- package/docs/components/book.md +78 -57
- package/docs/components/booking.md +35 -87
- package/docs/components/breadcrumbs.md +74 -448
- package/docs/components/button.md +72 -603
- package/docs/components/calendar.md +77 -261
- package/docs/components/camera-annotate.md +44 -96
- package/docs/components/camera.md +94 -333
- package/docs/components/candlestick.md +79 -116
- package/docs/components/card.md +51 -689
- package/docs/components/carousel.md +29 -76
- package/docs/components/cart.md +44 -136
- package/docs/components/chart.md +95 -438
- package/docs/components/chat.md +175 -439
- package/docs/components/checkbox.md +52 -609
- package/docs/components/chip.md +45 -574
- package/docs/components/code-block.md +157 -421
- package/docs/components/color-display.md +45 -54
- package/docs/components/color-picker.md +103 -36
- package/docs/components/command-palette.md +98 -92
- package/docs/components/comments.md +16 -10
- package/docs/components/countdown.md +15 -20
- package/docs/components/cropper.md +14 -16
- package/docs/components/data-card.md +16 -15
- package/docs/components/date-picker.md +45 -25
- package/docs/components/date-range-picker.md +140 -87
- package/docs/components/date-time-picker.md +25 -28
- package/docs/components/diff.md +22 -17
- package/docs/components/divider.md +18 -20
- package/docs/components/doc.md +105 -197
- package/docs/components/draw.md +117 -223
- package/docs/components/drawer.md +113 -478
- package/docs/components/empty-state.md +13 -29
- package/docs/components/estimate.md +58 -118
- package/docs/components/file-gallery.md +123 -495
- package/docs/components/file-upload.md +36 -123
- package/docs/components/flip-card.md +30 -34
- package/docs/components/flow.md +74 -89
- package/docs/components/form-builder.md +59 -86
- package/docs/components/form-layout.md +21 -31
- package/docs/components/funnel.md +21 -22
- package/docs/components/gantt.md +5 -5
- package/docs/components/gauge.md +5 -23
- package/docs/components/grid.md +249 -0
- package/docs/components/heatmap.md +13 -55
- package/docs/components/image.md +28 -32
- package/docs/components/input.md +25 -14
- package/docs/components/invoice.md +34 -33
- package/docs/components/kanban.md +99 -394
- package/docs/components/key-value.md +22 -12
- package/docs/components/kpi.md +41 -112
- package/docs/components/layout.md +7 -13
- package/docs/components/leaderboard.md +52 -76
- package/docs/components/link-preview.md +20 -16
- package/docs/components/link.md +22 -19
- package/docs/components/list.md +44 -26
- package/docs/components/location.md +9 -13
- package/docs/components/login.md +42 -36
- package/docs/components/map.md +24 -46
- package/docs/components/markdown.md +14 -25
- package/docs/components/masonry.md +15 -13
- package/docs/components/mentions.md +36 -25
- package/docs/components/menu.md +39 -46
- package/docs/components/message-strip.md +15 -51
- package/docs/components/metric-table.md +50 -72
- package/docs/components/modal.md +32 -43
- package/docs/components/music-player.md +41 -49
- package/docs/components/nav.md +23 -13
- package/docs/components/network-graph.md +14 -13
- package/docs/components/notification-center.md +68 -172
- package/docs/components/order-tracker.md +72 -117
- package/docs/components/org-chart.md +58 -207
- package/docs/components/pagination.md +67 -89
- package/docs/components/paint.md +86 -172
- package/docs/components/pdf-viewer.md +46 -151
- package/docs/components/permission-matrix.md +61 -112
- package/docs/components/podcast-player.md +41 -119
- package/docs/components/pricing-table.md +104 -147
- package/docs/components/product-card.md +94 -197
- package/docs/components/progress-ring.md +29 -32
- package/docs/components/progress.md +30 -61
- package/docs/components/qr-code.md +53 -61
- package/docs/components/qr-reader.md +53 -42
- package/docs/components/radio.md +42 -40
- package/docs/components/range-slider.md +41 -30
- package/docs/components/rating.md +50 -84
- package/docs/components/receipt.md +91 -129
- package/docs/components/recipe.md +107 -216
- package/docs/components/sankey.md +47 -83
- package/docs/components/scheduler.md +81 -184
- package/docs/components/segmented-control.md +48 -40
- package/docs/components/select.md +107 -129
- package/docs/components/skeleton.md +33 -47
- package/docs/components/slider.md +49 -53
- package/docs/components/sortable.md +43 -186
- package/docs/components/sparkline.md +26 -25
- package/docs/components/spinner.md +32 -37
- package/docs/components/split-button.md +43 -23
- package/docs/components/split-pane.md +41 -58
- package/docs/components/spotlight.md +53 -145
- package/docs/components/spreadsheet.md +84 -307
- package/docs/components/stat-group.md +27 -61
- package/docs/components/step-input.md +44 -41
- package/docs/components/stepper.md +55 -89
- package/docs/components/switch.md +39 -39
- package/docs/components/table.md +27 -32
- package/docs/components/tabs.md +36 -27
- package/docs/components/tag-input.md +50 -176
- package/docs/components/tag.md +12 -50
- package/docs/components/terminal.md +32 -37
- package/docs/components/testimonial.md +24 -81
- package/docs/components/textarea.md +9 -14
- package/docs/components/theme.md +10 -23
- package/docs/components/time-picker.md +48 -72
- package/docs/components/time-range-picker.md +22 -41
- package/docs/components/timeline.md +7 -14
- package/docs/components/timer.md +16 -32
- package/docs/components/toast.md +19 -45
- package/docs/components/tooltip.md +13 -115
- package/docs/components/tree.md +2 -19
- package/docs/components/treemap.md +19 -43
- package/docs/components/user-card.md +13 -22
- package/docs/components/video-player.md +53 -227
- package/docs/components/virtual-scroller.md +11 -44
- package/docs/components/waterfall.md +58 -137
- package/docs/components/weather.md +94 -153
- package/docs/components/work-order.md +56 -143
- package/docs/plans/2026-03-09-action-bar-design.md +104 -0
- package/docs/plans/2026-03-09-action-bar-plan.md +676 -0
- package/docs/plans/2026-03-10-grid-component-design.md +138 -0
- package/docs/plans/2026-03-10-grid-component-plan.md +716 -0
- package/docs/plans/2026-03-10-react-integration-design.md +166 -0
- package/docs/plans/2026-03-10-react-integration-plan.md +1178 -0
- package/docs/react-integration.md +508 -0
- package/docs/request-response.md +63 -0
- package/package.json +1 -1
- package/bin/templates/base/README.md +0 -33
- package/bin/templates/base/global.d.ts +0 -14
- package/bin/templates/base/index.html +0 -13
- package/bin/templates/base/package.json +0 -21
- package/bin/templates/base/src/components/counter-button.ts +0 -88
- package/bin/templates/base/src/components/counter-button.types.ts +0 -7
- package/bin/templates/base/src/components/feature-card.ts +0 -59
- package/bin/templates/base/src/components/feature-card.types.ts +0 -5
- package/bin/templates/base/src/controllers/counter-controller.ts +0 -24
- package/bin/templates/base/src/main.ts +0 -24
- package/bin/templates/base/src/pages/about-page.ts +0 -68
- package/bin/templates/base/src/pages/home-page.ts +0 -105
- package/bin/templates/base/src/pages/not-found-page.ts +0 -55
- package/bin/templates/base/src/router.ts +0 -9
- package/bin/templates/base/src/styles/global.css +0 -27
- package/bin/templates/base/src/types/api-response.ts +0 -5
- package/bin/templates/base/src/types/status.ts +0 -1
- package/bin/templates/base/src/types/theme.ts +0 -1
- package/bin/templates/base/src/types/user.ts +0 -5
- package/bin/templates/base/vite.config.ts +0 -38
- package/bin/templates/pwa/public/vite.svg +0 -1
- package/bin/templates/pwa/src/router.ts +0 -20
- package/bin/templates/pwa/src/styles/global.css +0 -64
- /package/bin/templates/{pwa → default}/README.md +0 -0
- /package/bin/templates/{pwa → default}/global.d.ts +0 -0
- /package/bin/templates/{pwa → default}/package.json +0 -0
- /package/bin/templates/{pwa → default}/public/icons/.gitkeep +0 -0
- /package/bin/templates/{base → default}/public/vite.svg +0 -0
- /package/bin/templates/{pwa → default}/src/fetcher.ts +0 -0
- /package/bin/templates/{pwa → default}/src/guards/auth.ts +0 -0
- /package/bin/templates/{pwa → default}/src/middleware/auth.ts +0 -0
- /package/bin/templates/{pwa → default}/src/middleware/retry.ts +0 -0
- /package/bin/templates/{pwa → default}/src/services/auth.ts +0 -0
- /package/bin/templates/{pwa → default}/src/services/jwt.ts +0 -0
- /package/bin/templates/{pwa → default}/src/services/storage.ts +0 -0
- /package/bin/templates/{pwa → default}/src/types/auth.ts +0 -0
- /package/bin/templates/{pwa → default}/src/types/notifications.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/helpers/test-utils.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/middleware/auth.test.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/middleware/error.test.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/middleware/retry.test.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/services/auth.test.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/services/jwt.test.ts +0 -0
- /package/bin/templates/{pwa → default}/tests/services/storage.test.ts +0 -0
- /package/bin/templates/{pwa → default}/vite.config.ts +0 -0
- /package/bin/templates/{pwa → default}/vitest.config.ts +0 -0
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/sortable.md -->
|
|
2
2
|
|
|
3
|
-
# Sortable
|
|
3
|
+
# Sortable
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A drag-and-drop container that allows users to reorder child elements. Supports vertical and horizontal layouts, drag handles, and cross-container sorting via groups.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
|
+
|
|
8
9
|
- [Properties](#properties)
|
|
9
10
|
- [Events](#events)
|
|
10
11
|
- [Slots](#slots)
|
|
11
|
-
- [CSS Custom Properties](#css-custom-properties)
|
|
12
12
|
- [CSS Parts](#css-parts)
|
|
13
13
|
- [Basic Usage](#basic-usage)
|
|
14
14
|
- [Examples](#examples)
|
|
15
|
-
- [CSS Classes on Items](#css-classes-on-items)
|
|
16
15
|
- [Accessibility](#accessibility)
|
|
17
16
|
|
|
18
17
|
## Properties
|
|
@@ -20,78 +19,36 @@ The sortable component provides a drag-and-drop container that allows users to r
|
|
|
20
19
|
| Property | Type | Default | Description |
|
|
21
20
|
|----------|------|---------|-------------|
|
|
22
21
|
| `direction` | `'vertical' \| 'horizontal'` | `'vertical'` | Sort direction (layout axis) |
|
|
23
|
-
| `handle` | `string` | `''` | CSS selector for
|
|
22
|
+
| `handle` | `string` | `''` | CSS selector for drag handle within each item. If empty, the entire item is draggable. |
|
|
24
23
|
| `disabled` | `boolean` | `false` | Disable drag-and-drop |
|
|
25
|
-
| `group` | `string` | `''` | Group name for cross-container sorting
|
|
24
|
+
| `group` | `string` | `''` | Group name for cross-container sorting |
|
|
26
25
|
|
|
27
26
|
## Events
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
index: number; // Starting index of the dragged item
|
|
36
|
-
item: HTMLElement; // The dragged element
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
#### `sort-end`
|
|
41
|
-
Fired when a drag operation ends (regardless of whether the order changed).
|
|
42
|
-
|
|
43
|
-
**Event Detail:**
|
|
44
|
-
```typescript
|
|
45
|
-
{
|
|
46
|
-
oldIndex: number; // Original index of the item
|
|
47
|
-
newIndex: number; // New index of the item
|
|
48
|
-
item: HTMLElement; // The dragged element
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
#### `sort-change`
|
|
53
|
-
Fired when the order of items actually changes (item dropped in a new position).
|
|
54
|
-
|
|
55
|
-
**Event Detail:**
|
|
56
|
-
```typescript
|
|
57
|
-
{
|
|
58
|
-
oldIndex: number; // Original index of the item
|
|
59
|
-
newIndex: number; // New index of the item
|
|
60
|
-
item: HTMLElement; // The dragged element
|
|
61
|
-
}
|
|
62
|
-
```
|
|
28
|
+
| Event | Detail | Description |
|
|
29
|
+
|-------|--------|-------------|
|
|
30
|
+
| `sort-start` | `{ index: number, item: HTMLElement }` | Drag operation began |
|
|
31
|
+
| `sort-end` | `{ oldIndex: number, newIndex: number, item: HTMLElement }` | Drag operation ended (regardless of change) |
|
|
32
|
+
| `sort-change` | `{ oldIndex: number, newIndex: number, item: HTMLElement }` | Item dropped in a new position |
|
|
63
33
|
|
|
64
34
|
## Slots
|
|
65
35
|
|
|
66
|
-
|
|
|
67
|
-
|
|
68
|
-
| (default) |
|
|
69
|
-
|
|
70
|
-
## CSS Custom Properties
|
|
71
|
-
|
|
72
|
-
| Property | Description | Default |
|
|
73
|
-
|----------|-------------|---------|
|
|
74
|
-
| `--snice-spacing-xs` | Gap between items | `0.5rem` |
|
|
75
|
-
| `--snice-transition-fast` | Drag transition speed | `150ms` |
|
|
76
|
-
| `--snice-color-primary` | Ghost placeholder outline color | `rgb(37 99 235)` |
|
|
36
|
+
| Name | Description |
|
|
37
|
+
|------|-------------|
|
|
38
|
+
| (default) | Child elements to be sortable. Each direct child becomes a draggable item. |
|
|
77
39
|
|
|
78
40
|
## CSS Parts
|
|
79
41
|
|
|
80
|
-
|
|
42
|
+
| Part | Description |
|
|
43
|
+
|------|-------------|
|
|
44
|
+
| `base` | The outer sortable container |
|
|
81
45
|
|
|
82
|
-
|
|
83
|
-
|------|---------|-------------|
|
|
84
|
-
| `base` | `<div>` | The outer sortable container |
|
|
46
|
+
## Basic Usage
|
|
85
47
|
|
|
86
|
-
```
|
|
87
|
-
snice-sortable
|
|
88
|
-
gap: 0.5rem;
|
|
89
|
-
padding: 0.5rem;
|
|
90
|
-
}
|
|
48
|
+
```typescript
|
|
49
|
+
import 'snice/components/sortable/snice-sortable';
|
|
91
50
|
```
|
|
92
51
|
|
|
93
|
-
## Basic Usage
|
|
94
|
-
|
|
95
52
|
```html
|
|
96
53
|
<snice-sortable>
|
|
97
54
|
<div>Item 1</div>
|
|
@@ -100,61 +57,25 @@ snice-sortable::part(base) {
|
|
|
100
57
|
</snice-sortable>
|
|
101
58
|
```
|
|
102
59
|
|
|
103
|
-
```typescript
|
|
104
|
-
import 'snice/components/sortable/snice-sortable';
|
|
105
|
-
```
|
|
106
|
-
|
|
107
60
|
## Examples
|
|
108
61
|
|
|
109
|
-
###
|
|
62
|
+
### Horizontal
|
|
110
63
|
|
|
111
|
-
|
|
112
|
-
<snice-sortable>
|
|
113
|
-
<div>Apples</div>
|
|
114
|
-
<div>Bananas</div>
|
|
115
|
-
<div>Cherries</div>
|
|
116
|
-
<div>Dates</div>
|
|
117
|
-
</snice-sortable>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Horizontal Sortable List
|
|
121
|
-
|
|
122
|
-
Use `direction="horizontal"` to arrange items in a row.
|
|
64
|
+
Use `direction="horizontal"` for row layout.
|
|
123
65
|
|
|
124
66
|
```html
|
|
125
67
|
<snice-sortable direction="horizontal">
|
|
126
68
|
<div>Tab 1</div>
|
|
127
69
|
<div>Tab 2</div>
|
|
128
70
|
<div>Tab 3</div>
|
|
129
|
-
<div>Tab 4</div>
|
|
130
71
|
</snice-sortable>
|
|
131
72
|
```
|
|
132
73
|
|
|
133
74
|
### Drag Handle
|
|
134
75
|
|
|
135
|
-
Use the `handle` attribute to restrict dragging to a specific element
|
|
76
|
+
Use the `handle` attribute to restrict dragging to a specific element.
|
|
136
77
|
|
|
137
78
|
```html
|
|
138
|
-
<style>
|
|
139
|
-
.task-item {
|
|
140
|
-
display: flex;
|
|
141
|
-
align-items: center;
|
|
142
|
-
gap: 0.75rem;
|
|
143
|
-
padding: 0.75rem;
|
|
144
|
-
background: white;
|
|
145
|
-
border: 1px solid #e2e2e2;
|
|
146
|
-
border-radius: 0.25rem;
|
|
147
|
-
}
|
|
148
|
-
.drag-handle {
|
|
149
|
-
cursor: grab;
|
|
150
|
-
color: #999;
|
|
151
|
-
user-select: none;
|
|
152
|
-
}
|
|
153
|
-
.drag-handle:active {
|
|
154
|
-
cursor: grabbing;
|
|
155
|
-
}
|
|
156
|
-
</style>
|
|
157
|
-
|
|
158
79
|
<snice-sortable handle=".drag-handle">
|
|
159
80
|
<div class="task-item">
|
|
160
81
|
<span class="drag-handle">☰</span>
|
|
@@ -164,112 +85,48 @@ Use the `handle` attribute to restrict dragging to a specific element within eac
|
|
|
164
85
|
<span class="drag-handle">☰</span>
|
|
165
86
|
<span>Update documentation</span>
|
|
166
87
|
</div>
|
|
167
|
-
<div class="task-item">
|
|
168
|
-
<span class="drag-handle">☰</span>
|
|
169
|
-
<span>Fix login bug</span>
|
|
170
|
-
</div>
|
|
171
88
|
</snice-sortable>
|
|
172
89
|
```
|
|
173
90
|
|
|
174
91
|
### Cross-Container Sorting
|
|
175
92
|
|
|
176
|
-
Use the `group` attribute to
|
|
93
|
+
Use the `group` attribute to drag items between containers.
|
|
177
94
|
|
|
178
95
|
```html
|
|
179
|
-
<
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
gap: 1rem;
|
|
183
|
-
}
|
|
184
|
-
.column {
|
|
185
|
-
flex: 1;
|
|
186
|
-
}
|
|
187
|
-
.column h3 {
|
|
188
|
-
margin-bottom: 0.5rem;
|
|
189
|
-
}
|
|
190
|
-
.card {
|
|
191
|
-
padding: 0.75rem;
|
|
192
|
-
background: white;
|
|
193
|
-
border: 1px solid #e2e2e2;
|
|
194
|
-
border-radius: 0.25rem;
|
|
195
|
-
}
|
|
196
|
-
</style>
|
|
197
|
-
|
|
198
|
-
<div class="columns">
|
|
199
|
-
<div class="column">
|
|
200
|
-
<h3>To Do</h3>
|
|
201
|
-
<snice-sortable group="tasks">
|
|
202
|
-
<div class="card">Design mockups</div>
|
|
203
|
-
<div class="card">Write tests</div>
|
|
204
|
-
</snice-sortable>
|
|
205
|
-
</div>
|
|
206
|
-
<div class="column">
|
|
207
|
-
<h3>In Progress</h3>
|
|
208
|
-
<snice-sortable group="tasks">
|
|
209
|
-
<div class="card">Implement API</div>
|
|
210
|
-
</snice-sortable>
|
|
211
|
-
</div>
|
|
212
|
-
<div class="column">
|
|
213
|
-
<h3>Done</h3>
|
|
214
|
-
<snice-sortable group="tasks">
|
|
215
|
-
<div class="card">Setup project</div>
|
|
216
|
-
</snice-sortable>
|
|
217
|
-
</div>
|
|
218
|
-
</div>
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### Listening for Order Changes
|
|
222
|
-
|
|
223
|
-
```html
|
|
224
|
-
<snice-sortable id="priority-list">
|
|
225
|
-
<div>High priority</div>
|
|
226
|
-
<div>Medium priority</div>
|
|
227
|
-
<div>Low priority</div>
|
|
96
|
+
<snice-sortable group="tasks">
|
|
97
|
+
<div>Design mockups</div>
|
|
98
|
+
<div>Write tests</div>
|
|
228
99
|
</snice-sortable>
|
|
229
100
|
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
101
|
+
<snice-sortable group="tasks">
|
|
102
|
+
<div>Implement API</div>
|
|
103
|
+
</snice-sortable>
|
|
104
|
+
```
|
|
234
105
|
|
|
235
|
-
|
|
236
|
-
console.log(`Moved from index ${e.detail.oldIndex} to ${e.detail.newIndex}`);
|
|
237
|
-
});
|
|
106
|
+
### Event Handling
|
|
238
107
|
|
|
239
|
-
|
|
240
|
-
console.log(`Started dragging item at index ${e.detail.index}`);
|
|
241
|
-
});
|
|
108
|
+
Listen for `sort-change` to track reorder operations.
|
|
242
109
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
});
|
|
246
|
-
|
|
110
|
+
```typescript
|
|
111
|
+
sortable.addEventListener('sort-change', (e) => {
|
|
112
|
+
console.log(`Moved from index ${e.detail.oldIndex} to ${e.detail.newIndex}`);
|
|
113
|
+
});
|
|
247
114
|
```
|
|
248
115
|
|
|
249
|
-
### Disabled
|
|
116
|
+
### Disabled
|
|
250
117
|
|
|
251
|
-
|
|
118
|
+
Set `disabled` to prevent reordering.
|
|
252
119
|
|
|
253
120
|
```html
|
|
254
121
|
<snice-sortable disabled>
|
|
255
122
|
<div>Locked item 1</div>
|
|
256
123
|
<div>Locked item 2</div>
|
|
257
|
-
<div>Locked item 3</div>
|
|
258
124
|
</snice-sortable>
|
|
259
125
|
```
|
|
260
126
|
|
|
261
|
-
## CSS Classes on Items
|
|
262
|
-
|
|
263
|
-
The component automatically adds CSS classes to items during drag operations:
|
|
264
|
-
|
|
265
|
-
| Class | Description |
|
|
266
|
-
|-------|-------------|
|
|
267
|
-
| `.sortable-dragging` | Applied to the item being dragged (opacity: 0.4) |
|
|
268
|
-
| `.sortable-ghost` | Applied to the placeholder element (dashed outline) |
|
|
269
|
-
|
|
270
127
|
## Accessibility
|
|
271
128
|
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
275
|
-
-
|
|
129
|
+
- Items receive `draggable="true"` automatically
|
|
130
|
+
- Ghost placeholder with dashed outline shows drop position
|
|
131
|
+
- Dragged item has reduced opacity (0.4)
|
|
132
|
+
- `.sortable-dragging` class on dragged item, `.sortable-ghost` on placeholder
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/sparkline.md -->
|
|
2
2
|
|
|
3
3
|
# Sparkline
|
|
4
|
-
`<snice-sparkline>`
|
|
5
4
|
|
|
6
|
-
A lightweight inline chart for visualizing trends in compact spaces.
|
|
5
|
+
A lightweight inline chart for visualizing trends and patterns in compact spaces. Supports line, bar, and area chart types.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
**CDN**
|
|
16
|
-
```html
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-sparkline.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [CSS Parts](#css-parts)
|
|
11
|
+
- [Basic Usage](#basic-usage)
|
|
12
|
+
- [Examples](#examples)
|
|
13
|
+
- [Accessibility](#accessibility)
|
|
20
14
|
|
|
21
15
|
## Properties
|
|
22
16
|
|
|
@@ -32,19 +26,19 @@ import 'snice/components/sparkline/snice-sparkline';
|
|
|
32
26
|
| `showDots` (attr: `show-dots`) | `boolean` | `false` | Show dots on data points |
|
|
33
27
|
| `showArea` (attr: `show-area`) | `boolean` | `false` | Show area fill below line |
|
|
34
28
|
| `smooth` | `boolean` | `false` | Use smooth bezier curves |
|
|
35
|
-
| `min` | `number` | `undefined` | Minimum scale value (auto if unset) |
|
|
36
|
-
| `max` | `number` | `undefined` | Maximum scale value (auto if unset) |
|
|
29
|
+
| `min` | `number` | `undefined` | Minimum scale value (auto-calculated if unset) |
|
|
30
|
+
| `max` | `number` | `undefined` | Maximum scale value (auto-calculated if unset) |
|
|
37
31
|
|
|
38
32
|
## CSS Parts
|
|
39
33
|
|
|
40
34
|
| Part | Description |
|
|
41
35
|
|------|-------------|
|
|
42
|
-
| `container` | Outer container |
|
|
43
|
-
| `svg` | SVG element |
|
|
44
|
-
| `line` | Line path |
|
|
45
|
-
| `area` | Area fill path |
|
|
46
|
-
| `dot` | Data point dot |
|
|
47
|
-
| `bar` | Bar rectangle |
|
|
36
|
+
| `container` | Outer container element |
|
|
37
|
+
| `svg` | The SVG element |
|
|
38
|
+
| `line` | Line path element |
|
|
39
|
+
| `area` | Area fill path element |
|
|
40
|
+
| `dot` | Data point dot circle |
|
|
41
|
+
| `bar` | Bar rectangle element |
|
|
48
42
|
|
|
49
43
|
## Basic Usage
|
|
50
44
|
|
|
@@ -86,7 +80,7 @@ Use the `color` attribute for semantic color variants.
|
|
|
86
80
|
|
|
87
81
|
### Custom Color
|
|
88
82
|
|
|
89
|
-
Use the `custom-color` attribute to apply any CSS color.
|
|
83
|
+
Use the `custom-color` attribute to apply any CSS color, overriding the `color` variant.
|
|
90
84
|
|
|
91
85
|
```html
|
|
92
86
|
<snice-sparkline custom-color="#9333ea"></snice-sparkline>
|
|
@@ -127,7 +121,7 @@ Use the `width` and `height` attributes to set pixel dimensions.
|
|
|
127
121
|
|
|
128
122
|
### Custom Scale
|
|
129
123
|
|
|
130
|
-
Use `min` and `max` to set fixed data bounds for consistent comparison.
|
|
124
|
+
Use `min` and `max` to set fixed data bounds for consistent comparison across multiple charts.
|
|
131
125
|
|
|
132
126
|
```html
|
|
133
127
|
<snice-sparkline min="0" max="100"></snice-sparkline>
|
|
@@ -135,13 +129,20 @@ Use `min` and `max` to set fixed data bounds for consistent comparison.
|
|
|
135
129
|
|
|
136
130
|
### Dashboard Trend
|
|
137
131
|
|
|
132
|
+
Combine options for a compact dashboard widget.
|
|
133
|
+
|
|
138
134
|
```html
|
|
139
135
|
<div>
|
|
140
136
|
<label>Daily Visitors</label>
|
|
141
|
-
<snice-sparkline id="traffic" color="primary" width="150" height="40" show-area></snice-sparkline>
|
|
137
|
+
<snice-sparkline id="traffic" color="primary" width="150" height="40" show-area smooth></snice-sparkline>
|
|
142
138
|
</div>
|
|
143
139
|
|
|
144
140
|
<script>
|
|
145
141
|
document.getElementById('traffic').data = [1200, 1350, 1100, 1450, 1600, 1550, 1700];
|
|
146
142
|
</script>
|
|
147
143
|
```
|
|
144
|
+
|
|
145
|
+
## Accessibility
|
|
146
|
+
|
|
147
|
+
- Decorative element; use `aria-busy="true"` on the container while data is loading
|
|
148
|
+
- Set an `aria-label` on the element to describe the trend for screen readers
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/spinner.md -->
|
|
2
2
|
|
|
3
3
|
# Spinner
|
|
4
|
-
`<snice-spinner>`
|
|
5
4
|
|
|
6
|
-
An animated loading indicator.
|
|
5
|
+
An animated loading indicator with configurable size, color, and optional label.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
**CDN**
|
|
16
|
-
```html
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-spinner.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [CSS Parts](#css-parts)
|
|
11
|
+
- [Basic Usage](#basic-usage)
|
|
12
|
+
- [Examples](#examples)
|
|
13
|
+
- [Accessibility](#accessibility)
|
|
20
14
|
|
|
21
15
|
## Properties
|
|
22
16
|
|
|
@@ -24,29 +18,16 @@ import 'snice/components/spinner/snice-spinner';
|
|
|
24
18
|
|----------|------|---------|-------------|
|
|
25
19
|
| `size` | `'small' \| 'medium' \| 'large' \| 'xl'` | `'medium'` | Spinner size |
|
|
26
20
|
| `color` | `'primary' \| 'success' \| 'warning' \| 'error' \| 'info'` | `'primary'` | Color variant |
|
|
27
|
-
| `label` | `string` | `''` | Accessible label |
|
|
28
|
-
| `thickness` | `number` | `4` | Stroke thickness |
|
|
21
|
+
| `label` | `string` | `''` | Accessible label text displayed below the spinner |
|
|
22
|
+
| `thickness` | `number` | `4` | Stroke thickness in pixels |
|
|
29
23
|
|
|
30
24
|
## CSS Parts
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
|
35
|
-
|
|
36
|
-
| `
|
|
37
|
-
| `circle` | `<svg>` | The SVG spinner circle |
|
|
38
|
-
| `label` | `<span>` | The label text element |
|
|
39
|
-
|
|
40
|
-
```css
|
|
41
|
-
snice-spinner::part(base) {
|
|
42
|
-
gap: 0.75rem;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
snice-spinner::part(label) {
|
|
46
|
-
font-size: 0.875rem;
|
|
47
|
-
color: #64748b;
|
|
48
|
-
}
|
|
49
|
-
```
|
|
26
|
+
| Part | Description |
|
|
27
|
+
|------|-------------|
|
|
28
|
+
| `base` | The outer spinner container |
|
|
29
|
+
| `circle` | The SVG spinner circle |
|
|
30
|
+
| `label` | The label text element |
|
|
50
31
|
|
|
51
32
|
## Basic Usage
|
|
52
33
|
|
|
@@ -62,7 +43,7 @@ import 'snice/components/spinner/snice-spinner';
|
|
|
62
43
|
|
|
63
44
|
### Sizes
|
|
64
45
|
|
|
65
|
-
Use the `size` attribute to change the spinner's
|
|
46
|
+
Use the `size` attribute to change the spinner's dimensions.
|
|
66
47
|
|
|
67
48
|
```html
|
|
68
49
|
<snice-spinner size="small"></snice-spinner>
|
|
@@ -85,15 +66,24 @@ Use the `color` attribute to change the spinner's color.
|
|
|
85
66
|
|
|
86
67
|
### With Label
|
|
87
68
|
|
|
88
|
-
Set the `label` attribute
|
|
69
|
+
Set the `label` attribute to display descriptive text below the spinner.
|
|
89
70
|
|
|
90
71
|
```html
|
|
91
72
|
<snice-spinner label="Loading data..."></snice-spinner>
|
|
92
73
|
```
|
|
93
74
|
|
|
75
|
+
### Custom Thickness
|
|
76
|
+
|
|
77
|
+
Use the `thickness` attribute to adjust the stroke width.
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<snice-spinner thickness="2"></snice-spinner>
|
|
81
|
+
<snice-spinner thickness="6"></snice-spinner>
|
|
82
|
+
```
|
|
83
|
+
|
|
94
84
|
### Inline
|
|
95
85
|
|
|
96
|
-
Use a small spinner inline with text.
|
|
86
|
+
Use a small spinner inline with text for button loading states.
|
|
97
87
|
|
|
98
88
|
```html
|
|
99
89
|
<button disabled>
|
|
@@ -101,3 +91,8 @@ Use a small spinner inline with text.
|
|
|
101
91
|
Processing...
|
|
102
92
|
</button>
|
|
103
93
|
```
|
|
94
|
+
|
|
95
|
+
## Accessibility
|
|
96
|
+
|
|
97
|
+
- Uses `role="status"` with `aria-label` for screen readers
|
|
98
|
+
- The `label` property provides visible and accessible descriptive text
|
|
@@ -1,44 +1,50 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/split-button.md -->
|
|
2
2
|
|
|
3
3
|
# Split Button
|
|
4
|
-
`<snice-split-button>`
|
|
5
4
|
|
|
6
|
-
A primary action button with a dropdown menu of alternative actions. Click the main button for the primary action, or click the chevron
|
|
5
|
+
A primary action button with a dropdown menu of alternative actions. Click the main button for the primary action, or click the chevron to reveal alternatives.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```html
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-split-button.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
- [Accessibility](#accessibility)
|
|
20
15
|
|
|
21
16
|
## Properties
|
|
22
17
|
|
|
23
18
|
| Property | Type | Default | Description |
|
|
24
19
|
|----------|------|---------|-------------|
|
|
25
20
|
| `label` | `string` | `''` | Primary button text |
|
|
26
|
-
| `actions` | `SplitButtonAction[]` | `[]` | Array of `{ label, value, icon?, disabled? }` for dropdown |
|
|
21
|
+
| `actions` | `SplitButtonAction[]` | `[]` | Array of `{ label, value, icon?, disabled? }` for the dropdown menu |
|
|
27
22
|
| `variant` | `'default' \| 'primary' \| 'success' \| 'warning' \| 'danger'` | `'default'` | Visual style |
|
|
28
23
|
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Button size |
|
|
29
24
|
| `disabled` | `boolean` | `false` | Disables the entire button |
|
|
30
25
|
| `loading` | `boolean` | `false` | Shows loading spinner and disables button |
|
|
31
26
|
| `outline` | `boolean` | `false` | Use outline style (transparent background) |
|
|
32
27
|
| `pill` | `boolean` | `false` | Use pill (fully rounded) shape |
|
|
33
|
-
| `icon` | `string` | `''` | Icon (URL, image file, emoji) |
|
|
28
|
+
| `icon` | `string` | `''` | Icon (URL, image file, or emoji) |
|
|
34
29
|
| `iconPlacement` (attr: `icon-placement`) | `'start' \| 'end'` | `'start'` | Icon position relative to label |
|
|
35
30
|
|
|
31
|
+
The `actions` property is set via JavaScript (not HTML attributes):
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
interface SplitButtonAction {
|
|
35
|
+
label: string;
|
|
36
|
+
value: string;
|
|
37
|
+
icon?: string;
|
|
38
|
+
disabled?: boolean;
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
36
42
|
## Events
|
|
37
43
|
|
|
38
44
|
| Event | Detail | Description |
|
|
39
45
|
|-------|--------|-------------|
|
|
40
|
-
| `primary-click` | `{ button }` | Primary button clicked |
|
|
41
|
-
| `action-click` | `{ value, action, button }` | A dropdown action was selected |
|
|
46
|
+
| `primary-click` | `{ button: SniceSplitButtonElement }` | Primary button was clicked |
|
|
47
|
+
| `action-click` | `{ value: string, action: SplitButtonAction, button: SniceSplitButtonElement }` | A dropdown action was selected |
|
|
42
48
|
|
|
43
49
|
## CSS Parts
|
|
44
50
|
|
|
@@ -46,11 +52,11 @@ import 'snice/components/split-button/snice-split-button';
|
|
|
46
52
|
|------|-------------|
|
|
47
53
|
| `base` | The button container |
|
|
48
54
|
| `primary` | The primary button |
|
|
49
|
-
| `divider` | The divider between buttons |
|
|
50
|
-
| `toggle` | The dropdown toggle button |
|
|
55
|
+
| `divider` | The divider between primary and toggle buttons |
|
|
56
|
+
| `toggle` | The dropdown toggle button (chevron) |
|
|
51
57
|
| `menu` | The dropdown menu container |
|
|
52
58
|
| `menu-items` | The menu items wrapper |
|
|
53
|
-
| `action` | Each menu action button |
|
|
59
|
+
| `action` | Each individual menu action button |
|
|
54
60
|
|
|
55
61
|
## Basic Usage
|
|
56
62
|
|
|
@@ -63,6 +69,7 @@ import 'snice/components/split-button/snice-split-button';
|
|
|
63
69
|
```
|
|
64
70
|
|
|
65
71
|
```typescript
|
|
72
|
+
const btn = document.querySelector('snice-split-button');
|
|
66
73
|
btn.actions = [
|
|
67
74
|
{ value: 'save-draft', label: 'Save as Draft' },
|
|
68
75
|
{ value: 'save-template', label: 'Save as Template' },
|
|
@@ -92,9 +99,16 @@ Use the `size` attribute to change the button size.
|
|
|
92
99
|
<snice-split-button label="Large" size="large"></snice-split-button>
|
|
93
100
|
```
|
|
94
101
|
|
|
102
|
+
### Outline and Pill
|
|
103
|
+
|
|
104
|
+
```html
|
|
105
|
+
<snice-split-button label="Outline" variant="primary" outline></snice-split-button>
|
|
106
|
+
<snice-split-button label="Pill" variant="primary" pill></snice-split-button>
|
|
107
|
+
```
|
|
108
|
+
|
|
95
109
|
### Disabled
|
|
96
110
|
|
|
97
|
-
Disable both the primary button and dropdown
|
|
111
|
+
Disable both the primary button and dropdown.
|
|
98
112
|
|
|
99
113
|
```html
|
|
100
114
|
<snice-split-button label="Disabled" disabled></snice-split-button>
|
|
@@ -102,7 +116,7 @@ Disable both the primary button and dropdown with the `disabled` attribute.
|
|
|
102
116
|
|
|
103
117
|
### Disabled Actions
|
|
104
118
|
|
|
105
|
-
Individual actions can be disabled.
|
|
119
|
+
Individual dropdown actions can be disabled.
|
|
106
120
|
|
|
107
121
|
```typescript
|
|
108
122
|
btn.actions = [
|
|
@@ -134,3 +148,9 @@ btn.addEventListener('action-click', (e) => {
|
|
|
134
148
|
console.log('Action object:', e.detail.action);
|
|
135
149
|
});
|
|
136
150
|
```
|
|
151
|
+
|
|
152
|
+
## Accessibility
|
|
153
|
+
|
|
154
|
+
- Dropdown menu closes on action click, outside click, or Escape key
|
|
155
|
+
- Actions are set via the `actions` JavaScript property (not child elements)
|
|
156
|
+
- Loading state disables the button and shows a spinner
|