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
|
@@ -1,152 +1,90 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/product-card.md -->
|
|
2
2
|
|
|
3
|
-
# Product Card
|
|
3
|
+
# Product Card
|
|
4
|
+
`<snice-product-card>`
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
A product display card with image gallery, pricing, star ratings, variant selectors, and an add-to-cart button. Supports multiple layout variants.
|
|
6
7
|
|
|
7
8
|
## Table of Contents
|
|
8
|
-
- [Importing](#importing)
|
|
9
9
|
- [Properties](#properties)
|
|
10
10
|
- [Events](#events)
|
|
11
11
|
- [CSS Parts](#css-parts)
|
|
12
12
|
- [Basic Usage](#basic-usage)
|
|
13
13
|
- [Examples](#examples)
|
|
14
14
|
- [Accessibility](#accessibility)
|
|
15
|
-
|
|
16
|
-
## Importing
|
|
17
|
-
|
|
18
|
-
**ESM (bundler)**
|
|
19
|
-
```typescript
|
|
20
|
-
import 'snice/components/product-card/snice-product-card';
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**CDN**
|
|
24
|
-
```html
|
|
25
|
-
<script src="snice-runtime.min.js"></script>
|
|
26
|
-
<script src="snice-product-card.min.js"></script>
|
|
27
|
-
```
|
|
15
|
+
- [Data Types](#data-types)
|
|
28
16
|
|
|
29
17
|
## Properties
|
|
30
18
|
|
|
31
|
-
| Property |
|
|
32
|
-
|
|
33
|
-
| `name` | `
|
|
34
|
-
| `price` | `
|
|
35
|
-
| `salePrice`
|
|
36
|
-
| `currency` | `
|
|
37
|
-
| `images` |
|
|
38
|
-
| `rating` | `
|
|
39
|
-
| `reviewCount`
|
|
40
|
-
| `variants` |
|
|
41
|
-
| `inStock`
|
|
42
|
-
| `variant` | `
|
|
43
|
-
| `badge` | `
|
|
44
|
-
| `badgeVariant`
|
|
45
|
-
| `loading` | `
|
|
46
|
-
| `favorite` | `
|
|
47
|
-
| `stockCount`
|
|
48
|
-
|
|
49
|
-
### ProductVariant Interface
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
interface ProductVariant {
|
|
53
|
-
type: string; // Variant group name, e.g. 'Size', 'Color'
|
|
54
|
-
options: string[]; // Available options, e.g. ['S', 'M', 'L'] or ['#000', '#fff']
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
When the `type` is `'Color'` (case-insensitive), options are rendered as color swatches instead of text chips.
|
|
19
|
+
| Property | Type | Default | Description |
|
|
20
|
+
|----------|------|---------|-------------|
|
|
21
|
+
| `name` | `string` | `''` | Product name |
|
|
22
|
+
| `price` | `number` | `0` | Regular price |
|
|
23
|
+
| `salePrice` (attr: `sale-price`) | `number \| null` | `null` | Sale price (shows strikethrough on original) |
|
|
24
|
+
| `currency` | `string` | `'$'` | Currency symbol |
|
|
25
|
+
| `images` | `string[]` | `[]` | Image URLs (gallery navigation for multiple). Set via JS. |
|
|
26
|
+
| `rating` | `number` | `0` | Star rating (0-5, supports half stars) |
|
|
27
|
+
| `reviewCount` (attr: `review-count`) | `number` | `0` | Number of reviews |
|
|
28
|
+
| `variants` | `ProductVariant[]` | `[]` | Variant selector groups. Set via JS. |
|
|
29
|
+
| `inStock` (attr: `in-stock`) | `boolean` | `true` | Whether product is in stock |
|
|
30
|
+
| `variant` | `'vertical' \| 'horizontal' \| 'compact' \| 'featured' \| 'minimal' \| 'grid'` | `'vertical'` | Card layout variant |
|
|
31
|
+
| `badge` | `string` | `''` | Badge text (e.g. "SALE", "NEW") |
|
|
32
|
+
| `badgeVariant` (attr: `badge-variant`) | `'sale' \| 'new' \| 'featured'` | `'sale'` | Badge visual style |
|
|
33
|
+
| `loading` | `boolean` | `false` | Shows skeleton loading state |
|
|
34
|
+
| `favorite` | `boolean` | `false` | Favorite/heart toggle state |
|
|
35
|
+
| `stockCount` (attr: `stock-count`) | `number` | `-1` | Stock count (-1 hides, <5 shows urgency) |
|
|
59
36
|
|
|
60
37
|
## Events
|
|
61
38
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
price: number; // Effective price (sale price if available)
|
|
70
|
-
salePrice: number | null; // Sale price
|
|
71
|
-
selectedVariants: Record<string, string>; // e.g. { Size: 'M', Color: '#000' }
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
#### `variant-select`
|
|
76
|
-
Fired when a variant option is selected.
|
|
39
|
+
| Event | Detail | Description |
|
|
40
|
+
|-------|--------|-------------|
|
|
41
|
+
| `add-to-cart` | `{ name, price, salePrice, selectedVariants }` | Fired when the add-to-cart button is clicked |
|
|
42
|
+
| `variant-select` | `{ type: string, value: string }` | Fired when a variant option is selected |
|
|
43
|
+
| `image-click` | `{ index: number, src: string }` | Fired when the gallery image is clicked |
|
|
44
|
+
| `favorite` | `{ favorited: boolean }` | Fired when the favorite button is toggled |
|
|
45
|
+
| `quick-view` | `void` | Fired when the quick view overlay is clicked |
|
|
77
46
|
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
{
|
|
81
|
-
type: string; // Variant group name
|
|
82
|
-
value: string; // Selected option value
|
|
83
|
-
}
|
|
84
|
-
```
|
|
47
|
+
## CSS Parts
|
|
85
48
|
|
|
86
|
-
|
|
87
|
-
|
|
49
|
+
Style internal elements from outside the shadow DOM using `::part()`.
|
|
50
|
+
|
|
51
|
+
| Part | Element | Description |
|
|
52
|
+
|------|---------|-------------|
|
|
53
|
+
| `base` | `<div>` | The outer card container |
|
|
54
|
+
| `gallery` | `<div>` | Image gallery area |
|
|
55
|
+
| `body` | `<div>` | Card body content |
|
|
56
|
+
| `title` | `<h3>` | Product name heading |
|
|
57
|
+
| `rating` | `<div>` | Star rating area |
|
|
58
|
+
| `stars` | `<div>` | Star rating container |
|
|
59
|
+
| `price` | `<div>` | Price display area |
|
|
60
|
+
| `price-current` | `<span>` | Current price display |
|
|
61
|
+
| `price-original` | `<span>` | Original price (strikethrough on sale) |
|
|
62
|
+
| `discount` | `<span>` | Discount percentage badge |
|
|
63
|
+
| `stock` | `<div>` | Stock status indicator |
|
|
64
|
+
| `variants` | `<div>` | Variant selectors area |
|
|
65
|
+
| `variant-group` | `<div>` | Variant selector group |
|
|
66
|
+
| `variant-option` | `<button>` | Individual variant option button |
|
|
67
|
+
| `cta` | `<button>` | Add-to-cart button |
|
|
68
|
+
| `badge` | `<span>` | Product badge |
|
|
69
|
+
| `favorite-btn` | `<button>` | Favorite/heart button |
|
|
70
|
+
| `image` | `<img>` | Gallery image element |
|
|
88
71
|
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
{
|
|
92
|
-
index: number; // Current image index
|
|
93
|
-
src: string; // Image URL
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
#### `favorite`
|
|
98
|
-
Fired when the favorite/heart button is toggled.
|
|
72
|
+
## Basic Usage
|
|
99
73
|
|
|
100
|
-
**Event Detail:**
|
|
101
74
|
```typescript
|
|
102
|
-
|
|
103
|
-
favorited: boolean; // Whether the product is now favorited
|
|
104
|
-
}
|
|
75
|
+
import 'snice/components/product-card/snice-product-card';
|
|
105
76
|
```
|
|
106
77
|
|
|
107
|
-
#### `quick-view`
|
|
108
|
-
Fired when the quick view overlay is clicked.
|
|
109
|
-
|
|
110
|
-
**Event Detail:** `void`
|
|
111
|
-
|
|
112
|
-
## CSS Parts
|
|
113
|
-
|
|
114
|
-
| Part | Description |
|
|
115
|
-
|------|-------------|
|
|
116
|
-
| `base` | The outer card container |
|
|
117
|
-
| `gallery` | Image gallery area |
|
|
118
|
-
| `body` | Card body content |
|
|
119
|
-
| `title` | Product name heading |
|
|
120
|
-
| `rating` | Star rating area |
|
|
121
|
-
| `price` | Price display area |
|
|
122
|
-
| `variants` | Variant selectors area |
|
|
123
|
-
| `cta` | Add-to-cart button |
|
|
124
|
-
| `stock` | Stock status indicator |
|
|
125
|
-
| `badge` | Product badge (SALE, NEW, etc.) |
|
|
126
|
-
| `favorite-btn` | Favorite/heart button |
|
|
127
|
-
| `image` | Gallery image element |
|
|
128
|
-
| `stars` | Star rating container |
|
|
129
|
-
| `price-current` | Current price display |
|
|
130
|
-
| `price-original` | Original price (strikethrough on sale) |
|
|
131
|
-
| `discount` | Discount percentage badge |
|
|
132
|
-
| `variant-group` | Variant selector group |
|
|
133
|
-
| `variant-option` | Individual variant option button |
|
|
134
|
-
|
|
135
|
-
## Basic Usage
|
|
136
|
-
|
|
137
78
|
```html
|
|
138
79
|
<snice-product-card
|
|
139
80
|
name="Running Shoes"
|
|
140
81
|
price="129.99"
|
|
141
82
|
rating="4.5"
|
|
142
|
-
review-count="342"
|
|
83
|
+
review-count="342"
|
|
84
|
+
in-stock>
|
|
143
85
|
</snice-product-card>
|
|
144
86
|
```
|
|
145
87
|
|
|
146
|
-
```typescript
|
|
147
|
-
import 'snice/components/product-card/snice-product-card';
|
|
148
|
-
```
|
|
149
|
-
|
|
150
88
|
## Examples
|
|
151
89
|
|
|
152
90
|
### Sale Price
|
|
@@ -154,77 +92,40 @@ import 'snice/components/product-card/snice-product-card';
|
|
|
154
92
|
Use the `sale-price` attribute to display a sale with the original price crossed out and a discount badge.
|
|
155
93
|
|
|
156
94
|
```html
|
|
157
|
-
<snice-product-card
|
|
158
|
-
name="Premium Sneakers"
|
|
159
|
-
price="149.99"
|
|
160
|
-
sale-price="99.99"
|
|
161
|
-
rating="4.5"
|
|
162
|
-
review-count="128">
|
|
163
|
-
</snice-product-card>
|
|
95
|
+
<snice-product-card name="Premium Sneakers" price="149.99" sale-price="99.99" rating="4.5" review-count="128"></snice-product-card>
|
|
164
96
|
```
|
|
165
97
|
|
|
166
98
|
### Multiple Images
|
|
167
99
|
|
|
168
100
|
Set the `images` property to enable gallery navigation with prev/next buttons and dots.
|
|
169
101
|
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
<script type="module">
|
|
174
|
-
const card = document.getElementById('shoe');
|
|
175
|
-
card.images = ['front.jpg', 'side.jpg', 'back.jpg', 'detail.jpg'];
|
|
176
|
-
</script>
|
|
102
|
+
```typescript
|
|
103
|
+
card.images = ['front.jpg', 'side.jpg', 'back.jpg', 'detail.jpg'];
|
|
177
104
|
```
|
|
178
105
|
|
|
179
106
|
### Variant Selectors
|
|
180
107
|
|
|
181
|
-
Set the `variants` property to add size chips and color swatches.
|
|
182
|
-
|
|
183
|
-
```html
|
|
184
|
-
<snice-product-card id="tshirt" name="Classic T-Shirt" price="29.99"></snice-product-card>
|
|
185
|
-
|
|
186
|
-
<script type="module">
|
|
187
|
-
const card = document.getElementById('tshirt');
|
|
188
|
-
card.images = ['tshirt.jpg'];
|
|
189
|
-
card.variants = [
|
|
190
|
-
{ type: 'Size', options: ['XS', 'S', 'M', 'L', 'XL'] },
|
|
191
|
-
{ type: 'Color', options: ['#1a1a2e', '#e94560', '#0f3460', '#ffffff'] }
|
|
192
|
-
];
|
|
193
|
-
|
|
194
|
-
card.addEventListener('variant-select', (e) => {
|
|
195
|
-
console.log(`Selected ${e.detail.type}: ${e.detail.value}`);
|
|
196
|
-
});
|
|
197
|
-
</script>
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### Horizontal Layout
|
|
108
|
+
Set the `variants` property to add size chips and color swatches. Color variants (type "Color") render as swatches.
|
|
201
109
|
|
|
202
|
-
|
|
110
|
+
```typescript
|
|
111
|
+
card.variants = [
|
|
112
|
+
{ type: 'Size', options: ['XS', 'S', 'M', 'L', 'XL'] },
|
|
113
|
+
{ type: 'Color', options: ['#1a1a2e', '#e94560', '#0f3460', '#ffffff'] }
|
|
114
|
+
];
|
|
203
115
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
name="MacBook Pro"
|
|
208
|
-
price="2499.00"
|
|
209
|
-
sale-price="2199.00"
|
|
210
|
-
rating="4.9"
|
|
211
|
-
review-count="1024">
|
|
212
|
-
</snice-product-card>
|
|
116
|
+
card.addEventListener('variant-select', (e) => {
|
|
117
|
+
console.log(`Selected ${e.detail.type}: ${e.detail.value}`);
|
|
118
|
+
});
|
|
213
119
|
```
|
|
214
120
|
|
|
215
|
-
###
|
|
121
|
+
### Layout Variants
|
|
216
122
|
|
|
217
|
-
Use `variant
|
|
123
|
+
Use the `variant` attribute to change the card layout.
|
|
218
124
|
|
|
219
125
|
```html
|
|
220
|
-
<snice-product-card
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
price="59.99"
|
|
224
|
-
sale-price="39.99"
|
|
225
|
-
rating="4.2"
|
|
226
|
-
review-count="89">
|
|
227
|
-
</snice-product-card>
|
|
126
|
+
<snice-product-card variant="vertical" name="Product" price="29.99"></snice-product-card>
|
|
127
|
+
<snice-product-card variant="horizontal" name="Product" price="29.99"></snice-product-card>
|
|
128
|
+
<snice-product-card variant="compact" name="Product" price="29.99"></snice-product-card>
|
|
228
129
|
```
|
|
229
130
|
|
|
230
131
|
### Out of Stock
|
|
@@ -232,36 +133,32 @@ Use `variant="compact"` for a minimal row layout suited to lists and sidebars.
|
|
|
232
133
|
Set `in-stock="false"` to disable the add-to-cart button and show an out-of-stock indicator.
|
|
233
134
|
|
|
234
135
|
```html
|
|
235
|
-
<snice-product-card
|
|
236
|
-
name="Limited Edition Watch"
|
|
237
|
-
price="599.00"
|
|
238
|
-
in-stock="false"
|
|
239
|
-
rating="4.8"
|
|
240
|
-
review-count="56">
|
|
241
|
-
</snice-product-card>
|
|
136
|
+
<snice-product-card name="Limited Edition Watch" price="599.00" in-stock="false"></snice-product-card>
|
|
242
137
|
```
|
|
243
138
|
|
|
244
139
|
### Handling Add to Cart
|
|
245
140
|
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
card.images = ['headphones.jpg'];
|
|
252
|
-
card.variants = [{ type: 'Color', options: ['#000000', '#ffffff', '#c0c0c0'] }];
|
|
253
|
-
|
|
254
|
-
card.addEventListener('add-to-cart', (e) => {
|
|
255
|
-
const { name, price, selectedVariants } = e.detail;
|
|
256
|
-
console.log(`Adding ${name} at $${price}`, selectedVariants);
|
|
257
|
-
});
|
|
258
|
-
</script>
|
|
141
|
+
```typescript
|
|
142
|
+
card.addEventListener('add-to-cart', (e) => {
|
|
143
|
+
const { name, price, selectedVariants } = e.detail;
|
|
144
|
+
console.log(`Adding ${name} at $${price}`, selectedVariants);
|
|
145
|
+
});
|
|
259
146
|
```
|
|
260
147
|
|
|
261
148
|
## Accessibility
|
|
262
149
|
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
-
|
|
150
|
+
- Star rating includes `aria-label` with numeric rating value
|
|
151
|
+
- Variant selectors use `role="radiogroup"` and `role="radio"` with `aria-checked`
|
|
152
|
+
- Gallery navigation buttons have `aria-label` attributes
|
|
153
|
+
- Favorite button has a descriptive `aria-label`
|
|
154
|
+
- Out-of-stock state disables the CTA button
|
|
155
|
+
- All interactive elements are keyboard-focusable
|
|
156
|
+
|
|
157
|
+
## Data Types
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
interface ProductVariant {
|
|
161
|
+
type: string; // Variant group name, e.g. 'Size', 'Color'
|
|
162
|
+
options: string[]; // Available options, e.g. ['S', 'M', 'L']
|
|
163
|
+
}
|
|
164
|
+
```
|
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/progress-ring.md -->
|
|
2
2
|
|
|
3
3
|
# Progress Ring
|
|
4
4
|
`<snice-progress-ring>`
|
|
5
5
|
|
|
6
6
|
A determinate circular progress indicator that displays progress as an animated SVG ring fill with optional center text.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
**CDN**
|
|
16
|
-
```html
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-progress-ring.min.js"></script>
|
|
19
|
-
```
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
- [Accessibility](#accessibility)
|
|
20
15
|
|
|
21
16
|
## Properties
|
|
22
17
|
|
|
@@ -34,18 +29,20 @@ import 'snice/components/progress-ring/snice-progress-ring';
|
|
|
34
29
|
|
|
35
30
|
| Event | Detail | Description |
|
|
36
31
|
|-------|--------|-------------|
|
|
37
|
-
| `progress-complete` | `{ value: number, max: number, component
|
|
32
|
+
| `progress-complete` | `{ value: number, max: number, component }` | Fired when value reaches max |
|
|
38
33
|
|
|
39
34
|
## CSS Parts
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
36
|
+
Style internal elements from outside the shadow DOM using `::part()`.
|
|
37
|
+
|
|
38
|
+
| Part | Element | Description |
|
|
39
|
+
|------|---------|-------------|
|
|
40
|
+
| `base` | `<div>` | Outer container with `role="progressbar"` |
|
|
41
|
+
| `track` | `<circle>` | Background circle |
|
|
42
|
+
| `fill` | `<circle>` | Progress circle |
|
|
43
|
+
| `center` | `<div>` | Center text container |
|
|
44
|
+
| `value` | `<span>` | Percentage text |
|
|
45
|
+
| `label` | `<span>` | Label text |
|
|
49
46
|
|
|
50
47
|
## Basic Usage
|
|
51
48
|
|
|
@@ -69,7 +66,7 @@ Set the `show-value` attribute to display the percentage in the center of the ri
|
|
|
69
66
|
|
|
70
67
|
### Custom Label
|
|
71
68
|
|
|
72
|
-
Use the `label` attribute to display custom text in the center
|
|
69
|
+
Use the `label` attribute to display custom text in the center.
|
|
73
70
|
|
|
74
71
|
```html
|
|
75
72
|
<snice-progress-ring value="60" label="CPU" show-value></snice-progress-ring>
|
|
@@ -115,13 +112,13 @@ Use the `max` attribute to set a maximum value other than 100.
|
|
|
115
112
|
|
|
116
113
|
Listen to the `progress-complete` event to react when progress reaches the maximum.
|
|
117
114
|
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const ring = document.getElementById('upload');
|
|
123
|
-
ring.addEventListener('progress-complete', () => {
|
|
124
|
-
console.log('Upload complete!');
|
|
125
|
-
});
|
|
126
|
-
</script>
|
|
115
|
+
```typescript
|
|
116
|
+
ring.addEventListener('progress-complete', () => {
|
|
117
|
+
console.log('Upload complete!');
|
|
118
|
+
});
|
|
127
119
|
```
|
|
120
|
+
|
|
121
|
+
## Accessibility
|
|
122
|
+
|
|
123
|
+
- Uses `role="progressbar"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
|
|
124
|
+
- Label or percentage text is used as `aria-label` for screen readers
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/progress.md -->
|
|
2
2
|
|
|
3
3
|
# Progress
|
|
4
4
|
`<snice-progress>`
|
|
5
5
|
|
|
6
|
-
A progress indicator with linear and circular display variants.
|
|
6
|
+
A progress indicator with linear and circular display variants, indeterminate mode, striped/animated styles, and optional labels.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-progress.min.js"></script>
|
|
19
|
-
```
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [CSS Parts](#css-parts)
|
|
13
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Accessibility](#accessibility)
|
|
20
17
|
|
|
21
18
|
## Properties
|
|
22
19
|
|
|
@@ -30,7 +27,7 @@ import 'snice/components/progress/snice-progress';
|
|
|
30
27
|
| `indeterminate` | `boolean` | `false` | Unknown progress mode |
|
|
31
28
|
| `showLabel` (attr: `show-label`) | `boolean` | `false` | Show percentage label |
|
|
32
29
|
| `label` | `string` | `''` | Custom label text (overrides percentage) |
|
|
33
|
-
| `striped` | `boolean` | `false` | Striped bar pattern |
|
|
30
|
+
| `striped` | `boolean` | `false` | Striped bar pattern (linear only) |
|
|
34
31
|
| `animated` | `boolean` | `false` | Animate striped pattern |
|
|
35
32
|
| `thickness` | `number` | `4` | Stroke width for circular variant |
|
|
36
33
|
|
|
@@ -45,13 +42,13 @@ import 'snice/components/progress/snice-progress';
|
|
|
45
42
|
|
|
46
43
|
| Event | Detail | Description |
|
|
47
44
|
|-------|--------|-------------|
|
|
48
|
-
| `progress-change` | `{ value
|
|
45
|
+
| `progress-change` | `{ value, max, percentage, indeterminate }` | Fired when value, max, or indeterminate changes |
|
|
49
46
|
|
|
50
47
|
## CSS Parts
|
|
51
48
|
|
|
52
49
|
Style internal elements from outside the shadow DOM using `::part()`.
|
|
53
50
|
|
|
54
|
-
### Linear
|
|
51
|
+
### Linear Variant
|
|
55
52
|
|
|
56
53
|
| Part | Element | Description |
|
|
57
54
|
|------|---------|-------------|
|
|
@@ -59,7 +56,7 @@ Style internal elements from outside the shadow DOM using `::part()`.
|
|
|
59
56
|
| `bar` | `<div>` | The progress bar fill |
|
|
60
57
|
| `label` | `<span>` | Percentage or custom label text |
|
|
61
58
|
|
|
62
|
-
### Circular
|
|
59
|
+
### Circular Variant
|
|
63
60
|
|
|
64
61
|
| Part | Element | Description |
|
|
65
62
|
|------|---------|-------------|
|
|
@@ -69,19 +66,15 @@ Style internal elements from outside the shadow DOM using `::part()`.
|
|
|
69
66
|
| `circle-bar` | `<circle>` | Foreground progress arc |
|
|
70
67
|
| `label` | `<div>` | Percentage or custom label text |
|
|
71
68
|
|
|
72
|
-
|
|
73
|
-
snice-progress::part(bar) {
|
|
74
|
-
border-radius: 0;
|
|
75
|
-
}
|
|
69
|
+
## CSS Custom Properties
|
|
76
70
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
```
|
|
71
|
+
| Property | Description | Default |
|
|
72
|
+
|----------|-------------|---------|
|
|
73
|
+
| `--progress-height` | Bar height (linear) | `0.5rem` |
|
|
74
|
+
| `--progress-radius` | Bar border radius | `4px` |
|
|
75
|
+
| `--progress-bg` | Background track color | `var(--snice-color-border)` |
|
|
76
|
+
| `--progress-color` | Progress fill color | `var(--snice-color-primary)` |
|
|
77
|
+
| `--progress-animation-duration` | Animation speed | `1.5s` |
|
|
85
78
|
|
|
86
79
|
## Basic Usage
|
|
87
80
|
|
|
@@ -113,8 +106,6 @@ Use the `size` attribute to change the progress indicator size.
|
|
|
113
106
|
<snice-progress value="50" size="medium"></snice-progress>
|
|
114
107
|
<snice-progress value="50" size="large"></snice-progress>
|
|
115
108
|
<snice-progress value="50" size="xl" variant="circular"></snice-progress>
|
|
116
|
-
<snice-progress value="50" size="xxl" variant="circular"></snice-progress>
|
|
117
|
-
<snice-progress value="50" size="xxxl" variant="circular"></snice-progress>
|
|
118
109
|
```
|
|
119
110
|
|
|
120
111
|
### Colors
|
|
@@ -126,7 +117,6 @@ Use the `color` attribute with semantic names or any CSS color value.
|
|
|
126
117
|
<snice-progress value="80" color="success"></snice-progress>
|
|
127
118
|
<snice-progress value="80" color="warning"></snice-progress>
|
|
128
119
|
<snice-progress value="80" color="error"></snice-progress>
|
|
129
|
-
<snice-progress value="80" color="info"></snice-progress>
|
|
130
120
|
<snice-progress value="80" color="#3b82f6"></snice-progress>
|
|
131
121
|
```
|
|
132
122
|
|
|
@@ -141,7 +131,7 @@ Set the `indeterminate` attribute for unknown progress (loading state).
|
|
|
141
131
|
|
|
142
132
|
### With Label
|
|
143
133
|
|
|
144
|
-
Use
|
|
134
|
+
Use `show-label` to display the percentage, or `label` for custom text.
|
|
145
135
|
|
|
146
136
|
```html
|
|
147
137
|
<snice-progress value="60" show-label></snice-progress>
|
|
@@ -157,14 +147,6 @@ Use `striped` for a striped pattern and `animated` for animated stripes.
|
|
|
157
147
|
<snice-progress value="70" striped animated></snice-progress>
|
|
158
148
|
```
|
|
159
149
|
|
|
160
|
-
### Custom Max
|
|
161
|
-
|
|
162
|
-
Use the `max` attribute to set a custom maximum value.
|
|
163
|
-
|
|
164
|
-
```html
|
|
165
|
-
<snice-progress value="3" max="10"></snice-progress>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
150
|
### Circular Thickness
|
|
169
151
|
|
|
170
152
|
Use the `thickness` attribute to control the circular variant's stroke width.
|
|
@@ -173,28 +155,15 @@ Use the `thickness` attribute to control the circular variant's stroke width.
|
|
|
173
155
|
<snice-progress variant="circular" value="75" thickness="8" size="xl"></snice-progress>
|
|
174
156
|
```
|
|
175
157
|
|
|
176
|
-
### Dynamic Updates
|
|
177
|
-
|
|
178
|
-
```html
|
|
179
|
-
<snice-progress value="0"></snice-progress>
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
```typescript
|
|
183
|
-
let value = 0;
|
|
184
|
-
|
|
185
|
-
setInterval(() => {
|
|
186
|
-
value = (value + 10) % 100;
|
|
187
|
-
progress.value = value;
|
|
188
|
-
}, 500);
|
|
189
|
-
```
|
|
190
|
-
|
|
191
158
|
### Programmatic Control
|
|
192
159
|
|
|
193
160
|
```typescript
|
|
194
|
-
// Set progress
|
|
195
161
|
progress.setProgress(75);
|
|
196
162
|
progress.setProgress(3, 10); // value 3, max 10
|
|
197
|
-
|
|
198
|
-
// Get percentage
|
|
199
|
-
console.log(progress.getPercentage()); // 75
|
|
163
|
+
console.log(progress.getPercentage()); // 30
|
|
200
164
|
```
|
|
165
|
+
|
|
166
|
+
## Accessibility
|
|
167
|
+
|
|
168
|
+
- Uses `role="progressbar"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
|
|
169
|
+
- Label text is used as `aria-label` for screen readers
|