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,25 +1,29 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/select.md -->
|
|
2
2
|
|
|
3
3
|
# Select
|
|
4
|
-
`<snice-select>`
|
|
5
4
|
|
|
6
|
-
A customizable dropdown selection with single/multiple selection, search filtering, and composable options.
|
|
5
|
+
A customizable dropdown selection with single/multiple selection, search filtering, editable input mode, and composable options.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
- [Components](#components)
|
|
10
|
+
- [Properties](#properties)
|
|
11
|
+
- [Methods](#methods)
|
|
12
|
+
- [Events](#events)
|
|
13
|
+
- [CSS Parts](#css-parts)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
17
|
+
- [Accessibility](#accessibility)
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
```html
|
|
18
|
-
<script src="snice-runtime.min.js"></script>
|
|
19
|
-
<script src="snice-select.min.js"></script>
|
|
20
|
-
```
|
|
19
|
+
## Components
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
- `<snice-select>` - The select container with trigger, dropdown, and form integration
|
|
22
|
+
- `<snice-option>` - Individual option elements (declarative API)
|
|
23
|
+
|
|
24
|
+
## Properties
|
|
25
|
+
|
|
26
|
+
### Select Properties
|
|
23
27
|
|
|
24
28
|
| Property | Type | Default | Description |
|
|
25
29
|
|----------|------|---------|-------------|
|
|
@@ -30,7 +34,7 @@ import 'snice/components/select/snice-option';
|
|
|
30
34
|
| `readonly` | `boolean` | `false` | Readonly state |
|
|
31
35
|
| `loading` | `boolean` | `false` | Shows loading spinner |
|
|
32
36
|
| `multiple` | `boolean` | `false` | Allow multiple selection |
|
|
33
|
-
| `searchable` | `boolean` | `false` | Show search input |
|
|
37
|
+
| `searchable` | `boolean` | `false` | Show search input in dropdown |
|
|
34
38
|
| `clearable` | `boolean` | `false` | Show clear button |
|
|
35
39
|
| `editable` | `boolean` | `false` | Render editable text input instead of button trigger |
|
|
36
40
|
| `allowFreeText` (attr: `allow-free-text`) | `boolean` | `false` | Allow values not in the options list |
|
|
@@ -42,9 +46,9 @@ import 'snice/components/select/snice-option';
|
|
|
42
46
|
| `label` | `string` | `''` | Label text |
|
|
43
47
|
| `placeholder` | `string` | `'Select an option'` | Placeholder text |
|
|
44
48
|
| `maxHeight` (attr: `max-height`) | `string` | `'200px'` | Maximum dropdown height |
|
|
45
|
-
| `options` | `SelectOption[]` | `[]` | Programmatic options array |
|
|
49
|
+
| `options` | `SelectOption[]` | `[]` | Programmatic options array (JS only) |
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
### Option Properties
|
|
48
52
|
|
|
49
53
|
| Property | Type | Default | Description |
|
|
50
54
|
|----------|------|---------|-------------|
|
|
@@ -58,22 +62,38 @@ import 'snice/components/select/snice-option';
|
|
|
58
62
|
|
|
59
63
|
| Method | Arguments | Description |
|
|
60
64
|
|--------|-----------|-------------|
|
|
65
|
+
| `focus()` | — | Focus the select trigger |
|
|
66
|
+
| `blur()` | — | Remove focus and close dropdown |
|
|
67
|
+
| `clear()` | — | Clear the selection |
|
|
68
|
+
| `openDropdown()` | — | Open the dropdown |
|
|
69
|
+
| `closeDropdown()` | — | Close the dropdown |
|
|
70
|
+
| `toggleDropdown()` | — | Toggle the dropdown |
|
|
61
71
|
| `selectOption()` | `value: string` | Select an option by value |
|
|
62
|
-
| `clear()` | -- | Clear the selection |
|
|
63
|
-
| `openDropdown()` | -- | Open the dropdown |
|
|
64
|
-
| `closeDropdown()` | -- | Close the dropdown |
|
|
65
|
-
| `toggleDropdown()` | -- | Toggle the dropdown |
|
|
66
|
-
| `focus()` | -- | Focus the select trigger |
|
|
67
|
-
| `blur()` | -- | Remove focus and close dropdown |
|
|
68
72
|
|
|
69
73
|
## Events
|
|
70
74
|
|
|
71
75
|
| Event | Detail | Description |
|
|
72
76
|
|-------|--------|-------------|
|
|
73
|
-
| `select-change` | `{ value, option, select }` | Selection changed |
|
|
77
|
+
| `select-change` | `{ value: string \| string[], option?: SelectOption, select }` | Selection changed |
|
|
74
78
|
| `select-open` | `{ select }` | Dropdown opened |
|
|
75
79
|
| `select-close` | `{ select }` | Dropdown closed |
|
|
76
80
|
|
|
81
|
+
## CSS Parts
|
|
82
|
+
|
|
83
|
+
| Part | Description |
|
|
84
|
+
|------|-------------|
|
|
85
|
+
| `label` | The label text |
|
|
86
|
+
| `trigger` | The trigger button or input container |
|
|
87
|
+
| `value` | The displayed value text |
|
|
88
|
+
| `input` | The hidden native select for form submission |
|
|
89
|
+
| `arrow` | The dropdown arrow icon |
|
|
90
|
+
| `spinner` | The loading spinner |
|
|
91
|
+
| `dropdown` | The dropdown container |
|
|
92
|
+
| `search` | The search wrapper |
|
|
93
|
+
| `search-input` | The search text input |
|
|
94
|
+
| `options` | The options list container |
|
|
95
|
+
| `option` | Individual option items |
|
|
96
|
+
|
|
77
97
|
## Basic Usage
|
|
78
98
|
|
|
79
99
|
```typescript
|
|
@@ -91,76 +111,84 @@ import 'snice/components/select/snice-option';
|
|
|
91
111
|
|
|
92
112
|
## Examples
|
|
93
113
|
|
|
94
|
-
### Sizes
|
|
95
|
-
|
|
96
|
-
Use the `size` attribute to change the select size.
|
|
97
|
-
|
|
98
|
-
```html
|
|
99
|
-
<snice-select size="small" label="Small">
|
|
100
|
-
<snice-option value="a">Option A</snice-option>
|
|
101
|
-
<snice-option value="b">Option B</snice-option>
|
|
102
|
-
</snice-select>
|
|
103
|
-
|
|
104
|
-
<snice-select size="large" label="Large">
|
|
105
|
-
<snice-option value="a">Option A</snice-option>
|
|
106
|
-
<snice-option value="b">Option B</snice-option>
|
|
107
|
-
</snice-select>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
114
|
### Multiple Selection
|
|
111
115
|
|
|
112
|
-
Set
|
|
116
|
+
Set `multiple` to allow selecting more than one option.
|
|
113
117
|
|
|
114
118
|
```html
|
|
115
|
-
<snice-select label="
|
|
119
|
+
<snice-select label="Languages" multiple>
|
|
116
120
|
<snice-option value="js">JavaScript</snice-option>
|
|
117
121
|
<snice-option value="ts">TypeScript</snice-option>
|
|
118
122
|
<snice-option value="py">Python</snice-option>
|
|
119
|
-
<snice-option value="rs">Rust</snice-option>
|
|
120
123
|
</snice-select>
|
|
121
124
|
```
|
|
122
125
|
|
|
123
126
|
### Searchable
|
|
124
127
|
|
|
125
|
-
Set
|
|
128
|
+
Set `searchable` to show a search input for filtering options.
|
|
126
129
|
|
|
127
130
|
```html
|
|
128
|
-
<snice-select label="
|
|
131
|
+
<snice-select label="Country" searchable>
|
|
129
132
|
<snice-option value="us">United States</snice-option>
|
|
130
133
|
<snice-option value="uk">United Kingdom</snice-option>
|
|
131
134
|
<snice-option value="ca">Canada</snice-option>
|
|
132
|
-
<snice-option value="au">Australia</snice-option>
|
|
133
|
-
<snice-option value="de">Germany</snice-option>
|
|
134
135
|
</snice-select>
|
|
135
136
|
```
|
|
136
137
|
|
|
137
|
-
###
|
|
138
|
+
### Editable Mode
|
|
138
139
|
|
|
139
|
-
Set
|
|
140
|
+
Set `editable` to render a text input instead of a button. Typing filters options.
|
|
140
141
|
|
|
141
142
|
```html
|
|
142
|
-
<snice-select label="
|
|
143
|
-
<snice-option value="1">Option 1</snice-option>
|
|
144
|
-
<snice-option value="2">Option 2</snice-option>
|
|
145
|
-
</snice-select>
|
|
143
|
+
<snice-select editable label="Fruit" placeholder="Type or select..."></snice-select>
|
|
146
144
|
```
|
|
147
145
|
|
|
148
|
-
|
|
146
|
+
```typescript
|
|
147
|
+
select.options = [
|
|
148
|
+
{ value: 'apple', label: 'Apple' },
|
|
149
|
+
{ value: 'banana', label: 'Banana' },
|
|
150
|
+
{ value: 'cherry', label: 'Cherry' }
|
|
151
|
+
];
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Allow Free Text
|
|
155
|
+
|
|
156
|
+
Set `allow-free-text` with `editable` to accept values not in the options list.
|
|
157
|
+
|
|
158
|
+
```html
|
|
159
|
+
<snice-select editable allow-free-text label="Tag" placeholder="Type a tag..."></snice-select>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Remote Search
|
|
163
|
+
|
|
164
|
+
Set `remote` with `searchable` or `editable` for async search via `@request/@respond`.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
// Controller
|
|
168
|
+
@respond('select/search')
|
|
169
|
+
async handleSearch(req, respond) {
|
|
170
|
+
const results = await fetch(`/api/users?q=${req.query}`).then(r => r.json());
|
|
171
|
+
respond(results.map(u => ({ value: u.id, label: u.name })));
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Clearable
|
|
176
|
+
|
|
177
|
+
Set `clearable` to show a clear button.
|
|
149
178
|
|
|
150
179
|
```html
|
|
151
|
-
<snice-select label="
|
|
152
|
-
<snice-option value="
|
|
153
|
-
<snice-option value="
|
|
154
|
-
<snice-option value="other">Other</snice-option>
|
|
180
|
+
<snice-select label="Clearable" clearable>
|
|
181
|
+
<snice-option value="1">Option 1</snice-option>
|
|
182
|
+
<snice-option value="2">Option 2</snice-option>
|
|
155
183
|
</snice-select>
|
|
156
184
|
```
|
|
157
185
|
|
|
158
186
|
### With Icons
|
|
159
187
|
|
|
160
|
-
Use the `icon` attribute on options to display
|
|
188
|
+
Use the `icon` attribute on options to display images.
|
|
161
189
|
|
|
162
190
|
```html
|
|
163
|
-
<snice-select label="
|
|
191
|
+
<snice-select label="Role">
|
|
164
192
|
<snice-option value="user" icon="/icons/user.svg">User</snice-option>
|
|
165
193
|
<snice-option value="admin" icon="/icons/admin.svg">Admin</snice-option>
|
|
166
194
|
</snice-select>
|
|
@@ -168,92 +196,42 @@ Use the `icon` attribute on options to display an image.
|
|
|
168
196
|
|
|
169
197
|
### Form Integration
|
|
170
198
|
|
|
199
|
+
The select participates in forms via a hidden native select element.
|
|
200
|
+
|
|
171
201
|
```html
|
|
172
202
|
<form>
|
|
173
203
|
<snice-select name="role" label="User role" required>
|
|
174
204
|
<snice-option value="user">User</snice-option>
|
|
175
205
|
<snice-option value="admin">Admin</snice-option>
|
|
176
|
-
<snice-option value="moderator">Moderator</snice-option>
|
|
177
206
|
</snice-select>
|
|
178
207
|
<button type="submit">Submit</button>
|
|
179
208
|
</form>
|
|
180
209
|
```
|
|
181
210
|
|
|
182
|
-
```typescript
|
|
183
|
-
form.addEventListener('submit', (e) => {
|
|
184
|
-
e.preventDefault();
|
|
185
|
-
console.log(Object.fromEntries(new FormData(e.target)));
|
|
186
|
-
});
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### Programmatic Control
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
select.selectOption('apple');
|
|
193
|
-
select.clear();
|
|
194
|
-
select.openDropdown();
|
|
195
|
-
select.closeDropdown();
|
|
196
|
-
select.toggleDropdown();
|
|
197
|
-
```
|
|
198
|
-
|
|
199
211
|
### Event Handling
|
|
200
212
|
|
|
213
|
+
Listen to `select-change` for selection changes.
|
|
214
|
+
|
|
201
215
|
```typescript
|
|
202
216
|
select.addEventListener('select-change', (e) => {
|
|
203
217
|
console.log('Selected:', e.detail.value);
|
|
204
218
|
});
|
|
205
|
-
|
|
206
|
-
select.addEventListener('select-open', () => console.log('Opened'));
|
|
207
|
-
select.addEventListener('select-close', () => console.log('Closed'));
|
|
208
219
|
```
|
|
209
220
|
|
|
210
|
-
|
|
221
|
+
## Keyboard Navigation
|
|
211
222
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
223
|
+
| Key | Action |
|
|
224
|
+
|-----|--------|
|
|
225
|
+
| `ArrowDown` | Move to next option / open dropdown |
|
|
226
|
+
| `ArrowUp` | Move to previous option |
|
|
227
|
+
| `Enter` | Select focused option / open dropdown |
|
|
228
|
+
| `Escape` | Close dropdown |
|
|
229
|
+
| `Tab` | Close dropdown and move focus |
|
|
218
230
|
|
|
219
|
-
|
|
220
|
-
function validate() {
|
|
221
|
-
select.invalid = !select.value;
|
|
222
|
-
return !!select.value;
|
|
223
|
-
}
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Editable Mode
|
|
231
|
+
## Accessibility
|
|
227
232
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
```typescript
|
|
235
|
-
select.options = [
|
|
236
|
-
{ value: 'apple', label: 'Apple' },
|
|
237
|
-
{ value: 'banana', label: 'Banana' },
|
|
238
|
-
{ value: 'cherry', label: 'Cherry' },
|
|
239
|
-
];
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
#### Allow Custom Values
|
|
243
|
-
|
|
244
|
-
Set `allow-free-text` alongside `editable` to let users enter values not in the options list.
|
|
245
|
-
|
|
246
|
-
```html
|
|
247
|
-
<snice-select editable allow-free-text label="Tag" placeholder="Type a tag..."></snice-select>
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
#### Programmatic Options
|
|
251
|
-
|
|
252
|
-
Use the `options` property to set options via JavaScript. Works alongside child `<snice-option>` elements (merged at render time, children take precedence).
|
|
253
|
-
|
|
254
|
-
```typescript
|
|
255
|
-
select.options = [
|
|
256
|
-
{ value: 'us', label: 'United States', icon: '/flags/us.png' },
|
|
257
|
-
{ value: 'uk', label: 'United Kingdom', icon: '/flags/uk.png' },
|
|
258
|
-
];
|
|
259
|
-
```
|
|
233
|
+
- Hidden native `<select>` for form submission
|
|
234
|
+
- Keyboard navigable with arrow keys, Enter, and Escape
|
|
235
|
+
- Dropdown closes on outside click
|
|
236
|
+
- Multiple selection values are comma-separated
|
|
237
|
+
- Child `<snice-option>` elements take precedence over `options` array when both provided
|
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/skeleton.md -->
|
|
2
2
|
|
|
3
3
|
# Skeleton
|
|
4
|
-
`<snice-skeleton>`
|
|
5
4
|
|
|
6
5
|
Displays placeholder loading animations to indicate content is being loaded.
|
|
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-skeleton.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
- [Accessibility](#accessibility)
|
|
20
15
|
|
|
21
16
|
## Properties
|
|
22
17
|
|
|
@@ -27,7 +22,7 @@ import 'snice/components/skeleton/snice-skeleton';
|
|
|
27
22
|
| `height` | `string` | `''` | Custom height (CSS value) |
|
|
28
23
|
| `animation` | `'pulse' \| 'wave' \| 'none'` | `'wave'` | Animation style |
|
|
29
24
|
| `count` | `number` | `1` | Number of skeleton lines to render |
|
|
30
|
-
| `spacing` | `string` | `'8px'` | Gap between multiple
|
|
25
|
+
| `spacing` | `string` | `'8px'` | Gap between multiple lines |
|
|
31
26
|
|
|
32
27
|
## CSS Custom Properties
|
|
33
28
|
|
|
@@ -39,22 +34,10 @@ import 'snice/components/skeleton/snice-skeleton';
|
|
|
39
34
|
|
|
40
35
|
## CSS Parts
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
| `base` | `<div>` | Outer skeleton container |
|
|
47
|
-
| `bone` | `<div>` | Individual skeleton placeholder element |
|
|
48
|
-
|
|
49
|
-
```css
|
|
50
|
-
snice-skeleton::part(bone) {
|
|
51
|
-
border-radius: 0.5rem;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
snice-skeleton::part(base) {
|
|
55
|
-
padding: 0.5rem;
|
|
56
|
-
}
|
|
57
|
-
```
|
|
37
|
+
| Part | Description |
|
|
38
|
+
|------|-------------|
|
|
39
|
+
| `base` | Outer skeleton container |
|
|
40
|
+
| `bone` | Individual skeleton placeholder element |
|
|
58
41
|
|
|
59
42
|
## Basic Usage
|
|
60
43
|
|
|
@@ -74,31 +57,22 @@ Use the `variant` attribute to change the skeleton shape.
|
|
|
74
57
|
|
|
75
58
|
```html
|
|
76
59
|
<snice-skeleton variant="text"></snice-skeleton>
|
|
77
|
-
<snice-skeleton variant="circular"></snice-skeleton>
|
|
78
|
-
<snice-skeleton variant="rectangular"></snice-skeleton>
|
|
79
|
-
<snice-skeleton variant="rounded"></snice-skeleton>
|
|
60
|
+
<snice-skeleton variant="circular" width="64px" height="64px"></snice-skeleton>
|
|
61
|
+
<snice-skeleton variant="rectangular" width="200px" height="150px"></snice-skeleton>
|
|
62
|
+
<snice-skeleton variant="rounded" width="300px" height="150px"></snice-skeleton>
|
|
80
63
|
```
|
|
81
64
|
|
|
82
65
|
### Paragraph
|
|
83
66
|
|
|
84
|
-
Set
|
|
67
|
+
Set `count` to render multiple skeleton lines simulating a paragraph.
|
|
85
68
|
|
|
86
69
|
```html
|
|
87
70
|
<snice-skeleton variant="text" count="4"></snice-skeleton>
|
|
88
71
|
```
|
|
89
72
|
|
|
90
|
-
### Custom Dimensions
|
|
91
|
-
|
|
92
|
-
Use the `width` and `height` attributes to set custom sizes.
|
|
93
|
-
|
|
94
|
-
```html
|
|
95
|
-
<snice-skeleton variant="rectangular" width="200px" height="150px"></snice-skeleton>
|
|
96
|
-
<snice-skeleton variant="circular" width="64px" height="64px"></snice-skeleton>
|
|
97
|
-
```
|
|
98
|
-
|
|
99
73
|
### Animation Styles
|
|
100
74
|
|
|
101
|
-
Use
|
|
75
|
+
Use `animation` to change the loading animation.
|
|
102
76
|
|
|
103
77
|
```html
|
|
104
78
|
<snice-skeleton animation="wave"></snice-skeleton>
|
|
@@ -106,10 +80,22 @@ Use the `animation` attribute to change the loading animation.
|
|
|
106
80
|
<snice-skeleton animation="none"></snice-skeleton>
|
|
107
81
|
```
|
|
108
82
|
|
|
109
|
-
###
|
|
83
|
+
### Complex Layout
|
|
110
84
|
|
|
111
|
-
|
|
85
|
+
Combine variants to create loading placeholders for cards or profiles.
|
|
112
86
|
|
|
113
87
|
```html
|
|
114
|
-
<
|
|
88
|
+
<div style="display: flex; gap: 16px;">
|
|
89
|
+
<snice-skeleton variant="circular" width="48px" height="48px"></snice-skeleton>
|
|
90
|
+
<div style="flex: 1;">
|
|
91
|
+
<snice-skeleton variant="text" width="40%"></snice-skeleton>
|
|
92
|
+
<snice-skeleton variant="text" width="60%"></snice-skeleton>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
115
95
|
```
|
|
96
|
+
|
|
97
|
+
## Accessibility
|
|
98
|
+
|
|
99
|
+
- Purely decorative placeholder; does not convey content to screen readers
|
|
100
|
+
- Use `aria-busy="true"` on the container element while loading
|
|
101
|
+
- Replace with actual content once loaded
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/slider.md -->
|
|
2
2
|
|
|
3
3
|
# Slider
|
|
4
|
-
`<snice-slider>`
|
|
5
4
|
|
|
6
|
-
An interactive range slider for selecting numeric values with mouse, touch, and keyboard support.
|
|
5
|
+
An interactive range slider for selecting numeric values with mouse, touch, and keyboard support. Form-associated.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<script src="snice-slider.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [CSS Parts](#css-parts)
|
|
13
|
+
- [Basic Usage](#basic-usage)
|
|
14
|
+
- [Examples](#examples)
|
|
15
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
16
|
+
- [Accessibility](#accessibility)
|
|
20
17
|
|
|
21
18
|
## Properties
|
|
22
19
|
|
|
@@ -35,21 +32,22 @@ import 'snice/components/slider/snice-slider';
|
|
|
35
32
|
| `readonly` | `boolean` | `false` | Makes the slider read-only |
|
|
36
33
|
| `required` | `boolean` | `false` | Makes the slider required |
|
|
37
34
|
| `invalid` | `boolean` | `false` | Shows invalid state |
|
|
35
|
+
| `loading` | `boolean` | `false` | Shows loading spinner |
|
|
38
36
|
| `name` | `string` | `''` | Form field name |
|
|
39
37
|
| `showValue` (attr: `show-value`) | `boolean` | `false` | Display current value |
|
|
40
|
-
| `showTicks` (attr: `show-ticks`) | `boolean` | `false` | Show tick marks |
|
|
38
|
+
| `showTicks` (attr: `show-ticks`) | `boolean` | `false` | Show tick marks along the track |
|
|
41
39
|
| `vertical` | `boolean` | `false` | Vertical orientation |
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
|
|
41
|
+
The `form-align` HTML attribute (CSS-only, no JS property) gives the track area `min-height: 2.5rem` to align with input/select fields in form rows.
|
|
44
42
|
|
|
45
43
|
## Methods
|
|
46
44
|
|
|
47
45
|
| Method | Arguments | Description |
|
|
48
46
|
|--------|-----------|-------------|
|
|
49
47
|
| `focus()` | `options?: FocusOptions` | Focus the slider thumb |
|
|
50
|
-
| `blur()` |
|
|
51
|
-
| `checkValidity()` |
|
|
52
|
-
| `reportValidity()` |
|
|
48
|
+
| `blur()` | — | Remove focus |
|
|
49
|
+
| `checkValidity()` | — | Check validation, returns `boolean` |
|
|
50
|
+
| `reportValidity()` | — | Report validation to user, returns `boolean` |
|
|
53
51
|
| `setCustomValidity()` | `message: string` | Set custom validation message |
|
|
54
52
|
|
|
55
53
|
## Events
|
|
@@ -66,7 +64,7 @@ import 'snice/components/slider/snice-slider';
|
|
|
66
64
|
| `track` | The slider track |
|
|
67
65
|
| `fill` | The filled portion of the track |
|
|
68
66
|
| `thumb` | The draggable thumb |
|
|
69
|
-
| `spinner` | Loading spinner
|
|
67
|
+
| `spinner` | Loading spinner |
|
|
70
68
|
| `error-text` | Error message container |
|
|
71
69
|
| `helper-text` | Helper text container |
|
|
72
70
|
|
|
@@ -84,53 +82,34 @@ import 'snice/components/slider/snice-slider';
|
|
|
84
82
|
|
|
85
83
|
### Variants
|
|
86
84
|
|
|
87
|
-
Use
|
|
85
|
+
Use `variant` to change the slider color.
|
|
88
86
|
|
|
89
87
|
```html
|
|
90
|
-
<snice-slider variant="default" label="Default"></snice-slider>
|
|
91
88
|
<snice-slider variant="primary" label="Primary"></snice-slider>
|
|
92
89
|
<snice-slider variant="success" label="Success"></snice-slider>
|
|
93
|
-
<snice-slider variant="warning" label="Warning"></snice-slider>
|
|
94
90
|
<snice-slider variant="danger" label="Danger"></snice-slider>
|
|
95
91
|
```
|
|
96
92
|
|
|
97
93
|
### Sizes
|
|
98
94
|
|
|
99
|
-
Use
|
|
95
|
+
Use `size` to change the slider size.
|
|
100
96
|
|
|
101
97
|
```html
|
|
102
98
|
<snice-slider size="small" label="Small"></snice-slider>
|
|
103
|
-
<snice-slider size="medium" label="Medium"></snice-slider>
|
|
104
99
|
<snice-slider size="large" label="Large"></snice-slider>
|
|
105
100
|
```
|
|
106
101
|
|
|
107
|
-
### Value Display
|
|
102
|
+
### Value Display and Tick Marks
|
|
108
103
|
|
|
109
|
-
Set
|
|
110
|
-
|
|
111
|
-
```html
|
|
112
|
-
<snice-slider label="Brightness" min="0" max="100" value="75" show-value></snice-slider>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Tick Marks
|
|
116
|
-
|
|
117
|
-
Set the `show-ticks` attribute to display step indicators along the track.
|
|
104
|
+
Set `show-value` and `show-ticks` to display additional visual information.
|
|
118
105
|
|
|
119
106
|
```html
|
|
120
107
|
<snice-slider label="Rating" min="0" max="10" step="1" show-ticks show-value></snice-slider>
|
|
121
108
|
```
|
|
122
109
|
|
|
123
|
-
### Custom Range and Step
|
|
124
|
-
|
|
125
|
-
Use the `min`, `max`, and `step` attributes to define the slider range.
|
|
126
|
-
|
|
127
|
-
```html
|
|
128
|
-
<snice-slider label="Temperature" min="60" max="80" step="0.5" value="72" show-value></snice-slider>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
110
|
### Vertical
|
|
132
111
|
|
|
133
|
-
Set
|
|
112
|
+
Set `vertical` for vertical orientation.
|
|
134
113
|
|
|
135
114
|
```html
|
|
136
115
|
<snice-slider label="Volume" min="0" max="100" value="60" vertical show-value></snice-slider>
|
|
@@ -138,30 +117,47 @@ Set the `vertical` attribute for a vertical orientation.
|
|
|
138
117
|
|
|
139
118
|
### Error State
|
|
140
119
|
|
|
141
|
-
Set
|
|
120
|
+
Set `invalid` with `error-text` to show validation errors.
|
|
142
121
|
|
|
143
122
|
```html
|
|
144
|
-
<snice-slider label="Age"
|
|
123
|
+
<snice-slider label="Age" invalid error-text="Value out of range"></snice-slider>
|
|
145
124
|
```
|
|
146
125
|
|
|
147
126
|
### Form Alignment
|
|
148
127
|
|
|
149
|
-
|
|
128
|
+
Use the `form-align` attribute to align the slider with adjacent form fields.
|
|
150
129
|
|
|
151
130
|
```html
|
|
152
131
|
<div style="display: flex; gap: 1rem; align-items: flex-start;">
|
|
153
|
-
<snice-input label="Price"
|
|
154
|
-
<snice-slider label="Quantity" min="0" max="100"
|
|
132
|
+
<snice-input label="Price"></snice-input>
|
|
133
|
+
<snice-slider label="Quantity" min="0" max="100" form-align></snice-slider>
|
|
155
134
|
</div>
|
|
156
135
|
```
|
|
157
136
|
|
|
158
|
-
###
|
|
137
|
+
### Form Integration
|
|
159
138
|
|
|
160
139
|
The slider is form-associated and participates in form submission.
|
|
161
140
|
|
|
162
141
|
```html
|
|
163
|
-
<form
|
|
142
|
+
<form>
|
|
164
143
|
<snice-slider name="volume" label="Volume" min="0" max="100" value="50" required></snice-slider>
|
|
165
|
-
<button type="submit">Save
|
|
144
|
+
<button type="submit">Save</button>
|
|
166
145
|
</form>
|
|
167
146
|
```
|
|
147
|
+
|
|
148
|
+
## Keyboard Navigation
|
|
149
|
+
|
|
150
|
+
| Key | Action |
|
|
151
|
+
|-----|--------|
|
|
152
|
+
| `ArrowLeft` / `ArrowDown` | Decrease by one step |
|
|
153
|
+
| `ArrowRight` / `ArrowUp` | Increase by one step |
|
|
154
|
+
| `Home` | Set to minimum |
|
|
155
|
+
| `End` | Set to maximum |
|
|
156
|
+
|
|
157
|
+
## Accessibility
|
|
158
|
+
|
|
159
|
+
- Form-associated via `ElementInternals`
|
|
160
|
+
- `role="slider"` with `aria-valuenow`, `aria-valuemin`, `aria-valuemax`
|
|
161
|
+
- Focus ring on keyboard navigation
|
|
162
|
+
- Supports mouse, touch, and keyboard input
|
|
163
|
+
- Validation with `checkValidity()`, `reportValidity()`, and `setCustomValidity()`
|