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,22 +1,18 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/qr-code.md -->
|
|
2
2
|
|
|
3
3
|
# QR Code
|
|
4
|
-
`<snice-qr-code>`
|
|
5
4
|
|
|
6
|
-
A QR code generator with customizable styling, dot patterns, and image export.
|
|
5
|
+
A QR code generator with customizable styling, dot patterns, center overlays, and image export.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-qr-code.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
12
|
+
- [CSS Parts](#css-parts)
|
|
13
|
+
- [Basic Usage](#basic-usage)
|
|
14
|
+
- [Examples](#examples)
|
|
15
|
+
- [Accessibility](#accessibility)
|
|
20
16
|
|
|
21
17
|
## Properties
|
|
22
18
|
|
|
@@ -27,14 +23,14 @@ import 'snice/components/qr-code/snice-qr-code';
|
|
|
27
23
|
| `errorCorrectionLevel` (attr: `error-correction-level`) | `'L' \| 'M' \| 'Q' \| 'H'` | `'M'` | Error correction level |
|
|
28
24
|
| `renderMode` (attr: `render-mode`) | `'canvas' \| 'svg'` | `'canvas'` | Rendering mode |
|
|
29
25
|
| `dotStyle` (attr: `dot-style`) | `'square' \| 'rounded' \| 'dots'` | `'square'` | Module shape style |
|
|
30
|
-
| `margin` | `number` | `4` | Quiet zone size |
|
|
26
|
+
| `margin` | `number` | `4` | Quiet zone size in modules |
|
|
31
27
|
| `fgColor` (attr: `fg-color`) | `string` | `'#000000'` | Foreground color |
|
|
32
28
|
| `bgColor` (attr: `bg-color`) | `string` | `'#ffffff'` | Background color |
|
|
33
|
-
| `includeImage` (attr: `include-image`) | `boolean` | `false` | Show center image |
|
|
29
|
+
| `includeImage` (attr: `include-image`) | `boolean` | `false` | Show center image overlay |
|
|
34
30
|
| `imageUrl` (attr: `image-url`) | `string` | `''` | Center image URL |
|
|
35
|
-
| `imageSize` (attr: `image-size`) | `number` | `40` | Center image size |
|
|
31
|
+
| `imageSize` (attr: `image-size`) | `number` | `40` | Center image size in pixels |
|
|
36
32
|
| `centerText` (attr: `center-text`) | `string` | `''` | Center overlay text |
|
|
37
|
-
| `centerTextSize` (attr: `center-text-size`) | `number` | `16` | Center text font size |
|
|
33
|
+
| `centerTextSize` (attr: `center-text-size`) | `number` | `16` | Center text font size in pixels |
|
|
38
34
|
| `textFillColor` (attr: `text-fill-color`) | `string` | `'#000000'` | Center text fill color |
|
|
39
35
|
| `textOutlineColor` (attr: `text-outline-color`) | `string` | `'#ffffff'` | Center text outline color |
|
|
40
36
|
|
|
@@ -42,26 +38,24 @@ import 'snice/components/qr-code/snice-qr-code';
|
|
|
42
38
|
|
|
43
39
|
| Method | Arguments | Description |
|
|
44
40
|
|--------|-----------|-------------|
|
|
45
|
-
| `toSVGString()` |
|
|
46
|
-
| `toDataURL()` | `type?:
|
|
47
|
-
| `toBlob()` | `type?:
|
|
48
|
-
| `download()` | `filename?: string` | Download as image file |
|
|
41
|
+
| `toSVGString()` | — | Returns SVG markup string (sync, only works when `renderMode` is `'svg'`) |
|
|
42
|
+
| `toDataURL()` | `type?: 'image/png' \| 'image/jpeg' \| 'image/webp' \| 'image/svg+xml', quality?: number` | Export as data URL (async) |
|
|
43
|
+
| `toBlob()` | `type?: 'image/png' \| 'image/jpeg' \| 'image/webp' \| 'image/svg+xml', quality?: number` | Export as Blob (async) |
|
|
44
|
+
| `download()` | `filename?: string` | Download as image file (defaults to `'qr-code.png'`) |
|
|
49
45
|
|
|
50
46
|
## CSS Custom Properties
|
|
51
47
|
|
|
52
48
|
| Property | Description | Default |
|
|
53
49
|
|----------|-------------|---------|
|
|
54
|
-
| `--qr-bg` | Container background color |
|
|
55
|
-
| `--qr-border-radius` | Container border radius |
|
|
56
|
-
| `--qr-padding` | Container padding |
|
|
50
|
+
| `--qr-bg` | Container background color | `hsl(0 0% 100%)` |
|
|
51
|
+
| `--qr-border-radius` | Container border radius | `0` |
|
|
52
|
+
| `--qr-padding` | Container padding | `0` |
|
|
57
53
|
|
|
58
54
|
## CSS Parts
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
|
63
|
-
|------|---------|-------------|
|
|
64
|
-
| `base` | `<div>` | QR code container holding the generated canvas or SVG |
|
|
56
|
+
| Part | Description |
|
|
57
|
+
|------|-------------|
|
|
58
|
+
| `base` | The container div holding the generated canvas or SVG |
|
|
65
59
|
|
|
66
60
|
```css
|
|
67
61
|
snice-qr-code::part(base) {
|
|
@@ -112,7 +106,7 @@ Use the `dot-style` attribute to change the module shape.
|
|
|
112
106
|
|
|
113
107
|
### Error Correction
|
|
114
108
|
|
|
115
|
-
Use `error-correction-level` for higher resilience to damage.
|
|
109
|
+
Use `error-correction-level` for higher resilience to damage. Use `'H'` when adding center overlays.
|
|
116
110
|
|
|
117
111
|
```html
|
|
118
112
|
<snice-qr-code value="Important Data" error-correction-level="H"></snice-qr-code>
|
|
@@ -120,16 +114,15 @@ Use `error-correction-level` for higher resilience to damage.
|
|
|
120
114
|
|
|
121
115
|
### Render Mode
|
|
122
116
|
|
|
123
|
-
Use `render-mode` to switch between
|
|
117
|
+
Use `render-mode` to switch between canvas and SVG rendering.
|
|
124
118
|
|
|
125
119
|
```html
|
|
126
|
-
<snice-qr-code value="https://example.com" render-mode="canvas"></snice-qr-code>
|
|
127
120
|
<snice-qr-code value="https://example.com" render-mode="svg"></snice-qr-code>
|
|
128
121
|
```
|
|
129
122
|
|
|
130
123
|
### Center Image
|
|
131
124
|
|
|
132
|
-
Use `include-image` with `image-url` to overlay a logo in the center.
|
|
125
|
+
Use `include-image` with `image-url` to overlay a logo in the center. Pair with high error correction.
|
|
133
126
|
|
|
134
127
|
```html
|
|
135
128
|
<snice-qr-code
|
|
@@ -154,8 +147,30 @@ Use `center-text` to overlay text in the center of the QR code.
|
|
|
154
147
|
</snice-qr-code>
|
|
155
148
|
```
|
|
156
149
|
|
|
150
|
+
### Export
|
|
151
|
+
|
|
152
|
+
Use the export methods to save or share the QR code programmatically.
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
const qr = document.querySelector('snice-qr-code');
|
|
156
|
+
|
|
157
|
+
// Data URL
|
|
158
|
+
const dataURL = await qr.toDataURL('image/png');
|
|
159
|
+
|
|
160
|
+
// Blob
|
|
161
|
+
const blob = await qr.toBlob('image/png');
|
|
162
|
+
|
|
163
|
+
// Download
|
|
164
|
+
qr.download('my-qr-code.png');
|
|
165
|
+
|
|
166
|
+
// SVG string (only when render-mode="svg")
|
|
167
|
+
const svgMarkup = qr.toSVGString();
|
|
168
|
+
```
|
|
169
|
+
|
|
157
170
|
### Common Data Formats
|
|
158
171
|
|
|
172
|
+
Set `value` to standard URI schemes for common QR code use cases.
|
|
173
|
+
|
|
159
174
|
```html
|
|
160
175
|
<!-- URL -->
|
|
161
176
|
<snice-qr-code value="https://example.com"></snice-qr-code>
|
|
@@ -166,9 +181,6 @@ Use `center-text` to overlay text in the center of the QR code.
|
|
|
166
181
|
<!-- Phone -->
|
|
167
182
|
<snice-qr-code value="tel:+1234567890"></snice-qr-code>
|
|
168
183
|
|
|
169
|
-
<!-- SMS -->
|
|
170
|
-
<snice-qr-code value="sms:+1234567890?body=Hello"></snice-qr-code>
|
|
171
|
-
|
|
172
184
|
<!-- WiFi -->
|
|
173
185
|
<snice-qr-code value="WIFI:T:WPA;S:MyNetwork;P:password123;;"></snice-qr-code>
|
|
174
186
|
|
|
@@ -176,28 +188,8 @@ Use `center-text` to overlay text in the center of the QR code.
|
|
|
176
188
|
<snice-qr-code value="geo:37.7749,-122.4194"></snice-qr-code>
|
|
177
189
|
```
|
|
178
190
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
// Data URL
|
|
183
|
-
const dataURL = await qr.toDataURL('image/png');
|
|
184
|
-
|
|
185
|
-
// Blob
|
|
186
|
-
const blob = await qr.toBlob('image/png');
|
|
191
|
+
## Accessibility
|
|
187
192
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### Dynamic Updates
|
|
193
|
-
|
|
194
|
-
```html
|
|
195
|
-
<input type="text" id="qrInput" placeholder="Enter text">
|
|
196
|
-
<snice-qr-code></snice-qr-code>
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
```typescript
|
|
200
|
-
qrInput.addEventListener('input', (e) => {
|
|
201
|
-
qr.value = e.target.value;
|
|
202
|
-
});
|
|
203
|
-
```
|
|
193
|
+
- The QR code renders as a `<canvas>` or `<svg>` element inside a container div
|
|
194
|
+
- No interactive elements; the component is purely visual output
|
|
195
|
+
- Provide adjacent text or an `aria-label` on a wrapper for screen reader users to understand the encoded content
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/qr-reader.md -->
|
|
2
2
|
|
|
3
3
|
# QR Reader
|
|
4
|
-
`<snice-qr-reader>`
|
|
5
4
|
|
|
6
|
-
A QR code scanner using device cameras with
|
|
5
|
+
A QR code scanner using device cameras with real-time detection.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-qr-reader.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
13
|
+
- [Basic Usage](#basic-usage)
|
|
14
|
+
- [Examples](#examples)
|
|
15
|
+
- [Accessibility](#accessibility)
|
|
20
16
|
|
|
21
17
|
## Properties
|
|
22
18
|
|
|
@@ -24,28 +20,28 @@ import 'snice/components/qr-reader/snice-qr-reader';
|
|
|
24
20
|
|----------|------|---------|-------------|
|
|
25
21
|
| `autoStart` (attr: `auto-start`) | `boolean` | `false` | Auto-start scanning on mount |
|
|
26
22
|
| `camera` | `'front' \| 'back'` | `'back'` | Which camera to use |
|
|
27
|
-
| `pickFirst` (attr: `pick-first`) | `boolean` | `false` | Scan until first hit, then stop |
|
|
28
|
-
| `manualSnap` (attr: `manual-snap`) | `boolean` | `false` | Photo snapshot mode |
|
|
29
|
-
| `scanSpeed` (attr: `scan-speed`) | `number` | `3` | Scan speed 1-10 (ignored with pick-first) |
|
|
30
|
-
| `tapStart` (attr: `tap-start`) | `boolean` | `false` | Tap viewport to toggle scanning |
|
|
23
|
+
| `pickFirst` (attr: `pick-first`) | `boolean` | `false` | Scan at max speed until first hit, then auto-stop |
|
|
24
|
+
| `manualSnap` (attr: `manual-snap`) | `boolean` | `false` | Photo snapshot mode instead of continuous scanning |
|
|
25
|
+
| `scanSpeed` (attr: `scan-speed`) | `number` | `3` | Scan speed 1-10 (higher = more CPU, ignored with `pick-first`) |
|
|
26
|
+
| `tapStart` (attr: `tap-start`) | `boolean` | `false` | Tap viewport to toggle scanning on/off |
|
|
31
27
|
|
|
32
28
|
## Methods
|
|
33
29
|
|
|
34
30
|
| Method | Arguments | Description |
|
|
35
31
|
|--------|-----------|-------------|
|
|
36
|
-
| `start()` |
|
|
37
|
-
| `stop()` |
|
|
38
|
-
| `snap()` |
|
|
39
|
-
| `scanImage()` | `file: File` | Scan QR code from an image file |
|
|
40
|
-
| `switchCamera()` |
|
|
32
|
+
| `start()` | — | Start camera and begin scanning (async) |
|
|
33
|
+
| `stop()` | — | Stop scanning and release camera |
|
|
34
|
+
| `snap()` | — | Take snapshot and scan for QR code (async, returns data string or `null`) |
|
|
35
|
+
| `scanImage()` | `file: File` | Scan a QR code from an image file (async, returns data string) |
|
|
36
|
+
| `switchCamera()` | — | Toggle between front and back camera |
|
|
41
37
|
|
|
42
38
|
## Events
|
|
43
39
|
|
|
44
40
|
| Event | Detail | Description |
|
|
45
41
|
|-------|--------|-------------|
|
|
46
|
-
| `qr-scan` | `{ data: string, timestamp: number, reader }` | QR code detected |
|
|
42
|
+
| `qr-scan` | `{ data: string, timestamp: number, reader }` | QR code successfully detected |
|
|
47
43
|
| `qr-error` | `{ error: any, reader }` | Scan error occurred |
|
|
48
|
-
| `camera-ready` | `{ reader }` | Camera initialized |
|
|
44
|
+
| `camera-ready` | `{ reader }` | Camera initialized and ready |
|
|
49
45
|
| `camera-error` | `{ error: any, reader }` | Camera initialization failed |
|
|
50
46
|
|
|
51
47
|
## CSS Custom Properties
|
|
@@ -86,12 +82,14 @@ Set `auto-start` to begin scanning when the component mounts.
|
|
|
86
82
|
|
|
87
83
|
### Manual Control
|
|
88
84
|
|
|
85
|
+
Start and stop scanning programmatically.
|
|
86
|
+
|
|
89
87
|
```html
|
|
90
88
|
<snice-qr-reader></snice-qr-reader>
|
|
91
89
|
```
|
|
92
90
|
|
|
93
91
|
```typescript
|
|
94
|
-
reader.start();
|
|
92
|
+
await reader.start();
|
|
95
93
|
reader.stop();
|
|
96
94
|
```
|
|
97
95
|
|
|
@@ -104,29 +102,25 @@ Set `pick-first` to scan at maximum speed until the first QR code is found, then
|
|
|
104
102
|
```
|
|
105
103
|
|
|
106
104
|
```typescript
|
|
107
|
-
|
|
105
|
+
reader.addEventListener('qr-scan', (e) => {
|
|
108
106
|
console.log('Found:', e.detail.data);
|
|
109
107
|
// Scanner stops and releases camera automatically
|
|
110
108
|
});
|
|
111
|
-
|
|
109
|
+
await reader.start();
|
|
112
110
|
```
|
|
113
111
|
|
|
114
112
|
### Manual Snapshot
|
|
115
113
|
|
|
116
|
-
Set `manual-snap` for a photo-based scanning mode with manual trigger.
|
|
114
|
+
Set `manual-snap` for a photo-based scanning mode with a manual trigger button.
|
|
117
115
|
|
|
118
116
|
```html
|
|
119
117
|
<snice-qr-reader manual-snap></snice-qr-reader>
|
|
120
|
-
<button>Take Photo</button>
|
|
121
118
|
```
|
|
122
119
|
|
|
123
120
|
```typescript
|
|
124
|
-
reader.start(); // Opens camera viewfinder
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const result = await reader.snap();
|
|
128
|
-
console.log(result ? `Found: ${result}` : 'No QR code found');
|
|
129
|
-
});
|
|
121
|
+
await reader.start(); // Opens camera viewfinder
|
|
122
|
+
const result = await reader.snap();
|
|
123
|
+
console.log(result ? `Found: ${result}` : 'No QR code found');
|
|
130
124
|
```
|
|
131
125
|
|
|
132
126
|
### Front Camera
|
|
@@ -148,24 +142,41 @@ Use `scan-speed` (1-10) to balance detection speed vs CPU usage.
|
|
|
148
142
|
|
|
149
143
|
### Tap to Start
|
|
150
144
|
|
|
151
|
-
Set `tap-start` to let users
|
|
145
|
+
Set `tap-start` to let users tap the viewport to toggle scanning.
|
|
152
146
|
|
|
153
147
|
```html
|
|
154
148
|
<snice-qr-reader tap-start></snice-qr-reader>
|
|
155
149
|
```
|
|
156
150
|
|
|
157
|
-
###
|
|
151
|
+
### Scan from Image File
|
|
152
|
+
|
|
153
|
+
Use `scanImage()` to detect a QR code from an uploaded image.
|
|
158
154
|
|
|
159
155
|
```typescript
|
|
160
|
-
|
|
161
|
-
|
|
156
|
+
const fileInput = document.querySelector('input[type="file"]');
|
|
157
|
+
fileInput.addEventListener('change', async (e) => {
|
|
158
|
+
const result = await reader.scanImage(e.target.files[0]);
|
|
159
|
+
console.log('Found:', result);
|
|
162
160
|
});
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Error Handling
|
|
164
|
+
|
|
165
|
+
Listen for error events to handle camera and scan failures.
|
|
163
166
|
|
|
167
|
+
```typescript
|
|
164
168
|
reader.addEventListener('camera-error', (e) => {
|
|
165
169
|
console.error('Camera error:', e.detail.error);
|
|
166
170
|
});
|
|
167
171
|
|
|
168
|
-
reader.addEventListener('
|
|
169
|
-
console.
|
|
172
|
+
reader.addEventListener('qr-error', (e) => {
|
|
173
|
+
console.error('Scan error:', e.detail.error);
|
|
170
174
|
});
|
|
171
175
|
```
|
|
176
|
+
|
|
177
|
+
## Accessibility
|
|
178
|
+
|
|
179
|
+
- Requires HTTPS for camera access on mobile devices
|
|
180
|
+
- Built-in start/stop/snap buttons with icon labels
|
|
181
|
+
- Camera is released when the component is disconnected or scanning is stopped
|
|
182
|
+
- Visual feedback shown for scan results and errors
|
package/docs/components/radio.md
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/radio.md -->
|
|
2
2
|
|
|
3
3
|
# Radio
|
|
4
|
-
`<snice-radio>`
|
|
5
4
|
|
|
6
5
|
A form radio button input with automatic group management by name.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [Slots](#slots)
|
|
13
|
+
- [CSS Parts](#css-parts)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
17
|
+
- [Accessibility](#accessibility)
|
|
20
18
|
|
|
21
19
|
## Properties
|
|
22
20
|
|
|
@@ -32,16 +30,16 @@ import 'snice/components/radio/snice-radio';
|
|
|
32
30
|
| `name` | `string` | `''` | Group name for mutual exclusion |
|
|
33
31
|
| `value` | `string` | `''` | Form value when selected |
|
|
34
32
|
| `label` | `string` | `''` | Label text |
|
|
35
|
-
| `description` | `string` | `''` | Description text below the label (block variant) |
|
|
33
|
+
| `description` | `string` | `''` | Description text below the label (block variant only) |
|
|
36
34
|
|
|
37
35
|
## Methods
|
|
38
36
|
|
|
39
37
|
| Method | Arguments | Description |
|
|
40
38
|
|--------|-----------|-------------|
|
|
41
|
-
| `focus()` |
|
|
42
|
-
| `blur()` |
|
|
43
|
-
| `click()` |
|
|
44
|
-
| `select()` |
|
|
39
|
+
| `focus()` | — | Focuses the radio input |
|
|
40
|
+
| `blur()` | — | Removes focus |
|
|
41
|
+
| `click()` | — | Programmatic click |
|
|
42
|
+
| `select()` | — | Selects the radio and fires change event |
|
|
45
43
|
|
|
46
44
|
## Events
|
|
47
45
|
|
|
@@ -59,12 +57,12 @@ import 'snice/components/radio/snice-radio';
|
|
|
59
57
|
|
|
60
58
|
| Part | Description |
|
|
61
59
|
|------|-------------|
|
|
62
|
-
| `input` | The hidden radio input |
|
|
60
|
+
| `input` | The hidden native radio input |
|
|
63
61
|
| `radio` | The radio circle container |
|
|
64
62
|
| `dot` | The inner dot indicator |
|
|
65
63
|
| `spinner` | The loading spinner |
|
|
66
|
-
| `label` | The label text |
|
|
67
64
|
| `content` | The content wrapper (block variant) |
|
|
65
|
+
| `label` | The label text |
|
|
68
66
|
| `description` | The description text (block variant) |
|
|
69
67
|
|
|
70
68
|
## Basic Usage
|
|
@@ -134,21 +132,9 @@ Set the `loading` attribute to show a spinner instead of the radio dot.
|
|
|
134
132
|
<snice-radio label="Processing..." loading></snice-radio>
|
|
135
133
|
```
|
|
136
134
|
|
|
137
|
-
### Form Integration
|
|
138
|
-
|
|
139
|
-
Radio buttons with the same `name` automatically form a group where only one can be selected.
|
|
140
|
-
|
|
141
|
-
```html
|
|
142
|
-
<form>
|
|
143
|
-
<snice-radio name="plan" value="free" label="Free"></snice-radio>
|
|
144
|
-
<snice-radio name="plan" value="pro" label="Pro"></snice-radio>
|
|
145
|
-
<snice-radio name="plan" value="enterprise" label="Enterprise"></snice-radio>
|
|
146
|
-
</form>
|
|
147
|
-
```
|
|
148
|
-
|
|
149
135
|
### Block Variant
|
|
150
136
|
|
|
151
|
-
Use `variant="block"` to render card-style radio buttons
|
|
137
|
+
Use `variant="block"` to render card-style radio buttons. Add a `description` for subtitle text and use the `suffix` slot for end content.
|
|
152
138
|
|
|
153
139
|
```html
|
|
154
140
|
<snice-radio
|
|
@@ -185,14 +171,30 @@ Use `variant="block"` to render card-style radio buttons, ideal for plan pickers
|
|
|
185
171
|
|
|
186
172
|
### Event Handling
|
|
187
173
|
|
|
188
|
-
|
|
189
|
-
<snice-radio id="option" name="choice" value="a" label="Option A"></snice-radio>
|
|
174
|
+
Listen for `radio-change` to respond to selection changes.
|
|
190
175
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
document.getElementById('option').addEventListener('radio-change', (e) => {
|
|
176
|
+
```typescript
|
|
177
|
+
document.querySelectorAll('snice-radio[name="plan"]').forEach(radio => {
|
|
178
|
+
radio.addEventListener('radio-change', (e) => {
|
|
195
179
|
console.log('Selected:', e.detail.value);
|
|
196
180
|
});
|
|
197
|
-
|
|
181
|
+
});
|
|
198
182
|
```
|
|
183
|
+
|
|
184
|
+
## Keyboard Navigation
|
|
185
|
+
|
|
186
|
+
| Key | Action |
|
|
187
|
+
|-----|--------|
|
|
188
|
+
| `ArrowDown` / `ArrowRight` | Move to next radio in group |
|
|
189
|
+
| `ArrowUp` / `ArrowLeft` | Move to previous radio in group |
|
|
190
|
+
|
|
191
|
+
Arrow keys wrap around the group and automatically select the focused radio.
|
|
192
|
+
|
|
193
|
+
## Accessibility
|
|
194
|
+
|
|
195
|
+
- Contains a native `<input type="radio">` for form participation
|
|
196
|
+
- Radios with the same `name` form a group with mutual exclusion
|
|
197
|
+
- Focus ring shown on keyboard navigation
|
|
198
|
+
- `aria-invalid` set when `invalid` is true
|
|
199
|
+
- Required indicator (`*`) shown on label when `required` is true
|
|
200
|
+
- Disabled state reduces opacity and prevents interaction
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/range-slider.md -->
|
|
2
2
|
|
|
3
3
|
# Range Slider
|
|
4
|
-
`<snice-range-slider>`
|
|
5
4
|
|
|
6
5
|
A two-handle slider for selecting a numeric range, with a highlighted track between the two thumbs.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-range-slider.min.js"></script>
|
|
19
|
-
```
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
15
|
+
- [Accessibility](#accessibility)
|
|
20
16
|
|
|
21
17
|
## Properties
|
|
22
18
|
|
|
@@ -25,11 +21,11 @@ import 'snice/components/range-slider/snice-range-slider';
|
|
|
25
21
|
| `min` | `number` | `0` | Minimum value |
|
|
26
22
|
| `max` | `number` | `100` | Maximum value |
|
|
27
23
|
| `step` | `number` | `1` | Step increment |
|
|
28
|
-
| `valueLow` (attr: `value-low`) | `number` | `0` | Low handle
|
|
29
|
-
| `valueHigh` (attr: `value-high`) | `number` | `100` | High handle
|
|
24
|
+
| `valueLow` (attr: `value-low`) | `number` | `0` | Low handle value |
|
|
25
|
+
| `valueHigh` (attr: `value-high`) | `number` | `100` | High handle value |
|
|
30
26
|
| `disabled` | `boolean` | `false` | Disables the slider |
|
|
31
27
|
| `showTooltip` (attr: `show-tooltip`) | `boolean` | `false` | Show value tooltip on hover/drag |
|
|
32
|
-
| `showLabels` (attr: `show-labels`) | `boolean` | `false` | Show min/max labels |
|
|
28
|
+
| `showLabels` (attr: `show-labels`) | `boolean` | `false` | Show min/max labels below the track |
|
|
33
29
|
| `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Slider orientation |
|
|
34
30
|
|
|
35
31
|
## Events
|
|
@@ -63,7 +59,7 @@ import 'snice/components/range-slider/snice-range-slider';
|
|
|
63
59
|
|
|
64
60
|
### Custom Range and Step
|
|
65
61
|
|
|
66
|
-
Use
|
|
62
|
+
Use `min`, `max`, and `step` to define the slider range and increment.
|
|
67
63
|
|
|
68
64
|
```html
|
|
69
65
|
<snice-range-slider min="0" max="1000" step="50" value-low="200" value-high="800"></snice-range-slider>
|
|
@@ -71,7 +67,7 @@ Use the `min`, `max`, and `step` attributes to define the slider range.
|
|
|
71
67
|
|
|
72
68
|
### Tooltips
|
|
73
69
|
|
|
74
|
-
Set
|
|
70
|
+
Set `show-tooltip` to display the current value on hover and drag.
|
|
75
71
|
|
|
76
72
|
```html
|
|
77
73
|
<snice-range-slider show-tooltip value-low="25" value-high="75"></snice-range-slider>
|
|
@@ -79,7 +75,7 @@ Set the `show-tooltip` attribute to display the current value on hover and drag.
|
|
|
79
75
|
|
|
80
76
|
### Min/Max Labels
|
|
81
77
|
|
|
82
|
-
Set
|
|
78
|
+
Set `show-labels` to display the range boundaries below the track.
|
|
83
79
|
|
|
84
80
|
```html
|
|
85
81
|
<snice-range-slider show-labels min="0" max="500" value-low="100" value-high="400"></snice-range-slider>
|
|
@@ -87,7 +83,7 @@ Set the `show-labels` attribute to display the range boundaries below the track.
|
|
|
87
83
|
|
|
88
84
|
### Vertical Orientation
|
|
89
85
|
|
|
90
|
-
Set
|
|
86
|
+
Set `orientation="vertical"` for a vertical slider.
|
|
91
87
|
|
|
92
88
|
```html
|
|
93
89
|
<snice-range-slider orientation="vertical" value-low="30" value-high="70"></snice-range-slider>
|
|
@@ -95,7 +91,7 @@ Set the `orientation` attribute to `"vertical"` for a vertical slider.
|
|
|
95
91
|
|
|
96
92
|
### Disabled
|
|
97
93
|
|
|
98
|
-
Set
|
|
94
|
+
Set `disabled` to prevent user interaction.
|
|
99
95
|
|
|
100
96
|
```html
|
|
101
97
|
<snice-range-slider disabled value-low="20" value-high="60"></snice-range-slider>
|
|
@@ -103,14 +99,29 @@ Set the `disabled` attribute to prevent user interaction.
|
|
|
103
99
|
|
|
104
100
|
### Event Handling
|
|
105
101
|
|
|
106
|
-
Listen to
|
|
107
|
-
|
|
108
|
-
```html
|
|
109
|
-
<snice-range-slider id="price-range" min="0" max="500" value-low="50" value-high="300"></snice-range-slider>
|
|
102
|
+
Listen to `range-change` to react to value changes.
|
|
110
103
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
</script>
|
|
104
|
+
```typescript
|
|
105
|
+
slider.addEventListener('range-change', (e) => {
|
|
106
|
+
console.log(`Range: ${e.detail.valueLow} - ${e.detail.valueHigh}`);
|
|
107
|
+
});
|
|
116
108
|
```
|
|
109
|
+
|
|
110
|
+
## Keyboard Navigation
|
|
111
|
+
|
|
112
|
+
| Key | Action |
|
|
113
|
+
|-----|--------|
|
|
114
|
+
| `ArrowLeft` / `ArrowDown` | Decrease focused thumb by one step |
|
|
115
|
+
| `ArrowRight` / `ArrowUp` | Increase focused thumb by one step |
|
|
116
|
+
| `Home` | Move focused thumb to minimum (low thumb) or to low value (high thumb) |
|
|
117
|
+
| `End` | Move focused thumb to high value (low thumb) or to maximum (high thumb) |
|
|
118
|
+
|
|
119
|
+
Each thumb is independently focusable and constrained so low cannot exceed high.
|
|
120
|
+
|
|
121
|
+
## Accessibility
|
|
122
|
+
|
|
123
|
+
- Each thumb has `role="slider"` with `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
|
|
124
|
+
- Low thumb labeled "Range minimum", high thumb labeled "Range maximum"
|
|
125
|
+
- Focus ring shown on keyboard navigation
|
|
126
|
+
- Supports both mouse and touch interaction
|
|
127
|
+
- Track click moves the nearest thumb
|