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
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/grid.md -->
|
|
2
|
+
|
|
3
|
+
# Grid Component
|
|
4
|
+
`<snice-grid>`
|
|
5
|
+
|
|
6
|
+
A grid-coordinate layout component. Items are placed at explicit grid positions using `grid-col` and `grid-row` attributes, and can span multiple cells with `grid-colspan` and `grid-rowspan`. Collision resolution uses swap-first with push-right-then-down fallback. Supports animated transitions and drag-and-drop with snap-to-grid.
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [Slots](#slots)
|
|
13
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
14
|
+
- [CSS Parts](#css-parts)
|
|
15
|
+
- [Basic Usage](#basic-usage)
|
|
16
|
+
- [Examples](#examples)
|
|
17
|
+
- [Accessibility](#accessibility)
|
|
18
|
+
|
|
19
|
+
## Properties
|
|
20
|
+
|
|
21
|
+
| Property | Attribute | Type | Default | Description |
|
|
22
|
+
|----------|-----------|------|---------|-------------|
|
|
23
|
+
| `gap` | `gap` | `string` | `'1rem'` | Spacing between cells |
|
|
24
|
+
| `columnWidth` | `column-width` | `number` | `80` | Width of each grid column in pixels |
|
|
25
|
+
| `rowHeight` | `row-height` | `number` | `80` | Height of each grid row in pixels |
|
|
26
|
+
| `columns` | `columns` | `number` | `0` | Fixed number of columns (0 = auto from content) |
|
|
27
|
+
| `rows` | `rows` | `number` | `0` | Fixed number of rows (0 = auto from content) |
|
|
28
|
+
| `originLeft` | `origin-left` | `boolean` | `true` | `false` = right-to-left |
|
|
29
|
+
| `originTop` | `origin-top` | `boolean` | `true` | `false` = bottom-to-top |
|
|
30
|
+
| `transitionDuration` | `transition-duration` | `string` | `'0.4s'` | CSS transition duration for item movement |
|
|
31
|
+
| `stagger` | `stagger` | `number` | `0` | Delay in ms between each item's transition |
|
|
32
|
+
| `resize` | `resize` | `boolean` | `true` | Auto re-layout on container resize |
|
|
33
|
+
| `draggable` | `draggable` | `boolean` | `false` | Enable drag-to-reorder with snap-to-grid |
|
|
34
|
+
| `dragThrottle` | `drag-throttle` | `number` | `120` | Throttle interval (ms) for drag layout updates |
|
|
35
|
+
|
|
36
|
+
## Methods
|
|
37
|
+
|
|
38
|
+
| Method | Arguments | Description |
|
|
39
|
+
|--------|-----------|-------------|
|
|
40
|
+
| `layout()` | -- | Perform a full re-layout |
|
|
41
|
+
| `fit()` | `element: HTMLElement, col?: number, row?: number` | Position specific item at grid coordinates, reflow others |
|
|
42
|
+
| `reloadItems()` | -- | Re-collect items from DOM |
|
|
43
|
+
| `getItemElements()` | -- | Returns array of all layout items |
|
|
44
|
+
| `getLayout()` | -- | Returns `GridLayout` object with item positions, spans, and order |
|
|
45
|
+
| `setLayout()` | `layout: GridLayout` | Apply a saved layout (reorder, reposition, hide/show items) |
|
|
46
|
+
|
|
47
|
+
## Events
|
|
48
|
+
|
|
49
|
+
| Event | Detail | Description |
|
|
50
|
+
|-------|--------|-------------|
|
|
51
|
+
| `grid-layout-complete` | `{ items: HTMLElement[] }` | Fired after layout completes |
|
|
52
|
+
| `grid-drag-item-positioned` | `{ item: HTMLElement, col: number, row: number }` | Fired after a dragged item settles into its new grid position |
|
|
53
|
+
|
|
54
|
+
## Slots
|
|
55
|
+
|
|
56
|
+
| Name | Description |
|
|
57
|
+
|------|-------------|
|
|
58
|
+
| (default) | Items to place on the grid. Use `grid-col`, `grid-row`, `grid-colspan`, `grid-rowspan` attributes on each item to control placement. |
|
|
59
|
+
|
|
60
|
+
### Item Attributes
|
|
61
|
+
|
|
62
|
+
These attributes are set on child elements (not on `<snice-grid>` itself):
|
|
63
|
+
|
|
64
|
+
| Attribute | Type | Default | Description |
|
|
65
|
+
|-----------|------|---------|-------------|
|
|
66
|
+
| `grid-col` | `number` | `0` | Column position (0-based) |
|
|
67
|
+
| `grid-row` | `number` | `0` | Row position (0-based) |
|
|
68
|
+
| `grid-colspan` | `number` | `1` | Number of columns to span |
|
|
69
|
+
| `grid-rowspan` | `number` | `1` | Number of rows to span |
|
|
70
|
+
| `name` | `string` | -- | Identifier used by `getLayout()`/`setLayout()` for persistence |
|
|
71
|
+
| `hidden` | `boolean` | -- | Hides the item from layout |
|
|
72
|
+
|
|
73
|
+
## CSS Custom Properties
|
|
74
|
+
|
|
75
|
+
| Property | Description | Default |
|
|
76
|
+
|----------|-------------|---------|
|
|
77
|
+
| `--grid-gap` | Gap between cells (set via `gap` property) | `1rem` |
|
|
78
|
+
| `--grid-transition-duration` | Transition duration for item movement (set via `transition-duration` property) | `0.4s` |
|
|
79
|
+
|
|
80
|
+
## CSS Parts
|
|
81
|
+
|
|
82
|
+
| Part | Description |
|
|
83
|
+
|------|-------------|
|
|
84
|
+
| `base` | The inner container element |
|
|
85
|
+
|
|
86
|
+
## Basic Usage
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import 'snice/components/grid/snice-grid';
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```html
|
|
93
|
+
<snice-grid column-width="100" row-height="100" gap="8px">
|
|
94
|
+
<div grid-col="0" grid-row="0">A</div>
|
|
95
|
+
<div grid-col="1" grid-row="0">B</div>
|
|
96
|
+
<div grid-col="0" grid-row="1">C</div>
|
|
97
|
+
</snice-grid>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Items are sized automatically based on `columnWidth`, `rowHeight`, and their `grid-colspan`/`grid-rowspan` values.
|
|
101
|
+
|
|
102
|
+
## Examples
|
|
103
|
+
|
|
104
|
+
### Spanning Multiple Cells
|
|
105
|
+
|
|
106
|
+
Use `grid-colspan` and `grid-rowspan` to make items span multiple columns or rows.
|
|
107
|
+
|
|
108
|
+
```html
|
|
109
|
+
<snice-grid column-width="80" row-height="80" gap="8px">
|
|
110
|
+
<div grid-col="0" grid-row="0" grid-colspan="2" grid-rowspan="2">Large</div>
|
|
111
|
+
<div grid-col="2" grid-row="0">Small A</div>
|
|
112
|
+
<div grid-col="2" grid-row="1">Small B</div>
|
|
113
|
+
<div grid-col="0" grid-row="2" grid-colspan="3">Wide</div>
|
|
114
|
+
</snice-grid>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Collision Resolution
|
|
118
|
+
|
|
119
|
+
When two items request the same grid position, the component resolves collisions automatically:
|
|
120
|
+
|
|
121
|
+
1. **Swap** -- If the target cell has a single occupant, the two items swap positions.
|
|
122
|
+
2. **Push-right-then-down** -- If swap fails (multiple occupants or the swapped item doesn't fit), the incoming item is pushed to the next free cell scanning right, then down.
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<snice-grid column-width="80" row-height="80" gap="8px">
|
|
126
|
+
<!-- Both request (0,0): the second item will be pushed to (1,0) -->
|
|
127
|
+
<div grid-col="0" grid-row="0">First</div>
|
|
128
|
+
<div grid-col="0" grid-row="0">Second</div>
|
|
129
|
+
</snice-grid>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Fixed Grid Size
|
|
133
|
+
|
|
134
|
+
Set `columns` and/or `rows` to constrain the grid. Items that exceed the column limit are wrapped to the next row.
|
|
135
|
+
|
|
136
|
+
```html
|
|
137
|
+
<snice-grid column-width="100" row-height="100" gap="8px" columns="4" rows="3">
|
|
138
|
+
<div grid-col="0" grid-row="0">A</div>
|
|
139
|
+
<div grid-col="3" grid-row="0" grid-colspan="2">B (clamped to fit)</div>
|
|
140
|
+
</snice-grid>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
When an item's `col + colspan` exceeds the column count, its column position is clamped to `columns - colspan`.
|
|
144
|
+
|
|
145
|
+
### Draggable with Snap-to-Grid
|
|
146
|
+
|
|
147
|
+
Enable `draggable` to let users drag items. Items snap to the nearest grid cell during and after drag.
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<snice-grid draggable column-width="80" row-height="80" gap="8px" columns="4">
|
|
151
|
+
<div grid-col="0" grid-row="0" name="widget-a">Widget A</div>
|
|
152
|
+
<div grid-col="1" grid-row="0" name="widget-b">Widget B</div>
|
|
153
|
+
<div grid-col="0" grid-row="1" name="widget-c" grid-colspan="2">Widget C</div>
|
|
154
|
+
</snice-grid>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
A dashed drop-placeholder shows the target cell during drag. CSS classes applied during drag:
|
|
158
|
+
|
|
159
|
+
- `.grid-dragging` -- applied during drag (no transition, z-index: 100, opacity: 0.9, cursor: grabbing)
|
|
160
|
+
- `.grid-positioning` -- applied while animating to final position after drop (z-index: 99)
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
const grid = document.querySelector('snice-grid');
|
|
164
|
+
grid.addEventListener('grid-drag-item-positioned', (e) => {
|
|
165
|
+
const { item, col, row } = e.detail;
|
|
166
|
+
console.log(`${item.getAttribute('name')} dropped at col=${col} row=${row}`);
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Staggered Transitions
|
|
171
|
+
|
|
172
|
+
Use `stagger` to add incremental delay between each item's transition.
|
|
173
|
+
|
|
174
|
+
```html
|
|
175
|
+
<snice-grid column-width="80" row-height="80" transition-duration="0.6s" stagger="40">
|
|
176
|
+
<div grid-col="0" grid-row="0">A</div>
|
|
177
|
+
<div grid-col="1" grid-row="0">B</div>
|
|
178
|
+
<div grid-col="2" grid-row="0">C</div>
|
|
179
|
+
</snice-grid>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Right-to-Left / Bottom-to-Top
|
|
183
|
+
|
|
184
|
+
Set `origin-left="false"` or `origin-top="false"` to change the coordinate origin.
|
|
185
|
+
|
|
186
|
+
```html
|
|
187
|
+
<snice-grid column-width="80" row-height="80" origin-left="false">
|
|
188
|
+
<div grid-col="0" grid-row="0">Aligned right</div>
|
|
189
|
+
</snice-grid>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Save and Restore Layout
|
|
193
|
+
|
|
194
|
+
Use `getLayout()` and `setLayout()` to persist item arrangement. Items must have a `name` attribute.
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
const grid = document.querySelector('snice-grid');
|
|
198
|
+
|
|
199
|
+
// Save
|
|
200
|
+
const layout = grid.getLayout();
|
|
201
|
+
localStorage.setItem('dashboard', JSON.stringify(layout));
|
|
202
|
+
|
|
203
|
+
// Restore
|
|
204
|
+
const saved = JSON.parse(localStorage.getItem('dashboard'));
|
|
205
|
+
grid.setLayout(saved);
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
The `GridLayout` object is a `Record<string, GridLayoutEntry>` keyed by item name:
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
interface GridLayoutEntry {
|
|
212
|
+
col: number;
|
|
213
|
+
row: number;
|
|
214
|
+
colspan?: number;
|
|
215
|
+
rowspan?: number;
|
|
216
|
+
order: number;
|
|
217
|
+
hidden?: boolean;
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Dynamic Items
|
|
222
|
+
|
|
223
|
+
Items can be added or removed dynamically. The layout automatically updates via slot change detection.
|
|
224
|
+
|
|
225
|
+
```javascript
|
|
226
|
+
const grid = document.querySelector('snice-grid');
|
|
227
|
+
|
|
228
|
+
// Add an item
|
|
229
|
+
const item = document.createElement('div');
|
|
230
|
+
item.setAttribute('grid-col', '2');
|
|
231
|
+
item.setAttribute('grid-row', '0');
|
|
232
|
+
grid.appendChild(item);
|
|
233
|
+
|
|
234
|
+
// Remove an item
|
|
235
|
+
grid.lastElementChild.remove();
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Accessibility
|
|
239
|
+
|
|
240
|
+
- The inner container has `role="list"` for screen reader navigation.
|
|
241
|
+
- When `draggable` is enabled, items show `cursor: grab` (and `cursor: grabbing` during drag).
|
|
242
|
+
|
|
243
|
+
### Notes
|
|
244
|
+
|
|
245
|
+
- Items are absolutely positioned using `transform` for smooth transitions.
|
|
246
|
+
- Item width/height is computed automatically from `columnWidth`, `rowHeight`, `colspan`, and `rowspan`.
|
|
247
|
+
- Uses `ResizeObserver` on the container for automatic re-layout when `resize` is `true`.
|
|
248
|
+
- FOUC is prevented by gating transitions behind the `[ready]` attribute.
|
|
249
|
+
- Uses `contain: layout style` on `:host`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/heatmap.md -->
|
|
2
2
|
|
|
3
3
|
# Heatmap Component
|
|
4
4
|
|
|
@@ -10,21 +10,18 @@ The heatmap component displays a GitHub-style contribution calendar heatmap. It
|
|
|
10
10
|
- [CSS Parts](#css-parts)
|
|
11
11
|
- [Basic Usage](#basic-usage)
|
|
12
12
|
- [Examples](#examples)
|
|
13
|
-
- [Intensity Levels](#intensity-levels)
|
|
14
|
-
- [Color Schemes](#color-schemes)
|
|
15
13
|
- [Accessibility](#accessibility)
|
|
16
|
-
- [Browser Support](#browser-support)
|
|
17
14
|
|
|
18
15
|
## Properties
|
|
19
16
|
|
|
20
17
|
| Property | Type | Default | Description |
|
|
21
18
|
|----------|------|---------|-------------|
|
|
22
19
|
| `data` | `HeatmapDataPoint[]` | `[]` | Array of data points with date and value |
|
|
23
|
-
| `color-scheme` | `'green' \| 'blue' \| 'purple' \| 'orange' \| 'red'` | `'green'` | Color scheme for intensity levels |
|
|
24
|
-
| `show-labels` | `boolean` | `true` | Show day and month labels |
|
|
25
|
-
| `cell-size` | `number` | `12` | Cell size in pixels |
|
|
26
|
-
| `cell-gap` | `number` | `3` | Gap between cells in pixels |
|
|
27
|
-
| `show-tooltip` | `boolean` | `true` | Show tooltip on cell hover |
|
|
20
|
+
| `colorScheme` (attr: `color-scheme`) | `'green' \| 'blue' \| 'purple' \| 'orange' \| 'red'` | `'green'` | Color scheme for intensity levels |
|
|
21
|
+
| `showLabels` (attr: `show-labels`) | `boolean` | `true` | Show day and month labels |
|
|
22
|
+
| `cellSize` (attr: `cell-size`) | `number` | `12` | Cell size in pixels |
|
|
23
|
+
| `cellGap` (attr: `cell-gap`) | `number` | `3` | Gap between cells in pixels |
|
|
24
|
+
| `showTooltip` (attr: `show-tooltip`) | `boolean` | `true` | Show tooltip on cell hover |
|
|
28
25
|
| `weeks` | `number` | `52` | Number of weeks to display |
|
|
29
26
|
|
|
30
27
|
### HeatmapDataPoint
|
|
@@ -38,21 +35,9 @@ interface HeatmapDataPoint {
|
|
|
38
35
|
|
|
39
36
|
## Events
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Fired when a cell is clicked
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
heatmap.addEventListener('cell-click', (e: CustomEvent) => {
|
|
47
|
-
console.log(e.detail.date); // '2026-01-15'
|
|
48
|
-
console.log(e.detail.value); // 5
|
|
49
|
-
});
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
| Detail Property | Type | Description |
|
|
53
|
-
|-----------------|------|-------------|
|
|
54
|
-
| `date` | `string` | ISO date of the clicked cell |
|
|
55
|
-
| `value` | `number` | Value of the clicked cell |
|
|
38
|
+
| Event | Detail | Description |
|
|
39
|
+
|-------|--------|-------------|
|
|
40
|
+
| `cell-click` | `{ date: string, value: number }` | Fired when a cell is clicked |
|
|
56
41
|
|
|
57
42
|
## CSS Parts
|
|
58
43
|
|
|
@@ -77,6 +62,10 @@ snice-heatmap::part(tooltip) {
|
|
|
77
62
|
|
|
78
63
|
## Basic Usage
|
|
79
64
|
|
|
65
|
+
```typescript
|
|
66
|
+
import 'snice/components/heatmap/snice-heatmap';
|
|
67
|
+
```
|
|
68
|
+
|
|
80
69
|
```html
|
|
81
70
|
<snice-heatmap id="my-heatmap"></snice-heatmap>
|
|
82
71
|
|
|
@@ -90,10 +79,6 @@ snice-heatmap::part(tooltip) {
|
|
|
90
79
|
</script>
|
|
91
80
|
```
|
|
92
81
|
|
|
93
|
-
```typescript
|
|
94
|
-
import 'snice/components/heatmap/snice-heatmap';
|
|
95
|
-
```
|
|
96
|
-
|
|
97
82
|
## Examples
|
|
98
83
|
|
|
99
84
|
### Default Green Heatmap
|
|
@@ -167,36 +152,9 @@ import 'snice/components/heatmap/snice-heatmap';
|
|
|
167
152
|
</script>
|
|
168
153
|
```
|
|
169
154
|
|
|
170
|
-
## Intensity Levels
|
|
171
|
-
|
|
172
|
-
Cell colors are calculated based on quartiles of the maximum value in the dataset:
|
|
173
|
-
|
|
174
|
-
| Level | Range | Description |
|
|
175
|
-
|-------|-------|-------------|
|
|
176
|
-
| 0 | No data | Empty (gray) |
|
|
177
|
-
| 1 | 1-25% of max | Low activity |
|
|
178
|
-
| 2 | 26-50% of max | Medium activity |
|
|
179
|
-
| 3 | 51-75% of max | High activity |
|
|
180
|
-
| 4 | 76-100% of max | Very high activity |
|
|
181
|
-
|
|
182
|
-
## Color Schemes
|
|
183
|
-
|
|
184
|
-
| Scheme | Level 1 | Level 2 | Level 3 | Level 4 |
|
|
185
|
-
|--------|---------|---------|---------|---------|
|
|
186
|
-
| `green` | #9be9a8 | #40c463 | #30a14e | #216e39 |
|
|
187
|
-
| `blue` | #9ecae1 | #4292c6 | #2171b5 | #084594 |
|
|
188
|
-
| `purple` | #c9b1e0 | #9b72cf | #7b4fbf | #5a2d91 |
|
|
189
|
-
| `orange` | #fdcc8a | #fc8d59 | #e34a33 | #b30000 |
|
|
190
|
-
| `red` | #fcae91 | #fb6a4a | #de2d26 | #a50f15 |
|
|
191
|
-
|
|
192
155
|
## Accessibility
|
|
193
156
|
|
|
194
157
|
- **ARIA labels**: Each cell has an `aria-label` describing the date and contribution count
|
|
195
158
|
- **Keyboard navigation**: Cells are focusable buttons
|
|
196
159
|
- **Tooltips**: Visual hover feedback with date and value details
|
|
197
160
|
- **Color contrast**: Intensity levels are distinguishable at all levels
|
|
198
|
-
|
|
199
|
-
## Browser Support
|
|
200
|
-
|
|
201
|
-
- Modern browsers (Chrome, Firefox, Safari, Edge)
|
|
202
|
-
- Requires Custom Elements v1 and Shadow DOM support
|
package/docs/components/image.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/image.md -->
|
|
2
2
|
|
|
3
3
|
# Image Component
|
|
4
4
|
|
|
@@ -6,9 +6,9 @@ The `<snice-image>` component provides a flexible image display with variants, s
|
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
- [Properties](#properties)
|
|
9
|
+
- [CSS Parts](#css-parts)
|
|
9
10
|
- [Basic Usage](#basic-usage)
|
|
10
11
|
- [Examples](#examples)
|
|
11
|
-
- [CSS Parts](#css-parts)
|
|
12
12
|
|
|
13
13
|
## Properties
|
|
14
14
|
|
|
@@ -27,8 +27,34 @@ The `<snice-image>` component provides a flexible image display with variants, s
|
|
|
27
27
|
| `width` | `string` | `''` | Custom width (CSS value) |
|
|
28
28
|
| `height` | `string` | `''` | Custom height (CSS value) |
|
|
29
29
|
|
|
30
|
+
## CSS Parts
|
|
31
|
+
|
|
32
|
+
| Part | Description |
|
|
33
|
+
|------|-------------|
|
|
34
|
+
| `container` | Image container div |
|
|
35
|
+
| `image` | The img element |
|
|
36
|
+
| `placeholder` | Placeholder element (shown when loading or no src) |
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
snice-image::part(container) {
|
|
40
|
+
/* Image container */
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
snice-image::part(image) {
|
|
44
|
+
/* The img element */
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
snice-image::part(placeholder) {
|
|
48
|
+
/* Placeholder element */
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
30
52
|
## Basic Usage
|
|
31
53
|
|
|
54
|
+
```typescript
|
|
55
|
+
import 'snice/components/image/snice-image';
|
|
56
|
+
```
|
|
57
|
+
|
|
32
58
|
```html
|
|
33
59
|
<snice-image
|
|
34
60
|
src="https://example.com/image.jpg"
|
|
@@ -95,33 +121,3 @@ The `<snice-image>` component provides a flexible image display with variants, s
|
|
|
95
121
|
<!-- Shows placeholder when no src -->
|
|
96
122
|
<snice-image variant="circle" size="medium"></snice-image>
|
|
97
123
|
```
|
|
98
|
-
|
|
99
|
-
## CSS Parts
|
|
100
|
-
|
|
101
|
-
| Part | Description |
|
|
102
|
-
|------|-------------|
|
|
103
|
-
| `container` | Image container div |
|
|
104
|
-
| `image` | The img element |
|
|
105
|
-
| `placeholder` | Placeholder element (shown when loading or no src) |
|
|
106
|
-
|
|
107
|
-
```css
|
|
108
|
-
snice-image::part(container) {
|
|
109
|
-
/* Image container */
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
snice-image::part(image) {
|
|
113
|
-
/* The img element */
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
snice-image::part(placeholder) {
|
|
117
|
-
/* Placeholder element */
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Notes
|
|
122
|
-
|
|
123
|
-
- Images are lazy-loaded by default for better performance
|
|
124
|
-
- Placeholder is shown when `src` is empty
|
|
125
|
-
- Fallback image is used when main image fails to load
|
|
126
|
-
- Size presets provide consistent image dimensions
|
|
127
|
-
- Custom width/height override size presets
|
package/docs/components/input.md
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/input.md -->
|
|
2
2
|
|
|
3
3
|
# Input
|
|
4
4
|
`<snice-input>`
|
|
5
5
|
|
|
6
6
|
Text input field with validation, icons, and form association.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-input.min.js"></script>
|
|
19
|
-
```
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [Slots](#slots)
|
|
13
|
+
- [CSS Parts](#css-parts)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
20
17
|
|
|
21
18
|
## Properties
|
|
22
19
|
|
|
@@ -153,7 +150,7 @@ Set the `password` attribute along with `type="password"` to show a visibility t
|
|
|
153
150
|
|
|
154
151
|
For icon fonts (Material Symbols, Font Awesome, etc.), use the `prefix-icon` and `suffix-icon` **slots**. The `prefix-icon` and `suffix-icon` **attributes** are for emoji, URLs, and image files only.
|
|
155
152
|
|
|
156
|
-
>
|
|
153
|
+
> **`prefix-icon="search"` renders as plain text, not a Material icon.** Use the slot for icon fonts.
|
|
157
154
|
|
|
158
155
|
#### Icon Slots (for icon fonts and SVGs)
|
|
159
156
|
|
|
@@ -278,3 +275,17 @@ Listen for input events using `input-input` and `input-change`.
|
|
|
278
275
|
inp.addEventListener('input-input', (e) => console.log('Input:', e.detail.value));
|
|
279
276
|
inp.addEventListener('input-change', (e) => console.log('Change:', e.detail.value));
|
|
280
277
|
```
|
|
278
|
+
|
|
279
|
+
## Keyboard Navigation
|
|
280
|
+
|
|
281
|
+
- **Tab**: Focus/unfocus the input
|
|
282
|
+
- **Escape**: Clear input when `clearable` is set (via clear button)
|
|
283
|
+
- Standard native input keyboard behavior applies
|
|
284
|
+
|
|
285
|
+
## Accessibility
|
|
286
|
+
|
|
287
|
+
- Form-associated custom element with `ElementInternals`
|
|
288
|
+
- Label element linked to input
|
|
289
|
+
- `aria-invalid` set when `invalid` is true
|
|
290
|
+
- Required indicator (`*`) shown when `required` is set
|
|
291
|
+
- Clear button and password toggle have `aria-label`
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/invoice.md -->
|
|
2
2
|
|
|
3
3
|
# Invoice Component
|
|
4
4
|
|
|
5
5
|
A professional invoice component with line items, automatic tax and discount calculations, status tracking, and QR code support. Supports multiple visual variants and customizable layouts.
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<script src="snice-runtime.min.js"></script>
|
|
17
|
-
<script src="snice-invoice.min.js"></script>
|
|
18
|
-
```
|
|
7
|
+
## Table of Contents
|
|
8
|
+
- [Properties](#properties)
|
|
9
|
+
- [Methods](#methods)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [Slots](#slots)
|
|
12
|
+
- [CSS Parts](#css-parts)
|
|
13
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
19
16
|
|
|
20
17
|
## Properties
|
|
21
18
|
|
|
@@ -82,23 +79,6 @@ interface InvoiceItem {
|
|
|
82
79
|
| `qr` | QR code content. Use for payment QR codes or links. |
|
|
83
80
|
| (default) | Additional content rendered in the footer area |
|
|
84
81
|
|
|
85
|
-
## CSS Custom Properties
|
|
86
|
-
|
|
87
|
-
| Property | Default | Description |
|
|
88
|
-
|----------|---------|-------------|
|
|
89
|
-
| `--invoice-max-width` | `50rem` | Maximum width of invoice |
|
|
90
|
-
| `--invoice-padding` | `2rem` | Internal padding |
|
|
91
|
-
| `--invoice-bg` | `white` | Background color |
|
|
92
|
-
| `--invoice-text` | `rgb(23 23 23)` | Text color |
|
|
93
|
-
| `--invoice-text-secondary` | `rgb(82 82 82)` | Secondary text |
|
|
94
|
-
| `--invoice-accent` | `rgb(37 99 235)` | Accent color |
|
|
95
|
-
| `--invoice-border` | `rgb(226 226 226)` | Border color |
|
|
96
|
-
| `--invoice-border-radius` | `0.5rem` | Border radius |
|
|
97
|
-
| `--invoice-shadow` | `none` | Box shadow |
|
|
98
|
-
| `--invoice-table-header-bg` | `transparent` | Table header background |
|
|
99
|
-
| `--invoice-summary-width` | `16rem` | Summary column width |
|
|
100
|
-
| `--invoice-qr-size` | `6rem` | QR code size |
|
|
101
|
-
|
|
102
82
|
## CSS Parts
|
|
103
83
|
|
|
104
84
|
| Part | Description |
|
|
@@ -132,8 +112,29 @@ interface InvoiceItem {
|
|
|
132
112
|
| `qr` | QR code element |
|
|
133
113
|
| `footer` | Footer area |
|
|
134
114
|
|
|
115
|
+
## CSS Custom Properties
|
|
116
|
+
|
|
117
|
+
| Property | Default | Description |
|
|
118
|
+
|----------|---------|-------------|
|
|
119
|
+
| `--invoice-max-width` | `50rem` | Maximum width of invoice |
|
|
120
|
+
| `--invoice-padding` | `2rem` | Internal padding |
|
|
121
|
+
| `--invoice-bg` | `white` | Background color |
|
|
122
|
+
| `--invoice-text` | `rgb(23 23 23)` | Text color |
|
|
123
|
+
| `--invoice-text-secondary` | `rgb(82 82 82)` | Secondary text |
|
|
124
|
+
| `--invoice-accent` | `rgb(37 99 235)` | Accent color |
|
|
125
|
+
| `--invoice-border` | `rgb(226 226 226)` | Border color |
|
|
126
|
+
| `--invoice-border-radius` | `0.5rem` | Border radius |
|
|
127
|
+
| `--invoice-shadow` | `none` | Box shadow |
|
|
128
|
+
| `--invoice-table-header-bg` | `transparent` | Table header background |
|
|
129
|
+
| `--invoice-summary-width` | `16rem` | Summary column width |
|
|
130
|
+
| `--invoice-qr-size` | `6rem` | QR code size |
|
|
131
|
+
|
|
135
132
|
## Basic Usage
|
|
136
133
|
|
|
134
|
+
```typescript
|
|
135
|
+
import 'snice/components/invoice/snice-invoice';
|
|
136
|
+
```
|
|
137
|
+
|
|
137
138
|
```html
|
|
138
139
|
<snice-invoice
|
|
139
140
|
invoice-number="INV-2026-001"
|
|
@@ -249,18 +250,18 @@ interface InvoiceItem {
|
|
|
249
250
|
invoice.from = { name: 'My Company' };
|
|
250
251
|
invoice.to = { name: 'Customer' };
|
|
251
252
|
invoice.items = [];
|
|
252
|
-
|
|
253
|
+
|
|
253
254
|
function addItem() {
|
|
254
255
|
invoice.items = [
|
|
255
256
|
...invoice.items,
|
|
256
257
|
{ description: 'New Service', quantity: 1, unitPrice: 99 }
|
|
257
258
|
];
|
|
258
259
|
}
|
|
259
|
-
|
|
260
|
+
|
|
260
261
|
function markPaid() {
|
|
261
262
|
invoice.status = 'paid';
|
|
262
263
|
}
|
|
263
|
-
|
|
264
|
+
|
|
264
265
|
invoice.addEventListener('invoice-status-change', (e) => {
|
|
265
266
|
console.log('Status changed:', e.detail.oldStatus, '→', e.detail.newStatus);
|
|
266
267
|
});
|