@mova-ui/react 0.4.6 → 0.4.8
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/dist/catalog/components/dither-charts/DitherChartsGrid.js +3 -3
- package/dist/catalog/components/simple-comp/DitherChartsGrid.js +3 -3
- package/dist/catalog/data/ditherCharts.js +3 -3
- package/dist/catalog/data/formElements.js +2 -2
- package/dist/catalog/data/installCommand.js +2 -2
- package/dist/catalog/data/metrics.js +2 -2
- package/dist/catalog/data/supportedRegistryIds.js +1 -1
- package/dist/catalog/data/textAnimations.js +2 -2
- package/dist/catalog/data/toggles.js +2 -2
- package/dist/catalog/data/transitions.js +2 -2
- package/dist/catalog-chunks/{chunk-VMGI6CMO.js → chunk-6NP66VN5.js} +1 -1
- package/dist/catalog-chunks/{chunk-OWYADZUR.js → chunk-WKFJSUM3.js} +1 -1
- package/dist/catalog-chunks/{chunk-FXF53HPE.js → chunk-YPZZOKH4.js} +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +3375 -682
- package/dist/styles.css +1 -1
- package/dist/ui/cards/balance-bar-chart-card.d.ts +25 -0
- package/dist/ui/cards/calendar-day-card.d.ts +32 -0
- package/dist/ui/cards/day-trading-order-ticket.d.ts +24 -0
- package/dist/ui/cards/imessage-chat.d.ts +21 -0
- package/dist/ui/cards/liquid-glass-sheet.d.ts +19 -0
- package/dist/ui/cards/voice-assistant-card.d.ts +21 -0
- package/package.json +3 -2
- package/registry/1.json +1 -1
- package/registry/10.json +1 -1
- package/registry/11.json +1 -1
- package/registry/12.json +1 -1
- package/registry/13.json +1 -1
- package/registry/14.json +1 -1
- package/registry/15.json +1 -1
- package/registry/16.json +1 -1
- package/registry/17.json +1 -1
- package/registry/18.json +1 -1
- package/registry/19.json +1 -1
- package/registry/2.json +1 -1
- package/registry/20.json +1 -1
- package/registry/21.json +1 -1
- package/registry/22.json +1 -1
- package/registry/23.json +1 -1
- package/registry/24.json +1 -1
- package/registry/25.json +1 -1
- package/registry/26.json +1 -1
- package/registry/27.json +1 -1
- package/registry/28.json +1 -1
- package/registry/29.json +1 -1
- package/registry/3.json +1 -1
- package/registry/30.json +1 -1
- package/registry/31.json +1 -1
- package/registry/32.json +1 -1
- package/registry/33.json +1 -1
- package/registry/34.json +1 -1
- package/registry/35.json +1 -1
- package/registry/36.json +1 -1
- package/registry/37.json +1 -1
- package/registry/4.json +1 -1
- package/registry/5.json +1 -1
- package/registry/6.json +1 -1
- package/registry/7.json +1 -1
- package/registry/8.json +1 -1
- package/registry/9.json +1 -1
- package/registry/ab-segmented-tabs.json +1 -1
- package/registry/accordion-blind.json +1 -1
- package/registry/accordion-loader.json +1 -1
- package/registry/ai-approval-card.json +1 -1
- package/registry/ai-code-block.json +1 -1
- package/registry/ai-context-meter.json +1 -1
- package/registry/ai-fine-tune-card.json +1 -1
- package/registry/ai-prompt-bar.json +1 -1
- package/registry/ai-sidebar-nav.json +1 -1
- package/registry/ai-sources.json +1 -1
- package/registry/ai-suggestions.json +1 -1
- package/registry/ai-task-list.json +1 -1
- package/registry/ai-tool-call.json +1 -1
- package/registry/analyzing-image.json +1 -1
- package/registry/animated-sidebar.json +1 -1
- package/registry/animated-tags.json +1 -1
- package/registry/app-icon-load.json +1 -1
- package/registry/apple-breathe.json +1 -1
- package/registry/apple-equalizer.json +1 -1
- package/registry/apple-icon-morph.json +1 -1
- package/registry/apple-pulse-dots.json +1 -1
- package/registry/apple-scale-pulse.json +1 -1
- package/registry/apple-sound-wave.json +1 -1
- package/registry/apple-text-reveal.json +1 -1
- package/registry/apple-unlock.json +1 -1
- package/registry/arc-tracer.json +1 -1
- package/registry/balance-bar-chart-card.json +18 -0
- package/registry/bar-cascade.json +1 -1
- package/registry/bar-sweep.json +1 -1
- package/registry/blur-text.json +1 -1
- package/registry/blur-up-char.json +1 -1
- package/registry/blur-up-word.json +1 -1
- package/registry/bobbing-dots.json +1 -1
- package/registry/bookmark-corner-peel.json +1 -1
- package/registry/bookmark-save-pill.json +1 -1
- package/registry/bookmark-toggle.json +1 -1
- package/registry/border-trail-loading.json +1 -1
- package/registry/bounce-dots.json +1 -1
- package/registry/bounce-in-char.json +1 -1
- package/registry/bouncing-bars.json +1 -1
- package/registry/bouncing-dots.json +1 -1
- package/registry/bouncing-lines.json +1 -1
- package/registry/bouncing-square.json +1 -1
- package/registry/breathe-ring.json +1 -1
- package/registry/breathing-glow.json +1 -1
- package/registry/breathing-square.json +1 -1
- package/registry/btn-1.json +1 -1
- package/registry/btn-10.json +1 -1
- package/registry/btn-11.json +1 -1
- package/registry/btn-12.json +1 -1
- package/registry/btn-13.json +1 -1
- package/registry/btn-14.json +1 -1
- package/registry/btn-15.json +1 -1
- package/registry/btn-16.json +1 -1
- package/registry/btn-17.json +1 -1
- package/registry/btn-18.json +1 -1
- package/registry/btn-19.json +1 -1
- package/registry/btn-2.json +1 -1
- package/registry/btn-20.json +1 -1
- package/registry/btn-21.json +1 -1
- package/registry/btn-22.json +1 -1
- package/registry/btn-23.json +1 -1
- package/registry/btn-24.json +1 -1
- package/registry/btn-25.json +1 -1
- package/registry/btn-26.json +1 -1
- package/registry/btn-27.json +1 -1
- package/registry/btn-28.json +1 -1
- package/registry/btn-29.json +1 -1
- package/registry/btn-3.json +1 -1
- package/registry/btn-30.json +1 -1
- package/registry/btn-31.json +1 -1
- package/registry/btn-32.json +1 -1
- package/registry/btn-33.json +1 -1
- package/registry/btn-34.json +1 -1
- package/registry/btn-35.json +1 -1
- package/registry/btn-36.json +1 -1
- package/registry/btn-37.json +1 -1
- package/registry/btn-4.json +1 -1
- package/registry/btn-5.json +1 -1
- package/registry/btn-6.json +1 -1
- package/registry/btn-7.json +1 -1
- package/registry/btn-8.json +1 -1
- package/registry/btn-9.json +1 -1
- package/registry/button-slide-arrow.json +1 -1
- package/registry/cacheable-bandwidth-cost.json +1 -1
- package/registry/calendar-day-card.json +19 -0
- package/registry/card-arc-5.json +1 -1
- package/registry/card-arc-7.json +1 -1
- package/registry/card-carousel-mono.json +1 -1
- package/registry/card-carousel.json +1 -1
- package/registry/card-cascade-stagger.json +1 -1
- package/registry/card-corner-fan.json +1 -1
- package/registry/card-cover-flow-mono.json +1 -1
- package/registry/card-cover-flow.json +1 -1
- package/registry/card-deck-cascade.json +1 -1
- package/registry/card-glance-preview.json +1 -1
- package/registry/card-hover.json +1 -1
- package/registry/card-linear-spread.json +1 -1
- package/registry/card-long-arc-5.json +1 -1
- package/registry/card-scatter-spread.json +1 -1
- package/registry/card-stack-peel.json +1 -1
- package/registry/card-stamp-arc.json +1 -1
- package/registry/card-time-machine-mono.json +1 -1
- package/registry/card-time-machine.json +1 -1
- package/registry/card-wheel-fan.json +1 -1
- package/registry/category-select.json +1 -1
- package/registry/character-stagger.json +1 -1
- package/registry/checkbox-draw.json +1 -1
- package/registry/checkmark-draw.json +1 -1
- package/registry/circle-toggle.json +1 -1
- package/registry/circuit-trace-draw.json +1 -1
- package/registry/circular-bars.json +1 -1
- package/registry/circular-create-button.json +1 -1
- package/registry/classic-spinner.json +1 -1
- package/registry/classic-toggle.json +1 -1
- package/registry/clock-spinner.json +1 -1
- package/registry/comet-spinner.json +1 -1
- package/registry/compass-needle-deflect.json +1 -1
- package/registry/concentric-pulse.json +1 -1
- package/registry/concentric-ring.json +1 -1
- package/registry/concentric-squares.json +1 -1
- package/registry/context-menu.json +1 -1
- package/registry/conveyor-loop.json +1 -1
- package/registry/credit-score-barcode-meter.json +1 -1
- package/registry/cross-spinner.json +1 -1
- package/registry/cube-flip-spring.json +1 -1
- package/registry/cursor-trail.json +1 -1
- package/registry/dash-ring.json +1 -1
- package/registry/dashed-spiral.json +1 -1
- package/registry/date-position-selector.json +1 -1
- package/registry/day-trading-order-ticket.json +17 -0
- package/registry/dia-text-reveal.json +1 -1
- package/registry/diamond-grid.json +1 -1
- package/registry/diamond-rotate-spring.json +1 -1
- package/registry/dislike-toggle.json +1 -1
- package/registry/dither-book.json +1 -1
- package/registry/domino-cascade.json +1 -1
- package/registry/dot-spinner.json +1 -1
- package/registry/dots-ring.json +1 -1
- package/registry/double-bounce-toggle.json +1 -1
- package/registry/double-ring.json +1 -1
- package/registry/download-icons.json +1 -1
- package/registry/drop-dot.json +1 -1
- package/registry/drop-in-char.json +1 -1
- package/registry/droplet-squish.json +1 -1
- package/registry/dual-arc.json +1 -1
- package/registry/dual-magnet-dipole.json +1 -1
- package/registry/dynamic-island.json +1 -1
- package/registry/elastic-bars.json +1 -1
- package/registry/elastic-square.json +1 -1
- package/registry/elastic-tag-snap.json +1 -1
- package/registry/error-shake.json +1 -1
- package/registry/expanding-cross.json +1 -1
- package/registry/expanding-icon-tabs.json +1 -1
- package/registry/face-id-scan.json +1 -1
- package/registry/fade-arc.json +1 -1
- package/registry/fade-dots.json +1 -1
- package/registry/fade-down.json +1 -1
- package/registry/fade-in-char.json +1 -1
- package/registry/fade-in-text.json +1 -1
- package/registry/fade-in-word.json +1 -1
- package/registry/fade-in.json +1 -1
- package/registry/fade-up.json +1 -1
- package/registry/file-upload-dropzone.json +1 -1
- package/registry/filter-tag-pill.json +1 -1
- package/registry/flip-square.json +1 -1
- package/registry/flip-x-char.json +1 -1
- package/registry/flip-y-char.json +1 -1
- package/registry/float-char.json +1 -1
- package/registry/float-word.json +1 -1
- package/registry/floating-diamonds.json +1 -1
- package/registry/floating-label-input.json +1 -1
- package/registry/fluid-bars.json +1 -1
- package/registry/fluid-diamond.json +1 -1
- package/registry/fluid-dot-orbit.json +1 -1
- package/registry/fluid-skeleton.json +1 -1
- package/registry/focus-blur.json +1 -1
- package/registry/form-submit-button.json +1 -1
- package/registry/french-doors-3d.json +1 -1
- package/registry/gear-tooth-step.json +1 -1
- package/registry/gears.json +1 -1
- package/registry/gelatin-wobble.json +1 -1
- package/registry/geometric-iris-shutter.json +1 -1
- package/registry/glassmorphic-card.json +1 -1
- package/registry/glow-button.json +1 -1
- package/registry/glow-text.json +1 -1
- package/registry/gooey-popover.json +1 -1
- package/registry/gradient-arc.json +1 -1
- package/registry/gradient-shimmer.json +1 -1
- package/registry/grid-dots.json +1 -1
- package/registry/haptic-ring.json +1 -1
- package/registry/heartbeat.json +1 -1
- package/registry/hex-lattice-draw.json +1 -1
- package/registry/hexagon-spinner.json +1 -1
- package/registry/hourglass.json +1 -1
- package/registry/hover-lift-char.json +1 -1
- package/registry/hover-lift-word.json +1 -1
- package/registry/hover-link-card.json +1 -1
- package/registry/hover-scale-char.json +1 -1
- package/registry/hover-scale-word.json +1 -1
- package/registry/imessage-chat.json +19 -0
- package/registry/inertia-skid-stop.json +1 -1
- package/registry/infinity-path.json +1 -1
- package/registry/input-focus-glow.json +1 -1
- package/registry/inset-action-button.json +1 -1
- package/registry/inset-button.json +1 -1
- package/registry/intersecting-rings.json +1 -1
- package/registry/ios-spinner.json +1 -1
- package/registry/kinetic-metronome-tick.json +1 -1
- package/registry/kinetic-tension-capsule.json +1 -1
- package/registry/light-dark-morph.json +1 -1
- package/registry/like-toggle.json +1 -1
- package/registry/line-spinner.json +1 -1
- package/registry/liquid-dots.json +1 -1
- package/registry/liquid-glass-sheet.json +16 -0
- package/registry/mac-terminal.json +1 -1
- package/registry/magnetic-button.json +1 -1
- package/registry/magnetic-disks.json +1 -1
- package/registry/magnetic-dots.json +1 -1
- package/registry/magnetic-slide-btn.json +1 -1
- package/registry/manifest.json +750 -642
- package/registry/matrix-grid-loader.json +1 -1
- package/registry/minimal-triangle.json +1 -1
- package/registry/modular-tile-snap.json +1 -1
- package/registry/mono-activity-blue.json +1 -1
- package/registry/mono-activity-green.json +1 -1
- package/registry/mono-activity-purple.json +1 -1
- package/registry/mono-heatmap.json +1 -1
- package/registry/mono-rounded-area.json +1 -1
- package/registry/mono-rounded-bar.json +1 -1
- package/registry/mono-rounded-bubble.json +1 -1
- package/registry/mono-rounded-bullet.json +1 -1
- package/registry/mono-rounded-candlestick.json +1 -1
- package/registry/mono-rounded-composed.json +1 -1
- package/registry/mono-rounded-donut.json +1 -1
- package/registry/mono-rounded-funnel.json +1 -1
- package/registry/mono-rounded-gauge-arc.json +1 -1
- package/registry/mono-rounded-heatmap.json +1 -1
- package/registry/mono-rounded-kpi.json +1 -1
- package/registry/mono-rounded-line.json +1 -1
- package/registry/mono-rounded-meter.json +1 -1
- package/registry/mono-rounded-polar.json +1 -1
- package/registry/mono-rounded-pyramid.json +1 -1
- package/registry/mono-rounded-radar.json +1 -1
- package/registry/mono-rounded-radial-gauge.json +1 -1
- package/registry/mono-rounded-radial-group.json +1 -1
- package/registry/mono-rounded-range.json +1 -1
- package/registry/mono-rounded-sankey.json +1 -1
- package/registry/mono-rounded-scatter.json +1 -1
- package/registry/mono-rounded-sparkline.json +1 -1
- package/registry/mono-rounded-stacked-bar.json +1 -1
- package/registry/mono-rounded-step.json +1 -1
- package/registry/mono-rounded-stream.json +1 -1
- package/registry/mono-rounded-treemap.json +1 -1
- package/registry/mono-rounded-waterfall.json +1 -1
- package/registry/mono-stock.json +1 -1
- package/registry/morph-action-pill.json +1 -1
- package/registry/morph-dot-ring.json +1 -1
- package/registry/morph-loader.json +1 -1
- package/registry/morph-toggle.json +1 -1
- package/registry/morphing-bars.json +1 -1
- package/registry/morphing-infinity.json +1 -1
- package/registry/morphing-ring.json +1 -1
- package/registry/morphing-shape.json +1 -1
- package/registry/mouse-follow.json +1 -1
- package/registry/multi-select-chips.json +1 -1
- package/registry/multi-tab-bar.json +1 -1
- package/registry/neon-sign-draw.json +1 -1
- package/registry/nested-orbital-gimbal.json +1 -1
- package/registry/network-telemetry-matrix.json +1 -1
- package/registry/newtons-cradle.json +1 -1
- package/registry/noise-decibel-level.json +1 -1
- package/registry/obsidian-liquid-wave.json +1 -1
- package/registry/offset-rings.json +1 -1
- package/registry/orbiting-circles.json +1 -1
- package/registry/orbiting-dot.json +1 -1
- package/registry/origami-envelope-unfold.json +1 -1
- package/registry/origami-shape.json +1 -1
- package/registry/otp-input.json +1 -1
- package/registry/overview-bar-scrubber-card.json +1 -1
- package/registry/page-transition.json +1 -1
- package/registry/page-turn-curl.json +1 -1
- package/registry/password-toggle.json +1 -1
- package/registry/pendulum-bubble-level.json +1 -1
- package/registry/pendulum.json +1 -1
- package/registry/perspective-flip-stage.json +1 -1
- package/registry/perspective-flip.json +1 -1
- package/registry/perspective-layout-switcher.json +1 -1
- package/registry/physics-dock.json +1 -1
- package/registry/pill-tabs.json +1 -1
- package/registry/plus-minus-toggle.json +1 -1
- package/registry/presets.json +1 -1
- package/registry/prism-block-stack.json +1 -1
- package/registry/progress-indicator-piano.json +1 -1
- package/registry/progress-indicator.json +1 -1
- package/registry/progress-stepper.json +1 -1
- package/registry/pulsating-dots.json +1 -1
- package/registry/pulse-char.json +1 -1
- package/registry/pulse-dot.json +1 -1
- package/registry/pulse-dots.json +1 -1
- package/registry/pulse-square.json +1 -1
- package/registry/pulse-word.json +1 -1
- package/registry/pulse.json +1 -1
- package/registry/pumping-heart.json +1 -1
- package/registry/pyramid-block-build.json +1 -1
- package/registry/radar-sweep.json +1 -1
- package/registry/radial-iris-mask.json +1 -1
- package/registry/radial-spinner.json +1 -1
- package/registry/radio-scale.json +1 -1
- package/registry/range-slider.json +1 -1
- package/registry/receipt-tape-print.json +1 -1
- package/registry/rectangle-toggle.json +1 -1
- package/registry/repost-toggle.json +1 -1
- package/registry/reveal-text.json +1 -1
- package/registry/ribbon-banner-slide.json +1 -1
- package/registry/ring-sweep.json +1 -1
- package/registry/ripple-effect.json +1 -1
- package/registry/rise-up-word.json +1 -1
- package/registry/roller-blind-drop.json +1 -1
- package/registry/rolling-tumble.json +1 -1
- package/registry/rotate-in-char.json +1 -1
- package/registry/rotating-cross.json +1 -1
- package/registry/rotating-louvers.json +1 -1
- package/registry/rotating-triangle.json +1 -1
- package/registry/rudder-issue-board.json +1 -1
- package/registry/sales-analytics-dual-bars.json +1 -1
- package/registry/sales-overview-radial-dashboard.json +1 -1
- package/registry/sales-target-segmented-arc.json +1 -1
- package/registry/scale-in-char.json +1 -1
- package/registry/scale-in-text.json +1 -1
- package/registry/scale-in-word.json +1 -1
- package/registry/scale-in.json +1 -1
- package/registry/scramble-text.json +1 -1
- package/registry/scroll-canvas-unroll.json +1 -1
- package/registry/scroll-reveal.json +1 -1
- package/registry/search-expand.json +1 -1
- package/registry/segmented-arc-meter.json +1 -1
- package/registry/segmented-link-stretch.json +1 -1
- package/registry/segmented-step-bar.json +1 -1
- package/registry/segmented-stepper-dots.json +1 -1
- package/registry/select-dropdown.json +1 -1
- package/registry/server-performance-step-bars.json +1 -1
- package/registry/shape-shift-grid.json +1 -1
- package/registry/shimmer-line.json +1 -1
- package/registry/shimmer-text.json +1 -1
- package/registry/shutter-slide.json +1 -1
- package/registry/shutter-step-slices.json +1 -1
- package/registry/siri-wave.json +1 -1
- package/registry/skeleton-loader.json +1 -1
- package/registry/skeleton.json +1 -1
- package/registry/skew-x-char.json +1 -1
- package/registry/slide-down-char.json +1 -1
- package/registry/slide-down-word.json +1 -1
- package/registry/slide-left-char.json +1 -1
- package/registry/slide-left.json +1 -1
- package/registry/slide-right-char.json +1 -1
- package/registry/slide-right.json +1 -1
- package/registry/slide-up-char.json +1 -1
- package/registry/slide-up-text.json +1 -1
- package/registry/slide-up-word.json +1 -1
- package/registry/sliding-bars.json +1 -1
- package/registry/slinky-coil.json +1 -1
- package/registry/smart-card-dispenser.json +1 -1
- package/registry/smooth-dot-shift.json +1 -1
- package/registry/smooth-ring.json +1 -1
- package/registry/smooth-rounded-square.json +1 -1
- package/registry/solid-switch.json +1 -1
- package/registry/spatial-door-portal.json +1 -1
- package/registry/spinning-squares.json +1 -1
- package/registry/spiral-spinner.json +1 -1
- package/registry/split-gate-reveal.json +1 -1
- package/registry/spotlight.json +1 -1
- package/registry/spring-bars.json +1 -1
- package/registry/spring-dot-matrix.json +1 -1
- package/registry/spring-hexagon.json +1 -1
- package/registry/spring-ring-expand.json +1 -1
- package/registry/spring-text-pop.json +1 -1
- package/registry/spring-text.json +1 -1
- package/registry/square-accordion.json +1 -1
- package/registry/square-grid.json +1 -1
- package/registry/square-snake.json +1 -1
- package/registry/square-spinner.json +1 -1
- package/registry/squash-sphere.json +1 -1
- package/registry/stacked-bar-pulse.json +1 -1
- package/registry/stagger-text.json +1 -1
- package/registry/staggered-glass-curtain.json +1 -1
- package/registry/sticky-note-peel.json +1 -1
- package/registry/sticky-reveal.json +1 -1
- package/registry/stretch-x-char.json +1 -1
- package/registry/stretch-y-char.json +1 -1
- package/registry/stroke-waveform.json +1 -1
- package/registry/submenu-flyout.json +1 -1
- package/registry/success-check.json +1 -1
- package/registry/sudden-brake.json +1 -1
- package/registry/swapping-dots.json +1 -1
- package/registry/swing-word.json +1 -1
- package/registry/swirling-spinner.json +1 -1
- package/registry/symmetric-wave.json +1 -1
- package/registry/terminal-loader.json +1 -1
- package/registry/text-blink.json +1 -1
- package/registry/text-dots.json +1 -1
- package/registry/text-morph.json +1 -1
- package/registry/text-reveal.json +1 -1
- package/registry/text-shimmer-wave.json +1 -1
- package/registry/text-shimmer.json +1 -1
- package/registry/textarea-auto-grow.json +1 -1
- package/registry/theme-toggle.json +1 -1
- package/registry/tilt-card.json +1 -1
- package/registry/timer-preparation-segmented.json +1 -1
- package/registry/tracking-in-text.json +1 -1
- package/registry/tracking-out-text.json +1 -1
- package/registry/trailing-dots.json +1 -1
- package/registry/triple-dot-spinner.json +1 -1
- package/registry/twin-orbit.json +1 -1
- package/registry/typewriter-text.json +1 -1
- package/registry/typing-indicator.json +1 -1
- package/registry/typing.json +1 -1
- package/registry/use-mouse-position.json +1 -1
- package/registry/use-reduced-motion.json +1 -1
- package/registry/use-scroll-progress.json +1 -1
- package/registry/use-stagger.json +1 -1
- package/registry/use-web-haptics.json +1 -1
- package/registry/users-growth-pill-progress.json +1 -1
- package/registry/utils.json +1 -1
- package/registry/vertical-wheel-counter.json +1 -1
- package/registry/views-hourly-wave-chart.json +1 -1
- package/registry/voice-assistant-card.json +19 -0
- package/registry/wandering-cube.json +1 -1
- package/registry/wandering-eyes.json +1 -1
- package/registry/watch-spinner.json +1 -1
- package/registry/wave-dots.json +1 -1
- package/registry/wave-physics-loader.json +1 -1
- package/registry/wave-reveal.json +1 -1
- package/registry/waveform-loader.json +1 -1
- package/registry/word-reveal.json +1 -1
- package/registry/zig-zag-pulse.json +1 -1
- package/registry/zoom-in-text.json +1 -1
- package/registry/zoom-in.json +1 -1
- package/registry/zoom-out-text.json +1 -1
package/registry/arc-tracer.json
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "balance-bar-chart-card",
|
|
3
|
+
"tier": "free",
|
|
4
|
+
"version": "0.4.8",
|
|
5
|
+
"file": "balance-bar-chart-card.tsx",
|
|
6
|
+
"sourcePath": "ui/cards/balance-bar-chart-card.tsx",
|
|
7
|
+
"registryFile": "balance-bar-chart-card.json",
|
|
8
|
+
"exports": [
|
|
9
|
+
"BalanceBarChartCard",
|
|
10
|
+
"BalanceBarChartCardProps",
|
|
11
|
+
"BalanceBarPeriod",
|
|
12
|
+
"BalanceBarPoint"
|
|
13
|
+
],
|
|
14
|
+
"dependencies": [],
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"previewMode": "client",
|
|
17
|
+
"content": "\"use client\";\n\"use client\";\n\n/** Original Mova implementation; visual reference documented in docs/provenance/interactive-cards.md. */\nimport * as React from \"react\";\n\nexport interface BalanceBarPoint { label: string; value: number }\nexport interface BalanceBarPeriod { id: string; label: string; balance: number; change: string; detail: string; points: BalanceBarPoint[] }\nexport interface BalanceBarChartCardProps { periods?: BalanceBarPeriod[]; defaultPeriod?: string; currency?: string; locale?: string; onPeriodChange?: (period: BalanceBarPeriod) => void; theme?: \"light\" | \"dark\"; className?: string; style?: React.CSSProperties }\nconst periodsDefault: BalanceBarPeriod[] = [\n { id: \"week\", label: \"Week\", balance: 12480.50, change: \"+8.2%\", detail: \"+$940.20 this week\", points: [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"].map((label, i) => ({ label, value: [96, 142, 88, 210, 175, 120, 109][i] })) },\n { id: \"month\", label: \"Month\", balance: 12480.50, change: \"+12.4%\", detail: \"+$4,220.60 this month\", points: [\"1\", \"5\", \"10\", \"15\", \"20\", \"25\", \"30\"].map((label, i) => ({ label, value: [420, 610, 380, 720, 560, 890, 640][i] })) },\n { id: \"year\", label: \"Year\", balance: 12480.50, change: \"+18.6%\", detail: \"+$32,520.00 this year\", points: [\"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"].map((label, i) => ({ label, value: [3120, 4210, 3680, 5020, 4460, 5890, 6140][i] })) },\n];\nconst useLayoutEffect = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect;\n\n/** Keep the previous and next strings in the same grid cell during a soft swap. */\nfunction SoftText({ text, className = \"\" }: { text: string; className?: string }) {\n const element = React.useRef<HTMLSpanElement>(null);\n const initial = React.useRef(text);\n useLayoutEffect(() => {\n const el = element.current;\n if (!el) return;\n const previous = el.dataset.text ?? initial.current;\n if (previous === text) return;\n el.dataset.text = text;\n const width = el.getBoundingClientRect().width;\n const old = document.createElement(\"span\");\n old.className = \"mbc-soft-old\";\n old.setAttribute(\"aria-hidden\", \"true\");\n old.textContent = previous;\n const next = document.createElement(\"span\");\n next.className = \"mbc-soft-new\";\n next.textContent = text;\n el.classList.remove(\"is-swapping\");\n el.replaceChildren(old, next);\n const nextWidth = next.getBoundingClientRect().width;\n el.style.width = `${width}px`;\n void el.offsetWidth;\n el.classList.add(\"is-swapping\");\n el.style.width = `${nextWidth}px`;\n const computed = getComputedStyle(el);\n const duration = Math.max(parseFloat(computed.getPropertyValue(\"--mbc-text-dur\")) || 0, parseFloat(computed.getPropertyValue(\"--mbc-text-resize-dur\")) || 0);\n const timer = window.setTimeout(() => {\n el.classList.remove(\"is-swapping\");\n el.style.removeProperty(\"width\");\n el.textContent = text;\n }, duration + 40);\n return () => window.clearTimeout(timer);\n }, [text]);\n return <span ref={element} className={`mbc-soft ${className}`}>{initial.current}</span>;\n}\n\nexport function BalanceBarChartCard({ periods = periodsDefault, defaultPeriod = \"week\", currency = \"USD\", locale = \"en-US\", onPeriodChange, theme = \"light\", className = \"\", style }: BalanceBarChartCardProps = {}) {\n const [selected, setSelected] = React.useState(defaultPeriod);\n const [active, setActive] = React.useState<number | null>(null);\n const root = React.useRef<HTMLElement>(null);\n const chart = React.useRef<HTMLDivElement>(null);\n const tooltip = React.useRef<HTMLDivElement>(null);\n const tooltipText = React.useRef<HTMLSpanElement>(null);\n const tabs = React.useRef<HTMLDivElement>(null);\n const pill = React.useRef<HTMLSpanElement>(null);\n const measuredPill = React.useRef(false);\n const lastTooltip = React.useRef(\"\");\n const tipId = React.useId();\n const chartId = React.useId();\n const period = periods.find(item => item.id === selected) ?? periods[0];\n const periodIndex = period ? periods.indexOf(period) : -1;\n const money = new Intl.NumberFormat(locale, { style: \"currency\", currency });\n const pointMoney = new Intl.NumberFormat(locale, { style: \"currency\", currency, minimumFractionDigits: 0, maximumFractionDigits: 2 });\n const amountParts = money.formatToParts(period?.balance ?? 0);\n const max = Math.max(1, ...(period?.points.map(point => Math.abs(point.value)) ?? []));\n const signed = period?.points.some(point => point.value < 0) ?? false;\n const negativeChange = period?.change.trim().startsWith(\"-\");\n const detail = /^(.*?)(\\$[\\d,.]+)(\\s+this\\s+)(.+)$/.exec(period?.detail ?? \"\");\n if (active !== null && period?.points[active]) lastTooltip.current = pointMoney.format(period.points[active].value);\n\n useLayoutEffect(() => {\n const tip = tooltip.current;\n if (!tip) return;\n const trigger = chart.current?.querySelectorAll<HTMLButtonElement>(\".mbc-column\")[active ?? -1];\n if (active === null || !trigger || !chart.current || !tooltipText.current) {\n tip.dataset.show = \"false\";\n tip.setAttribute(\"aria-hidden\", \"true\");\n return;\n }\n const showing = tip.dataset.show === \"true\";\n const computed = getComputedStyle(tip);\n const width = Math.ceil(tooltipText.current.scrollWidth + parseFloat(computed.paddingLeft) + parseFloat(computed.paddingRight));\n const groupRect = chart.current.getBoundingClientRect();\n const rect = trigger.getBoundingClientRect();\n const x = Math.max(0, Math.min(rect.left - groupRect.left + rect.width / 2 - width / 2, groupRect.width - width));\n if (!showing) tip.style.transition = \"none\";\n tip.style.width = `${width}px`;\n tip.style.setProperty(\"--mbc-tip-x\", `${x}px`);\n if (!showing) { void tip.offsetWidth; tip.style.transition = \"\"; }\n tip.dataset.show = \"true\";\n tip.setAttribute(\"aria-hidden\", \"false\");\n }, [active, period, currency, locale]);\n\n const movePill = React.useCallback((animate: boolean) => {\n const tab = tabs.current?.querySelector<HTMLButtonElement>('[role=tab][aria-selected=\"true\"]');\n const el = pill.current;\n if (!tab || !el) return;\n if (!animate) el.style.transition = \"none\";\n el.style.transform = `translateX(${tab.offsetLeft}px)`;\n el.style.width = `${tab.offsetWidth}px`;\n if (!animate) { void el.offsetWidth; el.style.transition = \"\"; }\n }, []);\n\n useLayoutEffect(() => {\n movePill(measuredPill.current);\n measuredPill.current = true;\n }, [movePill, periodIndex, periods]);\n\n useLayoutEffect(() => {\n const resize = () => movePill(false);\n const observer = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(resize) : undefined;\n if (tabs.current) observer?.observe(tabs.current);\n window.addEventListener(\"resize\", resize);\n let cancelled = false;\n document.fonts?.ready.then(() => { if (!cancelled) movePill(false); });\n return () => { cancelled = true; observer?.disconnect(); window.removeEventListener(\"resize\", resize); };\n }, []);\n\n React.useEffect(() => {\n const el = root.current;\n if (!el) return;\n let pressed: HTMLButtonElement | null = null;\n let started = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const clear = () => { if (pressed) delete pressed.dataset.pressed; pressed = null; };\n const down = (event: PointerEvent) => {\n if (event.pointerType === \"mouse\") return;\n const button = (event.target as Element).closest<HTMLButtonElement>(\"button\");\n if (!button || button.disabled) return;\n clearTimeout(timer); clear(); pressed = button; started = performance.now(); button.dataset.pressed = \"true\";\n };\n const up = () => {\n if (!pressed) return;\n const duration = parseFloat(getComputedStyle(pressed).getPropertyValue(\"--mbc-press-dur\")) || 150;\n timer = setTimeout(clear, Math.max(0, duration - (performance.now() - started)));\n };\n el.addEventListener(\"pointerdown\", down);\n window.addEventListener(\"pointerup\", up); window.addEventListener(\"pointercancel\", up);\n return () => { clearTimeout(timer); clear(); el.removeEventListener(\"pointerdown\", down); window.removeEventListener(\"pointerup\", up); window.removeEventListener(\"pointercancel\", up); };\n }, []);\n\n function selectPeriod(item: BalanceBarPeriod) {\n if (period?.id === item.id) return;\n setSelected(item.id); setActive(null); onPeriodChange?.(item);\n }\n\n return <section ref={root} className={`mova-balance ${className}`} data-theme={theme} style={style} aria-label=\"Balance chart\">\n <style>{css}</style>\n <div className=\"mbc-label\">Balance</div>\n <div className=\"mbc-summary\">{amountParts.map((part, index) => <span key={index} className={part.type === \"decimal\" || part.type === \"fraction\" ? \"mbc-cents\" : undefined}>{part.value}</span>)}</div>\n <div className=\"mbc-change-row\">\n {period && <span className=\"mbc-change\" data-negative={negativeChange}><SoftText text={period.change} /></span>}\n <span className=\"mbc-detail\">{detail ? <>{detail[1]}<SoftText text={detail[2]} />{detail[3]}<SoftText text={detail[4]} /></> : <SoftText text={period?.detail ?? \"No balance data\"} />}</span>\n </div>\n <div ref={chart} id={chartId} className=\"mbc-chart\" role=\"tabpanel\" aria-label={period?.label ?? \"Balance data\"} onPointerLeave={() => setActive(null)}>{period?.points.map((point, index) => <button key={index} type=\"button\" className=\"mbc-column\" aria-label={`${point.label}: ${money.format(point.value)}`} aria-describedby={active === index ? tipId : undefined} onFocus={() => setActive(index)} onBlur={() => setActive(null)} onPointerEnter={() => setActive(index)} onClick={() => setActive(index)} data-current={index === period.points.length - 1}>\n <span className=\"mbc-track\" data-signed={signed}><span className=\"mbc-bar\" style={{ height: `${Math.max(4, Math.round(Math.abs(point.value) / max * (signed ? 56 : 72)))}px`, ...(signed ? point.value < 0 ? { top: \"50%\", bottom: \"auto\", borderRadius: \"0 0 2px 2px\" } : { bottom: \"50%\" } : {}) }} /></span>\n <SoftText className=\"mbc-axis\" text={point.label} />\n </button>)}<div ref={tooltip} id={tipId} role=\"tooltip\" className=\"mbc-tooltip\" data-show=\"false\" aria-hidden=\"true\"><span ref={tooltipText}>{lastTooltip.current}</span></div></div>\n <div ref={tabs} className=\"mbc-periods\" role=\"tablist\" aria-label=\"Chart period\"><span ref={pill} className=\"mbc-period-pill\" aria-hidden=\"true\" />{periods.map((item, index) => <button type=\"button\" role=\"tab\" key={item.id} aria-selected={period?.id === item.id} aria-controls={chartId} tabIndex={period?.id === item.id ? 0 : -1} onClick={() => selectPeriod(item)} onKeyDown={event => {\n const next = event.key === \"ArrowRight\" ? (index + 1) % periods.length : event.key === \"ArrowLeft\" ? (index - 1 + periods.length) % periods.length : event.key === \"Home\" ? 0 : event.key === \"End\" ? periods.length - 1 : -1;\n if (next < 0) return;\n event.preventDefault(); selectPeriod(periods[next]); tabs.current?.querySelectorAll<HTMLButtonElement>(\"[role=tab]\")[next]?.focus();\n }}>{item.label}</button>)}</div>\n </section>;\n}\nconst css = `\n.mova-balance{--mbc-bg:#fff;--mbc-fg:#0d0d0d;--mbc-muted:#6c6c6c;--mbc-bar:rgba(28,95,251,.14);--mbc-bar-hover:rgba(28,95,251,.26);--mbc-bar-current:#1c5ffb;--mbc-chip:rgba(0,0,0,.04);--mbc-pill:#fff;--mbc-tip-bg:#fff;--mbc-tip-fg:#2f2f2f;--mbc-fill:#e7f9f3;--mbc-ink:#216e55;--mbc-ease:cubic-bezier(.22,1,.36,1);--mbc-press-dur:150ms;--mbc-chart-dur:400ms;--mbc-text-dur:200ms;--mbc-text-resize-dur:240ms;--mbc-tabs-dur:250ms;box-sizing:border-box;width:300px;max-width:100%;padding:24px;border-radius:24px;background:var(--mbc-bg);color:var(--mbc-fg);font:400 13px/20px 'Inter Variable',Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;letter-spacing:0;-webkit-font-smoothing:antialiased;box-shadow:0 0 0 1px #0000000a,0 8px 32px -4px #0000000f,0 1px 3px #0000000a}\n.mova-balance[data-theme=dark]{--mbc-bg:#1d1d1d;--mbc-fg:#f2f2f2;--mbc-muted:rgba(202,202,202,.7);--mbc-bar:rgba(92,140,255,.22);--mbc-bar-hover:rgba(92,140,255,.36);--mbc-bar-current:#5c8cff;--mbc-chip:rgba(255,255,255,.07);--mbc-pill:rgba(255,255,255,.12);--mbc-tip-bg:#262626;--mbc-tip-fg:#f2f2f2;--mbc-fill:#12291f;--mbc-ink:#6fd3a8;color-scheme:dark;box-shadow:0 0 0 1px #ffffff0f,0 8px 32px -4px #0000004d,0 1px 3px #0003}\n.mova-balance *{box-sizing:border-box}.mova-balance button{font:inherit;letter-spacing:inherit;margin:0;border:0;padding:0;background:none;color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;-webkit-touch-callout:none;transition:transform var(--mbc-press-dur) var(--mbc-ease)}.mova-balance button:is(:active,[data-pressed=true]){transform:scale(.97)}.mova-balance button:focus{outline:none}.mova-balance button:focus-visible{box-shadow:0 0 0 2px var(--mbc-bg),0 0 0 4px var(--mbc-fg)}\n.mbc-label{font-size:13px;line-height:20px;color:var(--mbc-muted)}.mbc-summary{margin-top:16px;font-size:28px;line-height:34px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}.mbc-cents{color:var(--mbc-muted)}.mbc-change-row{margin-top:8px;display:flex;align-items:center;gap:8px;font-size:12px;line-height:16px;color:var(--mbc-muted);min-width:0}.mbc-detail{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.mbc-change{flex:none;display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:50px;font-size:11px;line-height:16px;font-weight:500;background:var(--mbc-fill);color:var(--mbc-ink);font-variant-numeric:tabular-nums;box-shadow:0 1px 3px #0000000a,inset 0 0 0 1px color-mix(in srgb,var(--mbc-ink) 14%,transparent),inset 0 -1px 0 color-mix(in srgb,var(--mbc-ink) 10%,transparent)}.mbc-change[data-negative=true]{--mbc-fill:#fbe9e9;--mbc-ink:#ad3c3c}.mova-balance[data-theme=dark] .mbc-change[data-negative=true]{--mbc-fill:#4c2b2b;--mbc-ink:#ffaaaa}\n.mbc-soft{display:inline-grid;justify-items:var(--mbc-text-align,start);transition:width var(--mbc-text-resize-dur) var(--mbc-ease)}.mbc-soft>span{grid-area:1/1;white-space:pre;transition:filter var(--mbc-text-dur) ease-in-out,opacity var(--mbc-text-dur) ease-in-out}.mbc-soft-new{opacity:0;filter:blur(2px)}.mbc-soft.is-swapping .mbc-soft-old{opacity:0;filter:blur(2px)}.mbc-soft.is-swapping .mbc-soft-new{opacity:1;filter:blur(0)}\n.mbc-chart{display:flex;position:relative;width:100%;gap:4px;margin-top:16px}.mova-balance .mbc-column{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:8px;padding-bottom:4px;border-radius:8px;cursor:default}.mbc-track{position:relative;height:112px;width:100%;display:flex;align-items:flex-end;justify-content:center}.mbc-track[data-signed=true]:after{content:\"\";position:absolute;top:50%;left:0;right:0;height:1px;background:#8885}.mbc-track[data-signed=true] .mbc-bar{position:absolute}.mbc-bar{display:block;width:100%;max-width:24px;border-radius:2px 2px 0 0;background:var(--mbc-bar);transition:height var(--mbc-chart-dur) var(--mbc-ease),background-color 150ms var(--mbc-ease)}.mbc-column:focus-visible .mbc-bar{background:var(--mbc-bar-hover)}@media(hover:hover) and (pointer:fine){.mbc-column:hover .mbc-bar{background:var(--mbc-bar-hover)}.mbc-periods button:not([aria-selected=true]):hover{color:var(--mbc-fg)}}.mbc-column[data-current=true] .mbc-bar{background:var(--mbc-bar-current)}.mbc-axis{font-size:12px;line-height:16px;color:var(--mbc-muted);--mbc-text-align:center}.mbc-column[data-current=true] .mbc-axis{color:var(--mbc-fg)}\n.mbc-tooltip{position:absolute;top:0;left:0;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:0;max-width:100%;overflow:hidden;translate:var(--mbc-tip-x,0px) 0;scale:.98;transform-origin:50% 100%;padding:8px 12px;border-radius:8px;background:var(--mbc-tip-bg);color:var(--mbc-tip-fg);white-space:nowrap;box-shadow:0 0 0 1px #0000000f,0 2px 6px #0000000d,0 4px 42px #0000000f;opacity:0;pointer-events:none;font-size:12px;line-height:16px;font-variant-numeric:tabular-nums;transition:opacity 50ms ease-out,scale 50ms ease-out,translate 160ms var(--mbc-ease),width 160ms var(--mbc-ease)}.mbc-tooltip[data-show=true]{opacity:1;scale:1;transition:opacity 150ms ease-out 80ms,scale 150ms ease-out 80ms,translate 160ms var(--mbc-ease),width 160ms var(--mbc-ease)}.mova-balance[data-theme=dark] .mbc-tooltip{box-shadow:0 1px 3px #0000000a,inset 0 1px #ffffff0a,inset 0 0 0 1px #c4c4c414}\n.mbc-periods{position:relative;display:flex;align-items:center;width:100%;gap:3px;background:var(--mbc-chip);padding:3px;border-radius:48px;margin-top:16px}.mova-balance .mbc-periods button{position:relative;flex:1;min-width:0;height:30px;padding:4px 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:48px;font-size:13px;line-height:20px;font-weight:500;color:var(--mbc-muted);cursor:pointer;z-index:1;transition:color var(--mbc-tabs-dur) var(--mbc-ease),transform var(--mbc-press-dur) var(--mbc-ease)}.mbc-periods button[aria-selected=true]{color:var(--mbc-fg)}.mbc-period-pill{position:absolute;top:3px;left:0;height:30px;width:0;background:var(--mbc-pill);border-radius:48px;box-shadow:0 1px 3px #00000014,0 0 0 1px #0000000a;transform:translateX(0);transition:transform var(--mbc-tabs-dur) var(--mbc-ease),width var(--mbc-tabs-dur) var(--mbc-ease);will-change:transform,width;z-index:0;pointer-events:none}\n@media(prefers-reduced-motion:reduce){.mova-balance *{animation:none!important;transition:none!important}.mova-balance button:is(:active,[data-pressed=true]){transform:none}}\n`;\n"
|
|
18
|
+
}
|
package/registry/bar-sweep.json
CHANGED
package/registry/blur-text.json
CHANGED
package/registry/btn-1.json
CHANGED
package/registry/btn-10.json
CHANGED
package/registry/btn-11.json
CHANGED
package/registry/btn-12.json
CHANGED
package/registry/btn-13.json
CHANGED
package/registry/btn-14.json
CHANGED
package/registry/btn-15.json
CHANGED
package/registry/btn-16.json
CHANGED
package/registry/btn-17.json
CHANGED
package/registry/btn-18.json
CHANGED
package/registry/btn-19.json
CHANGED
package/registry/btn-2.json
CHANGED
package/registry/btn-20.json
CHANGED
package/registry/btn-21.json
CHANGED
package/registry/btn-22.json
CHANGED
package/registry/btn-23.json
CHANGED
package/registry/btn-24.json
CHANGED
package/registry/btn-25.json
CHANGED
package/registry/btn-26.json
CHANGED