@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,86 @@
|
|
|
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 { SectionHeading } from './section-heading.js';
|
|
6
|
+
const dialects = [
|
|
7
|
+
{
|
|
8
|
+
dialect: 'Postgres',
|
|
9
|
+
runtime: 'Node.js / Bun / Edge',
|
|
10
|
+
href: '/docs/server/dialects',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
dialect: 'SQLite',
|
|
14
|
+
runtime: 'Node.js / Bun',
|
|
15
|
+
href: '/docs/server/dialects',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
dialect: 'wa-sqlite',
|
|
19
|
+
runtime: 'Browser (WASM)',
|
|
20
|
+
clientOnly: true,
|
|
21
|
+
href: '/docs/build/runtimes/web',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
dialect: 'PGlite',
|
|
25
|
+
runtime: 'Browser (WASM)',
|
|
26
|
+
href: '/docs/build/runtimes/web',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
dialect: 'better-sqlite3',
|
|
30
|
+
runtime: 'Node.js / Electron',
|
|
31
|
+
href: '/docs/build/runtimes/bun-node',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
dialect: 'sqlite3',
|
|
35
|
+
runtime: 'Node.js',
|
|
36
|
+
href: '/docs/build/runtimes/bun-node',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
dialect: 'Bun SQLite',
|
|
40
|
+
runtime: 'Bun',
|
|
41
|
+
href: '/docs/build/runtimes/bun-node',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
dialect: 'Expo SQLite',
|
|
45
|
+
runtime: 'React Native',
|
|
46
|
+
clientOnly: true,
|
|
47
|
+
href: '/docs/build/runtimes/expo',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
dialect: 'Nitro SQLite',
|
|
51
|
+
runtime: 'React Native',
|
|
52
|
+
clientOnly: true,
|
|
53
|
+
href: '/docs/build/runtimes/expo',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
dialect: 'LibSQL',
|
|
57
|
+
runtime: 'Turso / LibSQL',
|
|
58
|
+
href: '/docs/server/dialects',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
dialect: 'Neon',
|
|
62
|
+
runtime: 'Neon Postgres (serverless)',
|
|
63
|
+
href: '/docs/build/runtimes/cloudflare',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
dialect: 'D1',
|
|
67
|
+
runtime: 'Cloudflare Workers',
|
|
68
|
+
href: '/docs/build/runtimes/cloudflare',
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
export const CodeSection = forwardRef(function CodeSection({ className }, ref) {
|
|
72
|
+
return (_jsx("section", { ref: ref, id: "databases", className: cn('py-24 border-t border-border', className), children: _jsxs("div", { className: "max-w-[1400px] mx-auto px-6", children: [
|
|
73
|
+
_jsx(SectionHeading, { label: "Runs everywhere", title: "Pick the dialect for your runtime. Mix and match client and server." }), _jsx("div", { className: "max-w-3xl", children: _jsxs("div", { className: "dashboard-panel rounded-lg overflow-hidden", children: [
|
|
74
|
+
_jsx("div", { className: "px-6 py-4 border-b border-border", children: _jsxs("div", { className: "flex items-center gap-2", children: [
|
|
75
|
+
_jsx("span", { className: "w-2 h-2 rounded-full bg-flow inline-block" }), _jsx("span", { className: "font-mono text-[11px] text-flow uppercase tracking-wider", children: "Supported dialects" })
|
|
76
|
+
] }) }), _jsxs("table", { className: "w-full", children: [
|
|
77
|
+
_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [
|
|
78
|
+
_jsx("th", { className: "text-left text-[11px] font-mono text-neutral-500 uppercase tracking-wider px-6 py-3", children: "Dialect" }), _jsx("th", { className: "text-left text-[11px] font-mono text-neutral-500 uppercase tracking-wider px-6 py-3", children: "Runtime" })
|
|
79
|
+
] }) }), _jsx("tbody", { children: dialects.map((row) => (_jsxs("tr", { className: "border-b border-border/50", children: [
|
|
80
|
+
_jsx("td", { className: "px-6 py-3 font-mono text-sm text-white", children: _jsx("a", { href: row.href, className: "underline decoration-border underline-offset-4 transition-colors hover:text-flow hover:decoration-flow", children: row.dialect }) }), _jsx("td", { className: "px-6 py-3 text-sm text-neutral-400", children: row.runtime })
|
|
81
|
+
] }, row.dialect))) })
|
|
82
|
+
] })
|
|
83
|
+
] }) })
|
|
84
|
+
] }) }));
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=code-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-section.js","sourceRoot":"","sources":["../../src/observable-universe/code-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ObservableStreamEntry } from './types';
|
|
2
|
+
export interface CommitStreamPanelProps {
|
|
3
|
+
entries: ObservableStreamEntry[];
|
|
4
|
+
rate?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const CommitStreamPanel: import("react").ForwardRefExoticComponent<CommitStreamPanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
//# sourceMappingURL=commit-stream-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-stream-panel.d.ts","sourceRoot":"","sources":["../../src/observable-universe/commit-stream-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6CD,eAAO,MAAM,iBAAiB,mHA2D5B,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { cn } from '../lib/cn.js';
|
|
5
|
+
function formatDetail(entry) {
|
|
6
|
+
if (entry.operation === 'PUSH') {
|
|
7
|
+
return {
|
|
8
|
+
color: 'text-amber-400',
|
|
9
|
+
detail: (_jsxs(_Fragment, { children: [
|
|
10
|
+
_jsx("span", { className: "text-neutral-500", children: entry.table }), ' ', _jsx("span", { className: "text-neutral-400", children: entry.mutation }), ' ', _jsxs("span", { className: "text-neutral-500", children: ["+", entry.commits, " commit", entry.commits > 1 ? 's' : ''] })
|
|
11
|
+
] })),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
if (entry.operation === 'PULL') {
|
|
15
|
+
return {
|
|
16
|
+
color: 'text-emerald-400',
|
|
17
|
+
detail: (_jsxs(_Fragment, { children: [
|
|
18
|
+
_jsx("span", { className: "text-neutral-500", children: entry.table }), ' ', _jsxs("span", { className: "text-neutral-400", children: ["+", entry.commits, " commit", entry.commits > 1 ? 's' : ''] }), ' ', _jsx("span", { className: "text-neutral-600", children: "(synced)" })
|
|
19
|
+
] })),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
color: 'text-blue-400',
|
|
24
|
+
detail: (_jsxs(_Fragment, { children: [
|
|
25
|
+
_jsx("span", { className: "text-neutral-500", children: "sync complete" }), ' ', _jsx("span", { className: "text-neutral-600", children: "(0 conflicts)" })
|
|
26
|
+
] })),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export const CommitStreamPanel = forwardRef(function CommitStreamPanel({ entries, rate, className }, ref) {
|
|
30
|
+
return (_jsxs("div", { ref: ref, className: cn('dashboard-panel rounded-lg flex flex-col', className), children: [
|
|
31
|
+
_jsxs("div", { className: "px-4 py-3 border-b border-border flex items-center justify-between", children: [
|
|
32
|
+
_jsx("span", { className: "font-mono text-[11px] text-neutral-400 uppercase tracking-wider", children: "Commit Stream" }), rate ? (_jsx("span", { className: "font-mono text-[11px] text-healthy", children: rate })) : null] }), _jsxs("div", { className: "flex-1 overflow-hidden relative", children: [
|
|
33
|
+
_jsx("div", { className: "absolute inset-x-0 top-0 h-6 z-10 pointer-events-none", style: {
|
|
34
|
+
background: 'linear-gradient(to bottom, #111111, transparent)',
|
|
35
|
+
} }), _jsx("div", { className: "absolute inset-x-0 bottom-0 h-8 z-10 pointer-events-none", style: {
|
|
36
|
+
background: 'linear-gradient(to top, #111111, transparent)',
|
|
37
|
+
} }), _jsx("div", { className: "p-3 space-y-0.5 overflow-hidden", style: { maxHeight: '100%' }, children: entries.map((entry) => {
|
|
38
|
+
const { color, detail } = formatDetail(entry);
|
|
39
|
+
return (_jsxs("div", { className: "stream-entry font-mono text-[9px] leading-5 whitespace-nowrap", children: [
|
|
40
|
+
_jsx("span", { className: "text-neutral-600", children: entry.timestamp }), ' ', _jsx("span", { className: cn('font-medium', color), children: entry.operation.padEnd(4) }), ' ', _jsx("span", { className: "text-neutral-400", children: entry.clientId.padEnd(10) }), ' ', detail] }, entry.id));
|
|
41
|
+
}) })
|
|
42
|
+
] })
|
|
43
|
+
] }));
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=commit-stream-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-stream-panel.js","sourceRoot":"","sources":["../../src/observable-universe/commit-stream-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ObservableClient } from './types';
|
|
2
|
+
export interface ConnectedClientsPanelProps {
|
|
3
|
+
clients: ObservableClient[];
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const ConnectedClientsPanel: import("react").ForwardRefExoticComponent<ConnectedClientsPanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=connected-clients-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connected-clients-panel.d.ts","sourceRoot":"","sources":["../../src/observable-universe/connected-clients-panel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,eAAO,MAAM,qBAAqB,uHAsEhC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
function formatSyncTime(client) {
|
|
6
|
+
if (client.status === 'syncing') {
|
|
7
|
+
return `pushing ${client.syncingCommits ?? 0} commits...`;
|
|
8
|
+
}
|
|
9
|
+
if (client.lastSync === 0)
|
|
10
|
+
return 'just now';
|
|
11
|
+
if (client.lastSync < 60)
|
|
12
|
+
return `${client.lastSync}s ago`;
|
|
13
|
+
return `${Math.floor(client.lastSync / 60)}m ago`;
|
|
14
|
+
}
|
|
15
|
+
function statusDotChar(status) {
|
|
16
|
+
if (status === 'online')
|
|
17
|
+
return '\u25CF';
|
|
18
|
+
if (status === 'syncing')
|
|
19
|
+
return '\u25D0';
|
|
20
|
+
return '\u25CB';
|
|
21
|
+
}
|
|
22
|
+
const statusDotClass = {
|
|
23
|
+
online: 'text-healthy',
|
|
24
|
+
syncing: 'text-syncing animate-[dotPulse_1s_ease-in-out_infinite]',
|
|
25
|
+
offline: 'text-offline',
|
|
26
|
+
};
|
|
27
|
+
const statusTextClass = {
|
|
28
|
+
online: 'text-emerald-500',
|
|
29
|
+
syncing: 'text-amber-500',
|
|
30
|
+
offline: 'text-red-500',
|
|
31
|
+
};
|
|
32
|
+
export const ConnectedClientsPanel = forwardRef(function ConnectedClientsPanel({ clients, className }, ref) {
|
|
33
|
+
return (_jsxs("div", { ref: ref, className: cn('dashboard-panel rounded-lg flex flex-col', className), children: [
|
|
34
|
+
_jsxs("div", { className: "px-4 py-3 border-b border-border flex items-center justify-between", children: [
|
|
35
|
+
_jsx("span", { className: "font-mono text-[11px] text-neutral-400 uppercase tracking-wider", children: "Connected Clients" }), _jsxs("span", { className: "font-mono text-[11px] text-neutral-600", children: [clients.length, " nodes"] })
|
|
36
|
+
] }), _jsx("div", { className: "flex-1 overflow-auto p-2 space-y-1", children: clients.map((client) => (_jsxs("div", { className: "flex items-start gap-3 px-3 py-2.5 rounded hover:bg-white/[0.02] transition-colors", children: [
|
|
37
|
+
_jsx("span", { className: cn('font-mono text-sm mt-0.5 shrink-0', statusDotClass[client.status]), children: statusDotChar(client.status) }), _jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
38
|
+
_jsxs("div", { className: "flex items-center gap-2", children: [
|
|
39
|
+
_jsx("span", { className: "font-mono text-xs text-white truncate", children: client.id }), _jsxs("span", { className: "font-mono text-[10px] text-neutral-600", children: ["(", client.type, ")"] }), client.via === 'relay' ? (_jsx("span", { className: "font-mono text-[9px] text-violet-400/60 border border-violet-400/20 rounded px-1 ml-1", children: "relay" })) : null] }), _jsxs("div", { className: "flex items-center gap-3 mt-0.5", children: [
|
|
40
|
+
_jsx("span", { className: cn('font-mono text-[10px]', statusTextClass[client.status]), children: client.status }), _jsxs("span", { className: "font-mono text-[10px] text-neutral-600", children: ["sync: ", formatSyncTime(client)] })
|
|
41
|
+
] }), _jsxs("div", { className: "font-mono text-[10px] text-neutral-600 mt-0.5", children: ["commits:", ' ', _jsx("span", { className: "text-neutral-400", children: client.commits.toLocaleString() })
|
|
42
|
+
] })
|
|
43
|
+
] })
|
|
44
|
+
] }, client.id))) })
|
|
45
|
+
] }));
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=connected-clients-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connected-clients-panel.js","sourceRoot":"","sources":["../../src/observable-universe/connected-clients-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ObservableClient } from './types';
|
|
2
|
+
export declare const INITIAL_CLIENTS: ObservableClient[];
|
|
3
|
+
export declare const TABLES: string[];
|
|
4
|
+
export declare const MUTATIONS: readonly ["INSERT", "UPDATE", "DELETE"];
|
|
5
|
+
export declare const OPERATIONS: readonly ["PUSH", "PULL", "ACK", "PUSH", "PULL", "PUSH"];
|
|
6
|
+
export declare const NODE_POSITIONS: Record<string, {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/observable-universe/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,gBAAgB,EA0D7C,CAAC;AAEF,eAAO,MAAM,MAAM,UAA0C,CAAC;AAC9D,eAAO,MAAM,SAAS,yCAA0C,CAAC;AACjE,eAAO,MAAM,UAAU,0DAOb,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAUnE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export const INITIAL_CLIENTS = [
|
|
2
|
+
{
|
|
3
|
+
id: 'client-a',
|
|
4
|
+
type: 'mobile',
|
|
5
|
+
status: 'online',
|
|
6
|
+
lastSync: 2,
|
|
7
|
+
commits: 847,
|
|
8
|
+
via: 'direct',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: 'client-b',
|
|
12
|
+
type: 'desktop',
|
|
13
|
+
status: 'online',
|
|
14
|
+
lastSync: 0,
|
|
15
|
+
commits: 1203,
|
|
16
|
+
via: 'direct',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'client-c',
|
|
20
|
+
type: 'tablet',
|
|
21
|
+
status: 'syncing',
|
|
22
|
+
lastSync: 0,
|
|
23
|
+
commits: 445,
|
|
24
|
+
syncingCommits: 3,
|
|
25
|
+
via: 'direct',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'client-d',
|
|
29
|
+
type: 'edge',
|
|
30
|
+
status: 'offline',
|
|
31
|
+
lastSync: 240,
|
|
32
|
+
commits: 201,
|
|
33
|
+
via: 'direct',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'client-e',
|
|
37
|
+
type: 'mobile',
|
|
38
|
+
status: 'online',
|
|
39
|
+
lastSync: 1,
|
|
40
|
+
commits: 312,
|
|
41
|
+
via: 'relay',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'client-f',
|
|
45
|
+
type: 'laptop',
|
|
46
|
+
status: 'online',
|
|
47
|
+
lastSync: 3,
|
|
48
|
+
commits: 589,
|
|
49
|
+
via: 'relay',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'client-g',
|
|
53
|
+
type: 'iot',
|
|
54
|
+
status: 'offline',
|
|
55
|
+
lastSync: 180,
|
|
56
|
+
commits: 67,
|
|
57
|
+
via: 'relay',
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
export const TABLES = ['todos', 'projects', 'notes', 'users'];
|
|
61
|
+
export const MUTATIONS = ['INSERT', 'UPDATE', 'DELETE'];
|
|
62
|
+
export const OPERATIONS = [
|
|
63
|
+
'PUSH',
|
|
64
|
+
'PULL',
|
|
65
|
+
'ACK',
|
|
66
|
+
'PUSH',
|
|
67
|
+
'PULL',
|
|
68
|
+
'PUSH',
|
|
69
|
+
];
|
|
70
|
+
export const NODE_POSITIONS = {
|
|
71
|
+
server: { x: 195, y: 210 },
|
|
72
|
+
relay: { x: 465, y: 210 },
|
|
73
|
+
'client-a': { x: 52, y: 100 },
|
|
74
|
+
'client-b': { x: 38, y: 220 },
|
|
75
|
+
'client-c': { x: 52, y: 340 },
|
|
76
|
+
'client-d': { x: 195, y: 390 },
|
|
77
|
+
'client-e': { x: 608, y: 100 },
|
|
78
|
+
'client-f': { x: 622, y: 220 },
|
|
79
|
+
'client-g': { x: 608, y: 340 },
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/observable-universe/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,QAAQ;KACd;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,QAAQ;KACd;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,GAAG;QACZ,cAAc,EAAE,CAAC;QACjB,GAAG,EAAE,QAAQ;KACd;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,QAAQ;KACd;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,OAAO;KACb;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,OAAO;KACb;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,OAAO;KACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAA6C;IACtE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IACzB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC9B,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAC/B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface ExplanationSectionProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const ExplanationSection: import("react").ForwardRefExoticComponent<ExplanationSectionProps & import("react").RefAttributes<HTMLElement>>;
|
|
5
|
+
//# sourceMappingURL=explanation-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explanation-section.d.ts","sourceRoot":"","sources":["../../src/observable-universe/explanation-section.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsED,eAAO,MAAM,kBAAkB,iHAkD7B,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { SectionHeading } from './section-heading.js';
|
|
6
|
+
const features = [
|
|
7
|
+
{
|
|
8
|
+
title: 'Instant UI',
|
|
9
|
+
color: 'healthy',
|
|
10
|
+
description: 'Queries hit local SQLite in <1ms. No loading spinners, no network in the hot path.',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
title: 'Offline by default',
|
|
14
|
+
color: 'flow',
|
|
15
|
+
description: 'Writes queue in a local outbox. Sync happens when connectivity returns.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: 'Commit-log sync',
|
|
19
|
+
color: 'flow',
|
|
20
|
+
description: 'Append-only log of changes. Incremental pulls. Easy to reason about and debug.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: 'Scope-based auth',
|
|
24
|
+
color: 'syncing',
|
|
25
|
+
description: 'Every change tagged with scope values. Pulls return only what\u2019s requested and allowed.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
title: 'Blob storage',
|
|
29
|
+
color: 'violet-400',
|
|
30
|
+
description: 'Sync binary files alongside structured data. Adapters for filesystem, database, and S3-compatible storage (S3/R2/MinIO).',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: 'End-to-end encryption',
|
|
34
|
+
color: 'pink-400',
|
|
35
|
+
description: 'Field-level E2E encryption (XChaCha20-Poly1305) with BIP39 key sharing.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: 'Observability',
|
|
39
|
+
color: 'healthy',
|
|
40
|
+
description: 'Pluggable telemetry \u2014 logs, traces, metrics, exceptions. Sentry adapter or bring your own.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: 'Admin console',
|
|
44
|
+
color: 'flow',
|
|
45
|
+
description: 'Inspect commits, clients, and events. Trigger prune/compact and debug sync in production.',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
function colorClasses(color) {
|
|
49
|
+
switch (color) {
|
|
50
|
+
case 'healthy':
|
|
51
|
+
return { bg: 'bg-healthy/10', text: 'text-healthy' };
|
|
52
|
+
case 'flow':
|
|
53
|
+
return { bg: 'bg-flow/10', text: 'text-flow' };
|
|
54
|
+
case 'syncing':
|
|
55
|
+
return { bg: 'bg-syncing/10', text: 'text-syncing' };
|
|
56
|
+
case 'violet-400':
|
|
57
|
+
return { bg: 'bg-violet-400/10', text: 'text-violet-400' };
|
|
58
|
+
case 'pink-400':
|
|
59
|
+
return { bg: 'bg-pink-400/10', text: 'text-pink-400' };
|
|
60
|
+
default:
|
|
61
|
+
return { bg: 'bg-flow/10', text: 'text-flow' };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export const ExplanationSection = forwardRef(function ExplanationSection({ className }, ref) {
|
|
65
|
+
return (_jsx("section", { ref: ref, id: "why-syncular", className: cn('py-24 border-t border-border', className), children: _jsxs("div", { className: "max-w-[1400px] mx-auto px-6", children: [
|
|
66
|
+
_jsx(SectionHeading, { label: "Why Syncular", title: "Everything you need for offline-first sync. Nothing you don't." }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6", children: features.map((feature) => {
|
|
67
|
+
const colors = colorClasses(feature.color);
|
|
68
|
+
return (_jsxs("div", { className: "dashboard-panel rounded-lg p-6", children: [
|
|
69
|
+
_jsxs("div", { className: "flex items-center gap-2 mb-4", children: [
|
|
70
|
+
_jsx("div", { className: cn('w-8 h-8 rounded flex items-center justify-center', colors.bg), children: _jsx("div", { className: cn('w-2 h-2 rounded-full', colors.text), style: { backgroundColor: 'currentColor' } }) }), _jsx("span", { className: "font-display font-semibold text-white text-sm", children: feature.title })
|
|
71
|
+
] }), _jsx("p", { className: "text-sm text-neutral-400 leading-relaxed", children: feature.description })
|
|
72
|
+
] }, feature.title));
|
|
73
|
+
}) })
|
|
74
|
+
] }) }));
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=explanation-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explanation-section.js","sourceRoot":"","sources":["../../src/observable-universe/explanation-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-bar.d.ts","sourceRoot":"","sources":["../../src/observable-universe/footer-bar.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,wGAwBrB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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 FooterBar = forwardRef(function FooterBar({ className }, ref) {
|
|
6
|
+
return (_jsx("footer", { ref: ref, className: cn('border-t border-border py-10', className), children: _jsxs("div", { className: "max-w-[1400px] mx-auto px-6 flex items-center justify-between", children: [
|
|
7
|
+
_jsxs("div", { className: "flex items-center gap-3", children: [
|
|
8
|
+
_jsx("span", { className: "font-display font-bold text-white text-sm", children: "syncular" }), _jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-healthy inline-block", style: { boxShadow: '0 0 4px #22c55e' } })
|
|
9
|
+
] }), _jsx("div", { className: "font-mono text-[11px] text-neutral-600", children: "Offline-first sync for SQLite. Open source." })
|
|
10
|
+
] }) }));
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=footer-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-bar.js","sourceRoot":"","sources":["../../src/observable-universe/footer-bar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAM/B,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CACjC,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;IACrC,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,YAExD,eAAK,SAAS,EAAC,+DAA+D;gBAC5E,eAAK,SAAS,EAAC,yBAAyB;wBACtC,eAAM,SAAS,EAAC,2CAA2C,yBAEpD,EACP,eACE,SAAS,EAAC,kDAAkD,EAC5D,KAAK,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,GACvC;wBACE,EACN,cAAK,SAAS,EAAC,wCAAwC,4DAEjD;gBACF,GACC,CACV,CAAC;AAAA,CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ObservableClient, ObservableMetrics, ObservableStreamEntry } from './types';
|
|
2
|
+
export interface HeroDashboardSectionProps {
|
|
3
|
+
clients: ObservableClient[];
|
|
4
|
+
streamEntries: ObservableStreamEntry[];
|
|
5
|
+
metrics: ObservableMetrics;
|
|
6
|
+
streamRate?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const HeroDashboardSection: import("react").ForwardRefExoticComponent<HeroDashboardSectionProps & import("react").RefAttributes<HTMLElement>>;
|
|
10
|
+
//# sourceMappingURL=hero-dashboard-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hero-dashboard-section.d.ts","sourceRoot":"","sources":["../../src/observable-universe/hero-dashboard-section.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,oBAAoB,mHAgD/B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 { CommitStreamPanel } from './commit-stream-panel.js';
|
|
6
|
+
import { ConnectedClientsPanel } from './connected-clients-panel.js';
|
|
7
|
+
import { LiveMetricsBar } from './live-metrics-bar.js';
|
|
8
|
+
import { SyncTopologyPanel } from './sync-topology-panel.js';
|
|
9
|
+
export const HeroDashboardSection = forwardRef(function HeroDashboardSection({ clients, streamEntries, metrics, streamRate, className }, ref) {
|
|
10
|
+
return (_jsxs("section", { ref: ref, className: cn('pt-16 pb-4 min-h-screen flex flex-col', className), children: [
|
|
11
|
+
_jsxs("div", { className: "max-w-[1400px] mx-auto w-full px-6 pt-6 pb-4", children: [
|
|
12
|
+
_jsx("h1", { className: "font-display font-bold text-3xl md:text-4xl text-white leading-tight", children: "Offline-first SQL sync you can operate." }), _jsx("p", { className: "font-display text-base text-neutral-500 mt-2 max-w-2xl", children: "Web, Electron, Expo. Local SQLite read and write path. Commit-log sync. Scopes for partial sync and auth." }), _jsxs("div", { className: "mt-3 flex items-center gap-2 flex-wrap", children: [
|
|
13
|
+
_jsx("span", { className: "font-mono text-[10px] uppercase tracking-widest text-amber-300 border border-amber-300/30 px-2 py-0.5 rounded", children: "Alpha" }), _jsx("span", { className: "text-sm text-neutral-500", children: "APIs and storage layouts will change. Pin versions and expect manual migrations between versions." })
|
|
14
|
+
] })
|
|
15
|
+
] }), _jsxs("div", { className: "max-w-[1400px] mx-auto w-full px-6 flex-1 grid grid-cols-1 lg:grid-cols-[320px_1fr_320px] gap-3 pb-3", style: { minHeight: 520 }, children: [
|
|
16
|
+
_jsx(ConnectedClientsPanel, { clients: clients }), _jsx(SyncTopologyPanel, { clients: clients }), _jsx(CommitStreamPanel, { entries: streamEntries, rate: streamRate })
|
|
17
|
+
] }), _jsx("div", { className: "max-w-[1400px] mx-auto w-full px-6 pb-6", children: _jsx(LiveMetricsBar, { metrics: metrics }) })
|
|
18
|
+
] }));
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=hero-dashboard-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hero-dashboard-section.js","sourceRoot":"","sources":["../../src/observable-universe/hero-dashboard-section.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,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAe1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAG5C,SAAS,oBAAoB,CAC7B,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAC1D,GAAG,EACH;IACA,OAAO,CACL,mBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC;YAGjE,eAAK,SAAS,EAAC,8CAA8C;oBAC3D,aAAI,SAAS,EAAC,sEAAsE,wDAE/E,EACL,YAAG,SAAS,EAAC,wDAAwD,0HAGjE,EACJ,eAAK,SAAS,EAAC,wCAAwC;4BACrD,eAAM,SAAS,EAAC,+GAA+G,sBAExH,EACP,eAAM,SAAS,EAAC,0BAA0B,kHAGnC;4BACH;oBACF,EAGN,eACE,SAAS,EAAC,sGAAsG,EAChH,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;oBAEzB,KAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,GAAI,EAC3C,KAAC,iBAAiB,IAAC,OAAO,EAAE,OAAO,GAAI,EACvC,KAAC,iBAAiB,IAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAI;oBAC3D,EAGN,cAAK,SAAS,EAAC,yCAAyC,YACtD,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,GAChC;YACE,CACX,CAAC;AAAA,CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './architecture-section';
|
|
2
|
+
export * from './code-section';
|
|
3
|
+
export * from './commit-stream-panel';
|
|
4
|
+
export * from './connected-clients-panel';
|
|
5
|
+
export * from './constants';
|
|
6
|
+
export * from './explanation-section';
|
|
7
|
+
export * from './footer-bar';
|
|
8
|
+
export * from './hero-dashboard-section';
|
|
9
|
+
export * from './install-section';
|
|
10
|
+
export * from './live-metrics-bar';
|
|
11
|
+
export * from './observable-universe-header';
|
|
12
|
+
export * from './observable-universe-landing';
|
|
13
|
+
export * from './section-heading';
|
|
14
|
+
export * from './sync-topology-panel';
|
|
15
|
+
export * from './types';
|
|
16
|
+
export * from './use-observable-universe-simulation';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observable-universe/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './architecture-section.js';
|
|
2
|
+
export * from './code-section.js';
|
|
3
|
+
export * from './commit-stream-panel.js';
|
|
4
|
+
export * from './connected-clients-panel.js';
|
|
5
|
+
export * from './constants.js';
|
|
6
|
+
export * from './explanation-section.js';
|
|
7
|
+
export * from './footer-bar.js';
|
|
8
|
+
export * from './hero-dashboard-section.js';
|
|
9
|
+
export * from './install-section.js';
|
|
10
|
+
export * from './live-metrics-bar.js';
|
|
11
|
+
export * from './observable-universe-header.js';
|
|
12
|
+
export * from './observable-universe-landing.js';
|
|
13
|
+
export * from './section-heading.js';
|
|
14
|
+
export * from './sync-topology-panel.js';
|
|
15
|
+
export * from './types.js';
|
|
16
|
+
export * from './use-observable-universe-simulation.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observable-universe/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface InstallSectionProps {
|
|
2
|
+
docsHref?: string;
|
|
3
|
+
demoHref?: string;
|
|
4
|
+
githubHref?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const InstallSection: import("react").ForwardRefExoticComponent<InstallSectionProps & import("react").RefAttributes<HTMLElement>>;
|
|
8
|
+
//# sourceMappingURL=install-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-section.d.ts","sourceRoot":"","sources":["../../src/observable-universe/install-section.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,6GA0G1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 InstallSection = forwardRef(function InstallSection({ docsHref = '/docs', demoHref, githubHref = 'https://github.com/syncular/syncular', className, }, ref) {
|
|
6
|
+
return (_jsx("section", { ref: ref, id: "install", className: cn('py-24 border-t border-border', className), children: _jsxs("div", { className: "max-w-[1400px] mx-auto px-6 text-center", children: [
|
|
7
|
+
_jsx("span", { className: "font-mono text-[11px] text-flow uppercase tracking-widest", children: "Get started" }), _jsx("h2", { className: "font-display font-bold text-2xl md:text-3xl text-white mt-4", children: "Syncular is modular. Install only what you need." }), _jsxs("div", { className: "mt-10 grid grid-cols-1 lg:grid-cols-2 gap-6 max-w-4xl mx-auto text-left", children: [
|
|
8
|
+
_jsxs("div", { className: "code-block", children: [
|
|
9
|
+
_jsxs("div", { className: "code-header", children: [
|
|
10
|
+
_jsx("span", { className: "w-2 h-2 rounded-full bg-healthy inline-block" }), _jsx("span", { children: "Server" })
|
|
11
|
+
] }), _jsx("pre", { className: "font-mono text-sm px-6 py-4", children: _jsxs("code", { children: [
|
|
12
|
+
_jsx("span", { className: "text-neutral-500", children: "$" }), ' ', _jsx("span", { className: "text-white", children: "bun add @syncular/server \\" }), '\n', _jsxs("span", { className: "text-white", children: [' ', "@syncular/server-hono \\"] }), '\n', _jsxs("span", { className: "text-white", children: [' ', "@syncular/server-dialect-postgres \\"] }), '\n', _jsxs("span", { className: "text-white", children: [' ', "kysely pg hono"] })
|
|
13
|
+
] }) })
|
|
14
|
+
] }), _jsxs("div", { className: "code-block", children: [
|
|
15
|
+
_jsxs("div", { className: "code-header", children: [
|
|
16
|
+
_jsx("span", { className: "w-2 h-2 rounded-full bg-flow inline-block" }), _jsx("span", { children: "Client" })
|
|
17
|
+
] }), _jsx("pre", { className: "font-mono text-sm px-6 py-4", children: _jsxs("code", { children: [
|
|
18
|
+
_jsx("span", { className: "text-neutral-500", children: "$" }), ' ', _jsx("span", { className: "text-white", children: "bun add @syncular/client \\" }), '\n', _jsxs("span", { className: "text-white", children: [' ', "@syncular/client-react \\"] }), '\n', _jsxs("span", { className: "text-white", children: [' ', "@syncular/transport-http \\"] }), '\n', _jsxs("span", { className: "text-white", children: [' ', "@syncular/dialect-wa-sqlite kysely"] })
|
|
19
|
+
] }) })
|
|
20
|
+
] })
|
|
21
|
+
] }), _jsxs("div", { className: "mt-10 flex items-center justify-center gap-4 flex-wrap", children: [docsHref ? (_jsx("a", { href: docsHref, className: "font-display font-medium text-sm bg-flow text-white px-6 py-2.5 rounded hover:bg-blue-600 transition-colors", children: "Read the docs" })) : null, demoHref ? (_jsx("a", { href: demoHref, className: "font-display font-medium text-sm border border-flow text-flow px-6 py-2.5 rounded hover:bg-flow/10 transition-colors", children: "Try the demo" })) : null, githubHref ? (_jsx("a", { href: githubHref, className: "font-display font-medium text-sm border border-border text-neutral-300 px-6 py-2.5 rounded hover:border-neutral-500 hover:text-white transition-colors", children: "View on GitHub" })) : null] })
|
|
22
|
+
] }) }));
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=install-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-section.js","sourceRoot":"","sources":["../../src/observable-universe/install-section.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,CACrB,EACE,QAAQ,GAAG,OAAO,EAClB,QAAQ,EACR,UAAU,GAAG,sCAAsC,EACnD,SAAS,GACV,EACD,GAAG,EACH;IACA,OAAO,CACL,kBACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAC,SAAS,EACZ,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,YAExD,eAAK,SAAS,EAAC,yCAAyC;gBACtD,eAAM,SAAS,EAAC,2DAA2D,4BAEpE,EACP,aAAI,SAAS,EAAC,6DAA6D,iEAEtE,EAEL,eAAK,SAAS,EAAC,yEAAyE;wBAEtF,eAAK,SAAS,EAAC,YAAY;gCACzB,eAAK,SAAS,EAAC,aAAa;wCAC1B,eAAM,SAAS,EAAC,8CAA8C,GAAG,EACjE,oCAAmB;wCACf,EACN,cAAK,SAAS,EAAC,6BAA6B,YAC1C;4CACE,eAAM,SAAS,EAAC,kBAAkB,kBAAS,EAAC,GAAG,EAC/C,eAAM,SAAS,EAAC,YAAY,4CAAkC,EAC7D,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aACzB,IAAI,gCACA,EACN,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aACzB,IAAI,4CACA,EACN,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aAAE,IAAI,sBAAsB;4CACnD,GACH;gCACF,EAGN,eAAK,SAAS,EAAC,YAAY;gCACzB,eAAK,SAAS,EAAC,aAAa;wCAC1B,eAAM,SAAS,EAAC,2CAA2C,GAAG,EAC9D,oCAAmB;wCACf,EACN,cAAK,SAAS,EAAC,6BAA6B,YAC1C;4CACE,eAAM,SAAS,EAAC,kBAAkB,kBAAS,EAAC,GAAG,EAC/C,eAAM,SAAS,EAAC,YAAY,4CAAkC,EAC7D,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aACzB,IAAI,iCACA,EACN,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aACzB,IAAI,mCACA,EACN,IAAI,EACL,gBAAM,SAAS,EAAC,YAAY,aACzB,IAAI,0CACA;4CACF,GACH;gCACF;wBACF,EAEN,eAAK,SAAS,EAAC,wDAAwD,aACpE,QAAQ,CAAC,CAAC,CAAC,CACV,YACE,IAAI,EAAE,QAAQ,EACd,SAAS,EAAC,6GAA6G,8BAGrH,CACL,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,YACE,IAAI,EAAE,QAAQ,EACd,SAAS,EAAC,sHAAsH,6BAG9H,CACL,CAAC,CAAC,CAAC,IAAI,EACP,UAAU,CAAC,CAAC,CAAC,CACZ,YACE,IAAI,EAAE,UAAU,EAChB,SAAS,EAAC,wJAAwJ,+BAGhK,CACL,CAAC,CAAC,CAAC,IAAI,IACJ;gBACF,GACE,CACX,CAAC;AAAA,CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ObservableMetrics } from './types';
|
|
2
|
+
export interface LiveMetricsBarProps {
|
|
3
|
+
metrics: ObservableMetrics;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const LiveMetricsBar: import("react").ForwardRefExoticComponent<LiveMetricsBarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=live-metrics-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-metrics-bar.d.ts","sourceRoot":"","sources":["../../src/observable-universe/live-metrics-bar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAoD1B,CAAC"}
|