@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.
Files changed (554) hide show
  1. package/README.md +11 -0
  2. package/dist/charts/activity-chart.d.ts +11 -0
  3. package/dist/charts/activity-chart.d.ts.map +1 -0
  4. package/dist/charts/activity-chart.js +28 -0
  5. package/dist/charts/activity-chart.js.map +1 -0
  6. package/dist/charts/chart.d.ts +50 -0
  7. package/dist/charts/chart.d.ts.map +1 -0
  8. package/dist/charts/chart.js +108 -0
  9. package/dist/charts/chart.js.map +1 -0
  10. package/dist/charts/index.d.ts +5 -0
  11. package/dist/charts/index.d.ts.map +1 -0
  12. package/dist/charts/index.js +5 -0
  13. package/dist/charts/index.js.map +1 -0
  14. package/dist/charts/latency-chart.d.ts +15 -0
  15. package/dist/charts/latency-chart.d.ts.map +1 -0
  16. package/dist/charts/latency-chart.js +25 -0
  17. package/dist/charts/latency-chart.js.map +1 -0
  18. package/dist/charts/outcomes-chart.d.ts +11 -0
  19. package/dist/charts/outcomes-chart.d.ts.map +1 -0
  20. package/dist/charts/outcomes-chart.js +37 -0
  21. package/dist/charts/outcomes-chart.js.map +1 -0
  22. package/dist/console/activity-bars.d.ts +24 -0
  23. package/dist/console/activity-bars.d.ts.map +1 -0
  24. package/dist/console/activity-bars.js +25 -0
  25. package/dist/console/activity-bars.js.map +1 -0
  26. package/dist/console/alerts-config.d.ts +20 -0
  27. package/dist/console/alerts-config.d.ts.map +1 -0
  28. package/dist/console/alerts-config.js +31 -0
  29. package/dist/console/alerts-config.js.map +1 -0
  30. package/dist/console/api-keys-table.d.ts +16 -0
  31. package/dist/console/api-keys-table.d.ts.map +1 -0
  32. package/dist/console/api-keys-table.js +21 -0
  33. package/dist/console/api-keys-table.js.map +1 -0
  34. package/dist/console/bottom-bar.d.ts +17 -0
  35. package/dist/console/bottom-bar.d.ts.map +1 -0
  36. package/dist/console/bottom-bar.js +14 -0
  37. package/dist/console/bottom-bar.js.map +1 -0
  38. package/dist/console/commit-table.d.ts +12 -0
  39. package/dist/console/commit-table.d.ts.map +1 -0
  40. package/dist/console/commit-table.js +14 -0
  41. package/dist/console/commit-table.js.map +1 -0
  42. package/dist/console/connection-form.d.ts +29 -0
  43. package/dist/console/connection-form.d.ts.map +1 -0
  44. package/dist/console/connection-form.js +24 -0
  45. package/dist/console/connection-form.js.map +1 -0
  46. package/dist/console/connection-status-badge.d.ts +7 -0
  47. package/dist/console/connection-status-badge.d.ts.map +1 -0
  48. package/dist/console/connection-status-badge.js +19 -0
  49. package/dist/console/connection-status-badge.js.map +1 -0
  50. package/dist/console/danger-action-card.d.ts +10 -0
  51. package/dist/console/danger-action-card.d.ts.map +1 -0
  52. package/dist/console/danger-action-card.js +10 -0
  53. package/dist/console/danger-action-card.js.map +1 -0
  54. package/dist/console/empty-state.d.ts +9 -0
  55. package/dist/console/empty-state.d.ts.map +1 -0
  56. package/dist/console/empty-state.js +7 -0
  57. package/dist/console/empty-state.js.map +1 -0
  58. package/dist/console/filter-bar.d.ts +18 -0
  59. package/dist/console/filter-bar.d.ts.map +1 -0
  60. package/dist/console/filter-bar.js +14 -0
  61. package/dist/console/filter-bar.js.map +1 -0
  62. package/dist/console/fleet-card.d.ts +14 -0
  63. package/dist/console/fleet-card.d.ts.map +1 -0
  64. package/dist/console/fleet-card.js +58 -0
  65. package/dist/console/fleet-card.js.map +1 -0
  66. package/dist/console/handlers-table.d.ts +12 -0
  67. package/dist/console/handlers-table.d.ts.map +1 -0
  68. package/dist/console/handlers-table.js +21 -0
  69. package/dist/console/handlers-table.js.map +1 -0
  70. package/dist/console/index.d.ts +28 -0
  71. package/dist/console/index.d.ts.map +1 -0
  72. package/dist/console/index.js +28 -0
  73. package/dist/console/index.js.map +1 -0
  74. package/dist/console/kpi-card.d.ts +10 -0
  75. package/dist/console/kpi-card.d.ts.map +1 -0
  76. package/dist/console/kpi-card.js +17 -0
  77. package/dist/console/kpi-card.js.map +1 -0
  78. package/dist/console/kpi-strip.d.ts +10 -0
  79. package/dist/console/kpi-strip.d.ts.map +1 -0
  80. package/dist/console/kpi-strip.js +22 -0
  81. package/dist/console/kpi-strip.js.map +1 -0
  82. package/dist/console/latency-percentiles.d.ts +24 -0
  83. package/dist/console/latency-percentiles.d.ts.map +1 -0
  84. package/dist/console/latency-percentiles.js +23 -0
  85. package/dist/console/latency-percentiles.js.map +1 -0
  86. package/dist/console/live-activity-feed.d.ts +24 -0
  87. package/dist/console/live-activity-feed.d.ts.map +1 -0
  88. package/dist/console/live-activity-feed.js +29 -0
  89. package/dist/console/live-activity-feed.js.map +1 -0
  90. package/dist/console/maintenance-card.d.ts +28 -0
  91. package/dist/console/maintenance-card.d.ts.map +1 -0
  92. package/dist/console/maintenance-card.js +25 -0
  93. package/dist/console/maintenance-card.js.map +1 -0
  94. package/dist/console/page-header.d.ts +9 -0
  95. package/dist/console/page-header.d.ts.map +1 -0
  96. package/dist/console/page-header.js +9 -0
  97. package/dist/console/page-header.js.map +1 -0
  98. package/dist/console/panel-shell.d.ts +11 -0
  99. package/dist/console/panel-shell.d.ts.map +1 -0
  100. package/dist/console/panel-shell.js +10 -0
  101. package/dist/console/panel-shell.js.map +1 -0
  102. package/dist/console/preferences-panel.d.ts +30 -0
  103. package/dist/console/preferences-panel.d.ts.map +1 -0
  104. package/dist/console/preferences-panel.js +24 -0
  105. package/dist/console/preferences-panel.js.map +1 -0
  106. package/dist/console/section-card.d.ts +11 -0
  107. package/dist/console/section-card.d.ts.map +1 -0
  108. package/dist/console/section-card.js +9 -0
  109. package/dist/console/section-card.js.map +1 -0
  110. package/dist/console/stream-log.d.ts +26 -0
  111. package/dist/console/stream-log.d.ts.map +1 -0
  112. package/dist/console/stream-log.js +34 -0
  113. package/dist/console/stream-log.js.map +1 -0
  114. package/dist/console/sync-horizon.d.ts +18 -0
  115. package/dist/console/sync-horizon.d.ts.map +1 -0
  116. package/dist/console/sync-horizon.js +61 -0
  117. package/dist/console/sync-horizon.js.map +1 -0
  118. package/dist/console/sync-lag-bar.d.ts +23 -0
  119. package/dist/console/sync-lag-bar.d.ts.map +1 -0
  120. package/dist/console/sync-lag-bar.js +111 -0
  121. package/dist/console/sync-lag-bar.js.map +1 -0
  122. package/dist/console/sync-state-badge.d.ts +6 -0
  123. package/dist/console/sync-state-badge.d.ts.map +1 -0
  124. package/dist/console/sync-state-badge.js +21 -0
  125. package/dist/console/sync-state-badge.js.map +1 -0
  126. package/dist/console/topology-card.d.ts +9 -0
  127. package/dist/console/topology-card.d.ts.map +1 -0
  128. package/dist/console/topology-card.js +9 -0
  129. package/dist/console/topology-card.js.map +1 -0
  130. package/dist/console/topology-hero.d.ts +65 -0
  131. package/dist/console/topology-hero.d.ts.map +1 -0
  132. package/dist/console/topology-hero.js +90 -0
  133. package/dist/console/topology-hero.js.map +1 -0
  134. package/dist/demo/actor-panel.d.ts +11 -0
  135. package/dist/demo/actor-panel.d.ts.map +1 -0
  136. package/dist/demo/actor-panel.js +19 -0
  137. package/dist/demo/actor-panel.js.map +1 -0
  138. package/dist/demo/catalog-table.d.ts +17 -0
  139. package/dist/demo/catalog-table.d.ts.map +1 -0
  140. package/dist/demo/catalog-table.js +13 -0
  141. package/dist/demo/catalog-table.js.map +1 -0
  142. package/dist/demo/channel-selector.d.ts +12 -0
  143. package/dist/demo/channel-selector.d.ts.map +1 -0
  144. package/dist/demo/channel-selector.js +13 -0
  145. package/dist/demo/channel-selector.js.map +1 -0
  146. package/dist/demo/client-panel.d.ts +12 -0
  147. package/dist/demo/client-panel.d.ts.map +1 -0
  148. package/dist/demo/client-panel.js +18 -0
  149. package/dist/demo/client-panel.js.map +1 -0
  150. package/dist/demo/conflict-panel.d.ts +8 -0
  151. package/dist/demo/conflict-panel.d.ts.map +1 -0
  152. package/dist/demo/conflict-panel.js +9 -0
  153. package/dist/demo/conflict-panel.js.map +1 -0
  154. package/dist/demo/demo-header.d.ts +9 -0
  155. package/dist/demo/demo-header.d.ts.map +1 -0
  156. package/dist/demo/demo-header.js +12 -0
  157. package/dist/demo/demo-header.js.map +1 -0
  158. package/dist/demo/demo-section.d.ts +8 -0
  159. package/dist/demo/demo-section.d.ts.map +1 -0
  160. package/dist/demo/demo-section.js +10 -0
  161. package/dist/demo/demo-section.js.map +1 -0
  162. package/dist/demo/encrypted-badge.d.ts +7 -0
  163. package/dist/demo/encrypted-badge.d.ts.map +1 -0
  164. package/dist/demo/encrypted-badge.js +12 -0
  165. package/dist/demo/encrypted-badge.js.map +1 -0
  166. package/dist/demo/encryption-flow-diagram.d.ts +5 -0
  167. package/dist/demo/encryption-flow-diagram.d.ts.map +1 -0
  168. package/dist/demo/encryption-flow-diagram.js +24 -0
  169. package/dist/demo/encryption-flow-diagram.js.map +1 -0
  170. package/dist/demo/index.d.ts +27 -0
  171. package/dist/demo/index.d.ts.map +1 -0
  172. package/dist/demo/index.js +27 -0
  173. package/dist/demo/index.js.map +1 -0
  174. package/dist/demo/info-panel.d.ts +9 -0
  175. package/dist/demo/info-panel.d.ts.map +1 -0
  176. package/dist/demo/info-panel.js +11 -0
  177. package/dist/demo/info-panel.js.map +1 -0
  178. package/dist/demo/media-gallery.d.ts +7 -0
  179. package/dist/demo/media-gallery.d.ts.map +1 -0
  180. package/dist/demo/media-gallery.js +7 -0
  181. package/dist/demo/media-gallery.js.map +1 -0
  182. package/dist/demo/media-thumbnail.d.ts +11 -0
  183. package/dist/demo/media-thumbnail.d.ts.map +1 -0
  184. package/dist/demo/media-thumbnail.js +10 -0
  185. package/dist/demo/media-thumbnail.js.map +1 -0
  186. package/dist/demo/metric-card.d.ts +14 -0
  187. package/dist/demo/metric-card.d.ts.map +1 -0
  188. package/dist/demo/metric-card.js +20 -0
  189. package/dist/demo/metric-card.js.map +1 -0
  190. package/dist/demo/mnemonic-display.d.ts +8 -0
  191. package/dist/demo/mnemonic-display.d.ts.map +1 -0
  192. package/dist/demo/mnemonic-display.js +70 -0
  193. package/dist/demo/mnemonic-display.js.map +1 -0
  194. package/dist/demo/note-card.d.ts +10 -0
  195. package/dist/demo/note-card.d.ts.map +1 -0
  196. package/dist/demo/note-card.js +9 -0
  197. package/dist/demo/note-card.js.map +1 -0
  198. package/dist/demo/sync-controls.d.ts +8 -0
  199. package/dist/demo/sync-controls.d.ts.map +1 -0
  200. package/dist/demo/sync-controls.js +17 -0
  201. package/dist/demo/sync-controls.js.map +1 -0
  202. package/dist/demo/sync-status-badge.d.ts +7 -0
  203. package/dist/demo/sync-status-badge.d.ts.map +1 -0
  204. package/dist/demo/sync-status-badge.js +22 -0
  205. package/dist/demo/sync-status-badge.js.map +1 -0
  206. package/dist/demo/task-item.d.ts +12 -0
  207. package/dist/demo/task-item.d.ts.map +1 -0
  208. package/dist/demo/task-item.js +12 -0
  209. package/dist/demo/task-item.js.map +1 -0
  210. package/dist/demo/task-list.d.ts +8 -0
  211. package/dist/demo/task-list.d.ts.map +1 -0
  212. package/dist/demo/task-list.js +11 -0
  213. package/dist/demo/task-list.js.map +1 -0
  214. package/dist/demo/topology-panel.d.ts +10 -0
  215. package/dist/demo/topology-panel.d.ts.map +1 -0
  216. package/dist/demo/topology-panel.js +10 -0
  217. package/dist/demo/topology-panel.js.map +1 -0
  218. package/dist/demo/topology-svg-keyshare.d.ts +5 -0
  219. package/dist/demo/topology-svg-keyshare.d.ts.map +1 -0
  220. package/dist/demo/topology-svg-keyshare.js +31 -0
  221. package/dist/demo/topology-svg-keyshare.js.map +1 -0
  222. package/dist/demo/topology-svg-media.d.ts +5 -0
  223. package/dist/demo/topology-svg-media.d.ts.map +1 -0
  224. package/dist/demo/topology-svg-media.js +27 -0
  225. package/dist/demo/topology-svg-media.js.map +1 -0
  226. package/dist/demo/topology-svg-split.d.ts +5 -0
  227. package/dist/demo/topology-svg-split.d.ts.map +1 -0
  228. package/dist/demo/topology-svg-split.js +29 -0
  229. package/dist/demo/topology-svg-split.js.map +1 -0
  230. package/dist/demo/topology-svg-symmetric.d.ts +5 -0
  231. package/dist/demo/topology-svg-symmetric.d.ts.map +1 -0
  232. package/dist/demo/topology-svg-symmetric.js +35 -0
  233. package/dist/demo/topology-svg-symmetric.js.map +1 -0
  234. package/dist/demo/transfer-log.d.ts +14 -0
  235. package/dist/demo/transfer-log.d.ts.map +1 -0
  236. package/dist/demo/transfer-log.js +18 -0
  237. package/dist/demo/transfer-log.js.map +1 -0
  238. package/dist/demo/upload-area.d.ts +9 -0
  239. package/dist/demo/upload-area.d.ts.map +1 -0
  240. package/dist/demo/upload-area.js +58 -0
  241. package/dist/demo/upload-area.js.map +1 -0
  242. package/dist/forms/checkbox.d.ts +11 -0
  243. package/dist/forms/checkbox.d.ts.map +1 -0
  244. package/dist/forms/checkbox.js +16 -0
  245. package/dist/forms/checkbox.js.map +1 -0
  246. package/dist/forms/field.d.ts +7 -0
  247. package/dist/forms/field.d.ts.map +1 -0
  248. package/dist/forms/field.js +16 -0
  249. package/dist/forms/field.js.map +1 -0
  250. package/dist/forms/index.d.ts +7 -0
  251. package/dist/forms/index.d.ts.map +1 -0
  252. package/dist/forms/index.js +7 -0
  253. package/dist/forms/index.js.map +1 -0
  254. package/dist/forms/select.d.ts +11 -0
  255. package/dist/forms/select.d.ts.map +1 -0
  256. package/dist/forms/select.js +15 -0
  257. package/dist/forms/select.js.map +1 -0
  258. package/dist/forms/textarea.d.ts +6 -0
  259. package/dist/forms/textarea.d.ts.map +1 -0
  260. package/dist/forms/textarea.js +8 -0
  261. package/dist/forms/textarea.js.map +1 -0
  262. package/dist/forms/toggle-group.d.ts +8 -0
  263. package/dist/forms/toggle-group.d.ts.map +1 -0
  264. package/dist/forms/toggle-group.js +11 -0
  265. package/dist/forms/toggle-group.js.map +1 -0
  266. package/dist/forms/toggle.d.ts +7 -0
  267. package/dist/forms/toggle.d.ts.map +1 -0
  268. package/dist/forms/toggle.js +9 -0
  269. package/dist/forms/toggle.js.map +1 -0
  270. package/dist/index.d.ts +8 -0
  271. package/dist/index.d.ts.map +1 -0
  272. package/dist/index.js +8 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/lib/cn.d.ts +3 -0
  275. package/dist/lib/cn.d.ts.map +1 -0
  276. package/dist/lib/cn.js +6 -0
  277. package/dist/lib/cn.js.map +1 -0
  278. package/dist/lib/types.d.ts +64 -0
  279. package/dist/lib/types.d.ts.map +1 -0
  280. package/dist/lib/types.js +2 -0
  281. package/dist/lib/types.js.map +1 -0
  282. package/dist/navigation/index.d.ts +6 -0
  283. package/dist/navigation/index.d.ts.map +1 -0
  284. package/dist/navigation/index.js +6 -0
  285. package/dist/navigation/index.js.map +1 -0
  286. package/dist/navigation/nav-pill-group.d.ts +14 -0
  287. package/dist/navigation/nav-pill-group.d.ts.map +1 -0
  288. package/dist/navigation/nav-pill-group.js +15 -0
  289. package/dist/navigation/nav-pill-group.js.map +1 -0
  290. package/dist/navigation/nav-pill.d.ts +9 -0
  291. package/dist/navigation/nav-pill.d.ts.map +1 -0
  292. package/dist/navigation/nav-pill.js +7 -0
  293. package/dist/navigation/nav-pill.js.map +1 -0
  294. package/dist/navigation/status-dot.d.ts +13 -0
  295. package/dist/navigation/status-dot.d.ts.map +1 -0
  296. package/dist/navigation/status-dot.js +44 -0
  297. package/dist/navigation/status-dot.js.map +1 -0
  298. package/dist/navigation/syncular-brand.d.ts +6 -0
  299. package/dist/navigation/syncular-brand.d.ts.map +1 -0
  300. package/dist/navigation/syncular-brand.js +11 -0
  301. package/dist/navigation/syncular-brand.js.map +1 -0
  302. package/dist/navigation/top-navigation.d.ts +9 -0
  303. package/dist/navigation/top-navigation.d.ts.map +1 -0
  304. package/dist/navigation/top-navigation.js +9 -0
  305. package/dist/navigation/top-navigation.js.map +1 -0
  306. package/dist/observable-universe/architecture-section.d.ts +5 -0
  307. package/dist/observable-universe/architecture-section.d.ts.map +1 -0
  308. package/dist/observable-universe/architecture-section.js +44 -0
  309. package/dist/observable-universe/architecture-section.js.map +1 -0
  310. package/dist/observable-universe/code-section.d.ts +5 -0
  311. package/dist/observable-universe/code-section.d.ts.map +1 -0
  312. package/dist/observable-universe/code-section.js +86 -0
  313. package/dist/observable-universe/code-section.js.map +1 -0
  314. package/dist/observable-universe/commit-stream-panel.d.ts +8 -0
  315. package/dist/observable-universe/commit-stream-panel.d.ts.map +1 -0
  316. package/dist/observable-universe/commit-stream-panel.js +45 -0
  317. package/dist/observable-universe/commit-stream-panel.js.map +1 -0
  318. package/dist/observable-universe/connected-clients-panel.d.ts +7 -0
  319. package/dist/observable-universe/connected-clients-panel.d.ts.map +1 -0
  320. package/dist/observable-universe/connected-clients-panel.js +47 -0
  321. package/dist/observable-universe/connected-clients-panel.js.map +1 -0
  322. package/dist/observable-universe/constants.d.ts +10 -0
  323. package/dist/observable-universe/constants.d.ts.map +1 -0
  324. package/dist/observable-universe/constants.js +81 -0
  325. package/dist/observable-universe/constants.js.map +1 -0
  326. package/dist/observable-universe/explanation-section.d.ts +5 -0
  327. package/dist/observable-universe/explanation-section.d.ts.map +1 -0
  328. package/dist/observable-universe/explanation-section.js +76 -0
  329. package/dist/observable-universe/explanation-section.js.map +1 -0
  330. package/dist/observable-universe/footer-bar.d.ts +5 -0
  331. package/dist/observable-universe/footer-bar.d.ts.map +1 -0
  332. package/dist/observable-universe/footer-bar.js +12 -0
  333. package/dist/observable-universe/footer-bar.js.map +1 -0
  334. package/dist/observable-universe/hero-dashboard-section.d.ts +10 -0
  335. package/dist/observable-universe/hero-dashboard-section.d.ts.map +1 -0
  336. package/dist/observable-universe/hero-dashboard-section.js +20 -0
  337. package/dist/observable-universe/hero-dashboard-section.js.map +1 -0
  338. package/dist/observable-universe/index.d.ts +17 -0
  339. package/dist/observable-universe/index.d.ts.map +1 -0
  340. package/dist/observable-universe/index.js +17 -0
  341. package/dist/observable-universe/index.js.map +1 -0
  342. package/dist/observable-universe/install-section.d.ts +8 -0
  343. package/dist/observable-universe/install-section.d.ts.map +1 -0
  344. package/dist/observable-universe/install-section.js +24 -0
  345. package/dist/observable-universe/install-section.js.map +1 -0
  346. package/dist/observable-universe/live-metrics-bar.d.ts +7 -0
  347. package/dist/observable-universe/live-metrics-bar.d.ts.map +1 -0
  348. package/dist/observable-universe/live-metrics-bar.js +18 -0
  349. package/dist/observable-universe/live-metrics-bar.js.map +1 -0
  350. package/dist/observable-universe/observable-universe-header.d.ts +14 -0
  351. package/dist/observable-universe/observable-universe-header.d.ts.map +1 -0
  352. package/dist/observable-universe/observable-universe-header.js +45 -0
  353. package/dist/observable-universe/observable-universe-header.js.map +1 -0
  354. package/dist/observable-universe/observable-universe-landing.d.ts +12 -0
  355. package/dist/observable-universe/observable-universe-landing.d.ts.map +1 -0
  356. package/dist/observable-universe/observable-universe-landing.js +19 -0
  357. package/dist/observable-universe/observable-universe-landing.js.map +1 -0
  358. package/dist/observable-universe/section-heading.d.ts +8 -0
  359. package/dist/observable-universe/section-heading.d.ts.map +1 -0
  360. package/dist/observable-universe/section-heading.js +8 -0
  361. package/dist/observable-universe/section-heading.js.map +1 -0
  362. package/dist/observable-universe/sync-topology-panel.d.ts +7 -0
  363. package/dist/observable-universe/sync-topology-panel.d.ts.map +1 -0
  364. package/dist/observable-universe/sync-topology-panel.js +81 -0
  365. package/dist/observable-universe/sync-topology-panel.js.map +1 -0
  366. package/dist/observable-universe/types.d.ts +25 -0
  367. package/dist/observable-universe/types.d.ts.map +1 -0
  368. package/dist/observable-universe/types.js +2 -0
  369. package/dist/observable-universe/types.js.map +1 -0
  370. package/dist/observable-universe/use-observable-universe-simulation.d.ts +8 -0
  371. package/dist/observable-universe/use-observable-universe-simulation.d.ts.map +1 -0
  372. package/dist/observable-universe/use-observable-universe-simulation.js +92 -0
  373. package/dist/observable-universe/use-observable-universe-simulation.js.map +1 -0
  374. package/dist/primitives/alert.d.ts +14 -0
  375. package/dist/primitives/alert.d.ts.map +1 -0
  376. package/dist/primitives/alert.js +24 -0
  377. package/dist/primitives/alert.js.map +1 -0
  378. package/dist/primitives/badge.d.ts +12 -0
  379. package/dist/primitives/badge.d.ts.map +1 -0
  380. package/dist/primitives/badge.js +28 -0
  381. package/dist/primitives/badge.js.map +1 -0
  382. package/dist/primitives/button.d.ts +14 -0
  383. package/dist/primitives/button.d.ts.map +1 -0
  384. package/dist/primitives/button.js +30 -0
  385. package/dist/primitives/button.js.map +1 -0
  386. package/dist/primitives/card.d.ts +7 -0
  387. package/dist/primitives/card.d.ts.map +1 -0
  388. package/dist/primitives/card.js +16 -0
  389. package/dist/primitives/card.js.map +1 -0
  390. package/dist/primitives/dialog.d.ts +14 -0
  391. package/dist/primitives/dialog.d.ts.map +1 -0
  392. package/dist/primitives/dialog.js +25 -0
  393. package/dist/primitives/dialog.js.map +1 -0
  394. package/dist/primitives/index.d.ts +16 -0
  395. package/dist/primitives/index.d.ts.map +1 -0
  396. package/dist/primitives/index.js +16 -0
  397. package/dist/primitives/index.js.map +1 -0
  398. package/dist/primitives/input.d.ts +12 -0
  399. package/dist/primitives/input.d.ts.map +1 -0
  400. package/dist/primitives/input.js +20 -0
  401. package/dist/primitives/input.js.map +1 -0
  402. package/dist/primitives/pagination.d.ts +16 -0
  403. package/dist/primitives/pagination.d.ts.map +1 -0
  404. package/dist/primitives/pagination.js +13 -0
  405. package/dist/primitives/pagination.js.map +1 -0
  406. package/dist/primitives/separator.d.ts +10 -0
  407. package/dist/primitives/separator.d.ts.map +1 -0
  408. package/dist/primitives/separator.js +10 -0
  409. package/dist/primitives/separator.js.map +1 -0
  410. package/dist/primitives/sheet.d.ts +19 -0
  411. package/dist/primitives/sheet.d.ts.map +1 -0
  412. package/dist/primitives/sheet.js +35 -0
  413. package/dist/primitives/sheet.js.map +1 -0
  414. package/dist/primitives/skeleton.d.ts +3 -0
  415. package/dist/primitives/skeleton.d.ts.map +1 -0
  416. package/dist/primitives/skeleton.js +8 -0
  417. package/dist/primitives/skeleton.js.map +1 -0
  418. package/dist/primitives/spinner.d.ts +12 -0
  419. package/dist/primitives/spinner.d.ts.map +1 -0
  420. package/dist/primitives/spinner.js +23 -0
  421. package/dist/primitives/spinner.js.map +1 -0
  422. package/dist/primitives/switch.d.ts +7 -0
  423. package/dist/primitives/switch.d.ts.map +1 -0
  424. package/dist/primitives/switch.js +9 -0
  425. package/dist/primitives/switch.js.map +1 -0
  426. package/dist/primitives/table.d.ts +8 -0
  427. package/dist/primitives/table.d.ts.map +1 -0
  428. package/dist/primitives/table.js +18 -0
  429. package/dist/primitives/table.js.map +1 -0
  430. package/dist/primitives/tabs.d.ts +16 -0
  431. package/dist/primitives/tabs.d.ts.map +1 -0
  432. package/dist/primitives/tabs.js +26 -0
  433. package/dist/primitives/tabs.js.map +1 -0
  434. package/dist/primitives/tooltip.d.ts +13 -0
  435. package/dist/primitives/tooltip.d.ts.map +1 -0
  436. package/dist/primitives/tooltip.js +15 -0
  437. package/dist/primitives/tooltip.js.map +1 -0
  438. package/dist/version.d.ts +2 -0
  439. package/dist/version.d.ts.map +1 -0
  440. package/dist/version.js +3 -0
  441. package/dist/version.js.map +1 -0
  442. package/package.json +114 -0
  443. package/src/charts/activity-chart.tsx +85 -0
  444. package/src/charts/chart.tsx +302 -0
  445. package/src/charts/index.ts +4 -0
  446. package/src/charts/latency-chart.tsx +77 -0
  447. package/src/charts/outcomes-chart.tsx +101 -0
  448. package/src/console/activity-bars.tsx +113 -0
  449. package/src/console/alerts-config.tsx +110 -0
  450. package/src/console/api-keys-table.tsx +102 -0
  451. package/src/console/bottom-bar.tsx +73 -0
  452. package/src/console/commit-table.tsx +66 -0
  453. package/src/console/connection-form.tsx +153 -0
  454. package/src/console/connection-status-badge.tsx +48 -0
  455. package/src/console/danger-action-card.tsx +40 -0
  456. package/src/console/empty-state.tsx +31 -0
  457. package/src/console/filter-bar.tsx +97 -0
  458. package/src/console/fleet-card.tsx +154 -0
  459. package/src/console/handlers-table.tsx +74 -0
  460. package/src/console/index.ts +27 -0
  461. package/src/console/kpi-card.tsx +46 -0
  462. package/src/console/kpi-strip.tsx +77 -0
  463. package/src/console/latency-percentiles.tsx +109 -0
  464. package/src/console/live-activity-feed.tsx +112 -0
  465. package/src/console/maintenance-card.tsx +112 -0
  466. package/src/console/page-header.tsx +32 -0
  467. package/src/console/panel-shell.tsx +42 -0
  468. package/src/console/preferences-panel.tsx +126 -0
  469. package/src/console/section-card.tsx +41 -0
  470. package/src/console/stream-log.tsx +138 -0
  471. package/src/console/sync-horizon.tsx +149 -0
  472. package/src/console/sync-lag-bar.tsx +226 -0
  473. package/src/console/sync-state-badge.tsx +32 -0
  474. package/src/console/topology-card.tsx +47 -0
  475. package/src/console/topology-hero.tsx +499 -0
  476. package/src/demo/actor-panel.tsx +50 -0
  477. package/src/demo/catalog-table.tsx +83 -0
  478. package/src/demo/channel-selector.tsx +51 -0
  479. package/src/demo/client-panel.tsx +61 -0
  480. package/src/demo/conflict-panel.tsx +25 -0
  481. package/src/demo/demo-header.tsx +44 -0
  482. package/src/demo/demo-section.tsx +24 -0
  483. package/src/demo/encrypted-badge.tsx +59 -0
  484. package/src/demo/encryption-flow-diagram.tsx +93 -0
  485. package/src/demo/index.ts +26 -0
  486. package/src/demo/info-panel.tsx +41 -0
  487. package/src/demo/media-gallery.tsx +15 -0
  488. package/src/demo/media-thumbnail.tsx +55 -0
  489. package/src/demo/metric-card.tsx +85 -0
  490. package/src/demo/mnemonic-display.tsx +114 -0
  491. package/src/demo/note-card.tsx +52 -0
  492. package/src/demo/sync-controls.tsx +75 -0
  493. package/src/demo/sync-status-badge.tsx +36 -0
  494. package/src/demo/task-item.tsx +83 -0
  495. package/src/demo/task-list.tsx +33 -0
  496. package/src/demo/topology-panel.tsx +44 -0
  497. package/src/demo/topology-svg-keyshare.tsx +474 -0
  498. package/src/demo/topology-svg-media.tsx +423 -0
  499. package/src/demo/topology-svg-split.tsx +402 -0
  500. package/src/demo/topology-svg-symmetric.tsx +527 -0
  501. package/src/demo/transfer-log.tsx +68 -0
  502. package/src/demo/upload-area.tsx +136 -0
  503. package/src/forms/checkbox.tsx +58 -0
  504. package/src/forms/field.tsx +60 -0
  505. package/src/forms/index.ts +6 -0
  506. package/src/forms/select.tsx +65 -0
  507. package/src/forms/textarea.tsx +23 -0
  508. package/src/forms/toggle-group.tsx +24 -0
  509. package/src/forms/toggle.tsx +24 -0
  510. package/src/index.ts +7 -0
  511. package/src/lib/cn.ts +6 -0
  512. package/src/lib/types.ts +69 -0
  513. package/src/navigation/index.ts +5 -0
  514. package/src/navigation/nav-pill-group.tsx +46 -0
  515. package/src/navigation/nav-pill.tsx +35 -0
  516. package/src/navigation/status-dot.tsx +66 -0
  517. package/src/navigation/syncular-brand.tsx +29 -0
  518. package/src/navigation/top-navigation.tsx +31 -0
  519. package/src/observable-universe/architecture-section.tsx +209 -0
  520. package/src/observable-universe/code-section.tsx +136 -0
  521. package/src/observable-universe/commit-stream-panel.tsx +115 -0
  522. package/src/observable-universe/connected-clients-panel.tsx +109 -0
  523. package/src/observable-universe/constants.ts +84 -0
  524. package/src/observable-universe/explanation-section.tsx +129 -0
  525. package/src/observable-universe/footer-bar.tsx +34 -0
  526. package/src/observable-universe/hero-dashboard-section.tsx +71 -0
  527. package/src/observable-universe/index.ts +16 -0
  528. package/src/observable-universe/install-section.tsx +119 -0
  529. package/src/observable-universe/live-metrics-bar.tsx +64 -0
  530. package/src/observable-universe/observable-universe-header.tsx +155 -0
  531. package/src/observable-universe/observable-universe-landing.tsx +74 -0
  532. package/src/observable-universe/section-heading.tsx +31 -0
  533. package/src/observable-universe/sync-topology-panel.tsx +409 -0
  534. package/src/observable-universe/types.ts +26 -0
  535. package/src/observable-universe/use-observable-universe-simulation.ts +111 -0
  536. package/src/primitives/alert.tsx +55 -0
  537. package/src/primitives/badge.tsx +45 -0
  538. package/src/primitives/button.tsx +51 -0
  539. package/src/primitives/card.tsx +67 -0
  540. package/src/primitives/dialog.tsx +114 -0
  541. package/src/primitives/index.ts +15 -0
  542. package/src/primitives/input.tsx +37 -0
  543. package/src/primitives/pagination.tsx +54 -0
  544. package/src/primitives/separator.tsx +29 -0
  545. package/src/primitives/sheet.tsx +114 -0
  546. package/src/primitives/skeleton.tsx +17 -0
  547. package/src/primitives/spinner.tsx +52 -0
  548. package/src/primitives/switch.tsx +26 -0
  549. package/src/primitives/table.tsx +71 -0
  550. package/src/primitives/tabs.tsx +66 -0
  551. package/src/primitives/tooltip.tsx +43 -0
  552. package/src/styles/styles.css +177 -0
  553. package/src/styles/tokens.css +47 -0
  554. 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,5 @@
1
+ export interface FooterBarProps {
2
+ className?: string;
3
+ }
4
+ export declare const FooterBar: import("react").ForwardRefExoticComponent<FooterBarProps & import("react").RefAttributes<HTMLElement>>;
5
+ //# sourceMappingURL=footer-bar.d.ts.map
@@ -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"}