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,16 +1,16 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/file-upload.md -->
|
|
2
2
|
|
|
3
|
-
# File Upload
|
|
3
|
+
# File Upload
|
|
4
4
|
|
|
5
|
-
The `<snice-file-upload>` component provides a file upload interface with drag-and-drop support, file previews, and validation.
|
|
5
|
+
The `<snice-file-upload>` component provides a file upload interface with drag-and-drop support, file previews, and validation. It is a form-associated custom element.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
- [Properties](#properties)
|
|
9
9
|
- [Methods](#methods)
|
|
10
10
|
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
11
12
|
- [Basic Usage](#basic-usage)
|
|
12
13
|
- [Examples](#examples)
|
|
13
|
-
- [Features](#features)
|
|
14
14
|
|
|
15
15
|
## Properties
|
|
16
16
|
|
|
@@ -20,64 +20,49 @@ The `<snice-file-upload>` component provides a file upload interface with drag-a
|
|
|
20
20
|
| `variant` | `'outlined' \| 'filled'` | `'outlined'` | Visual style variant |
|
|
21
21
|
| `accept` | `string` | `''` | Allowed file types (same as input accept) |
|
|
22
22
|
| `multiple` | `boolean` | `false` | Allow multiple file selection |
|
|
23
|
-
| `label` | `string` | `''` | Label text |
|
|
24
|
-
| `helperText` | `string` | `''` | Helper text below upload area |
|
|
25
|
-
| `errorText` | `string` | `''` | Error message (shown when invalid) |
|
|
26
23
|
| `disabled` | `boolean` | `false` | Whether upload is disabled |
|
|
27
24
|
| `required` | `boolean` | `false` | Whether upload is required |
|
|
28
25
|
| `invalid` | `boolean` | `false` | Whether to show invalid state |
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
26
|
+
| `label` | `string` | `''` | Label text |
|
|
27
|
+
| `helperText` (attr: `helper-text`) | `string` | `''` | Helper text below upload area |
|
|
28
|
+
| `errorText` (attr: `error-text`) | `string` | `''` | Error message (shown when invalid) |
|
|
29
|
+
| `maxSize` (attr: `max-size`) | `number` | `-1` | Maximum file size in bytes (-1 = no limit) |
|
|
30
|
+
| `maxFiles` (attr: `max-files`) | `number` | `-1` | Maximum number of files (-1 = no limit) |
|
|
31
31
|
| `name` | `string` | `''` | Form field name |
|
|
32
|
-
| `dragDrop` | `boolean` | `true` | Enable drag-and-drop |
|
|
33
|
-
| `showPreview` | `boolean` | `true` | Show image previews |
|
|
32
|
+
| `dragDrop` (attr: `drag-drop`) | `boolean` | `true` | Enable drag-and-drop |
|
|
33
|
+
| `showPreview` (attr: `show-preview`) | `boolean` | `true` | Show image previews |
|
|
34
34
|
| `files` | `FileList \| null` | `null` | Selected files (read-only) |
|
|
35
35
|
|
|
36
36
|
## Methods
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
upload.clear();
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### `removeFile(index: number): void`
|
|
46
|
-
Remove a specific file by index.
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
upload.removeFile(0); // Remove first file
|
|
50
|
-
```
|
|
38
|
+
| Method | Arguments | Description |
|
|
39
|
+
|--------|-----------|-------------|
|
|
40
|
+
| `clear()` | -- | Remove all selected files |
|
|
41
|
+
| `removeFile(index)` | `index: number` | Remove a specific file by index |
|
|
51
42
|
|
|
52
43
|
## Events
|
|
53
44
|
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
| Event | Detail | Description |
|
|
46
|
+
|-------|--------|-------------|
|
|
47
|
+
| `file-upload-change` | `{ files: File[], fileUpload: SniceFileUploadElement }` | Fired when files are added or removed |
|
|
48
|
+
| `file-upload-error` | `{ message: string, fileUpload: SniceFileUploadElement }` | Fired when file validation fails |
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
upload.addEventListener('file-upload-change', (e) => {
|
|
61
|
-
console.log('Selected files:', e.detail.files);
|
|
62
|
-
e.detail.files.forEach(file => {
|
|
63
|
-
console.log(`- ${file.name} (${file.size} bytes)`);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
```
|
|
50
|
+
## CSS Parts
|
|
67
51
|
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
| Part | Description |
|
|
53
|
+
|------|-------------|
|
|
54
|
+
| `upload-area` | Drop zone container |
|
|
55
|
+
| `input` | Hidden file input |
|
|
56
|
+
| `file-item` | Individual file entry |
|
|
57
|
+
| `error-text` | Error text element |
|
|
58
|
+
| `helper-text` | Helper text element |
|
|
70
59
|
|
|
71
|
-
|
|
60
|
+
## Basic Usage
|
|
72
61
|
|
|
73
62
|
```typescript
|
|
74
|
-
|
|
75
|
-
console.error('Upload error:', e.detail.message);
|
|
76
|
-
});
|
|
63
|
+
import 'snice/components/file-upload/snice-file-upload';
|
|
77
64
|
```
|
|
78
65
|
|
|
79
|
-
## Basic Usage
|
|
80
|
-
|
|
81
66
|
```html
|
|
82
67
|
<snice-file-upload
|
|
83
68
|
label="Upload Documents"
|
|
@@ -87,8 +72,6 @@ upload.addEventListener('file-upload-error', (e) => {
|
|
|
87
72
|
```
|
|
88
73
|
|
|
89
74
|
```typescript
|
|
90
|
-
import 'snice/components/file-upload/snice-file-upload';
|
|
91
|
-
|
|
92
75
|
const upload = document.querySelector('snice-file-upload');
|
|
93
76
|
upload.addEventListener('file-upload-change', (e) => {
|
|
94
77
|
console.log('Files:', e.detail.files);
|
|
@@ -164,37 +147,6 @@ upload.addEventListener('file-upload-change', (e) => {
|
|
|
164
147
|
></snice-file-upload>
|
|
165
148
|
```
|
|
166
149
|
|
|
167
|
-
### File Type Restrictions
|
|
168
|
-
|
|
169
|
-
```html
|
|
170
|
-
<!-- Images only -->
|
|
171
|
-
<snice-file-upload accept="image/*" label="Images"></snice-file-upload>
|
|
172
|
-
|
|
173
|
-
<!-- Specific formats -->
|
|
174
|
-
<snice-file-upload accept=".pdf,.doc,.docx" label="Documents"></snice-file-upload>
|
|
175
|
-
|
|
176
|
-
<!-- Multiple types -->
|
|
177
|
-
<snice-file-upload accept="image/*,.pdf" label="Images and PDFs"></snice-file-upload>
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### With Size Validation
|
|
181
|
-
|
|
182
|
-
```html
|
|
183
|
-
<snice-file-upload
|
|
184
|
-
label="Upload Photo"
|
|
185
|
-
accept="image/*"
|
|
186
|
-
max-size="5242880"
|
|
187
|
-
helper-text="Maximum 5MB"
|
|
188
|
-
></snice-file-upload>
|
|
189
|
-
|
|
190
|
-
<script>
|
|
191
|
-
const upload = document.querySelector('snice-file-upload');
|
|
192
|
-
upload.addEventListener('file-upload-error', (e) => {
|
|
193
|
-
alert(e.detail.message);
|
|
194
|
-
});
|
|
195
|
-
</script>
|
|
196
|
-
```
|
|
197
|
-
|
|
198
150
|
### Form Integration
|
|
199
151
|
|
|
200
152
|
```html
|
|
@@ -213,63 +165,24 @@ upload.addEventListener('file-upload-error', (e) => {
|
|
|
213
165
|
<script>
|
|
214
166
|
document.getElementById('upload-form').addEventListener('submit', async (e) => {
|
|
215
167
|
e.preventDefault();
|
|
216
|
-
|
|
217
168
|
const formData = new FormData(e.target);
|
|
218
169
|
const files = formData.getAll('documents');
|
|
219
|
-
|
|
220
170
|
console.log(`Uploading ${files.length} file(s)...`);
|
|
221
|
-
|
|
222
|
-
// Upload to server
|
|
223
|
-
const response = await fetch('/api/upload', {
|
|
224
|
-
method: 'POST',
|
|
225
|
-
body: formData
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
console.log('Upload complete!');
|
|
229
171
|
});
|
|
230
172
|
</script>
|
|
231
173
|
```
|
|
232
174
|
|
|
233
175
|
### Managing Files Programmatically
|
|
234
176
|
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
<button onclick="removeFirst()">Remove First</button>
|
|
239
|
-
|
|
240
|
-
<script>
|
|
241
|
-
const upload = document.getElementById('file-upload');
|
|
242
|
-
|
|
243
|
-
function clearFiles() {
|
|
244
|
-
upload.clear();
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
function removeFirst() {
|
|
248
|
-
upload.removeFile(0);
|
|
249
|
-
}
|
|
177
|
+
```typescript
|
|
178
|
+
upload.clear();
|
|
179
|
+
upload.removeFile(0);
|
|
250
180
|
|
|
251
181
|
upload.addEventListener('file-upload-change', (e) => {
|
|
252
182
|
console.log(`${e.detail.files.length} file(s) selected`);
|
|
253
183
|
});
|
|
254
|
-
</script>
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## CSS Parts
|
|
258
|
-
|
|
259
|
-
| Part | Description |
|
|
260
|
-
|------|-------------|
|
|
261
|
-
| `upload-area` | Drop zone container |
|
|
262
|
-
| `input` | Hidden file input |
|
|
263
|
-
| `file-item` | Individual file entry |
|
|
264
|
-
| `error-text` | Error text element |
|
|
265
|
-
| `helper-text` | Helper text element |
|
|
266
184
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
- **File Validation**: Size and type validation with error messaging
|
|
272
|
-
- **Multiple Files**: Support for single or multiple file selection
|
|
273
|
-
- **File Management**: Add and remove files before upload
|
|
274
|
-
- **Form Integration**: Form-associated custom element
|
|
275
|
-
- **Accessibility**: Full keyboard support and ARIA attributes
|
|
185
|
+
upload.addEventListener('file-upload-error', (e) => {
|
|
186
|
+
console.error('Upload error:', e.detail.message);
|
|
187
|
+
});
|
|
188
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/flip-card.md -->
|
|
2
2
|
|
|
3
|
-
# Flip Card
|
|
3
|
+
# Flip Card
|
|
4
4
|
|
|
5
5
|
The flip card component creates a two-sided card with a CSS 3D flip animation. Content is placed in front and back slots, and the card can be flipped by clicking, keyboard interaction, or programmatically.
|
|
6
6
|
|
|
@@ -9,10 +9,11 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
|
|
|
9
9
|
- [Methods](#methods)
|
|
10
10
|
- [Events](#events)
|
|
11
11
|
- [Slots](#slots)
|
|
12
|
-
- [CSS Custom Properties](#css-custom-properties)
|
|
13
12
|
- [CSS Parts](#css-parts)
|
|
13
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
14
14
|
- [Basic Usage](#basic-usage)
|
|
15
15
|
- [Examples](#examples)
|
|
16
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
16
17
|
- [Accessibility](#accessibility)
|
|
17
18
|
|
|
18
19
|
## Properties
|
|
@@ -29,7 +30,7 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
|
|
|
29
30
|
| Method | Arguments | Description |
|
|
30
31
|
|--------|-----------|-------------|
|
|
31
32
|
| `flip()` | -- | Toggle between front and back faces |
|
|
32
|
-
| `flipTo()` | `side: 'front' \| 'back'` | Flip to a specific side |
|
|
33
|
+
| `flipTo(side)` | `side: 'front' \| 'back'` | Flip to a specific side |
|
|
33
34
|
|
|
34
35
|
## Events
|
|
35
36
|
|
|
@@ -44,21 +45,13 @@ The flip card component creates a two-sided card with a CSS 3D flip animation. C
|
|
|
44
45
|
| `front` | Content displayed on the front face of the card |
|
|
45
46
|
| `back` | Content displayed on the back face of the card |
|
|
46
47
|
|
|
47
|
-
## CSS Custom Properties
|
|
48
|
-
|
|
49
|
-
| Property | Description |
|
|
50
|
-
|----------|-------------|
|
|
51
|
-
| `--flip-duration` | Animation duration (automatically set from the `duration` property) |
|
|
52
|
-
|
|
53
48
|
## CSS Parts
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
59
|
-
| `
|
|
60
|
-
| `front` | `<div>` | The front face container |
|
|
61
|
-
| `back` | `<div>` | The back face container |
|
|
50
|
+
| Part | Description |
|
|
51
|
+
|------|-------------|
|
|
52
|
+
| `base` | The outer flip card container |
|
|
53
|
+
| `front` | The front face container |
|
|
54
|
+
| `back` | The back face container |
|
|
62
55
|
|
|
63
56
|
```css
|
|
64
57
|
snice-flip-card::part(base) {
|
|
@@ -74,8 +67,18 @@ snice-flip-card::part(back) {
|
|
|
74
67
|
}
|
|
75
68
|
```
|
|
76
69
|
|
|
70
|
+
## CSS Custom Properties
|
|
71
|
+
|
|
72
|
+
| Property | Description |
|
|
73
|
+
|----------|-------------|
|
|
74
|
+
| `--flip-duration` | Animation duration (automatically set from the `duration` property) |
|
|
75
|
+
|
|
77
76
|
## Basic Usage
|
|
78
77
|
|
|
78
|
+
```typescript
|
|
79
|
+
import 'snice/components/flip-card/snice-flip-card';
|
|
80
|
+
```
|
|
81
|
+
|
|
79
82
|
```html
|
|
80
83
|
<snice-flip-card style="width: 300px; height: 200px;">
|
|
81
84
|
<div slot="front">Front side</div>
|
|
@@ -83,10 +86,6 @@ snice-flip-card::part(back) {
|
|
|
83
86
|
</snice-flip-card>
|
|
84
87
|
```
|
|
85
88
|
|
|
86
|
-
```typescript
|
|
87
|
-
import 'snice/components/flip-card/snice-flip-card';
|
|
88
|
-
```
|
|
89
|
-
|
|
90
89
|
## Examples
|
|
91
90
|
|
|
92
91
|
### Horizontal Flip (Default)
|
|
@@ -126,13 +125,11 @@ Use `direction="vertical"` to flip the card around the X axis.
|
|
|
126
125
|
Set `duration` to control the speed of the flip animation.
|
|
127
126
|
|
|
128
127
|
```html
|
|
129
|
-
<!-- Slow flip -->
|
|
130
128
|
<snice-flip-card duration="1200" style="width: 250px; height: 180px;">
|
|
131
129
|
<div slot="front">Slow flip (1.2s)</div>
|
|
132
130
|
<div slot="back">Back side</div>
|
|
133
131
|
</snice-flip-card>
|
|
134
132
|
|
|
135
|
-
<!-- Fast flip -->
|
|
136
133
|
<snice-flip-card duration="200" style="width: 250px; height: 180px;">
|
|
137
134
|
<div slot="front">Fast flip (0.2s)</div>
|
|
138
135
|
<div slot="back">Back side</div>
|
|
@@ -155,17 +152,13 @@ Disable click-to-flip and control the card from JavaScript.
|
|
|
155
152
|
</div>
|
|
156
153
|
</snice-flip-card>
|
|
157
154
|
|
|
158
|
-
<
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
<button onclick="document.getElementById('controlled-card').flip()">Toggle</button>
|
|
162
|
-
</div>
|
|
155
|
+
<button onclick="document.getElementById('controlled-card').flipTo('front')">Show Front</button>
|
|
156
|
+
<button onclick="document.getElementById('controlled-card').flipTo('back')">Show Back</button>
|
|
157
|
+
<button onclick="document.getElementById('controlled-card').flip()">Toggle</button>
|
|
163
158
|
```
|
|
164
159
|
|
|
165
160
|
### Flashcard Study Deck
|
|
166
161
|
|
|
167
|
-
Build a flashcard-style study app by listening to flip events.
|
|
168
|
-
|
|
169
162
|
```html
|
|
170
163
|
<snice-flip-card id="flashcard" direction="vertical" style="width: 350px; height: 250px;">
|
|
171
164
|
<div slot="front" style="display: flex; align-items: center; justify-content: center; font-size: 1.25rem; padding: 2rem; text-align: center;">
|
|
@@ -177,8 +170,6 @@ Build a flashcard-style study app by listening to flip events.
|
|
|
177
170
|
</snice-flip-card>
|
|
178
171
|
|
|
179
172
|
<script type="module">
|
|
180
|
-
import 'snice/components/flip-card/snice-flip-card';
|
|
181
|
-
|
|
182
173
|
const card = document.getElementById('flashcard');
|
|
183
174
|
card.addEventListener('flip-change', (e) => {
|
|
184
175
|
console.log(`Now showing: ${e.detail.side}`);
|
|
@@ -186,9 +177,14 @@ Build a flashcard-style study app by listening to flip events.
|
|
|
186
177
|
</script>
|
|
187
178
|
```
|
|
188
179
|
|
|
180
|
+
## Keyboard Navigation
|
|
181
|
+
|
|
182
|
+
When `click-to-flip` is enabled:
|
|
183
|
+
- **Enter** / **Space** -- Toggle the card flip
|
|
184
|
+
|
|
189
185
|
## Accessibility
|
|
190
186
|
|
|
191
187
|
- **Keyboard support**: When `click-to-flip` is enabled, pressing Enter or Space toggles the card
|
|
192
|
-
- **Focus management**: The card is focusable
|
|
193
|
-
- **ARIA attributes**: The component
|
|
188
|
+
- **Focus management**: The card is focusable with `tabindex="0"` when click-to-flip is enabled
|
|
189
|
+
- **ARIA attributes**: The component uses `role="button"` and `aria-label` to convey state for assistive technologies
|
|
194
190
|
- **Visible content**: Both sides of the card accept arbitrary slotted content, allowing for accessible markup on each face
|
package/docs/components/flow.md
CHANGED
|
@@ -1,70 +1,98 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/flow.md -->
|
|
2
2
|
|
|
3
3
|
# Flow
|
|
4
|
-
`<snice-flow>`
|
|
5
4
|
|
|
6
5
|
A node-based flow/diagram editor component for building visual workflows, data pipelines, and node graphs. Features draggable nodes with input/output ports, bezier curve edges, zoom/pan canvas, snap-to-grid, and a minimap overview.
|
|
7
6
|
|
|
8
|
-
##
|
|
7
|
+
## Table of Contents
|
|
8
|
+
- [Properties](#properties)
|
|
9
|
+
- [Methods](#methods)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
|
|
17
|
+
| Property | Type | Default | Description |
|
|
18
|
+
|----------|------|---------|-------------|
|
|
19
|
+
| `nodes` | `FlowNode[]` | `[]` | Array of node definitions (set via JS) |
|
|
20
|
+
| `edges` | `FlowEdge[]` | `[]` | Array of edge definitions (set via JS) |
|
|
21
|
+
| `snapToGrid` (attr: `snap-to-grid`) | `boolean` | `true` | Snap node positions to grid |
|
|
22
|
+
| `gridSize` (attr: `grid-size`) | `number` | `20` | Grid spacing in pixels |
|
|
23
|
+
| `zoomEnabled` (attr: `zoom-enabled`) | `boolean` | `true` | Enable mouse wheel zoom |
|
|
24
|
+
| `panEnabled` (attr: `pan-enabled`) | `boolean` | `true` | Enable background pan |
|
|
25
|
+
| `minimap` | `boolean` | `true` | Show minimap overview |
|
|
26
|
+
| `editable` | `boolean` | `true` | Allow drawing new edges |
|
|
27
|
+
|
|
28
|
+
### FlowNode Interface
|
|
9
29
|
|
|
10
|
-
**ESM (bundler)**
|
|
11
30
|
```typescript
|
|
12
|
-
|
|
13
|
-
|
|
31
|
+
interface FlowNode {
|
|
32
|
+
id: string;
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
type?: string; // Shown as small label above title
|
|
36
|
+
data?: Record<string, unknown>; // Custom data payload
|
|
37
|
+
label?: string; // Node title
|
|
38
|
+
width?: number; // Default: 160
|
|
39
|
+
height?: number; // Default: 80
|
|
40
|
+
inputs?: FlowPort[]; // Input ports (left side)
|
|
41
|
+
outputs?: FlowPort[]; // Output ports (right side)
|
|
42
|
+
color?: string; // Header background color
|
|
43
|
+
selected?: boolean;
|
|
44
|
+
}
|
|
14
45
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
46
|
+
interface FlowPort {
|
|
47
|
+
id: string;
|
|
48
|
+
label?: string;
|
|
49
|
+
type?: string;
|
|
50
|
+
}
|
|
19
51
|
```
|
|
20
52
|
|
|
21
|
-
|
|
53
|
+
### FlowEdge Interface
|
|
22
54
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
55
|
+
```typescript
|
|
56
|
+
interface FlowEdge {
|
|
57
|
+
id: string;
|
|
58
|
+
source: string; // Source node id
|
|
59
|
+
target: string; // Target node id
|
|
60
|
+
sourcePort?: string; // Source port id
|
|
61
|
+
targetPort?: string; // Target port id
|
|
62
|
+
label?: string; // Edge label (shown at midpoint)
|
|
63
|
+
color?: string; // Custom stroke color
|
|
64
|
+
animated?: boolean; // Dashed animated stroke
|
|
65
|
+
}
|
|
66
|
+
```
|
|
33
67
|
|
|
34
68
|
## Methods
|
|
35
69
|
|
|
36
|
-
| Method | Description |
|
|
37
|
-
|
|
38
|
-
| `addNode(node)` | Add a node to the canvas |
|
|
39
|
-
| `removeNode(id)` | Remove a node and its connected edges |
|
|
40
|
-
| `addEdge(edge)` | Add an edge between two ports |
|
|
41
|
-
| `removeEdge(id)` | Remove an edge |
|
|
42
|
-
| `fitView()` | Auto-zoom to fit all nodes in view |
|
|
70
|
+
| Method | Arguments | Description |
|
|
71
|
+
|--------|-----------|-------------|
|
|
72
|
+
| `addNode(node)` | `node: FlowNode` | Add a node to the canvas |
|
|
73
|
+
| `removeNode(id)` | `id: string` | Remove a node and its connected edges |
|
|
74
|
+
| `addEdge(edge)` | `edge: FlowEdge` | Add an edge between two ports |
|
|
75
|
+
| `removeEdge(id)` | `id: string` | Remove an edge |
|
|
76
|
+
| `fitView()` | -- | Auto-zoom to fit all nodes in view |
|
|
43
77
|
|
|
44
78
|
## Events
|
|
45
79
|
|
|
46
80
|
| Event | Detail | Description |
|
|
47
81
|
|-------|--------|-------------|
|
|
48
|
-
| `node-drag` | `{ node, x, y }` | Node was dragged to new position |
|
|
49
|
-
| `node-select` | `{ node }` | Node selected (null when deselected) |
|
|
50
|
-
| `edge-connect` | `{ edge }` | New edge created by dragging between ports |
|
|
51
|
-
| `edge-disconnect` | `{ edge }` | Edge removed |
|
|
52
|
-
| `canvas-click` | `{ x, y }` | Background canvas clicked |
|
|
53
|
-
|
|
54
|
-
## CSS Custom Properties
|
|
55
|
-
|
|
56
|
-
The component uses standard snice theme tokens with fallbacks. Override with custom properties on the host element.
|
|
82
|
+
| `node-drag` | `{ node: FlowNode, x: number, y: number }` | Node was dragged to new position |
|
|
83
|
+
| `node-select` | `{ node: FlowNode \| null }` | Node selected (null when deselected) |
|
|
84
|
+
| `edge-connect` | `{ edge: FlowEdge }` | New edge created by dragging between ports |
|
|
85
|
+
| `edge-disconnect` | `{ edge: FlowEdge }` | Edge removed |
|
|
86
|
+
| `canvas-click` | `{ x: number, y: number }` | Background canvas clicked |
|
|
57
87
|
|
|
58
88
|
## CSS Parts
|
|
59
89
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
|
63
|
-
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `nodes` | `<div>` | Container for all node elements |
|
|
67
|
-
| `minimap` | `<div>` | Minimap overview panel |
|
|
90
|
+
| Part | Description |
|
|
91
|
+
|------|-------------|
|
|
92
|
+
| `base` | Outer flow container |
|
|
93
|
+
| `canvas` | SVG layer for edges and connections |
|
|
94
|
+
| `nodes` | Container for all node elements |
|
|
95
|
+
| `minimap` | Minimap overview panel |
|
|
68
96
|
|
|
69
97
|
```css
|
|
70
98
|
snice-flow::part(base) {
|
|
@@ -159,7 +187,6 @@ flow.edges = [
|
|
|
159
187
|
### Programmatic API
|
|
160
188
|
|
|
161
189
|
```javascript
|
|
162
|
-
// Add nodes and edges dynamically
|
|
163
190
|
flow.addNode({
|
|
164
191
|
id: 'new-node', x: 200, y: 200, label: 'New Node',
|
|
165
192
|
inputs: [{ id: 'in', label: 'In' }],
|
|
@@ -171,55 +198,13 @@ flow.addEdge({
|
|
|
171
198
|
sourcePort: 'out', targetPort: 'in',
|
|
172
199
|
});
|
|
173
200
|
|
|
174
|
-
// Remove
|
|
175
201
|
flow.removeNode('new-node'); // also removes connected edges
|
|
176
202
|
flow.removeEdge('new-edge');
|
|
177
203
|
|
|
178
|
-
// Fit all nodes into view
|
|
179
204
|
flow.fitView();
|
|
180
205
|
```
|
|
181
206
|
|
|
182
|
-
###
|
|
183
|
-
|
|
184
|
-
Users can create connections by clicking and dragging from a port dot on one node to a port dot on another node. A preview bezier curve shows while dragging.
|
|
185
|
-
|
|
186
|
-
## Types
|
|
187
|
-
|
|
188
|
-
```typescript
|
|
189
|
-
interface FlowNode {
|
|
190
|
-
id: string;
|
|
191
|
-
x: number;
|
|
192
|
-
y: number;
|
|
193
|
-
type?: string; // Shown as small label above title
|
|
194
|
-
data?: Record<string, unknown>; // Custom data payload
|
|
195
|
-
label?: string; // Node title
|
|
196
|
-
width?: number; // Default: 160
|
|
197
|
-
height?: number; // Default: 80
|
|
198
|
-
inputs?: FlowPort[]; // Input ports (left side)
|
|
199
|
-
outputs?: FlowPort[]; // Output ports (right side)
|
|
200
|
-
color?: string; // Header background color
|
|
201
|
-
selected?: boolean;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
interface FlowPort {
|
|
205
|
-
id: string;
|
|
206
|
-
label?: string;
|
|
207
|
-
type?: string;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
interface FlowEdge {
|
|
211
|
-
id: string;
|
|
212
|
-
source: string; // Source node id
|
|
213
|
-
target: string; // Target node id
|
|
214
|
-
sourcePort?: string; // Source port id
|
|
215
|
-
targetPort?: string; // Target port id
|
|
216
|
-
label?: string; // Edge label (shown at midpoint)
|
|
217
|
-
color?: string; // Custom stroke color
|
|
218
|
-
animated?: boolean; // Dashed animated stroke
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## Interaction
|
|
207
|
+
### Interaction
|
|
223
208
|
|
|
224
209
|
- **Drag nodes**: Click and drag a node to move it. Snaps to grid if enabled.
|
|
225
210
|
- **Draw edges**: Click and drag from a port dot to another port dot.
|