snice 4.27.0 → 4.29.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/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 +4 -0
- package/adapters/react/components.d.ts.map +1 -1
- package/adapters/react/components.js +2 -0
- package/adapters/react/components.js.map +1 -1
- package/adapters/react/components.ts +4 -0
- package/adapters/react/useRequestHandler.d.ts +56 -0
- package/adapters/react/useRequestHandler.js +103 -0
- package/adapters/react/useRequestHandler.js.map +1 -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 +2 -2
- package/dist/cdn/badge/snice-badge.js.map +1 -1
- package/dist/cdn/badge/snice-badge.min.js +2 -2
- package/dist/cdn/badge/snice-badge.min.js.map +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 +11 -10
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +3 -3
- 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/snice-chip.js +1 -1
- package/dist/cdn/chip/snice-chip.min.js +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/snice-date-picker.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +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/snice-draw.js +1 -1
- package/dist/cdn/draw/snice-draw.min.js +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/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 +11 -10
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +5 -5
- 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/snice-message-strip.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +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/snice-paint.js +1 -1
- package/dist/cdn/paint/snice-paint.min.js +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/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 +152 -62
- 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 +152 -61
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +8 -8
- 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 +11 -10
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +73 -73
- 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/snice-tag.js +1 -1
- package/dist/cdn/tag/snice-tag.min.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +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/snice-time-picker.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +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/snice-toast.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js +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/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/badge/snice-badge.js +1 -1
- package/dist/components/badge/snice-badge.js.map +1 -1
- 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.d.ts +2 -2
- package/dist/components/button/snice-button.js +11 -10
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/create-request-handler.d.ts +42 -0
- package/dist/index.cjs +149 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +149 -59
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +149 -58
- package/dist/index.iife.js.map +1 -1
- package/dist/parts.d.ts +9 -7
- 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/docs/ai/DEVELOPMENT.md +1 -1
- 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/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 +63 -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/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-react-integration-design.md +166 -0
- package/docs/request-response.md +77 -0
- package/package.json +20 -10
|
@@ -5,13 +5,13 @@ Slide-out panel from any viewport side with focus trap and dismissal options. Su
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
7
|
```typescript
|
|
8
|
-
open: boolean = false;
|
|
8
|
+
open: boolean = false;
|
|
9
9
|
position: 'left'|'right'|'top'|'bottom' = 'left';
|
|
10
10
|
size: 'small'|'medium'|'large'|'xl'|'xxl'|'xxxl'|'full' = 'medium';
|
|
11
11
|
inline: boolean = false; // Sit in document flow (no overlay/backdrop/focus-trap)
|
|
12
12
|
breakpoint: number = 0; // Viewport px width: above → inline, below → overlay
|
|
13
|
-
noHeader: boolean = false;
|
|
14
|
-
noFooter: boolean = false;
|
|
13
|
+
noHeader: boolean = false; // attribute: no-header
|
|
14
|
+
noFooter: boolean = false; // attribute: no-footer
|
|
15
15
|
noBackdrop: boolean = false; // attribute: no-backdrop
|
|
16
16
|
noBackdropDismiss: boolean = false; // attribute: no-backdrop-dismiss
|
|
17
17
|
noEscapeDismiss: boolean = false; // attribute: no-escape-dismiss
|
|
@@ -23,30 +23,42 @@ contained: boolean = false; // Position relative to parent
|
|
|
23
23
|
|
|
24
24
|
## Methods
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
toggle() // Toggle drawer
|
|
30
|
-
```
|
|
26
|
+
- `show()` - Open drawer
|
|
27
|
+
- `hide()` - Close drawer
|
|
28
|
+
- `toggle()` - Toggle drawer
|
|
31
29
|
|
|
32
30
|
## Events
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
'drawer-close' // { drawer }
|
|
37
|
-
```
|
|
32
|
+
- `drawer-open` → `{ drawer }` - Drawer opened
|
|
33
|
+
- `drawer-close` → `{ drawer }` - Drawer closed
|
|
38
34
|
|
|
39
35
|
## Slots
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
- `(default)` - Body content
|
|
38
|
+
- `title` - Header title text
|
|
39
|
+
- `footer` - Footer actions
|
|
40
|
+
|
|
41
|
+
## CSS Custom Properties
|
|
42
|
+
|
|
43
|
+
- `--drawer-width-small` through `--drawer-width-xxxl` - Width per size
|
|
44
|
+
- `--drawer-height-small` through `--drawer-height-xxxl` - Height per size (top/bottom)
|
|
45
|
+
- `--drawer-bg` - Background (default: `var(--snice-color-background, white)`)
|
|
46
|
+
- `--drawer-shadow` - Shadow (default: `var(--snice-shadow-lg)`)
|
|
47
|
+
- `--drawer-backdrop` - Backdrop color (default: `rgba(0, 0, 0, 0.5)`)
|
|
48
|
+
- `--drawer-transition` - Transition timing
|
|
49
|
+
- `--drawer-z-index` - Z-index (default: `1050`)
|
|
50
|
+
|
|
51
|
+
## CSS Parts
|
|
52
|
+
|
|
53
|
+
- `backdrop` - Backdrop overlay
|
|
54
|
+
- `base` - Drawer panel container
|
|
55
|
+
- `header` - Header section
|
|
56
|
+
- `title` - Title wrapper (h2)
|
|
57
|
+
- `close` - Close button
|
|
58
|
+
- `body` - Body content section
|
|
59
|
+
- `footer` - Footer section
|
|
48
60
|
|
|
49
|
-
## Usage
|
|
61
|
+
## Basic Usage
|
|
50
62
|
|
|
51
63
|
```html
|
|
52
64
|
<snice-drawer id="menu" position="left">
|
|
@@ -66,10 +78,9 @@ drawer.toggle();
|
|
|
66
78
|
|
|
67
79
|
## Inline Mode
|
|
68
80
|
|
|
69
|
-
Renders in document flow — no overlay, backdrop, focus trap, or escape handler.
|
|
81
|
+
Renders in document flow — no overlay, backdrop, focus trap, or escape handler.
|
|
70
82
|
|
|
71
83
|
```html
|
|
72
|
-
<!-- Always-visible sidebar -->
|
|
73
84
|
<div style="display:flex; height:100vh">
|
|
74
85
|
<snice-drawer inline position="left" size="small">
|
|
75
86
|
<span slot="title">Sidebar</span>
|
|
@@ -79,73 +90,33 @@ Renders in document flow — no overlay, backdrop, focus trap, or escape handler
|
|
|
79
90
|
</div>
|
|
80
91
|
```
|
|
81
92
|
|
|
82
|
-
- CSS uses border separator instead of box-shadow
|
|
83
|
-
- `open` property is ignored (always visible)
|
|
84
|
-
- Border direction matches `position` (left→border-right, right→border-left, etc.)
|
|
85
|
-
|
|
86
93
|
## Breakpoint Mode
|
|
87
94
|
|
|
88
|
-
Responsive
|
|
95
|
+
Responsive: inline above breakpoint, overlay below. Uses `window.matchMedia`.
|
|
89
96
|
|
|
90
97
|
```html
|
|
91
|
-
|
|
92
|
-
<snice-drawer breakpoint="768" position="left" size="small">
|
|
93
|
-
<span slot="title">Navigation</span>
|
|
94
|
-
...
|
|
95
|
-
</snice-drawer>
|
|
98
|
+
<snice-drawer breakpoint="768" position="left" size="small">...</snice-drawer>
|
|
96
99
|
```
|
|
97
100
|
|
|
98
|
-
- Sets/removes the `inline` attribute dynamically via matchMedia listener
|
|
99
|
-
- Crossing the breakpoint while open: overlay behaviors torn down/set up automatically
|
|
100
|
-
- Listener cleaned up on `@dispose()`
|
|
101
|
-
- `@watch('breakpoint')` tears down old listener and sets up new one when value changes
|
|
102
|
-
|
|
103
101
|
## Push Content with `<snice-drawer-target>`
|
|
104
102
|
|
|
105
|
-
Use `<snice-drawer-target>` to wrap content that should be pushed when a drawer opens. The target watches the drawer's `[open]` attribute via MutationObserver and applies a `translateX()` or `translateY()` transform.
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
// snice-drawer-target properties
|
|
109
|
-
for: string = ''; // ID of the linked drawer
|
|
110
|
-
push: string = ''; // Current push amount (e.g. '240px'), set automatically
|
|
111
|
-
```
|
|
112
|
-
|
|
113
103
|
```html
|
|
114
|
-
<snice-drawer id="nav" position="left" size="small" contained push-content>
|
|
115
|
-
<span slot="title">Nav</span>
|
|
116
|
-
</snice-drawer>
|
|
104
|
+
<snice-drawer id="nav" position="left" size="small" contained push-content>...</snice-drawer>
|
|
117
105
|
<snice-drawer-target for="nav">
|
|
118
|
-
<main>
|
|
106
|
+
<main>Content slides when drawer opens</main>
|
|
119
107
|
</snice-drawer-target>
|
|
120
108
|
```
|
|
121
109
|
|
|
122
|
-
|
|
123
|
-
- Left/right drawers → `translateX`, top/bottom → `translateY`
|
|
124
|
-
- Transition: `transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)`
|
|
125
|
-
- Resets parent `scrollLeft`/`scrollTop` after transform change (prevents `overflow:hidden` scroll bug)
|
|
126
|
-
- Cleanup on disconnect via `@dispose()`
|
|
127
|
-
|
|
128
|
-
## Features
|
|
129
|
-
|
|
130
|
-
- Slides from any edge (left, right, top, bottom)
|
|
131
|
-
- Multiple size options
|
|
132
|
-
- Focus trap with Tab navigation
|
|
133
|
-
- Focus restoration on close
|
|
134
|
-
- Backdrop click to close
|
|
135
|
-
- Escape key to close
|
|
136
|
-
- Push content mode via `<snice-drawer-target>`
|
|
137
|
-
- Persistent mode (no close button)
|
|
138
|
-
- Inline mode (persistent sidebar in document flow)
|
|
139
|
-
- Breakpoint mode (responsive inline ↔ overlay switching)
|
|
140
|
-
- Contained mode uses `overflow: clip` to prevent scroll bugs during transform animations
|
|
141
|
-
- ARIA attributes (role, aria-modal, aria-hidden)
|
|
110
|
+
Target properties: `for: string` (drawer ID), `push: string` (auto-set amount).
|
|
142
111
|
|
|
143
|
-
##
|
|
112
|
+
## Keyboard Navigation
|
|
144
113
|
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
114
|
+
- Escape closes drawer (unless no-escape-dismiss/persistent)
|
|
115
|
+
- Tab/Shift+Tab cycles focusable elements (focus trapped)
|
|
116
|
+
|
|
117
|
+
## Accessibility
|
|
118
|
+
|
|
119
|
+
- role=dialog, aria-modal=true on drawer
|
|
120
|
+
- aria-hidden reflects visibility
|
|
121
|
+
- Focus trap + focus restoration
|
|
122
|
+
- Contained mode skips focus trap and body scroll lock
|
|
@@ -13,15 +13,15 @@ actionText: string = ''; // attribute: action-text
|
|
|
13
13
|
actionHref: string = ''; // attribute: action-href
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
## Events
|
|
17
|
+
|
|
18
|
+
- `empty-state-action` → `{ emptyState: SniceEmptyStateElement }`
|
|
19
|
+
|
|
16
20
|
## Slots
|
|
17
21
|
|
|
18
22
|
- `icon` - Custom icon content (overrides `icon` property)
|
|
19
23
|
- (default) - Custom content below the action button
|
|
20
24
|
|
|
21
|
-
## Events
|
|
22
|
-
|
|
23
|
-
- `empty-state-action` → `{ emptyState }`
|
|
24
|
-
|
|
25
25
|
## CSS Parts
|
|
26
26
|
|
|
27
27
|
- `container` - Outer empty state wrapper
|
|
@@ -30,39 +30,25 @@ actionHref: string = ''; // attribute: action-href
|
|
|
30
30
|
- `description` - Description paragraph
|
|
31
31
|
- `action` - Action button or link
|
|
32
32
|
|
|
33
|
-
## Usage
|
|
33
|
+
## Basic Usage
|
|
34
34
|
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
```typescript
|
|
36
|
+
import 'snice/components/empty-state/snice-empty-state';
|
|
37
|
+
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
```html
|
|
40
40
|
<snice-empty-state
|
|
41
41
|
icon="🔍"
|
|
42
42
|
title="No results found"
|
|
43
43
|
description="Try adjusting your search"
|
|
44
|
+
action-text="Clear Search"
|
|
44
45
|
></snice-empty-state>
|
|
45
46
|
|
|
46
|
-
<!-- ⚠️ icon="search_off" renders as PLAIN TEXT. Use the icon slot for icon fonts. -->
|
|
47
|
-
|
|
48
47
|
<!-- Icon SLOT — for Material Symbols, Font Awesome, SVGs -->
|
|
49
48
|
<snice-empty-state title="No results">
|
|
50
49
|
<span slot="icon" class="material-symbols-outlined" style="font-size: 4rem;">search_off</span>
|
|
51
50
|
</snice-empty-state>
|
|
52
51
|
|
|
53
|
-
<!-- Icon PROPERTY — for emoji, URLs, image files only -->
|
|
54
|
-
<snice-empty-state
|
|
55
|
-
icon="/icons/empty.svg"
|
|
56
|
-
title="No items"
|
|
57
|
-
></snice-empty-state>
|
|
58
|
-
|
|
59
|
-
<!-- With action -->
|
|
60
|
-
<snice-empty-state
|
|
61
|
-
title="No items yet"
|
|
62
|
-
description="Get started by creating your first item"
|
|
63
|
-
action-text="Create Item"
|
|
64
|
-
></snice-empty-state>
|
|
65
|
-
|
|
66
52
|
<!-- With link -->
|
|
67
53
|
<snice-empty-state
|
|
68
54
|
title="Page not found"
|
|
@@ -72,11 +58,7 @@ actionHref: string = ''; // attribute: action-href
|
|
|
72
58
|
|
|
73
59
|
<!-- Sizes -->
|
|
74
60
|
<snice-empty-state size="small"></snice-empty-state>
|
|
75
|
-
<snice-empty-state size="medium"></snice-empty-state>
|
|
76
61
|
<snice-empty-state size="large"></snice-empty-state>
|
|
77
|
-
|
|
78
|
-
<!-- Events -->
|
|
79
|
-
<snice-empty-state id="empty" action-text="Click"></snice-empty-state>
|
|
80
62
|
```
|
|
81
63
|
|
|
82
64
|
```typescript
|
|
@@ -84,19 +66,3 @@ empty.addEventListener('empty-state-action', () => {
|
|
|
84
66
|
console.log('Action clicked');
|
|
85
67
|
});
|
|
86
68
|
```
|
|
87
|
-
|
|
88
|
-
```html
|
|
89
|
-
|
|
90
|
-
<!-- Custom content -->
|
|
91
|
-
<snice-empty-state title="No data">
|
|
92
|
-
<div>Custom HTML content here</div>
|
|
93
|
-
</snice-empty-state>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Features
|
|
97
|
-
|
|
98
|
-
- Customizable icon (URL, image files, emoji), title, description. Use slot for icon fonts.
|
|
99
|
-
- Optional action button or link
|
|
100
|
-
- 3 sizes
|
|
101
|
-
- Slot for custom content
|
|
102
|
-
- Accessible
|
|
@@ -5,42 +5,34 @@ Professional estimate/quote document with from/to parties, line items, optional
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
7
|
```typescript
|
|
8
|
-
estimateNumber: string = '' // attribute: estimate-number
|
|
9
|
-
date: string = ''
|
|
10
|
-
expiryDate: string = '' // attribute: expiry-date
|
|
11
|
-
status: EstimateStatus = 'draft' // 'draft'
|
|
12
|
-
currency: string = '$'
|
|
13
|
-
taxRate: number = 0 // attribute: tax-rate
|
|
14
|
-
discount: number = 0
|
|
15
|
-
notes: string = ''
|
|
16
|
-
terms: string = ''
|
|
17
|
-
variant: EstimateVariant = 'standard' // 'standard'
|
|
18
|
-
showQr: boolean = false // attribute: show-qr
|
|
19
|
-
qrData: string = '' // attribute: qr-data
|
|
20
|
-
qrPosition: QrPosition = 'top-right'
|
|
21
|
-
from: EstimateParty | null = null //
|
|
22
|
-
to: EstimateParty | null = null //
|
|
23
|
-
items: EstimateItem[] = [] //
|
|
8
|
+
estimateNumber: string = ''; // attribute: estimate-number
|
|
9
|
+
date: string = '';
|
|
10
|
+
expiryDate: string = ''; // attribute: expiry-date
|
|
11
|
+
status: EstimateStatus = 'draft'; // 'draft'|'sent'|'accepted'|'declined'|'expired'
|
|
12
|
+
currency: string = '$';
|
|
13
|
+
taxRate: number = 0; // attribute: tax-rate
|
|
14
|
+
discount: number = 0;
|
|
15
|
+
notes: string = '';
|
|
16
|
+
terms: string = '';
|
|
17
|
+
variant: EstimateVariant = 'standard'; // 'standard'|'comparison'|'professional'|'creative'|'minimal'
|
|
18
|
+
showQr: boolean = false; // attribute: show-qr
|
|
19
|
+
qrData: string = ''; // attribute: qr-data
|
|
20
|
+
qrPosition: QrPosition = 'top-right'; // attribute: qr-position — 'top-right'|'bottom-right'|'footer'
|
|
21
|
+
from: EstimateParty | null = null; // JS only
|
|
22
|
+
to: EstimateParty | null = null; // JS only
|
|
23
|
+
items: EstimateItem[] = []; // JS only
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Methods
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
interface EstimateItem {
|
|
37
|
-
description: string;
|
|
38
|
-
quantity: number;
|
|
39
|
-
unitPrice: number;
|
|
40
|
-
optional?: boolean; // Item can be toggled on/off
|
|
41
|
-
included?: boolean; // Whether optional item is included
|
|
42
|
-
}
|
|
43
|
-
```
|
|
28
|
+
- `print()` - Trigger browser print
|
|
29
|
+
- `toJSON(): EstimateJSON` - Returns full estimate data with computed totals
|
|
30
|
+
|
|
31
|
+
## Events
|
|
32
|
+
|
|
33
|
+
- `estimate-accept` → `{ estimateNumber: string; items: EstimateItem[]; total: number }`
|
|
34
|
+
- `estimate-decline` → `{ estimateNumber: string }`
|
|
35
|
+
- `item-toggle` → `{ index: number; item: EstimateItem; included: boolean }`
|
|
44
36
|
|
|
45
37
|
## Slots
|
|
46
38
|
|
|
@@ -48,26 +40,19 @@ interface EstimateItem {
|
|
|
48
40
|
- `qr` - Custom QR code content
|
|
49
41
|
- `footer` - Footer content
|
|
50
42
|
|
|
51
|
-
##
|
|
52
|
-
|
|
53
|
-
- `estimate-accept` → `{ estimateNumber: string; items: EstimateItem[]; total: number }`
|
|
54
|
-
- `estimate-decline` → `{ estimateNumber: string }`
|
|
55
|
-
- `item-toggle` → `{ index: number; item: EstimateItem; included: boolean }`
|
|
43
|
+
## CSS Parts
|
|
56
44
|
|
|
57
|
-
|
|
45
|
+
`base`, `header`, `logo`, `title`, `status`, `expiry`, `expiry-date`, `meta`, `parties`, `party`, `party-label`, `party-name`, `party-detail`, `table`, `table-header`, `table-row`, `table-cell`, `item-toggle`, `summary`, `subtotal`, `discount-row`, `tax-row`, `total`, `notes`, `notes-label`, `notes-content`, `terms`, `actions`, `accept-button`, `decline-button`, `footer`, `qr-container`, `qr`, `comparison`, `option`, `option-button`
|
|
58
46
|
|
|
59
|
-
|
|
60
|
-
- `toJSON()` - Returns full estimate data with computed totals
|
|
47
|
+
## CSS Custom Properties
|
|
61
48
|
|
|
62
|
-
|
|
49
|
+
`--estimate-max-width`, `--estimate-bg`, `--estimate-border`, `--estimate-text`, `--estimate-accent`, `--estimate-header-padding`, `--estimate-section-padding`, `--estimate-radius`, `--estimate-title-size`, `--estimate-accept-bg`, `--estimate-decline-text`, `--estimate-total-bg`, `--estimate-qr-size`
|
|
63
50
|
|
|
64
|
-
|
|
65
|
-
- `comparison` - Card-based option selector (one card per item)
|
|
66
|
-
- `professional` - Dark header gradient, shadow, accent labels
|
|
67
|
-
- `creative` - Gradient header, rounded pill buttons, vibrant colors
|
|
68
|
-
- `minimal` - No borders/shadows, flat typography, reduced spacing
|
|
51
|
+
## Basic Usage
|
|
69
52
|
|
|
70
|
-
|
|
53
|
+
```typescript
|
|
54
|
+
import 'snice/components/estimate/snice-estimate';
|
|
55
|
+
```
|
|
71
56
|
|
|
72
57
|
```html
|
|
73
58
|
<snice-estimate estimate-number="EST-001" date="2026-01-15" status="sent" tax-rate="10">
|
|
@@ -82,16 +67,6 @@ est.items = [
|
|
|
82
67
|
{ description: 'Brand Identity', quantity: 1, unitPrice: 5000 },
|
|
83
68
|
{ description: 'SEO Audit', quantity: 1, unitPrice: 1500, optional: true, included: false }
|
|
84
69
|
];
|
|
85
|
-
est.terms = 'Payment due within 30 days';
|
|
86
|
-
|
|
87
70
|
est.addEventListener('estimate-accept', e => console.log('Accepted:', e.detail));
|
|
88
71
|
est.addEventListener('item-toggle', e => console.log('Item toggled:', e.detail));
|
|
89
72
|
```
|
|
90
|
-
|
|
91
|
-
<!-- Comparison variant -->
|
|
92
|
-
<snice-estimate variant="comparison"></snice-estimate>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## CSS Parts
|
|
96
|
-
|
|
97
|
-
`base`, `header`, `logo`, `title`, `status`, `expiry`, `expiry-date`, `meta`, `parties`, `party`, `party-label`, `party-name`, `party-detail`, `table`, `table-header`, `table-row`, `table-cell`, `item-toggle`, `summary`, `subtotal`, `discount-row`, `tax-row`, `total`, `notes`, `notes-label`, `notes-content`, `terms`, `actions`, `accept-button`, `decline-button`, `footer`, `qr-container`, `qr`, `comparison`, `option`, `option-button`
|
|
@@ -18,128 +18,76 @@ autoUpload: boolean = true; // attribute: auto-upload
|
|
|
18
18
|
showDropzone: boolean = true; // attribute: show-dropzone
|
|
19
19
|
showAddButton: boolean = false; // attribute: show-add-button
|
|
20
20
|
showHeader: boolean = true; // attribute: show-header
|
|
21
|
-
files: GalleryFile[]; // read-only
|
|
21
|
+
files: GalleryFile[]; // read-only getter
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Methods
|
|
25
25
|
|
|
26
|
+
Getters:
|
|
26
27
|
- `files: GalleryFile[]` - Get all files
|
|
27
28
|
- `customActions: CustomAction[]` - Get all custom actions
|
|
28
|
-
- `getFile(fileId): GalleryFile | undefined`
|
|
29
|
-
- `getCustomAction(actionId): CustomAction | undefined`
|
|
30
|
-
- `isPending(fileId): boolean`
|
|
31
|
-
- `isUploading(fileId): boolean`
|
|
32
|
-
- `isPaused(fileId): boolean`
|
|
33
|
-
- `isCompleted(fileId): boolean`
|
|
34
|
-
- `hasError(fileId): boolean`
|
|
35
|
-
- `canAddFiles(): boolean`
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- `
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- `
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- `
|
|
49
|
-
- `
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
54
|
-
- `retryAll()` - Retry all errored files
|
|
55
|
-
- `cancelAll()` - Cancel all active uploads
|
|
56
|
-
|
|
57
|
-
## Custom Actions
|
|
58
|
-
|
|
59
|
-
- `addCustomAction(icon: string, text: string): string` - Add custom action, returns actionId
|
|
60
|
-
- `removeCustomAction(actionId: string)` - Remove action
|
|
61
|
-
- `clearCustomActions()` - Remove all actions
|
|
62
|
-
|
|
63
|
-
## Utility
|
|
64
|
-
|
|
65
|
-
- `openFilePicker()` - Open file picker dialog
|
|
66
|
-
- `setFileBadge(fileId: string, badge: string, position?: 'top-left'|'top-right'|'bottom-left'|'bottom-right')` - Add badge overlay to file preview (supports HTML)
|
|
67
|
-
- `removeFileBadge(fileId: string)` - Remove badge from file
|
|
29
|
+
- `getFile(fileId): GalleryFile | undefined`
|
|
30
|
+
- `getCustomAction(actionId): CustomAction | undefined`
|
|
31
|
+
- `isPending(fileId): boolean`
|
|
32
|
+
- `isUploading(fileId): boolean`
|
|
33
|
+
- `isPaused(fileId): boolean`
|
|
34
|
+
- `isCompleted(fileId): boolean`
|
|
35
|
+
- `hasError(fileId): boolean`
|
|
36
|
+
- `canAddFiles(): boolean`
|
|
37
|
+
|
|
38
|
+
File management:
|
|
39
|
+
- `addFiles(files: FileList | File[])`
|
|
40
|
+
- `addFileWithPreview(file: File, previewDataUrl: string)`
|
|
41
|
+
- `removeFile(fileId: string)`
|
|
42
|
+
- `clear()` / `clearCompleted()` / `clearErrors()`
|
|
43
|
+
|
|
44
|
+
Upload control:
|
|
45
|
+
- `pauseUpload(fileId)` / `resumeUpload(fileId)` / `retryUpload(fileId)` / `cancelUpload(fileId)`
|
|
46
|
+
- `pauseAll()` / `resumeAll()` / `retryAll()` / `cancelAll()`
|
|
47
|
+
|
|
48
|
+
Custom actions:
|
|
49
|
+
- `addCustomAction(icon: string, text: string): string`
|
|
50
|
+
- `removeCustomAction(actionId)` / `clearCustomActions()`
|
|
51
|
+
|
|
52
|
+
Utility:
|
|
53
|
+
- `openFilePicker()`
|
|
54
|
+
- `setFileBadge(fileId, badge, position?)` / `removeFileBadge(fileId)`
|
|
68
55
|
|
|
69
56
|
## Events
|
|
70
57
|
|
|
71
|
-
- `files-change`
|
|
72
|
-
- `upload-progress`
|
|
73
|
-
- `upload-complete`
|
|
74
|
-
- `upload-error`
|
|
75
|
-
- `upload-pause`
|
|
76
|
-
- `file-remove`
|
|
77
|
-
- `custom-action-click`
|
|
78
|
-
- `gallery-error`
|
|
58
|
+
- `files-change` → `{ files, component }`
|
|
59
|
+
- `upload-progress` → `{ file, progress, component }`
|
|
60
|
+
- `upload-complete` → `{ file, response: UploadResponse, component }`
|
|
61
|
+
- `upload-error` → `{ file, error, component }`
|
|
62
|
+
- `upload-pause` → `{ file, component }`
|
|
63
|
+
- `file-remove` → `{ file, component }`
|
|
64
|
+
- `custom-action-click` → `{ actionId, component }`
|
|
65
|
+
- `gallery-error` → `{ message, component }`
|
|
79
66
|
|
|
80
|
-
##
|
|
67
|
+
## CSS Parts
|
|
81
68
|
|
|
82
|
-
|
|
83
|
-
interface GalleryFile {
|
|
84
|
-
id: string;
|
|
85
|
-
file: File;
|
|
86
|
-
preview?: string;
|
|
87
|
-
uploadProgress: number;
|
|
88
|
-
uploadStatus: 'pending'|'uploading'|'paused'|'completed'|'error';
|
|
89
|
-
error?: string;
|
|
90
|
-
badge?: string; // HTML content for badge overlay
|
|
91
|
-
badgePosition?: 'top-left'|'top-right'|'bottom-left'|'bottom-right';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
interface UploadRequest {
|
|
95
|
-
file: File;
|
|
96
|
-
fileId: string;
|
|
97
|
-
onProgress?: (progress: number) => void;
|
|
98
|
-
signal?: AbortSignal;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
interface UploadResponse {
|
|
102
|
-
success: boolean;
|
|
103
|
-
fileId: string;
|
|
104
|
-
url?: string;
|
|
105
|
-
error?: string;
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**CSS Parts:**
|
|
110
|
-
- `base` - Outer gallery container div
|
|
69
|
+
- `base` - Outer gallery container
|
|
111
70
|
- `dropzone` - Drag-and-drop upload zone
|
|
112
71
|
- `gallery` - File thumbnails grid/list area
|
|
113
72
|
|
|
114
|
-
##
|
|
115
|
-
|
|
116
|
-
Uses `@request/@respond` pattern (`file-gallery-upload`). Handler receives `UploadRequest`, returns `UploadResponse`.
|
|
73
|
+
## Basic Usage
|
|
117
74
|
|
|
118
|
-
|
|
75
|
+
```typescript
|
|
76
|
+
import 'snice/components/file-gallery/snice-file-gallery';
|
|
77
|
+
```
|
|
119
78
|
|
|
120
79
|
```html
|
|
121
|
-
<!-- Basic -->
|
|
122
80
|
<snice-file-gallery></snice-file-gallery>
|
|
123
|
-
|
|
124
|
-
<!-- Images only -->
|
|
125
81
|
<snice-file-gallery accept="image/*"></snice-file-gallery>
|
|
126
|
-
|
|
127
|
-
<!-- Manual upload -->
|
|
128
82
|
<snice-file-gallery auto-upload="false"></snice-file-gallery>
|
|
129
|
-
|
|
130
|
-
<!-- Limits -->
|
|
131
83
|
<snice-file-gallery max-files="3" max-size="2097152"></snice-file-gallery>
|
|
132
|
-
|
|
133
|
-
<!-- List view -->
|
|
134
84
|
<snice-file-gallery view="list"></snice-file-gallery>
|
|
135
|
-
|
|
136
|
-
<!-- Add button mode -->
|
|
137
|
-
<snice-file-gallery show-dropzone="false" show-add-button="true" max-files="6"></snice-file-gallery>
|
|
138
|
-
|
|
139
|
-
<!-- Events -->
|
|
85
|
+
<snice-file-gallery show-dropzone="false" show-add-button="true"></snice-file-gallery>
|
|
140
86
|
```
|
|
141
87
|
|
|
142
88
|
```typescript
|
|
143
|
-
gallery.addEventListener('files-change',
|
|
144
|
-
gallery.addEventListener('upload-complete',
|
|
89
|
+
gallery.addEventListener('files-change', e => console.log(e.detail.files));
|
|
90
|
+
gallery.addEventListener('upload-complete', e => console.log(e.detail.response));
|
|
145
91
|
```
|
|
92
|
+
|
|
93
|
+
Uses `@request/@respond` pattern (`file-gallery-upload`). Handler receives `UploadRequest { file, fileId, onProgress?, signal? }`, returns `UploadResponse { success, fileId, url?, error? }`.
|