@graphenedata/cli 0.0.14 → 0.0.16

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 (121) hide show
  1. package/LICENSE.md +3 -3
  2. package/README.md +138 -0
  3. package/THIRD_PARTY_NOTICES.md +1 -0
  4. package/bin.js +2 -2
  5. package/dist/cli/bigQuery-I3F46SC6.js +75 -0
  6. package/dist/cli/bigQuery-I3F46SC6.js.map +7 -0
  7. package/dist/cli/chunk-OVWODUTJ.js +12849 -0
  8. package/dist/cli/chunk-OVWODUTJ.js.map +7 -0
  9. package/dist/cli/chunk-QAXEOZ43.js +53 -0
  10. package/dist/cli/chunk-QAXEOZ43.js.map +7 -0
  11. package/dist/cli/cli.js +245 -10290
  12. package/dist/cli/clickhouse-ZN5AN2UL.js +64 -0
  13. package/dist/cli/clickhouse-ZN5AN2UL.js.map +7 -0
  14. package/dist/cli/duckdb-IYBIO5KJ.js +87 -0
  15. package/dist/cli/duckdb-IYBIO5KJ.js.map +7 -0
  16. package/dist/cli/serve2-TNN5EROW.js +447 -0
  17. package/dist/cli/serve2-TNN5EROW.js.map +7 -0
  18. package/dist/cli/snowflake-MOQB5GA4.js +128 -0
  19. package/dist/cli/snowflake-MOQB5GA4.js.map +7 -0
  20. package/dist/index.d.ts +63 -0
  21. package/dist/lang/index.d.ts +63 -0
  22. package/dist/skills/graphene/SKILL.md +235 -0
  23. package/dist/skills/graphene/references/big-value.md +20 -0
  24. package/dist/skills/graphene/references/date-range.md +64 -0
  25. package/dist/skills/graphene/references/dropdown.md +62 -0
  26. package/dist/skills/graphene/references/echarts.md +162 -0
  27. package/dist/skills/graphene/references/gsql.md +393 -0
  28. package/dist/skills/graphene/references/model-gsql.md +72 -0
  29. package/dist/skills/graphene/references/table.md +143 -0
  30. package/dist/skills/graphene/references/text-input.md +29 -0
  31. package/dist/ui/app.css +263 -299
  32. package/dist/ui/component-utilities/dataShaping.ts +484 -0
  33. package/dist/ui/component-utilities/dataSummary.ts +57 -0
  34. package/dist/ui/component-utilities/enrich.ts +763 -0
  35. package/dist/ui/component-utilities/format.ts +177 -0
  36. package/dist/ui/component-utilities/inputUtils.ts +48 -9
  37. package/dist/ui/component-utilities/theme.ts +200 -0
  38. package/dist/ui/component-utilities/themeStores.ts +26 -21
  39. package/dist/ui/component-utilities/types.ts +70 -0
  40. package/dist/ui/components/AreaChart.svelte +57 -105
  41. package/dist/ui/components/BarChart.svelte +71 -129
  42. package/dist/ui/components/BigValue.svelte +24 -40
  43. package/dist/ui/components/Column.svelte +11 -19
  44. package/dist/ui/components/DateRange.svelte +71 -34
  45. package/dist/ui/components/Dropdown.svelte +82 -49
  46. package/dist/ui/components/DropdownOption.svelte +1 -2
  47. package/dist/ui/components/ECharts.svelte +179 -60
  48. package/dist/ui/components/InlineDelta.svelte +51 -32
  49. package/dist/ui/components/LineChart.svelte +54 -125
  50. package/dist/ui/components/PieChart.svelte +27 -37
  51. package/dist/ui/components/QueryLoad.svelte +78 -44
  52. package/dist/ui/components/Row.svelte +2 -1
  53. package/dist/ui/components/ScatterPlot.svelte +52 -0
  54. package/dist/ui/components/Skeleton.svelte +32 -0
  55. package/dist/ui/components/Table.svelte +3 -2
  56. package/dist/ui/components/TableGroupRow.svelte +28 -36
  57. package/dist/ui/components/TableHarness.svelte +32 -0
  58. package/dist/ui/components/TableHeader.svelte +34 -59
  59. package/dist/ui/components/TableRow.svelte +15 -39
  60. package/dist/ui/components/TableSubtotalRow.svelte +26 -21
  61. package/dist/ui/components/TableTotalRow.svelte +27 -37
  62. package/dist/ui/components/TextInput.svelte +17 -14
  63. package/dist/ui/components/Value.svelte +25 -0
  64. package/dist/ui/components/_Table.svelte +80 -76
  65. package/dist/ui/internal/ChartGallery.svelte +527 -0
  66. package/dist/ui/internal/ErrorDisplay.svelte +60 -0
  67. package/dist/ui/internal/LocalApp.svelte +87 -19
  68. package/dist/ui/internal/PageNavGroup.svelte +269 -0
  69. package/dist/ui/internal/Sidebar.svelte +178 -0
  70. package/dist/ui/internal/SidebarToggle.svelte +47 -0
  71. package/dist/ui/internal/StyleGallery.svelte +244 -0
  72. package/dist/ui/internal/clientCache.ts +15 -13
  73. package/dist/ui/internal/pageInputs.svelte.js +292 -0
  74. package/dist/ui/internal/queryEngine.ts +124 -132
  75. package/dist/ui/internal/runSocket.ts +59 -0
  76. package/dist/ui/internal/sidebar.svelte.js +18 -0
  77. package/dist/ui/internal/telemetry.ts +52 -17
  78. package/dist/ui/internal/types.d.ts +7 -0
  79. package/dist/ui/web.js +55 -13
  80. package/package.json +40 -41
  81. package/dist/docs/agent-instructions.md +0 -18
  82. package/dist/docs/base.md +0 -98
  83. package/dist/docs/cli.md +0 -22
  84. package/dist/docs/graphene.md +0 -1462
  85. package/dist/ui/component-utilities/autoFormatting.js +0 -301
  86. package/dist/ui/component-utilities/builtInFormats.js +0 -482
  87. package/dist/ui/component-utilities/chartContext.js +0 -12
  88. package/dist/ui/component-utilities/chartWindowDebug.js +0 -21
  89. package/dist/ui/component-utilities/checkInputs.js +0 -95
  90. package/dist/ui/component-utilities/convert.js +0 -15
  91. package/dist/ui/component-utilities/dateParsing.js +0 -57
  92. package/dist/ui/component-utilities/dropdownContext.ts +0 -1
  93. package/dist/ui/component-utilities/echarts.js +0 -272
  94. package/dist/ui/component-utilities/echartsThemes.js +0 -453
  95. package/dist/ui/component-utilities/formatTitle.js +0 -24
  96. package/dist/ui/component-utilities/formatting.js +0 -250
  97. package/dist/ui/component-utilities/getColumnExtents.js +0 -79
  98. package/dist/ui/component-utilities/getColumnSummary.js +0 -67
  99. package/dist/ui/component-utilities/getCompletedData.js +0 -114
  100. package/dist/ui/component-utilities/getDistinctCount.js +0 -7
  101. package/dist/ui/component-utilities/getDistinctValues.js +0 -15
  102. package/dist/ui/component-utilities/getSeriesConfig.js +0 -237
  103. package/dist/ui/component-utilities/getSortedData.js +0 -7
  104. package/dist/ui/component-utilities/getStackPercentages.js +0 -43
  105. package/dist/ui/component-utilities/getStackedData.js +0 -17
  106. package/dist/ui/component-utilities/getYAxisIndex.js +0 -15
  107. package/dist/ui/component-utilities/globalContexts.js +0 -1
  108. package/dist/ui/component-utilities/helpers/getCompletedData.helpers.js +0 -119
  109. package/dist/ui/component-utilities/replaceNulls.js +0 -14
  110. package/dist/ui/component-utilities/tableUtils.ts +0 -120
  111. package/dist/ui/components/Area.svelte +0 -214
  112. package/dist/ui/components/Bar.svelte +0 -350
  113. package/dist/ui/components/Chart.svelte +0 -989
  114. package/dist/ui/components/ErrorChart.svelte +0 -118
  115. package/dist/ui/components/Line.svelte +0 -227
  116. package/dist/ui/internal/NavSidebar.svelte +0 -396
  117. package/dist/ui/internal/PageError.svelte +0 -23
  118. package/dist/ui/internal/checkSocket.ts +0 -48
  119. package/dist/ui/internal/theme.ts +0 -88
  120. package/dist/ui/public/inter-latin-ext.woff2 +0 -0
  121. package/dist/ui/public/inter-latin.woff2 +0 -0
package/dist/ui/app.css CHANGED
@@ -1,147 +1,272 @@
1
+ @import '@fontsource/inter/400.css';
2
+ @import '@fontsource/inter/600.css';
3
+ @import '@fontsource/inter/700.css';
4
+ @import '@fontsource/source-sans-3/400.css';
5
+ @import '@fontsource/source-sans-3/600.css';
6
+ @import '@fontsource/source-serif-4/400.css';
7
+ @import '@fontsource/source-serif-4/400-italic.css';
8
+ @import '@fontsource/source-serif-4/600.css';
9
+ @import '@fontsource/source-serif-4/600-italic.css';
10
+ @import '@fontsource/jetbrains-mono/400.css';
1
11
 
2
- @font-face { /* latin-ext */
3
- font-family: 'Inter';
4
- font-style: normal;
5
- font-weight: 100 900;
6
- font-display: swap;
7
- src: url(/inter-latin-ext.woff2) format('woff2');
8
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
12
+ :root {
13
+ --font-prose: 'Source Serif 4', Georgia, 'Times New Roman', serif;
14
+ --font-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, sans-serif;
15
+ --font-ui: 'Source Sans 3', Inter, ui-sans-serif, system-ui, -apple-system, sans-serif;
16
+ --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
17
+
18
+ --color-bg: #fafaf9;
19
+ --color-primary-strong: #0c0a09;
20
+ --color-body: #57534e;
21
+ --color-muted: #a8a29e;
22
+ --color-tertiary: #7a726a;
23
+ --color-border: #e7e5e4;
24
+ --color-border-strong: #dfddd8;
25
+ --color-code-bg: #f1f0ed;
26
+ --color-code-text: #4a4541;
27
+
28
+ --sidebar: #ffffff;
29
+ --sidebar-foreground: #252525;
30
+ --sidebar-accent: #f4f4f5;
31
+ --sidebar-accent-foreground: #171717;
32
+ --sidebar-border: #e5e5e5;
33
+ --sidebar-ring: #b5b5b5;
34
+ }
35
+
36
+ /* ============================================================
37
+ Base
38
+ ============================================================ */
39
+ html {
40
+ scroll-behavior: smooth;
9
41
  }
10
42
 
11
- @font-face { /* latin */
12
- font-family: 'Inter';
13
- font-style: normal;
14
- font-weight: 100 900;
15
- font-display: swap;
16
- src: url(/inter-latin.woff2) format('woff2');
17
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
43
+ body {
44
+ margin: 0;
45
+ min-height: 100vh;
46
+ font-family: var(--font-ui);
47
+ font-synthesis: none;
48
+ font-size: 18px;
49
+ line-height: 1.6;
50
+ color: var(--color-body);
51
+ background-color: var(--color-bg);
52
+ -webkit-font-smoothing: antialiased;
53
+ -moz-osx-font-smoothing: grayscale;
54
+ text-rendering: optimizeLegibility;
18
55
  }
19
56
 
20
- :root {
21
- /* Layout */
22
- --header-height: 3.5rem;
23
-
24
- /* Font stacks */
25
- --monospace-font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
26
- "Liberation Mono", "Courier New", monospace;
27
- --ui-font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI",
28
- Roboto, "Noto Sans", "Helvetica Neue", Arial, "Apple Color Emoji",
29
- "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
30
- --ui-font-family-compact: Inter, ui-sans-serif, system-ui, -apple-system,
31
- "Segoe UI", Roboto, "Noto Sans", "Helvetica Neue", Arial,
32
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
33
- "Noto Color Emoji", sans-serif;
57
+ *,
58
+ *::before,
59
+ *::after,
60
+ ::backdrop,
61
+ ::file-selector-button {
62
+ border-color: var(--color-border);
63
+ }
34
64
 
35
- /* Palette (kept for compatibility with existing variables) */
36
- --blue-50: #eff6ff;
37
- --blue-100: #dbeafe;
38
- --blue-200: #bfdbfe;
39
- --blue-300: #93c5fd;
40
- --blue-400: #60a5fa;
41
- --blue-500: #3b82f6;
42
- --blue-600: #2563eb;
43
- --blue-700: #1d4ed8;
44
- --blue-800: #1e40af;
45
- --blue-900: #1e3a8a;
46
- --blue-999: #172554;
47
- --blue-link: var(--blue-700);
65
+ /* ============================================================
66
+ Typography
67
+ ============================================================ */
48
68
 
49
- --green-50: #f0fdf4;
50
- --green-100: #dcfce7;
51
- --green-200: #bbf7d0;
52
- --green-300: #86efac;
53
- --green-400: #4ade80;
54
- --green-500: #22c55e;
55
- --green-600: #16a34a;
56
- --green-700: #15803d;
57
- --green-800: #166534;
58
- --green-900: #14532d;
59
- --green-999: #052e16;
69
+ /* Headings — shared family/weight/color/spacing; individual rules set size + margins. */
70
+ h1,
71
+ h2,
72
+ h3,
73
+ h4,
74
+ h5,
75
+ h6 {
76
+ color: var(--color-primary-strong);
77
+ font-family: var(--font-sans);
78
+ font-optical-sizing: auto;
79
+ font-style: normal;
80
+ font-weight: 700;
81
+ letter-spacing: -0.018em;
82
+ line-height: 1.2;
83
+ margin-bottom: 0.75rem;
84
+ scroll-margin-top: 3.5rem;
85
+ break-inside: avoid;
86
+ }
87
+ h1 {
88
+ font-size: 1.75rem;
89
+ margin-top: 3rem;
90
+ }
91
+ h2 {
92
+ font-size: 1.375rem;
93
+ margin-top: 2.75rem;
94
+ }
95
+ h3,
96
+ h4,
97
+ h5,
98
+ h6 {
99
+ font-size: 1.125rem;
100
+ margin-top: 2rem;
101
+ margin-bottom: 0.5rem;
102
+ }
60
103
 
61
- --grey-50: #f9fafb;
62
- --grey-100: #f3f4f6;
63
- --grey-200: #e5e7eb;
64
- --grey-300: #d1d5db;
65
- --grey-400: #9ca3af;
66
- --grey-500: #6b7280;
67
- --grey-600: #4b5563;
68
- --grey-700: #374151;
69
- --grey-800: #1f2937;
70
- --grey-900: #111827;
71
- --grey-999: #030712;
104
+ /* Block flow */
105
+ p,
106
+ ul,
107
+ ol {
108
+ margin-block-end: 1.5rem;
109
+ margin-block-start: 0;
110
+ }
72
111
 
73
- --red-50: #fef2f2;
74
- --red-100: #fee2e2;
75
- --red-200: #fecaca;
76
- --red-300: #fca5a5;
77
- --red-400: #f87171;
78
- --red-500: #ef4444;
79
- --red-600: #dc2626;
80
- --red-700: #b91c1c;
81
- --red-800: #991b1b;
82
- --red-900: #7f1d1d;
83
- --red-999: #450a0a;
112
+ /* Lists */
113
+ ul {
114
+ list-style: disc;
115
+ padding-inline-start: 1.5rem;
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 0.5rem;
119
+ }
120
+ ol {
121
+ list-style: decimal;
122
+ padding-inline-start: 1.5rem;
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 0.5rem;
126
+ }
127
+ ul ul {
128
+ list-style: circle;
129
+ }
130
+ ul ul ul {
131
+ list-style: square;
132
+ }
133
+ ol ol {
134
+ list-style: lower-alpha;
135
+ }
136
+ ol ol ol {
137
+ list-style: lower-roman;
138
+ }
139
+ ul ul,
140
+ ul ol,
141
+ ol ul,
142
+ ol ol {
143
+ margin-top: 0.5rem;
144
+ margin-block-end: 0;
145
+ }
146
+ li {
147
+ list-style: inherit;
148
+ text-align: -webkit-match-parent;
149
+ }
150
+ li::marker {
151
+ color: var(--color-primary-strong);
152
+ }
84
153
 
85
- --yellow-50: #fefce8;
86
- --yellow-100: #fef9c3;
87
- --yellow-200: #fef08a;
88
- --yellow-300: #fde047;
89
- --yellow-400: #facc15;
90
- --yellow-500: #eab308;
91
- --yellow-600: #ca8a04;
92
- --yellow-700: #a16207;
93
- --yellow-800: #854d0e;
94
- --yellow-900: #713f12;
95
- --yellow-999: #422006;
154
+ /* Links */
155
+ a {
156
+ color: var(--color-body);
157
+ text-decoration: underline;
158
+ text-underline-offset: 6px;
159
+ transition: color 0.15s;
160
+ }
161
+ a:hover {
162
+ color: var(--color-primary-strong);
163
+ }
96
164
 
97
- /* Aliases for previous Tailwind-like tokens */
98
- --primary: var(--blue-700);
99
- --base-200: var(--grey-200);
100
- --base-300: var(--grey-300);
101
- --base-content-muted: var(--grey-600);
102
- --base-heading: var(--grey-900);
165
+ /* Inline formatting */
166
+ strong {
167
+ color: var(--color-primary-strong);
168
+ font-weight: 600;
169
+ }
170
+ del {
171
+ color: var(--color-muted);
103
172
  }
104
173
 
105
- .chart-footer {
106
- display: none !important;
174
+ /* Code */
175
+ code {
176
+ font-family: var(--font-mono);
177
+ font-size: 0.875em;
178
+ background: var(--color-code-bg);
179
+ border-radius: 4px;
180
+ padding: 0.15em 0.4em;
181
+ }
182
+ form code {
183
+ font-size: unset;
107
184
  }
108
185
 
109
- /* Global */
110
- html {
111
- scroll-behavior: smooth;
186
+ pre {
187
+ background: var(--color-code-bg);
188
+ border: 1px solid var(--color-border-strong);
189
+ border-radius: 0.75rem;
190
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.05);
191
+ padding: 1.25rem 1.75rem;
192
+ overflow-x: auto;
193
+ margin-bottom: 1.5rem;
194
+ font-size: 0.75rem;
195
+ }
196
+ pre code {
197
+ background: none;
198
+ padding: 0;
199
+ font-size: 0.75rem;
200
+ color: var(--color-code-text);
201
+ white-space: pre-wrap;
112
202
  }
113
203
 
114
- body {
115
- display: flex;
116
- margin: 0;
117
- min-height: 100vh;
118
- font-family: "Inter", var(--ui-font-family);
119
- line-height: 1.7;
120
- color: var(--base-heading);
204
+ /* Blockquote */
205
+ blockquote {
206
+ border-left: 3px solid var(--color-border-strong);
207
+ padding-left: 1.25rem;
208
+ margin-bottom: 1.5rem;
209
+ color: var(--color-tertiary);
210
+ }
211
+ blockquote > :first-child {
212
+ margin-top: 0;
213
+ }
214
+ blockquote > :last-child {
215
+ margin-bottom: 0;
121
216
  }
122
217
 
123
- nav {
124
- width: 200px;
125
- flex-shrink: 0;
126
- padding: 32px 0 16px 0px;
127
- border-right: 1px solid var(--base-200);
218
+ /* Horizontal rule */
219
+ hr {
220
+ border: none;
221
+ border-top: 1px solid var(--color-border);
222
+ margin: 2.5rem 0;
128
223
  }
129
224
 
130
- main {
131
- flex: 1;
132
- min-width: 0;
133
- padding: 20px 48px 80px;
225
+ /* Tables */
226
+ table {
227
+ width: 100%;
228
+ border-collapse: collapse;
229
+ margin-bottom: 1.5rem;
230
+ font-family: var(--font-ui);
231
+ font-size: 0.9375rem;
232
+ }
233
+ th {
234
+ color: var(--color-primary-strong);
235
+ font-weight: 600;
236
+ text-align: left;
237
+ padding: 0.625rem 1rem;
238
+ border-bottom: 2px solid var(--color-border-strong);
239
+ }
240
+ td {
241
+ padding: 0.5rem 1rem;
242
+ border-bottom: 1px solid var(--color-border);
134
243
  }
135
244
 
136
- /* Default border color */
137
- *, *::before, *::after, ::backdrop, ::file-selector-button {
138
- border-color: var(--base-300);
245
+ /* ============================================================
246
+ Form resets
247
+ ============================================================ */
248
+ button,
249
+ input,
250
+ optgroup,
251
+ select,
252
+ textarea {
253
+ font: inherit;
254
+ color: inherit;
255
+ }
256
+ select {
257
+ appearance: none;
258
+ -moz-appearance: none;
259
+ -webkit-appearance: none;
139
260
  }
140
261
 
262
+ /* ============================================================
263
+ Utilities
264
+ ============================================================ */
265
+
141
266
  /* OSX-style scrollbars */
142
267
  .pretty-scrollbar {
143
268
  scrollbar-width: thin;
144
- scrollbar-color: var(--base-300) transparent;
269
+ scrollbar-color: #d1d5db transparent;
145
270
  }
146
271
  .pretty-scrollbar::-webkit-scrollbar {
147
272
  height: 6px;
@@ -155,34 +280,28 @@ main {
155
280
  border-radius: 7px;
156
281
  }
157
282
  .pretty-scrollbar:hover::-webkit-scrollbar-thumb {
158
- background-color: var(--base-200);
283
+ background-color: #e5e7eb;
159
284
  }
160
285
 
161
286
  /* Hidden scrollbar */
162
- .no-scrollbar::-webkit-scrollbar { display: none; }
163
- .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
164
-
165
- .chart {
166
- margin: 1rem 0;
287
+ .no-scrollbar::-webkit-scrollbar {
288
+ display: none;
167
289
  }
168
-
169
- /* Remove UA styles for select */
170
- select {
171
- appearance: none;
172
- -moz-appearance: none;
173
- -webkit-appearance: none;
290
+ .no-scrollbar {
291
+ -ms-overflow-style: none;
292
+ scrollbar-width: none;
174
293
  }
175
294
 
176
- /* Markdown content */
177
- .markdown {
178
- font-family: "Inter", var(--ui-font-family);
179
- font-size: 1rem;
180
- line-height: 1.7;
181
- -webkit-font-smoothing: antialiased;
182
- -moz-osx-font-smoothing: grayscale;
295
+ /* ============================================================
296
+ Prose container (rendered markdown)
297
+ ============================================================ */
298
+ .pageContent {
299
+ font-family: var(--font-prose);
300
+ letter-spacing: -0.01em;
183
301
  }
184
302
 
185
- img {
303
+ /* Embedded images in rendered markdown */
304
+ .pageContent img {
186
305
  display: block;
187
306
  margin-left: auto;
188
307
  margin-right: auto;
@@ -191,171 +310,16 @@ img {
191
310
  border-radius: 0.5rem;
192
311
  }
193
312
 
194
- article a {
195
- color: var(--primary);
196
- text-decoration: underline;
197
- text-decoration-color: transparent;
198
- transition: color 200ms ease, text-decoration-color 200ms ease;
199
- }
200
- article a:hover {
201
- text-decoration-color: var(--primary);
202
- }
203
-
204
- p,
205
- ul,
206
- ol {
207
- margin-block-end: 1.2em;
208
- margin-block-start: 0;
209
- line-height: 1.7;
210
- }
211
-
212
- /* Lists */
213
- ol { list-style: decimal; padding-inline-start: 1.5rem; }
214
- ul { list-style: disc; padding-inline-start: 1.5rem; }
215
-
216
- /* Second-level lists */
217
- ul ul { list-style: circle; }
218
- ol ol { list-style: lower-alpha; }
219
-
220
- /* Any second-level list spacing */
221
- ul ul,
222
- ul ol,
223
- ol ul,
224
- ol ol {
225
- margin-top: 0.25rem;
226
- margin-block-end: 0;
227
- }
228
-
229
- /* Third-level lists */
230
- ul ul ul { list-style: square; }
231
- ol ol ol { list-style: lower-roman; }
232
-
233
- li {
234
- list-style: inherit;
235
- text-align: -webkit-match-parent;
236
- }
237
- li + li { margin-top: 0.25rem; }
238
-
239
- /* Headings */
240
- h1,
241
- h2,
242
- h3,
243
- h4,
244
- h5,
245
- h6 {
246
- scroll-margin-top: var(--header-height);
247
- break-inside: avoid;
248
- color: var(--base-heading);
249
- font-family: "Inter", var(--ui-font-family);
250
- font-optical-sizing: auto;
251
- font-weight: 100;
252
- font-style: normal;
253
- }
254
-
255
- /* h1.title:first-of-type,
256
- h1:first-of-type { margin-top: 0.25rem; margin-bottom: 0.5rem; } */
257
-
258
- h1.title,
259
- h1 {
260
- margin-top: 2rem;
261
- margin-bottom: 0.25rem;
262
- font-size: 1.5rem;
263
- line-height: 2rem;
264
- letter-spacing: 0.025em;
265
- font-weight: 700;
266
- break-inside: avoid;
267
- }
268
-
269
- h2 {
270
- margin-top: 1.5rem;
271
- margin-bottom: 0.25rem;
272
- font-size: 1.25rem;
273
- line-height: 1.75rem;
274
- font-weight: 600;
275
- }
276
-
277
- h3 {
278
- margin-top: 1.25rem;
279
- margin-bottom: 0.25rem;
280
- font-size: 1rem;
281
- line-height: 1.5rem;
282
- font-weight: 600;
313
+ .pageContent .chart {
314
+ margin: 1rem 0 2rem;
283
315
  }
284
316
 
285
- h4 { margin-top: 1rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 600; }
286
- h5 { margin-top: 1rem; font-size: 0.75rem; line-height: 1rem; font-weight: 600; }
287
- h6 { margin-top: 1rem; font-size: 0.75rem; line-height: 1rem; }
288
-
289
- hr {
290
- height: 1px;
291
- margin-top: 2rem;
292
- margin-bottom: 2rem;
293
- max-width: 36rem;
294
- margin-left: auto;
295
- margin-right: auto;
296
- background-color: var(--base-300);
297
- border: 0;
317
+ /* Viz/UI components render as direct div children default bottom margin for dashboard flow */
318
+ .pageContent > div {
319
+ margin-bottom: 1.5rem;
298
320
  }
299
321
 
300
- code {
301
- font-family: var(--monospace-font-family);
302
- font-size: 0.875em;
303
- background-color: var(--base-200);
304
- border: 1px solid var(--base-300);
305
- border-radius: 0.125rem;
306
- padding-left: 0.25rem;
307
- padding-right: 0.25rem;
308
- padding-top: 0.125rem;
309
- padding-bottom: 0.125rem;
322
+ /* Extra breathing room when prose follows a viz */
323
+ .pageContent > div + :is(p, ul, ol, blockquote, hr, table, pre) {
324
+ margin-top: 1rem;
310
325
  }
311
-
312
- form code { font-size: unset; }
313
-
314
- blockquote {
315
- background-color: var(--base-200);
316
- border-left: 4px solid var(--base-content-muted);
317
- padding-left: 0.75rem;
318
- margin-top: 2rem;
319
- margin-bottom: 2rem;
320
- padding-top: 0.5rem;
321
- padding-bottom: 0.5rem;
322
- }
323
- blockquote > blockquote { margin: 0; }
324
- blockquote > :first-child { margin-top: 0; }
325
- blockquote > :last-child { margin-bottom: 0; }
326
- blockquote * { color: var(--base-content-muted); }
327
-
328
- /* Ensure size and color are maintained for bold, italic, strikethrough, links inside markdown */
329
- strong, em, del, a { font-size: 1em; color: inherit; }
330
-
331
- /*table {
332
- min-width: 100%;
333
- border-collapse: collapse;
334
- text-align: center;
335
- margin-left: auto;
336
- margin-right: auto;
337
- margin-top: 1.25rem;
338
- margin-bottom: 1.25rem;
339
- }
340
- th {
341
- font-size: 0.875rem;
342
- line-height: 1.25rem;
343
- font-weight: 500;
344
- border-bottom: 1px solid var(--grey-800);
345
- padding-top: 0;
346
- padding-bottom: 0;
347
- padding-left: 0.5rem;
348
- padding-right: 0.5rem;
349
- text-overflow: ellipsis;
350
- overflow: hidden;
351
- }
352
- td {
353
- font-size: 0.875rem;
354
- line-height: 1.25rem;
355
- padding-top: 0.25rem;
356
- padding-bottom: 0.25rem;
357
- padding-left: 0.5rem;
358
- padding-right: 0.5rem;
359
- overflow: hidden;
360
- text-overflow: ellipsis;
361
- }*/