@syncular/ui 0.0.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/README.md +11 -0
- package/dist/charts/activity-chart.d.ts +11 -0
- package/dist/charts/activity-chart.d.ts.map +1 -0
- package/dist/charts/activity-chart.js +28 -0
- package/dist/charts/activity-chart.js.map +1 -0
- package/dist/charts/chart.d.ts +50 -0
- package/dist/charts/chart.d.ts.map +1 -0
- package/dist/charts/chart.js +108 -0
- package/dist/charts/chart.js.map +1 -0
- package/dist/charts/index.d.ts +5 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +5 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/latency-chart.d.ts +15 -0
- package/dist/charts/latency-chart.d.ts.map +1 -0
- package/dist/charts/latency-chart.js +25 -0
- package/dist/charts/latency-chart.js.map +1 -0
- package/dist/charts/outcomes-chart.d.ts +11 -0
- package/dist/charts/outcomes-chart.d.ts.map +1 -0
- package/dist/charts/outcomes-chart.js +37 -0
- package/dist/charts/outcomes-chart.js.map +1 -0
- package/dist/console/activity-bars.d.ts +24 -0
- package/dist/console/activity-bars.d.ts.map +1 -0
- package/dist/console/activity-bars.js +25 -0
- package/dist/console/activity-bars.js.map +1 -0
- package/dist/console/alerts-config.d.ts +20 -0
- package/dist/console/alerts-config.d.ts.map +1 -0
- package/dist/console/alerts-config.js +31 -0
- package/dist/console/alerts-config.js.map +1 -0
- package/dist/console/api-keys-table.d.ts +16 -0
- package/dist/console/api-keys-table.d.ts.map +1 -0
- package/dist/console/api-keys-table.js +21 -0
- package/dist/console/api-keys-table.js.map +1 -0
- package/dist/console/bottom-bar.d.ts +17 -0
- package/dist/console/bottom-bar.d.ts.map +1 -0
- package/dist/console/bottom-bar.js +14 -0
- package/dist/console/bottom-bar.js.map +1 -0
- package/dist/console/commit-table.d.ts +12 -0
- package/dist/console/commit-table.d.ts.map +1 -0
- package/dist/console/commit-table.js +14 -0
- package/dist/console/commit-table.js.map +1 -0
- package/dist/console/connection-form.d.ts +29 -0
- package/dist/console/connection-form.d.ts.map +1 -0
- package/dist/console/connection-form.js +24 -0
- package/dist/console/connection-form.js.map +1 -0
- package/dist/console/connection-status-badge.d.ts +7 -0
- package/dist/console/connection-status-badge.d.ts.map +1 -0
- package/dist/console/connection-status-badge.js +19 -0
- package/dist/console/connection-status-badge.js.map +1 -0
- package/dist/console/danger-action-card.d.ts +10 -0
- package/dist/console/danger-action-card.d.ts.map +1 -0
- package/dist/console/danger-action-card.js +10 -0
- package/dist/console/danger-action-card.js.map +1 -0
- package/dist/console/empty-state.d.ts +9 -0
- package/dist/console/empty-state.d.ts.map +1 -0
- package/dist/console/empty-state.js +7 -0
- package/dist/console/empty-state.js.map +1 -0
- package/dist/console/filter-bar.d.ts +18 -0
- package/dist/console/filter-bar.d.ts.map +1 -0
- package/dist/console/filter-bar.js +14 -0
- package/dist/console/filter-bar.js.map +1 -0
- package/dist/console/fleet-card.d.ts +14 -0
- package/dist/console/fleet-card.d.ts.map +1 -0
- package/dist/console/fleet-card.js +58 -0
- package/dist/console/fleet-card.js.map +1 -0
- package/dist/console/handlers-table.d.ts +12 -0
- package/dist/console/handlers-table.d.ts.map +1 -0
- package/dist/console/handlers-table.js +21 -0
- package/dist/console/handlers-table.js.map +1 -0
- package/dist/console/index.d.ts +28 -0
- package/dist/console/index.d.ts.map +1 -0
- package/dist/console/index.js +28 -0
- package/dist/console/index.js.map +1 -0
- package/dist/console/kpi-card.d.ts +10 -0
- package/dist/console/kpi-card.d.ts.map +1 -0
- package/dist/console/kpi-card.js +17 -0
- package/dist/console/kpi-card.js.map +1 -0
- package/dist/console/kpi-strip.d.ts +10 -0
- package/dist/console/kpi-strip.d.ts.map +1 -0
- package/dist/console/kpi-strip.js +22 -0
- package/dist/console/kpi-strip.js.map +1 -0
- package/dist/console/latency-percentiles.d.ts +24 -0
- package/dist/console/latency-percentiles.d.ts.map +1 -0
- package/dist/console/latency-percentiles.js +23 -0
- package/dist/console/latency-percentiles.js.map +1 -0
- package/dist/console/live-activity-feed.d.ts +24 -0
- package/dist/console/live-activity-feed.d.ts.map +1 -0
- package/dist/console/live-activity-feed.js +29 -0
- package/dist/console/live-activity-feed.js.map +1 -0
- package/dist/console/maintenance-card.d.ts +28 -0
- package/dist/console/maintenance-card.d.ts.map +1 -0
- package/dist/console/maintenance-card.js +25 -0
- package/dist/console/maintenance-card.js.map +1 -0
- package/dist/console/page-header.d.ts +9 -0
- package/dist/console/page-header.d.ts.map +1 -0
- package/dist/console/page-header.js +9 -0
- package/dist/console/page-header.js.map +1 -0
- package/dist/console/panel-shell.d.ts +11 -0
- package/dist/console/panel-shell.d.ts.map +1 -0
- package/dist/console/panel-shell.js +10 -0
- package/dist/console/panel-shell.js.map +1 -0
- package/dist/console/preferences-panel.d.ts +30 -0
- package/dist/console/preferences-panel.d.ts.map +1 -0
- package/dist/console/preferences-panel.js +24 -0
- package/dist/console/preferences-panel.js.map +1 -0
- package/dist/console/section-card.d.ts +11 -0
- package/dist/console/section-card.d.ts.map +1 -0
- package/dist/console/section-card.js +9 -0
- package/dist/console/section-card.js.map +1 -0
- package/dist/console/stream-log.d.ts +26 -0
- package/dist/console/stream-log.d.ts.map +1 -0
- package/dist/console/stream-log.js +34 -0
- package/dist/console/stream-log.js.map +1 -0
- package/dist/console/sync-horizon.d.ts +18 -0
- package/dist/console/sync-horizon.d.ts.map +1 -0
- package/dist/console/sync-horizon.js +61 -0
- package/dist/console/sync-horizon.js.map +1 -0
- package/dist/console/sync-lag-bar.d.ts +23 -0
- package/dist/console/sync-lag-bar.d.ts.map +1 -0
- package/dist/console/sync-lag-bar.js +111 -0
- package/dist/console/sync-lag-bar.js.map +1 -0
- package/dist/console/sync-state-badge.d.ts +6 -0
- package/dist/console/sync-state-badge.d.ts.map +1 -0
- package/dist/console/sync-state-badge.js +21 -0
- package/dist/console/sync-state-badge.js.map +1 -0
- package/dist/console/topology-card.d.ts +9 -0
- package/dist/console/topology-card.d.ts.map +1 -0
- package/dist/console/topology-card.js +9 -0
- package/dist/console/topology-card.js.map +1 -0
- package/dist/console/topology-hero.d.ts +65 -0
- package/dist/console/topology-hero.d.ts.map +1 -0
- package/dist/console/topology-hero.js +90 -0
- package/dist/console/topology-hero.js.map +1 -0
- package/dist/demo/actor-panel.d.ts +11 -0
- package/dist/demo/actor-panel.d.ts.map +1 -0
- package/dist/demo/actor-panel.js +19 -0
- package/dist/demo/actor-panel.js.map +1 -0
- package/dist/demo/catalog-table.d.ts +17 -0
- package/dist/demo/catalog-table.d.ts.map +1 -0
- package/dist/demo/catalog-table.js +13 -0
- package/dist/demo/catalog-table.js.map +1 -0
- package/dist/demo/channel-selector.d.ts +12 -0
- package/dist/demo/channel-selector.d.ts.map +1 -0
- package/dist/demo/channel-selector.js +13 -0
- package/dist/demo/channel-selector.js.map +1 -0
- package/dist/demo/client-panel.d.ts +12 -0
- package/dist/demo/client-panel.d.ts.map +1 -0
- package/dist/demo/client-panel.js +18 -0
- package/dist/demo/client-panel.js.map +1 -0
- package/dist/demo/conflict-panel.d.ts +8 -0
- package/dist/demo/conflict-panel.d.ts.map +1 -0
- package/dist/demo/conflict-panel.js +9 -0
- package/dist/demo/conflict-panel.js.map +1 -0
- package/dist/demo/demo-header.d.ts +9 -0
- package/dist/demo/demo-header.d.ts.map +1 -0
- package/dist/demo/demo-header.js +12 -0
- package/dist/demo/demo-header.js.map +1 -0
- package/dist/demo/demo-section.d.ts +8 -0
- package/dist/demo/demo-section.d.ts.map +1 -0
- package/dist/demo/demo-section.js +10 -0
- package/dist/demo/demo-section.js.map +1 -0
- package/dist/demo/encrypted-badge.d.ts +7 -0
- package/dist/demo/encrypted-badge.d.ts.map +1 -0
- package/dist/demo/encrypted-badge.js +12 -0
- package/dist/demo/encrypted-badge.js.map +1 -0
- package/dist/demo/encryption-flow-diagram.d.ts +5 -0
- package/dist/demo/encryption-flow-diagram.d.ts.map +1 -0
- package/dist/demo/encryption-flow-diagram.js +24 -0
- package/dist/demo/encryption-flow-diagram.js.map +1 -0
- package/dist/demo/index.d.ts +27 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +27 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/info-panel.d.ts +9 -0
- package/dist/demo/info-panel.d.ts.map +1 -0
- package/dist/demo/info-panel.js +11 -0
- package/dist/demo/info-panel.js.map +1 -0
- package/dist/demo/media-gallery.d.ts +7 -0
- package/dist/demo/media-gallery.d.ts.map +1 -0
- package/dist/demo/media-gallery.js +7 -0
- package/dist/demo/media-gallery.js.map +1 -0
- package/dist/demo/media-thumbnail.d.ts +11 -0
- package/dist/demo/media-thumbnail.d.ts.map +1 -0
- package/dist/demo/media-thumbnail.js +10 -0
- package/dist/demo/media-thumbnail.js.map +1 -0
- package/dist/demo/metric-card.d.ts +14 -0
- package/dist/demo/metric-card.d.ts.map +1 -0
- package/dist/demo/metric-card.js +20 -0
- package/dist/demo/metric-card.js.map +1 -0
- package/dist/demo/mnemonic-display.d.ts +8 -0
- package/dist/demo/mnemonic-display.d.ts.map +1 -0
- package/dist/demo/mnemonic-display.js +70 -0
- package/dist/demo/mnemonic-display.js.map +1 -0
- package/dist/demo/note-card.d.ts +10 -0
- package/dist/demo/note-card.d.ts.map +1 -0
- package/dist/demo/note-card.js +9 -0
- package/dist/demo/note-card.js.map +1 -0
- package/dist/demo/sync-controls.d.ts +8 -0
- package/dist/demo/sync-controls.d.ts.map +1 -0
- package/dist/demo/sync-controls.js +17 -0
- package/dist/demo/sync-controls.js.map +1 -0
- package/dist/demo/sync-status-badge.d.ts +7 -0
- package/dist/demo/sync-status-badge.d.ts.map +1 -0
- package/dist/demo/sync-status-badge.js +22 -0
- package/dist/demo/sync-status-badge.js.map +1 -0
- package/dist/demo/task-item.d.ts +12 -0
- package/dist/demo/task-item.d.ts.map +1 -0
- package/dist/demo/task-item.js +12 -0
- package/dist/demo/task-item.js.map +1 -0
- package/dist/demo/task-list.d.ts +8 -0
- package/dist/demo/task-list.d.ts.map +1 -0
- package/dist/demo/task-list.js +11 -0
- package/dist/demo/task-list.js.map +1 -0
- package/dist/demo/topology-panel.d.ts +10 -0
- package/dist/demo/topology-panel.d.ts.map +1 -0
- package/dist/demo/topology-panel.js +10 -0
- package/dist/demo/topology-panel.js.map +1 -0
- package/dist/demo/topology-svg-keyshare.d.ts +5 -0
- package/dist/demo/topology-svg-keyshare.d.ts.map +1 -0
- package/dist/demo/topology-svg-keyshare.js +31 -0
- package/dist/demo/topology-svg-keyshare.js.map +1 -0
- package/dist/demo/topology-svg-media.d.ts +5 -0
- package/dist/demo/topology-svg-media.d.ts.map +1 -0
- package/dist/demo/topology-svg-media.js +27 -0
- package/dist/demo/topology-svg-media.js.map +1 -0
- package/dist/demo/topology-svg-split.d.ts +5 -0
- package/dist/demo/topology-svg-split.d.ts.map +1 -0
- package/dist/demo/topology-svg-split.js +29 -0
- package/dist/demo/topology-svg-split.js.map +1 -0
- package/dist/demo/topology-svg-symmetric.d.ts +5 -0
- package/dist/demo/topology-svg-symmetric.d.ts.map +1 -0
- package/dist/demo/topology-svg-symmetric.js +35 -0
- package/dist/demo/topology-svg-symmetric.js.map +1 -0
- package/dist/demo/transfer-log.d.ts +14 -0
- package/dist/demo/transfer-log.d.ts.map +1 -0
- package/dist/demo/transfer-log.js +18 -0
- package/dist/demo/transfer-log.js.map +1 -0
- package/dist/demo/upload-area.d.ts +9 -0
- package/dist/demo/upload-area.d.ts.map +1 -0
- package/dist/demo/upload-area.js +58 -0
- package/dist/demo/upload-area.js.map +1 -0
- package/dist/forms/checkbox.d.ts +11 -0
- package/dist/forms/checkbox.d.ts.map +1 -0
- package/dist/forms/checkbox.js +16 -0
- package/dist/forms/checkbox.js.map +1 -0
- package/dist/forms/field.d.ts +7 -0
- package/dist/forms/field.d.ts.map +1 -0
- package/dist/forms/field.js +16 -0
- package/dist/forms/field.js.map +1 -0
- package/dist/forms/index.d.ts +7 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +7 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/select.d.ts +11 -0
- package/dist/forms/select.d.ts.map +1 -0
- package/dist/forms/select.js +15 -0
- package/dist/forms/select.js.map +1 -0
- package/dist/forms/textarea.d.ts +6 -0
- package/dist/forms/textarea.d.ts.map +1 -0
- package/dist/forms/textarea.js +8 -0
- package/dist/forms/textarea.js.map +1 -0
- package/dist/forms/toggle-group.d.ts +8 -0
- package/dist/forms/toggle-group.d.ts.map +1 -0
- package/dist/forms/toggle-group.js +11 -0
- package/dist/forms/toggle-group.js.map +1 -0
- package/dist/forms/toggle.d.ts +7 -0
- package/dist/forms/toggle.d.ts.map +1 -0
- package/dist/forms/toggle.js +9 -0
- package/dist/forms/toggle.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +6 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/types.d.ts +64 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/navigation/index.d.ts +6 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +6 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/nav-pill-group.d.ts +14 -0
- package/dist/navigation/nav-pill-group.d.ts.map +1 -0
- package/dist/navigation/nav-pill-group.js +15 -0
- package/dist/navigation/nav-pill-group.js.map +1 -0
- package/dist/navigation/nav-pill.d.ts +9 -0
- package/dist/navigation/nav-pill.d.ts.map +1 -0
- package/dist/navigation/nav-pill.js +7 -0
- package/dist/navigation/nav-pill.js.map +1 -0
- package/dist/navigation/status-dot.d.ts +13 -0
- package/dist/navigation/status-dot.d.ts.map +1 -0
- package/dist/navigation/status-dot.js +44 -0
- package/dist/navigation/status-dot.js.map +1 -0
- package/dist/navigation/syncular-brand.d.ts +6 -0
- package/dist/navigation/syncular-brand.d.ts.map +1 -0
- package/dist/navigation/syncular-brand.js +11 -0
- package/dist/navigation/syncular-brand.js.map +1 -0
- package/dist/navigation/top-navigation.d.ts +9 -0
- package/dist/navigation/top-navigation.d.ts.map +1 -0
- package/dist/navigation/top-navigation.js +9 -0
- package/dist/navigation/top-navigation.js.map +1 -0
- package/dist/observable-universe/architecture-section.d.ts +5 -0
- package/dist/observable-universe/architecture-section.d.ts.map +1 -0
- package/dist/observable-universe/architecture-section.js +44 -0
- package/dist/observable-universe/architecture-section.js.map +1 -0
- package/dist/observable-universe/code-section.d.ts +5 -0
- package/dist/observable-universe/code-section.d.ts.map +1 -0
- package/dist/observable-universe/code-section.js +86 -0
- package/dist/observable-universe/code-section.js.map +1 -0
- package/dist/observable-universe/commit-stream-panel.d.ts +8 -0
- package/dist/observable-universe/commit-stream-panel.d.ts.map +1 -0
- package/dist/observable-universe/commit-stream-panel.js +45 -0
- package/dist/observable-universe/commit-stream-panel.js.map +1 -0
- package/dist/observable-universe/connected-clients-panel.d.ts +7 -0
- package/dist/observable-universe/connected-clients-panel.d.ts.map +1 -0
- package/dist/observable-universe/connected-clients-panel.js +47 -0
- package/dist/observable-universe/connected-clients-panel.js.map +1 -0
- package/dist/observable-universe/constants.d.ts +10 -0
- package/dist/observable-universe/constants.d.ts.map +1 -0
- package/dist/observable-universe/constants.js +81 -0
- package/dist/observable-universe/constants.js.map +1 -0
- package/dist/observable-universe/explanation-section.d.ts +5 -0
- package/dist/observable-universe/explanation-section.d.ts.map +1 -0
- package/dist/observable-universe/explanation-section.js +76 -0
- package/dist/observable-universe/explanation-section.js.map +1 -0
- package/dist/observable-universe/footer-bar.d.ts +5 -0
- package/dist/observable-universe/footer-bar.d.ts.map +1 -0
- package/dist/observable-universe/footer-bar.js +12 -0
- package/dist/observable-universe/footer-bar.js.map +1 -0
- package/dist/observable-universe/hero-dashboard-section.d.ts +10 -0
- package/dist/observable-universe/hero-dashboard-section.d.ts.map +1 -0
- package/dist/observable-universe/hero-dashboard-section.js +20 -0
- package/dist/observable-universe/hero-dashboard-section.js.map +1 -0
- package/dist/observable-universe/index.d.ts +17 -0
- package/dist/observable-universe/index.d.ts.map +1 -0
- package/dist/observable-universe/index.js +17 -0
- package/dist/observable-universe/index.js.map +1 -0
- package/dist/observable-universe/install-section.d.ts +8 -0
- package/dist/observable-universe/install-section.d.ts.map +1 -0
- package/dist/observable-universe/install-section.js +24 -0
- package/dist/observable-universe/install-section.js.map +1 -0
- package/dist/observable-universe/live-metrics-bar.d.ts +7 -0
- package/dist/observable-universe/live-metrics-bar.d.ts.map +1 -0
- package/dist/observable-universe/live-metrics-bar.js +18 -0
- package/dist/observable-universe/live-metrics-bar.js.map +1 -0
- package/dist/observable-universe/observable-universe-header.d.ts +14 -0
- package/dist/observable-universe/observable-universe-header.d.ts.map +1 -0
- package/dist/observable-universe/observable-universe-header.js +45 -0
- package/dist/observable-universe/observable-universe-header.js.map +1 -0
- package/dist/observable-universe/observable-universe-landing.d.ts +12 -0
- package/dist/observable-universe/observable-universe-landing.d.ts.map +1 -0
- package/dist/observable-universe/observable-universe-landing.js +19 -0
- package/dist/observable-universe/observable-universe-landing.js.map +1 -0
- package/dist/observable-universe/section-heading.d.ts +8 -0
- package/dist/observable-universe/section-heading.d.ts.map +1 -0
- package/dist/observable-universe/section-heading.js +8 -0
- package/dist/observable-universe/section-heading.js.map +1 -0
- package/dist/observable-universe/sync-topology-panel.d.ts +7 -0
- package/dist/observable-universe/sync-topology-panel.d.ts.map +1 -0
- package/dist/observable-universe/sync-topology-panel.js +81 -0
- package/dist/observable-universe/sync-topology-panel.js.map +1 -0
- package/dist/observable-universe/types.d.ts +25 -0
- package/dist/observable-universe/types.d.ts.map +1 -0
- package/dist/observable-universe/types.js +2 -0
- package/dist/observable-universe/types.js.map +1 -0
- package/dist/observable-universe/use-observable-universe-simulation.d.ts +8 -0
- package/dist/observable-universe/use-observable-universe-simulation.d.ts.map +1 -0
- package/dist/observable-universe/use-observable-universe-simulation.js +92 -0
- package/dist/observable-universe/use-observable-universe-simulation.js.map +1 -0
- package/dist/primitives/alert.d.ts +14 -0
- package/dist/primitives/alert.d.ts.map +1 -0
- package/dist/primitives/alert.js +24 -0
- package/dist/primitives/alert.js.map +1 -0
- package/dist/primitives/badge.d.ts +12 -0
- package/dist/primitives/badge.d.ts.map +1 -0
- package/dist/primitives/badge.js +28 -0
- package/dist/primitives/badge.js.map +1 -0
- package/dist/primitives/button.d.ts +14 -0
- package/dist/primitives/button.d.ts.map +1 -0
- package/dist/primitives/button.js +30 -0
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/card.d.ts +7 -0
- package/dist/primitives/card.d.ts.map +1 -0
- package/dist/primitives/card.js +16 -0
- package/dist/primitives/card.js.map +1 -0
- package/dist/primitives/dialog.d.ts +14 -0
- package/dist/primitives/dialog.d.ts.map +1 -0
- package/dist/primitives/dialog.js +25 -0
- package/dist/primitives/dialog.js.map +1 -0
- package/dist/primitives/index.d.ts +16 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +16 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/input.d.ts +12 -0
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +20 -0
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/pagination.d.ts +16 -0
- package/dist/primitives/pagination.d.ts.map +1 -0
- package/dist/primitives/pagination.js +13 -0
- package/dist/primitives/pagination.js.map +1 -0
- package/dist/primitives/separator.d.ts +10 -0
- package/dist/primitives/separator.d.ts.map +1 -0
- package/dist/primitives/separator.js +10 -0
- package/dist/primitives/separator.js.map +1 -0
- package/dist/primitives/sheet.d.ts +19 -0
- package/dist/primitives/sheet.d.ts.map +1 -0
- package/dist/primitives/sheet.js +35 -0
- package/dist/primitives/sheet.js.map +1 -0
- package/dist/primitives/skeleton.d.ts +3 -0
- package/dist/primitives/skeleton.d.ts.map +1 -0
- package/dist/primitives/skeleton.js +8 -0
- package/dist/primitives/skeleton.js.map +1 -0
- package/dist/primitives/spinner.d.ts +12 -0
- package/dist/primitives/spinner.d.ts.map +1 -0
- package/dist/primitives/spinner.js +23 -0
- package/dist/primitives/spinner.js.map +1 -0
- package/dist/primitives/switch.d.ts +7 -0
- package/dist/primitives/switch.d.ts.map +1 -0
- package/dist/primitives/switch.js +9 -0
- package/dist/primitives/switch.js.map +1 -0
- package/dist/primitives/table.d.ts +8 -0
- package/dist/primitives/table.d.ts.map +1 -0
- package/dist/primitives/table.js +18 -0
- package/dist/primitives/table.js.map +1 -0
- package/dist/primitives/tabs.d.ts +16 -0
- package/dist/primitives/tabs.d.ts.map +1 -0
- package/dist/primitives/tabs.js +26 -0
- package/dist/primitives/tabs.js.map +1 -0
- package/dist/primitives/tooltip.d.ts +13 -0
- package/dist/primitives/tooltip.d.ts.map +1 -0
- package/dist/primitives/tooltip.js +15 -0
- package/dist/primitives/tooltip.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +114 -0
- package/src/charts/activity-chart.tsx +85 -0
- package/src/charts/chart.tsx +302 -0
- package/src/charts/index.ts +4 -0
- package/src/charts/latency-chart.tsx +77 -0
- package/src/charts/outcomes-chart.tsx +101 -0
- package/src/console/activity-bars.tsx +113 -0
- package/src/console/alerts-config.tsx +110 -0
- package/src/console/api-keys-table.tsx +102 -0
- package/src/console/bottom-bar.tsx +73 -0
- package/src/console/commit-table.tsx +66 -0
- package/src/console/connection-form.tsx +153 -0
- package/src/console/connection-status-badge.tsx +48 -0
- package/src/console/danger-action-card.tsx +40 -0
- package/src/console/empty-state.tsx +31 -0
- package/src/console/filter-bar.tsx +97 -0
- package/src/console/fleet-card.tsx +154 -0
- package/src/console/handlers-table.tsx +74 -0
- package/src/console/index.ts +27 -0
- package/src/console/kpi-card.tsx +46 -0
- package/src/console/kpi-strip.tsx +77 -0
- package/src/console/latency-percentiles.tsx +109 -0
- package/src/console/live-activity-feed.tsx +112 -0
- package/src/console/maintenance-card.tsx +112 -0
- package/src/console/page-header.tsx +32 -0
- package/src/console/panel-shell.tsx +42 -0
- package/src/console/preferences-panel.tsx +126 -0
- package/src/console/section-card.tsx +41 -0
- package/src/console/stream-log.tsx +138 -0
- package/src/console/sync-horizon.tsx +149 -0
- package/src/console/sync-lag-bar.tsx +226 -0
- package/src/console/sync-state-badge.tsx +32 -0
- package/src/console/topology-card.tsx +47 -0
- package/src/console/topology-hero.tsx +499 -0
- package/src/demo/actor-panel.tsx +50 -0
- package/src/demo/catalog-table.tsx +83 -0
- package/src/demo/channel-selector.tsx +51 -0
- package/src/demo/client-panel.tsx +61 -0
- package/src/demo/conflict-panel.tsx +25 -0
- package/src/demo/demo-header.tsx +44 -0
- package/src/demo/demo-section.tsx +24 -0
- package/src/demo/encrypted-badge.tsx +59 -0
- package/src/demo/encryption-flow-diagram.tsx +93 -0
- package/src/demo/index.ts +26 -0
- package/src/demo/info-panel.tsx +41 -0
- package/src/demo/media-gallery.tsx +15 -0
- package/src/demo/media-thumbnail.tsx +55 -0
- package/src/demo/metric-card.tsx +85 -0
- package/src/demo/mnemonic-display.tsx +114 -0
- package/src/demo/note-card.tsx +52 -0
- package/src/demo/sync-controls.tsx +75 -0
- package/src/demo/sync-status-badge.tsx +36 -0
- package/src/demo/task-item.tsx +83 -0
- package/src/demo/task-list.tsx +33 -0
- package/src/demo/topology-panel.tsx +44 -0
- package/src/demo/topology-svg-keyshare.tsx +474 -0
- package/src/demo/topology-svg-media.tsx +423 -0
- package/src/demo/topology-svg-split.tsx +402 -0
- package/src/demo/topology-svg-symmetric.tsx +527 -0
- package/src/demo/transfer-log.tsx +68 -0
- package/src/demo/upload-area.tsx +136 -0
- package/src/forms/checkbox.tsx +58 -0
- package/src/forms/field.tsx +60 -0
- package/src/forms/index.ts +6 -0
- package/src/forms/select.tsx +65 -0
- package/src/forms/textarea.tsx +23 -0
- package/src/forms/toggle-group.tsx +24 -0
- package/src/forms/toggle.tsx +24 -0
- package/src/index.ts +7 -0
- package/src/lib/cn.ts +6 -0
- package/src/lib/types.ts +69 -0
- package/src/navigation/index.ts +5 -0
- package/src/navigation/nav-pill-group.tsx +46 -0
- package/src/navigation/nav-pill.tsx +35 -0
- package/src/navigation/status-dot.tsx +66 -0
- package/src/navigation/syncular-brand.tsx +29 -0
- package/src/navigation/top-navigation.tsx +31 -0
- package/src/observable-universe/architecture-section.tsx +209 -0
- package/src/observable-universe/code-section.tsx +136 -0
- package/src/observable-universe/commit-stream-panel.tsx +115 -0
- package/src/observable-universe/connected-clients-panel.tsx +109 -0
- package/src/observable-universe/constants.ts +84 -0
- package/src/observable-universe/explanation-section.tsx +129 -0
- package/src/observable-universe/footer-bar.tsx +34 -0
- package/src/observable-universe/hero-dashboard-section.tsx +71 -0
- package/src/observable-universe/index.ts +16 -0
- package/src/observable-universe/install-section.tsx +119 -0
- package/src/observable-universe/live-metrics-bar.tsx +64 -0
- package/src/observable-universe/observable-universe-header.tsx +155 -0
- package/src/observable-universe/observable-universe-landing.tsx +74 -0
- package/src/observable-universe/section-heading.tsx +31 -0
- package/src/observable-universe/sync-topology-panel.tsx +409 -0
- package/src/observable-universe/types.ts +26 -0
- package/src/observable-universe/use-observable-universe-simulation.ts +111 -0
- package/src/primitives/alert.tsx +55 -0
- package/src/primitives/badge.tsx +45 -0
- package/src/primitives/button.tsx +51 -0
- package/src/primitives/card.tsx +67 -0
- package/src/primitives/dialog.tsx +114 -0
- package/src/primitives/index.ts +15 -0
- package/src/primitives/input.tsx +37 -0
- package/src/primitives/pagination.tsx +54 -0
- package/src/primitives/separator.tsx +29 -0
- package/src/primitives/sheet.tsx +114 -0
- package/src/primitives/skeleton.tsx +17 -0
- package/src/primitives/spinner.tsx +52 -0
- package/src/primitives/switch.tsx +26 -0
- package/src/primitives/table.tsx +71 -0
- package/src/primitives/tabs.tsx +66 -0
- package/src/primitives/tooltip.tsx +43 -0
- package/src/styles/styles.css +177 -0
- package/src/styles/tokens.css +47 -0
- package/src/version.ts +3 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../lib/cn.js';
|
|
5
|
+
export const LiveMetricsBar = forwardRef(function LiveMetricsBar({ metrics, className }, ref) {
|
|
6
|
+
return (_jsxs("div", { ref: ref, className: cn('dashboard-panel rounded-lg px-6 py-3 flex items-center justify-between flex-wrap gap-4', className), children: [
|
|
7
|
+
_jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8
|
+
_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-flow inline-block" }), _jsx("span", { className: "font-mono text-[11px] text-neutral-500 uppercase", children: "Commits/sec" }), _jsx("span", { className: "font-mono text-sm text-white font-medium", children: metrics.commitsPerSec.toFixed(1) })
|
|
9
|
+
] }), _jsx("div", { className: "w-px h-4 bg-border" }), _jsxs("div", { className: "flex items-center gap-2", children: [
|
|
10
|
+
_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-healthy inline-block" }), _jsx("span", { className: "font-mono text-[11px] text-neutral-500 uppercase", children: "Avg Sync Latency" }), _jsxs("span", { className: "font-mono text-sm text-white font-medium", children: [metrics.avgLatency, "ms"] })
|
|
11
|
+
] }), _jsx("div", { className: "w-px h-4 bg-border" }), _jsxs("div", { className: "flex items-center gap-2", children: [
|
|
12
|
+
_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-syncing inline-block" }), _jsx("span", { className: "font-mono text-[11px] text-neutral-500 uppercase", children: "Active Clients" }), _jsx("span", { className: "font-mono text-sm text-white font-medium", children: metrics.activeClients })
|
|
13
|
+
] }), _jsx("div", { className: "w-px h-4 bg-border" }), _jsxs("div", { className: "flex items-center gap-2", children: [
|
|
14
|
+
_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-healthy inline-block" }), _jsx("span", { className: "font-mono text-[11px] text-neutral-500 uppercase", children: "Uptime" }), _jsx("span", { className: "font-mono text-sm text-white font-medium", children: metrics.uptime })
|
|
15
|
+
] })
|
|
16
|
+
] }));
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=live-metrics-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-metrics-bar.js","sourceRoot":"","sources":["../../src/observable-universe/live-metrics-bar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAQ/B,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;IACnD,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,SAAS,CACV;YAED,eAAK,SAAS,EAAC,yBAAyB;oBACtC,eAAM,SAAS,EAAC,+CAA+C,GAAG,EAClE,eAAM,SAAS,EAAC,kDAAkD,4BAE3D,EACP,eAAM,SAAS,EAAC,0CAA0C,YACvD,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAC5B;oBACH,EACN,cAAK,SAAS,EAAC,oBAAoB,GAAG,EACtC,eAAK,SAAS,EAAC,yBAAyB;oBACtC,eAAM,SAAS,EAAC,kDAAkD,GAAG,EACrE,eAAM,SAAS,EAAC,kDAAkD,iCAE3D,EACP,gBAAM,SAAS,EAAC,0CAA0C,aACvD,OAAO,CAAC,UAAU,UACd;oBACH,EACN,cAAK,SAAS,EAAC,oBAAoB,GAAG,EACtC,eAAK,SAAS,EAAC,yBAAyB;oBACtC,eAAM,SAAS,EAAC,kDAAkD,GAAG,EACrE,eAAM,SAAS,EAAC,kDAAkD,+BAE3D,EACP,eAAM,SAAS,EAAC,0CAA0C,YACvD,OAAO,CAAC,aAAa,GACjB;oBACH,EACN,cAAK,SAAS,EAAC,oBAAoB,GAAG,EACtC,eAAK,SAAS,EAAC,yBAAyB;oBACtC,eAAM,SAAS,EAAC,kDAAkD,GAAG,EACrE,eAAM,SAAS,EAAC,kDAAkD,uBAE3D,EACP,eAAM,SAAS,EAAC,0CAA0C,YACvD,OAAO,CAAC,MAAM,GACV;oBACH;YACF,CACP,CAAC;AAAA,CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ObservableUniverseHeaderTopicLink {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ObservableUniverseHeaderProps {
|
|
6
|
+
topicLinks?: ObservableUniverseHeaderTopicLink[];
|
|
7
|
+
demoHref?: string;
|
|
8
|
+
consoleHref?: string;
|
|
9
|
+
githubHref?: string;
|
|
10
|
+
githubStars?: number | null;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const ObservableUniverseHeader: import("react").ForwardRefExoticComponent<ObservableUniverseHeaderProps & import("react").RefAttributes<HTMLElement>>;
|
|
14
|
+
//# sourceMappingURL=observable-universe-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-universe-header.d.ts","sourceRoot":"","sources":["../../src/observable-universe/observable-universe-header.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,iCAAiC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,iCAAiC,EAAE,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,eAAO,MAAM,wBAAwB,uHA4GnC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ExternalLink, Github, Star } from 'lucide-react';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { cn } from '../lib/cn.js';
|
|
6
|
+
import { UI_VERSION } from '../version.js';
|
|
7
|
+
const DEFAULT_TOPIC_LINKS = [
|
|
8
|
+
{ label: 'Introduction', href: '/docs/introduction' },
|
|
9
|
+
{ label: 'Build', href: '/docs/build' },
|
|
10
|
+
{ label: 'Client SDK', href: '/docs/client-sdk' },
|
|
11
|
+
{ label: 'Server', href: '/docs/server' },
|
|
12
|
+
{ label: 'API', href: '/docs/api' },
|
|
13
|
+
];
|
|
14
|
+
function isExternalHref(href) {
|
|
15
|
+
return href.startsWith('http://') || href.startsWith('https://');
|
|
16
|
+
}
|
|
17
|
+
function formatCompactCount(value) {
|
|
18
|
+
if (value < 1000)
|
|
19
|
+
return value.toString();
|
|
20
|
+
if (value < 10_000) {
|
|
21
|
+
const short = (value / 1000).toFixed(1);
|
|
22
|
+
return `${short.endsWith('.0') ? short.slice(0, -2) : short}k`;
|
|
23
|
+
}
|
|
24
|
+
if (value < 1_000_000) {
|
|
25
|
+
return `${Math.floor(value / 1000)}k`;
|
|
26
|
+
}
|
|
27
|
+
const short = (value / 1_000_000).toFixed(1);
|
|
28
|
+
return `${short.endsWith('.0') ? short.slice(0, -2) : short}m`;
|
|
29
|
+
}
|
|
30
|
+
export const ObservableUniverseHeader = forwardRef(function ObservableUniverseHeader({ topicLinks = DEFAULT_TOPIC_LINKS, demoHref, consoleHref, githubHref = 'https://github.com/syncular/syncular', githubStars, className, }, ref) {
|
|
31
|
+
const formattedStars = typeof githubStars === 'number' ? formatCompactCount(githubStars) : null;
|
|
32
|
+
return (_jsx("nav", { ref: ref, className: cn('fixed top-0 left-0 right-0 z-50 border-b border-border', className), style: {
|
|
33
|
+
background: 'rgba(12,12,12,0.92)',
|
|
34
|
+
backdropFilter: 'blur(12px)',
|
|
35
|
+
}, children: _jsxs("div", { className: "max-w-[1400px] mx-auto px-6 h-12 flex items-center gap-4", children: [
|
|
36
|
+
_jsxs("a", { href: "/", className: "flex items-center gap-3 shrink-0", children: [
|
|
37
|
+
_jsx("span", { className: "font-display font-bold text-white text-sm tracking-tight", children: "syncular" }), _jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-amber-400 inline-block", style: { boxShadow: '0 0 6px #f59e0b' } }), _jsx("span", { className: "font-mono text-[10px] text-amber-300/80 uppercase tracking-widest", children: "alpha" }), _jsxs("span", { className: "font-mono text-[10px] text-neutral-500 tracking-wider", children: ["v", UI_VERSION] })
|
|
38
|
+
] }), _jsx("div", { className: "flex-1 min-w-0", children: _jsx("div", { className: "flex items-center gap-5 overflow-x-auto whitespace-nowrap [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden", children: topicLinks.map((topic) => (_jsx("a", { href: topic.href, className: "font-mono text-[11px] text-neutral-500 hover:text-white transition-colors uppercase tracking-wider", children: topic.label }, `${topic.label}:${topic.href}`))) }) }), _jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [demoHref ? (_jsxs("a", { href: demoHref, target: isExternalHref(demoHref) ? '_blank' : undefined, rel: isExternalHref(demoHref) ? 'noreferrer noopener' : undefined, className: "font-mono text-[11px] text-white transition-colors bg-purple-600 hover:bg-purple-500 px-3 py-1 rounded flex items-center gap-1.5", children: ["Demo",
|
|
39
|
+
_jsx(ExternalLink, { className: "size-2.5 opacity-50" })
|
|
40
|
+
] })) : null, consoleHref ? (_jsx("a", { href: consoleHref, className: "font-mono text-[11px] text-flow hover:text-white transition-colors border border-flow/40 px-2.5 py-1 rounded", children: "Console" })) : null, githubHref ? (_jsxs("a", { href: githubHref, target: isExternalHref(githubHref) ? '_blank' : undefined, rel: isExternalHref(githubHref) ? 'noreferrer noopener' : undefined, className: cn('text-neutral-400 hover:text-white transition-colors border border-border rounded inline-flex items-center', formattedStars ? 'px-2.5 py-1 gap-1.5' : 'p-1.5'), "aria-label": formattedStars ? `GitHub (${formattedStars} stars)` : 'GitHub', children: [
|
|
41
|
+
_jsx(Github, { className: "size-3.5" }), formattedStars ? (_jsxs("span", { className: "font-mono text-[10px] text-neutral-300 inline-flex items-center gap-1", children: [
|
|
42
|
+
_jsx(Star, { className: "size-2.5" }), formattedStars] })) : null] })) : null] })
|
|
43
|
+
] }) }));
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=observable-universe-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-universe-header.js","sourceRoot":"","sources":["../../src/observable-universe/observable-universe-header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ObservableUniverseHeaderTopicLink } from './observable-universe-header';
|
|
2
|
+
export interface ObservableUniverseLandingProps {
|
|
3
|
+
docsHref?: string;
|
|
4
|
+
topicLinks?: ObservableUniverseHeaderTopicLink[];
|
|
5
|
+
demoHref?: string;
|
|
6
|
+
consoleHref?: string;
|
|
7
|
+
githubHref?: string;
|
|
8
|
+
githubStars?: number | null;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ObservableUniverseLanding: import("react").ForwardRefExoticComponent<ObservableUniverseLandingProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
12
|
+
//# sourceMappingURL=observable-universe-landing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-universe-landing.d.ts","sourceRoot":"","sources":["../../src/observable-universe/observable-universe-landing.tsx"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,iCAAiC,EAAE,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,yBAAyB,2HA+CpC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../lib/cn.js';
|
|
5
|
+
import { ArchitectureSection } from './architecture-section.js';
|
|
6
|
+
import { CodeSection } from './code-section.js';
|
|
7
|
+
import { ExplanationSection } from './explanation-section.js';
|
|
8
|
+
import { FooterBar } from './footer-bar.js';
|
|
9
|
+
import { HeroDashboardSection } from './hero-dashboard-section.js';
|
|
10
|
+
import { InstallSection } from './install-section.js';
|
|
11
|
+
import { ObservableUniverseHeader, } from './observable-universe-header.js';
|
|
12
|
+
import { useObservableUniverseSimulation } from './use-observable-universe-simulation.js';
|
|
13
|
+
export const ObservableUniverseLanding = forwardRef(function ObservableUniverseLanding({ docsHref, topicLinks, demoHref, consoleHref, githubHref, githubStars, className, }, ref) {
|
|
14
|
+
const { clients, entries, metrics, streamRate } = useObservableUniverseSimulation();
|
|
15
|
+
return (_jsxs("div", { ref: ref, className: cn('bg-surface text-foreground min-h-screen', className), children: [
|
|
16
|
+
_jsx(ObservableUniverseHeader, { topicLinks: topicLinks, demoHref: demoHref, consoleHref: consoleHref, githubHref: githubHref, githubStars: githubStars }), _jsx(HeroDashboardSection, { clients: clients, streamEntries: entries, metrics: metrics, streamRate: streamRate }), _jsx(ExplanationSection, {}), _jsx(ArchitectureSection, {}), _jsx(CodeSection, {}), _jsx(InstallSection, { docsHref: docsHref, demoHref: demoHref, githubHref: githubHref }), _jsx(FooterBar, {})
|
|
17
|
+
] }));
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=observable-universe-landing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-universe-landing.js","sourceRoot":"","sources":["../../src/observable-universe/observable-universe-landing.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAYvF,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAGjD,SAAS,yBAAyB,CAClC,EACE,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,GACV,EACD,GAAG,EACH;IACA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAC7C,+BAA+B,EAAE,CAAC;IAEpC,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC;YAEnE,KAAC,wBAAwB,IACvB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,GACxB,EACF,KAAC,oBAAoB,IACnB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,GACtB,EACF,KAAC,kBAAkB,KAAG,EACtB,KAAC,mBAAmB,KAAG,EACvB,KAAC,WAAW,KAAG,EACf,KAAC,cAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,GACtB,EACF,KAAC,SAAS,KAAG;YACT,CACP,CAAC;AAAA,CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface SectionHeadingProps {
|
|
2
|
+
label?: string;
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const SectionHeading: import("react").ForwardRefExoticComponent<SectionHeadingProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
//# sourceMappingURL=section-heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-heading.d.ts","sourceRoot":"","sources":["../../src/observable-universe/section-heading.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAkB1B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../lib/cn.js';
|
|
5
|
+
export const SectionHeading = forwardRef(function SectionHeading({ label, title, description, className }, ref) {
|
|
6
|
+
return (_jsxs("div", { ref: ref, className: cn('max-w-2xl mb-16', className), children: [label ? (_jsx("span", { className: "font-mono text-[11px] text-flow uppercase tracking-widest", children: label })) : null, _jsx("h2", { className: "font-display font-bold text-2xl md:text-3xl text-white mt-4 leading-tight", children: title }), description ? (_jsx("p", { className: "text-neutral-400 mt-4 leading-relaxed", children: description })) : null] }));
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=section-heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-heading.js","sourceRoot":"","sources":["../../src/observable-universe/section-heading.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAS/B,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;IACrE,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aACvD,KAAK,CAAC,CAAC,CAAC,CACP,eAAM,SAAS,EAAC,2DAA2D,YACxE,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,EACR,aAAI,SAAS,EAAC,2EAA2E,YACtF,KAAK,GACH,EACJ,WAAW,CAAC,CAAC,CAAC,CACb,YAAG,SAAS,EAAC,uCAAuC,YAAE,WAAW,GAAK,CACvE,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AAAA,CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ObservableClient } from './types';
|
|
2
|
+
export interface SyncTopologyPanelProps {
|
|
3
|
+
clients: ObservableClient[];
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const SyncTopologyPanel: import("react").ForwardRefExoticComponent<SyncTopologyPanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=sync-topology-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-topology-panel.d.ts","sourceRoot":"","sources":["../../src/observable-universe/sync-topology-panel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,iBAAiB,mHAsY5B,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../lib/cn.js';
|
|
5
|
+
import { NODE_POSITIONS } from './constants.js';
|
|
6
|
+
const statusStroke = {
|
|
7
|
+
online: '#22c55e',
|
|
8
|
+
syncing: '#f59e0b',
|
|
9
|
+
offline: '#ef4444',
|
|
10
|
+
};
|
|
11
|
+
export const SyncTopologyPanel = forwardRef(function SyncTopologyPanel({ clients, className }, ref) {
|
|
12
|
+
const server = NODE_POSITIONS.server;
|
|
13
|
+
const relay = NODE_POSITIONS.relay;
|
|
14
|
+
return (_jsxs("div", { ref: ref, className: cn('dashboard-panel rounded-lg flex flex-col items-center justify-center relative overflow-hidden', className), style: {
|
|
15
|
+
backgroundImage: 'radial-gradient(circle at 1px 1px, #1a1a1a 1px, transparent 0)',
|
|
16
|
+
backgroundSize: '24px 24px',
|
|
17
|
+
}, children: [
|
|
18
|
+
_jsx("div", { className: "absolute top-3 left-4 z-10", children: _jsx("span", { className: "font-mono text-[11px] text-neutral-400 uppercase tracking-wider", children: "Sync Topology" }) }), _jsxs("svg", { viewBox: "0 0 660 420", className: "w-full max-w-[660px] h-auto", style: { minHeight: 320 }, children: [
|
|
19
|
+
_jsx("ellipse", { cx: server.x, cy: server.y, rx: 155, ry: 155, fill: "none", stroke: "#1a1a1a", strokeWidth: 1, strokeDasharray: "4 8" }), _jsx("ellipse", { cx: relay.x, cy: relay.y, rx: 140, ry: 140, fill: "none", stroke: "#1a1a1a", strokeWidth: 1, strokeDasharray: "4 8" }), _jsx("line", { x1: server.x, y1: server.y, x2: relay.x, y2: relay.y, stroke: "#8b5cf6", strokeWidth: 2, opacity: 0.4 }), _jsx("line", { x1: server.x, y1: server.y, x2: relay.x, y2: relay.y, stroke: "#8b5cf6", strokeWidth: 1, strokeDasharray: "4 2", opacity: 0.7, children: _jsx("animate", { attributeName: "stroke-dashoffset", from: "20", to: "0", dur: "1s", repeatCount: "indefinite" }) }), _jsxs("circle", { r: 3, fill: "#8b5cf6", opacity: 0.9, children: [
|
|
20
|
+
_jsx("animateMotion", { dur: "2s", repeatCount: "indefinite", path: `M${server.x},${server.y} L${relay.x},${relay.y}` }), _jsx("animate", { attributeName: "opacity", values: "0;0.9;0.9;0", dur: "2s", repeatCount: "indefinite" })
|
|
21
|
+
] }), _jsxs("circle", { r: 3, fill: "#8b5cf6", opacity: 0.9, children: [
|
|
22
|
+
_jsx("animateMotion", { dur: "2s", begin: "1s", repeatCount: "indefinite", path: `M${relay.x},${relay.y} L${server.x},${server.y}` }), _jsx("animate", { attributeName: "opacity", values: "0;0.9;0.9;0", dur: "2s", begin: "1s", repeatCount: "indefinite" })
|
|
23
|
+
] }), _jsx("text", { x: (server.x + relay.x) / 2, y: server.y - 18, textAnchor: "middle", fill: "#8b5cf6", fontFamily: "JetBrains Mono", fontSize: 8, opacity: 0.5, letterSpacing: 1.5, children: "BACKBONE" }), clients.map((client) => {
|
|
24
|
+
const pos = NODE_POSITIONS[client.id];
|
|
25
|
+
if (!pos)
|
|
26
|
+
return null;
|
|
27
|
+
const targetX = client.via === 'relay' ? relay.x : server.x;
|
|
28
|
+
const targetY = client.via === 'relay' ? relay.y : server.y;
|
|
29
|
+
const color = statusStroke[client.status];
|
|
30
|
+
let lineClass = 'line-active';
|
|
31
|
+
let strokeWidth = 1.5;
|
|
32
|
+
if (client.status === 'syncing') {
|
|
33
|
+
lineClass = 'line-syncing';
|
|
34
|
+
strokeWidth = 2.5;
|
|
35
|
+
}
|
|
36
|
+
else if (client.status === 'offline') {
|
|
37
|
+
lineClass = 'line-offline';
|
|
38
|
+
strokeWidth = 1;
|
|
39
|
+
}
|
|
40
|
+
return (_jsx("line", { x1: targetX, y1: targetY, x2: pos.x, y2: pos.y, stroke: color, strokeWidth: strokeWidth, className: lineClass }, `conn-${client.id}`));
|
|
41
|
+
}), clients
|
|
42
|
+
.filter((c) => c.status !== 'offline')
|
|
43
|
+
.map((client) => {
|
|
44
|
+
const pos = NODE_POSITIONS[client.id];
|
|
45
|
+
if (!pos)
|
|
46
|
+
return null;
|
|
47
|
+
const targetX = client.via === 'relay' ? relay.x : server.x;
|
|
48
|
+
const targetY = client.via === 'relay' ? relay.y : server.y;
|
|
49
|
+
const particleColor = client.status === 'syncing' ? '#f59e0b' : '#22c55e';
|
|
50
|
+
const dur = client.status === 'syncing' ? '1.2s' : '2.5s';
|
|
51
|
+
const halfDur = `${Number.parseFloat(dur) / 2}s`;
|
|
52
|
+
return (_jsxs("g", { children: [
|
|
53
|
+
_jsxs("circle", { r: 2, fill: particleColor, opacity: 0.8, children: [
|
|
54
|
+
_jsx("animateMotion", { dur: dur, repeatCount: "indefinite", path: `M${targetX},${targetY} L${pos.x},${pos.y}` }), _jsx("animate", { attributeName: "opacity", values: "0;0.8;0.8;0", dur: dur, repeatCount: "indefinite" })
|
|
55
|
+
] }), _jsxs("circle", { r: 2, fill: particleColor, opacity: 0.6, children: [
|
|
56
|
+
_jsx("animateMotion", { dur: dur, begin: halfDur, repeatCount: "indefinite", path: `M${pos.x},${pos.y} L${targetX},${targetY}` }), _jsx("animate", { attributeName: "opacity", values: "0;0.6;0.6;0", dur: dur, begin: halfDur, repeatCount: "indefinite" })
|
|
57
|
+
] })
|
|
58
|
+
] }, `particle-${client.id}`));
|
|
59
|
+
}), _jsxs("circle", { cx: server.x, cy: server.y, r: 40, fill: "none", stroke: "#3b82f6", strokeWidth: 0.5, opacity: 0.15, children: [
|
|
60
|
+
_jsx("animate", { attributeName: "r", from: "30", to: "58", dur: "3s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "opacity", from: "0.3", to: "0", dur: "3s", repeatCount: "indefinite" })
|
|
61
|
+
] }), _jsxs("circle", { cx: server.x, cy: server.y, r: 40, fill: "none", stroke: "#3b82f6", strokeWidth: 0.5, opacity: 0.15, children: [
|
|
62
|
+
_jsx("animate", { attributeName: "r", from: "30", to: "58", dur: "3s", begin: "1.5s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "opacity", from: "0.3", to: "0", dur: "3s", begin: "1.5s", repeatCount: "indefinite" })
|
|
63
|
+
] }), _jsx("circle", { cx: server.x, cy: server.y, r: 30, fill: "#0c0c0c", stroke: "#3b82f6", strokeWidth: 2, style: {
|
|
64
|
+
filter: 'drop-shadow(0 0 10px rgba(59,130,246,0.4))',
|
|
65
|
+
} }), _jsx("circle", { cx: server.x, cy: server.y, r: 16, fill: "rgba(59,130,246,0.15)", stroke: "#3b82f6", strokeWidth: 1 }), _jsx("circle", { cx: server.x, cy: server.y, r: 5, fill: "#3b82f6" }), _jsx("text", { x: server.x, y: server.y + 46, textAnchor: "middle", fill: "#555", fontFamily: "JetBrains Mono", fontSize: 9, letterSpacing: 2, children: "SERVER" }), _jsxs("circle", { cx: relay.x, cy: relay.y, r: 35, fill: "none", stroke: "#8b5cf6", strokeWidth: 0.5, opacity: 0.15, children: [
|
|
66
|
+
_jsx("animate", { attributeName: "r", from: "24", to: "48", dur: "3.5s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "opacity", from: "0.25", to: "0", dur: "3.5s", repeatCount: "indefinite" })
|
|
67
|
+
] }), _jsx("circle", { cx: relay.x, cy: relay.y, r: 24, fill: "#0c0c0c", stroke: "#8b5cf6", strokeWidth: 2, style: {
|
|
68
|
+
filter: 'drop-shadow(0 0 8px rgba(139,92,246,0.35))',
|
|
69
|
+
} }), _jsx("circle", { cx: relay.x, cy: relay.y, r: 12, fill: "rgba(139,92,246,0.15)", stroke: "#8b5cf6", strokeWidth: 1 }), _jsx("circle", { cx: relay.x, cy: relay.y, r: 4, fill: "#8b5cf6" }), _jsx("text", { x: relay.x, y: relay.y + 40, textAnchor: "middle", fill: "#555", fontFamily: "JetBrains Mono", fontSize: 9, letterSpacing: 2, children: "RELAY" }), clients.map((client) => {
|
|
70
|
+
const pos = NODE_POSITIONS[client.id];
|
|
71
|
+
if (!pos)
|
|
72
|
+
return null;
|
|
73
|
+
const fillColor = statusStroke[client.status];
|
|
74
|
+
const ringOpacity = client.status === 'offline' ? 0.3 : 1;
|
|
75
|
+
return (_jsxs("g", { opacity: ringOpacity, children: [
|
|
76
|
+
_jsx("circle", { cx: pos.x, cy: pos.y, r: 18, fill: "#0c0c0c", stroke: fillColor, strokeWidth: 1.5 }), _jsx("circle", { cx: pos.x, cy: pos.y, r: 4, fill: fillColor }), _jsx("text", { x: pos.x, y: pos.y + 28, textAnchor: "middle", fill: "#444", fontFamily: "JetBrains Mono", fontSize: 8, children: client.id }), _jsxs("text", { x: pos.x, y: pos.y + 38, textAnchor: "middle", fill: "#333", fontFamily: "JetBrains Mono", fontSize: 7, children: [client.type, client.via === 'relay' ? ' \u00b7 relay' : ''] })
|
|
77
|
+
] }, client.id));
|
|
78
|
+
})] })
|
|
79
|
+
] }));
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=sync-topology-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-topology-panel.js","sourceRoot":"","sources":["../../src/observable-universe/sync-topology-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ObservableClient {
|
|
2
|
+
id: string;
|
|
3
|
+
type: string;
|
|
4
|
+
status: 'online' | 'syncing' | 'offline';
|
|
5
|
+
lastSync: number;
|
|
6
|
+
commits: number;
|
|
7
|
+
syncingCommits?: number;
|
|
8
|
+
via: 'direct' | 'relay';
|
|
9
|
+
}
|
|
10
|
+
export interface ObservableStreamEntry {
|
|
11
|
+
id: string;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
operation: 'PUSH' | 'PULL' | 'ACK';
|
|
14
|
+
clientId: string;
|
|
15
|
+
table: string;
|
|
16
|
+
mutation: 'INSERT' | 'UPDATE' | 'DELETE';
|
|
17
|
+
commits: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ObservableMetrics {
|
|
20
|
+
commitsPerSec: number;
|
|
21
|
+
avgLatency: number;
|
|
22
|
+
activeClients: number;
|
|
23
|
+
uptime: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observable-universe/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/observable-universe/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ObservableClient, ObservableMetrics, ObservableStreamEntry } from './types';
|
|
2
|
+
export declare function useObservableUniverseSimulation(): {
|
|
3
|
+
clients: ObservableClient[];
|
|
4
|
+
entries: ObservableStreamEntry[];
|
|
5
|
+
metrics: ObservableMetrics;
|
|
6
|
+
streamRate: string;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=use-observable-universe-simulation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-observable-universe-simulation.d.ts","sourceRoot":"","sources":["../../src/observable-universe/use-observable-universe-simulation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAejB,wBAAgB,+BAA+B;;;;;EAuF9C"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { INITIAL_CLIENTS, MUTATIONS, OPERATIONS, TABLES } from './constants.js';
|
|
4
|
+
function randomId() {
|
|
5
|
+
return Math.random().toString(36).slice(2, 10);
|
|
6
|
+
}
|
|
7
|
+
function randomPick(arr) {
|
|
8
|
+
return arr[Math.floor(Math.random() * arr.length)];
|
|
9
|
+
}
|
|
10
|
+
function timestamp() {
|
|
11
|
+
const d = new Date();
|
|
12
|
+
return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}.${d.getMilliseconds().toString().padStart(3, '0')}`;
|
|
13
|
+
}
|
|
14
|
+
export function useObservableUniverseSimulation() {
|
|
15
|
+
const [clients, setClients] = useState(INITIAL_CLIENTS);
|
|
16
|
+
const [entries, setEntries] = useState([]);
|
|
17
|
+
const [metrics, setMetrics] = useState({
|
|
18
|
+
commitsPerSec: 12.4,
|
|
19
|
+
avgLatency: 34,
|
|
20
|
+
activeClients: INITIAL_CLIENTS.filter((c) => c.status !== 'offline').length,
|
|
21
|
+
uptime: '99.97%',
|
|
22
|
+
});
|
|
23
|
+
const intervalRef = useRef(undefined);
|
|
24
|
+
const generateEntry = useCallback(() => {
|
|
25
|
+
const onlineClients = clients.filter((c) => c.status !== 'offline');
|
|
26
|
+
const client = onlineClients.length > 0
|
|
27
|
+
? randomPick(onlineClients)
|
|
28
|
+
: randomPick(clients);
|
|
29
|
+
return {
|
|
30
|
+
id: randomId(),
|
|
31
|
+
timestamp: timestamp(),
|
|
32
|
+
operation: randomPick(OPERATIONS),
|
|
33
|
+
clientId: client.id,
|
|
34
|
+
table: randomPick(TABLES),
|
|
35
|
+
mutation: randomPick(MUTATIONS),
|
|
36
|
+
commits: Math.ceil(Math.random() * 5),
|
|
37
|
+
};
|
|
38
|
+
}, [clients]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
const tick = () => {
|
|
41
|
+
const entry = generateEntry();
|
|
42
|
+
setEntries((prev) => [entry, ...prev].slice(0, 40));
|
|
43
|
+
setMetrics((prev) => ({
|
|
44
|
+
...prev,
|
|
45
|
+
commitsPerSec: Number.parseFloat((10 + Math.random() * 8).toFixed(1)),
|
|
46
|
+
avgLatency: Math.floor(25 + Math.random() * 30),
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
intervalRef.current = setInterval(tick, 800 + Math.random() * 400);
|
|
50
|
+
return () => {
|
|
51
|
+
if (intervalRef.current)
|
|
52
|
+
clearInterval(intervalRef.current);
|
|
53
|
+
};
|
|
54
|
+
}, [generateEntry]);
|
|
55
|
+
// Periodically shuffle client statuses
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const shuffle = setInterval(() => {
|
|
58
|
+
setClients((prev) => prev.map((c) => {
|
|
59
|
+
if (Math.random() > 0.15)
|
|
60
|
+
return c;
|
|
61
|
+
const statuses = [
|
|
62
|
+
'online',
|
|
63
|
+
'syncing',
|
|
64
|
+
'offline',
|
|
65
|
+
];
|
|
66
|
+
const newStatus = randomPick(statuses);
|
|
67
|
+
return {
|
|
68
|
+
...c,
|
|
69
|
+
status: newStatus,
|
|
70
|
+
lastSync: newStatus === 'offline'
|
|
71
|
+
? c.lastSync + 10
|
|
72
|
+
: Math.floor(Math.random() * 5),
|
|
73
|
+
syncingCommits: newStatus === 'syncing'
|
|
74
|
+
? Math.floor(Math.random() * 5) + 1
|
|
75
|
+
: undefined,
|
|
76
|
+
};
|
|
77
|
+
}));
|
|
78
|
+
setMetrics((prev) => ({
|
|
79
|
+
...prev,
|
|
80
|
+
activeClients: clients.filter((c) => c.status !== 'offline').length,
|
|
81
|
+
}));
|
|
82
|
+
}, 3000);
|
|
83
|
+
return () => clearInterval(shuffle);
|
|
84
|
+
}, [clients]);
|
|
85
|
+
return {
|
|
86
|
+
clients,
|
|
87
|
+
entries,
|
|
88
|
+
metrics,
|
|
89
|
+
streamRate: `${metrics.commitsPerSec}/s`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=use-observable-universe-simulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-observable-universe-simulation.js","sourceRoot":"","sources":["../../src/observable-universe/use-observable-universe-simulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { type HTMLAttributes } from 'react';
|
|
3
|
+
declare const alertVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
type AlertProps = HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>;
|
|
7
|
+
declare const Alert: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
8
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & import("react").RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const AlertTitle: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLHeadingElement> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
11
|
+
declare const AlertDescription: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
12
|
+
export { Alert, alertVariants, AlertTitle, AlertDescription };
|
|
13
|
+
export type { AlertProps };
|
|
14
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/primitives/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGxD,QAAA,MAAM,aAAa;;8EAUjB,CAAC;AAEH,KAAK,UAAU,GAAG,cAAc,CAAC,cAAc,CAAC,GAC9C,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAErC,QAAA,MAAM,KAAK;;gIASV,CAAC;AAGF,QAAA,MAAM,UAAU,mIASd,CAAC;AAGH,QAAA,MAAM,gBAAgB,uIAKpB,CAAC;AAGH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { cn } from '../lib/cn.js';
|
|
6
|
+
const alertVariants = cva('border rounded-lg p-3 font-mono text-[11px]', {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: 'border-border bg-panel',
|
|
10
|
+
destructive: 'border-offline/20 bg-offline/5 text-offline',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
defaultVariants: {
|
|
14
|
+
variant: 'default',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const Alert = forwardRef(({ className, variant, ...props }, ref) => (_jsx("div", { ref: ref, role: "alert", className: cn(alertVariants({ variant, className })), ...props })));
|
|
18
|
+
Alert.displayName = 'Alert';
|
|
19
|
+
const AlertTitle = forwardRef(({ className, ...props }, ref) => (_jsx("h5", { ref: ref, className: cn('font-medium text-white mb-1', className), ...props })));
|
|
20
|
+
AlertTitle.displayName = 'AlertTitle';
|
|
21
|
+
const AlertDescription = forwardRef(({ className, ...props }, ref) => (_jsx("p", { ref: ref, className: cn('text-neutral-400', className), ...props })));
|
|
22
|
+
AlertDescription.displayName = 'AlertDescription';
|
|
23
|
+
export { Alert, alertVariants, AlertTitle, AlertDescription };
|
|
24
|
+
//# sourceMappingURL=alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/primitives/alert.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAuB,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,aAAa,GAAG,GAAG,CAAC,6CAA6C,EAAE;IACvE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,wBAAwB;YACjC,WAAW,EAAE,6CAA6C;SAC3D;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC;AAKH,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACzC,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAChD,KAAK,GACT,CACH,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,UAAU,GAAG,UAAU,CAG3B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,aACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAC,CAAC;AACH,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,MAAM,gBAAgB,GAAG,UAAU,CAGjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,YAAG,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACzE,CAAC,CAAC;AACH,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { type ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "flow" | "ghost" | "healthy" | "offline" | "outline" | "relay" | "secondary" | "syncing" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
type BadgeProps = ComponentPropsWithoutRef<'span'> & VariantProps<typeof badgeVariants>;
|
|
7
|
+
declare const Badge: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & VariantProps<(props?: ({
|
|
8
|
+
variant?: "default" | "destructive" | "flow" | "ghost" | "healthy" | "offline" | "outline" | "relay" | "secondary" | "syncing" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
export { Badge, badgeVariants };
|
|
11
|
+
export type { BadgeProps };
|
|
12
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/primitives/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,wBAAwB,EAAc,MAAM,OAAO,CAAC;AAGlE,QAAA,MAAM,aAAa;;8EAqBlB,CAAC;AAEF,KAAK,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC,GAChD,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAErC,QAAA,MAAM,KAAK;;iIAQV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { cn } from '../lib/cn.js';
|
|
6
|
+
const badgeVariants = cva('inline-flex items-center gap-1 px-2 py-0.5 rounded-sm font-mono text-[9px] uppercase tracking-wider', {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: 'bg-white/[0.05] text-neutral-300 border border-border-bright',
|
|
10
|
+
destructive: 'bg-offline/10 text-offline border border-offline/20',
|
|
11
|
+
ghost: 'bg-transparent text-neutral-500 border border-border-bright',
|
|
12
|
+
outline: 'bg-transparent text-neutral-400 border border-border-bright',
|
|
13
|
+
secondary: 'bg-panel text-neutral-400 border border-border',
|
|
14
|
+
healthy: 'bg-healthy/10 text-healthy border border-healthy/20',
|
|
15
|
+
syncing: 'bg-syncing/10 text-syncing border border-syncing/20',
|
|
16
|
+
offline: 'bg-offline/10 text-offline border border-offline/20',
|
|
17
|
+
flow: 'bg-flow/10 text-flow border border-flow/20',
|
|
18
|
+
relay: 'bg-relay/10 text-relay border border-relay/20',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
variant: 'default',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const Badge = forwardRef(({ className, variant, ...props }, ref) => (_jsx("span", { ref: ref, className: cn(badgeVariants({ variant, className })), ...props })));
|
|
26
|
+
Badge.displayName = 'Badge';
|
|
27
|
+
export { Badge, badgeVariants };
|
|
28
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/primitives/badge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAiC,UAAU,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAE/B,MAAM,aAAa,GAAG,GAAG,CACvB,qGAAqG,EACrG;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,8DAA8D;YACvE,WAAW,EAAE,qDAAqD;YAClE,KAAK,EAAE,6DAA6D;YACpE,OAAO,EAAE,6DAA6D;YACtE,SAAS,EAAE,gDAAgD;YAC3D,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE,4CAA4C;YAClD,KAAK,EAAE,+CAA+C;SACvD;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAC;AAKF,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACzC,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KAChD,KAAK,GACT,CACH,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { type ComponentPropsWithoutRef } from 'react';
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "ghost" | "link" | "primary" | "secondary" | null | undefined;
|
|
5
|
+
size?: "icon" | "md" | "sm" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
type ButtonProps = ComponentPropsWithoutRef<'button'> & VariantProps<typeof buttonVariants>;
|
|
8
|
+
declare const Button: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
|
|
9
|
+
variant?: "default" | "destructive" | "ghost" | "link" | "primary" | "secondary" | null | undefined;
|
|
10
|
+
size?: "icon" | "md" | "sm" | null | undefined;
|
|
11
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
12
|
+
export { Button, buttonVariants };
|
|
13
|
+
export type { ButtonProps };
|
|
14
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/primitives/button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,wBAAwB,EAAc,MAAM,OAAO,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EA2BnB,CAAC;AAEF,KAAK,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC,GACnD,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtC,QAAA,MAAM,MAAM;;;mIAQX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,CAAC"}
|