@graphenedata/cli 0.0.15 → 0.0.17

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 (117) hide show
  1. package/README.md +174 -0
  2. package/dist/cli/bigQuery-OQUNH3VT.js +75 -0
  3. package/dist/cli/bigQuery-OQUNH3VT.js.map +7 -0
  4. package/dist/cli/chunk-56K2FF57.js +53 -0
  5. package/dist/cli/chunk-56K2FF57.js.map +7 -0
  6. package/dist/cli/chunk-TZTTALAV.js +12868 -0
  7. package/dist/cli/chunk-TZTTALAV.js.map +7 -0
  8. package/dist/cli/cli.js +260 -11196
  9. package/dist/cli/clickhouse-S3BJSKND.js +65 -0
  10. package/dist/cli/clickhouse-S3BJSKND.js.map +7 -0
  11. package/dist/cli/duckdb-TKVMONRK.js +87 -0
  12. package/dist/cli/duckdb-TKVMONRK.js.map +7 -0
  13. package/dist/cli/serve2-S2LL4D4D.js +448 -0
  14. package/dist/cli/serve2-S2LL4D4D.js.map +7 -0
  15. package/dist/cli/snowflake-3VPDEYYP.js +128 -0
  16. package/dist/cli/snowflake-3VPDEYYP.js.map +7 -0
  17. package/dist/index.d.ts +63 -0
  18. package/dist/lang/index.d.ts +63 -0
  19. package/dist/skills/graphene/SKILL.md +156 -95
  20. package/dist/skills/graphene/references/big-value.md +6 -41
  21. package/dist/skills/graphene/references/date-range.md +64 -0
  22. package/dist/skills/graphene/references/dropdown.md +3 -4
  23. package/dist/skills/graphene/references/echarts.md +162 -0
  24. package/dist/skills/graphene/references/gsql.md +55 -25
  25. package/dist/skills/graphene/references/model-gsql.md +70 -0
  26. package/dist/skills/graphene/references/table.md +13 -14
  27. package/dist/skills/graphene/references/text-input.md +2 -1
  28. package/dist/ui/app.css +239 -340
  29. package/dist/ui/component-utilities/dataShaping.ts +484 -0
  30. package/dist/ui/component-utilities/dataSummary.ts +57 -0
  31. package/dist/ui/component-utilities/enrich.ts +793 -0
  32. package/dist/ui/component-utilities/format.ts +177 -0
  33. package/dist/ui/component-utilities/inputUtils.ts +44 -8
  34. package/dist/ui/component-utilities/theme.ts +200 -0
  35. package/dist/ui/component-utilities/themeStores.ts +21 -8
  36. package/dist/ui/component-utilities/types.ts +70 -0
  37. package/dist/ui/components/AreaChart.svelte +57 -105
  38. package/dist/ui/components/BarChart.svelte +71 -129
  39. package/dist/ui/components/BigValue.svelte +24 -40
  40. package/dist/ui/components/Column.svelte +10 -18
  41. package/dist/ui/components/DateRange.svelte +54 -21
  42. package/dist/ui/components/Dropdown.svelte +47 -26
  43. package/dist/ui/components/DropdownOption.svelte +1 -2
  44. package/dist/ui/components/ECharts.svelte +181 -67
  45. package/dist/ui/components/InlineDelta.svelte +50 -31
  46. package/dist/ui/components/LineChart.svelte +54 -125
  47. package/dist/ui/components/PieChart.svelte +27 -37
  48. package/dist/ui/components/QueryLoad.svelte +77 -45
  49. package/dist/ui/components/Row.svelte +2 -1
  50. package/dist/ui/components/ScatterPlot.svelte +52 -0
  51. package/dist/ui/components/Skeleton.svelte +32 -0
  52. package/dist/ui/components/Table.svelte +3 -2
  53. package/dist/ui/components/TableGroupRow.svelte +28 -36
  54. package/dist/ui/components/TableHarness.svelte +32 -0
  55. package/dist/ui/components/TableHeader.svelte +34 -59
  56. package/dist/ui/components/TableRow.svelte +14 -38
  57. package/dist/ui/components/TableSubtotalRow.svelte +18 -21
  58. package/dist/ui/components/TableTotalRow.svelte +27 -37
  59. package/dist/ui/components/TextInput.svelte +13 -12
  60. package/dist/ui/components/Value.svelte +25 -0
  61. package/dist/ui/components/_Table.svelte +72 -70
  62. package/dist/ui/internal/ChartGallery.svelte +527 -0
  63. package/dist/ui/internal/ErrorDisplay.svelte +22 -97
  64. package/dist/ui/internal/LocalApp.svelte +84 -19
  65. package/dist/ui/internal/PageNavGroup.svelte +269 -0
  66. package/dist/ui/internal/Sidebar.svelte +178 -0
  67. package/dist/ui/internal/SidebarToggle.svelte +47 -0
  68. package/dist/ui/internal/StyleGallery.svelte +244 -0
  69. package/dist/ui/internal/clientCache.ts +2 -2
  70. package/dist/ui/internal/pageInputs.svelte.js +292 -0
  71. package/dist/ui/internal/queryEngine.ts +112 -129
  72. package/dist/ui/internal/runSocket.ts +31 -14
  73. package/dist/ui/internal/sidebar.svelte.js +18 -0
  74. package/dist/ui/internal/telemetry.ts +51 -16
  75. package/dist/ui/internal/types.d.ts +7 -0
  76. package/dist/ui/web.js +30 -11
  77. package/package.json +40 -38
  78. package/dist/skills/graphene/references/area-chart.md +0 -95
  79. package/dist/skills/graphene/references/bar-chart.md +0 -112
  80. package/dist/skills/graphene/references/line-chart.md +0 -108
  81. package/dist/skills/graphene/references/pie-chart.md +0 -29
  82. package/dist/skills/graphene/references/value-formats.md +0 -104
  83. package/dist/ui/component-utilities/autoFormatting.js +0 -280
  84. package/dist/ui/component-utilities/builtInFormats.js +0 -481
  85. package/dist/ui/component-utilities/chartContext.js +0 -12
  86. package/dist/ui/component-utilities/chartWindowDebug.js +0 -21
  87. package/dist/ui/component-utilities/checkInputs.js +0 -84
  88. package/dist/ui/component-utilities/convert.js +0 -15
  89. package/dist/ui/component-utilities/dateParsing.js +0 -56
  90. package/dist/ui/component-utilities/dropdownContext.ts +0 -1
  91. package/dist/ui/component-utilities/echarts.js +0 -252
  92. package/dist/ui/component-utilities/echartsThemes.js +0 -443
  93. package/dist/ui/component-utilities/formatTitle.js +0 -24
  94. package/dist/ui/component-utilities/formatting.js +0 -241
  95. package/dist/ui/component-utilities/getColumnExtents.js +0 -79
  96. package/dist/ui/component-utilities/getColumnSummary.js +0 -62
  97. package/dist/ui/component-utilities/getCompletedData.js +0 -122
  98. package/dist/ui/component-utilities/getDistinctCount.js +0 -7
  99. package/dist/ui/component-utilities/getDistinctValues.js +0 -15
  100. package/dist/ui/component-utilities/getSeriesConfig.js +0 -231
  101. package/dist/ui/component-utilities/getSortedData.js +0 -9
  102. package/dist/ui/component-utilities/getStackPercentages.js +0 -45
  103. package/dist/ui/component-utilities/getStackedData.js +0 -19
  104. package/dist/ui/component-utilities/getYAxisIndex.js +0 -15
  105. package/dist/ui/component-utilities/globalContexts.js +0 -1
  106. package/dist/ui/component-utilities/helpers/getCompletedData.helpers.js +0 -119
  107. package/dist/ui/component-utilities/replaceNulls.js +0 -16
  108. package/dist/ui/component-utilities/tableUtils.ts +0 -107
  109. package/dist/ui/component-utilities/tidyWithTypes.js +0 -9
  110. package/dist/ui/components/Area.svelte +0 -214
  111. package/dist/ui/components/Bar.svelte +0 -347
  112. package/dist/ui/components/Chart.svelte +0 -995
  113. package/dist/ui/components/Line.svelte +0 -227
  114. package/dist/ui/internal/NavSidebar.svelte +0 -396
  115. package/dist/ui/internal/theme.ts +0 -60
  116. package/dist/ui/public/inter-latin-ext.woff2 +0 -0
  117. package/dist/ui/public/inter-latin.woff2 +0 -0
package/dist/ui/app.css CHANGED
@@ -1,426 +1,325 @@
1
- @font-face {
2
- /* 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:
9
- 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;
10
- }
11
-
12
- @font-face {
13
- /* latin */
14
- font-family: 'Inter';
15
- font-style: normal;
16
- font-weight: 100 900;
17
- font-display: swap;
18
- src: url(/inter-latin.woff2) format('woff2');
19
- 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;
20
- }
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';
21
11
 
22
12
  :root {
23
- /* Layout */
24
- --header-height: 3.5rem;
25
-
26
- /* Font stacks */
27
- --monospace-font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
28
- --ui-font-family:
29
- Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Helvetica Neue', Arial, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', sans-serif;
30
- --ui-font-family-compact:
31
- Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Helvetica Neue', Arial, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', sans-serif;
32
-
33
- /* Palette (kept for compatibility with existing variables) */
34
- --blue-50: #eff6ff;
35
- --blue-100: #dbeafe;
36
- --blue-200: #bfdbfe;
37
- --blue-300: #93c5fd;
38
- --blue-400: #60a5fa;
39
- --blue-500: #3b82f6;
40
- --blue-600: #2563eb;
41
- --blue-700: #1d4ed8;
42
- --blue-800: #1e40af;
43
- --blue-900: #1e3a8a;
44
- --blue-999: #172554;
45
- --blue-link: var(--blue-700);
46
-
47
- --green-50: #f0fdf4;
48
- --green-100: #dcfce7;
49
- --green-200: #bbf7d0;
50
- --green-300: #86efac;
51
- --green-400: #4ade80;
52
- --green-500: #22c55e;
53
- --green-600: #16a34a;
54
- --green-700: #15803d;
55
- --green-800: #166534;
56
- --green-900: #14532d;
57
- --green-999: #052e16;
58
-
59
- --grey-50: #f9fafb;
60
- --grey-100: #f3f4f6;
61
- --grey-200: #e5e7eb;
62
- --grey-300: #d1d5db;
63
- --grey-400: #9ca3af;
64
- --grey-500: #6b7280;
65
- --grey-600: #4b5563;
66
- --grey-700: #374151;
67
- --grey-800: #1f2937;
68
- --grey-900: #111827;
69
- --grey-999: #030712;
70
-
71
- --red-50: #fef2f2;
72
- --red-100: #fee2e2;
73
- --red-200: #fecaca;
74
- --red-300: #fca5a5;
75
- --red-400: #f87171;
76
- --red-500: #ef4444;
77
- --red-600: #dc2626;
78
- --red-700: #b91c1c;
79
- --red-800: #991b1b;
80
- --red-900: #7f1d1d;
81
- --red-999: #450a0a;
82
-
83
- --yellow-50: #fefce8;
84
- --yellow-100: #fef9c3;
85
- --yellow-200: #fef08a;
86
- --yellow-300: #fde047;
87
- --yellow-400: #facc15;
88
- --yellow-500: #eab308;
89
- --yellow-600: #ca8a04;
90
- --yellow-700: #a16207;
91
- --yellow-800: #854d0e;
92
- --yellow-900: #713f12;
93
- --yellow-999: #422006;
94
-
95
- /* Aliases for previous Tailwind-like tokens */
96
- --primary: var(--blue-700);
97
- --base-200: var(--grey-200);
98
- --base-300: var(--grey-300);
99
- --base-content-muted: var(--grey-600);
100
- --base-heading: var(--grey-900);
101
- }
102
-
103
- .chart-footer {
104
- display: none !important;
105
- }
106
-
107
- /* Global */
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
+ ============================================================ */
108
39
  html {
109
40
  scroll-behavior: smooth;
110
41
  }
111
42
 
112
43
  body {
113
- display: flex;
114
44
  margin: 0;
115
45
  min-height: 100vh;
116
- font-family: 'Inter', var(--ui-font-family);
46
+ font-family: var(--font-ui);
117
47
  font-synthesis: none;
118
- line-height: 1.7;
119
- color: var(--base-heading);
120
- }
121
-
122
- nav {
123
- width: 200px;
124
- flex-shrink: 0;
125
- padding: 32px 0 16px 0px;
126
- border-right: 1px solid var(--base-200);
127
- }
128
-
129
- main {
130
- flex: 1;
131
- min-width: 0;
132
- padding: 20px 48px 80px;
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;
133
55
  }
134
56
 
135
- /* Default border color */
136
57
  *,
137
58
  *::before,
138
59
  *::after,
139
60
  ::backdrop,
140
61
  ::file-selector-button {
141
- border-color: var(--base-300);
142
- }
143
-
144
- /* OSX-style scrollbars */
145
- .pretty-scrollbar {
146
- scrollbar-width: thin;
147
- scrollbar-color: var(--base-300) transparent;
148
- }
149
- .pretty-scrollbar::-webkit-scrollbar {
150
- height: 6px;
151
- width: 6px;
152
- }
153
- .pretty-scrollbar::-webkit-scrollbar-track {
154
- background-color: transparent;
155
- }
156
- .pretty-scrollbar::-webkit-scrollbar-thumb {
157
- background-color: transparent;
158
- border-radius: 7px;
159
- }
160
- .pretty-scrollbar:hover::-webkit-scrollbar-thumb {
161
- background-color: var(--base-200);
62
+ border-color: var(--color-border);
162
63
  }
163
64
 
164
- /* Hidden scrollbar */
165
- .no-scrollbar::-webkit-scrollbar {
166
- display: none;
167
- }
168
- .no-scrollbar {
169
- -ms-overflow-style: none;
170
- scrollbar-width: none;
171
- }
172
-
173
- .chart {
174
- margin: 1rem 0;
175
- }
65
+ /* ============================================================
66
+ Typography
67
+ ============================================================ */
176
68
 
177
- /* Remove UA styles for select */
178
- button,
179
- input,
180
- optgroup,
181
- select,
182
- textarea {
183
- font: inherit;
184
- color: inherit;
185
- }
186
-
187
- select {
188
- appearance: none;
189
- -moz-appearance: none;
190
- -webkit-appearance: none;
191
- }
192
-
193
- /* Markdown content */
194
- .markdown {
195
- font-family: 'Inter', var(--ui-font-family);
196
- font-size: 1rem;
197
- line-height: 1.7;
198
- -webkit-font-smoothing: antialiased;
199
- -moz-osx-font-smoothing: grayscale;
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;
200
86
  }
201
-
202
- img {
203
- display: block;
204
- margin-left: auto;
205
- margin-right: auto;
206
- height: auto;
207
- max-width: 100%;
208
- border-radius: 0.5rem;
87
+ h1 {
88
+ font-size: 1.75rem;
89
+ margin-top: 3rem;
209
90
  }
210
-
211
- article a {
212
- color: var(--primary);
213
- text-decoration: underline;
214
- text-decoration-color: transparent;
215
- transition:
216
- color 200ms ease,
217
- text-decoration-color 200ms ease;
91
+ h2 {
92
+ font-size: 1.375rem;
93
+ margin-top: 2.75rem;
218
94
  }
219
- article a:hover {
220
- text-decoration-color: var(--primary);
95
+ h3,
96
+ h4,
97
+ h5,
98
+ h6 {
99
+ font-size: 1.125rem;
100
+ margin-top: 2rem;
101
+ margin-bottom: 0.5rem;
221
102
  }
222
103
 
104
+ /* Block flow */
223
105
  p,
224
106
  ul,
225
107
  ol {
226
- margin-block-end: 1.2em;
108
+ margin-block-end: 1.5rem;
227
109
  margin-block-start: 0;
228
- line-height: 1.7;
229
110
  }
230
111
 
231
112
  /* Lists */
232
- ol {
233
- list-style: decimal;
234
- padding-inline-start: 1.5rem;
235
- }
236
113
  ul {
237
114
  list-style: disc;
238
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;
239
126
  }
240
-
241
- /* Second-level lists */
242
127
  ul ul {
243
128
  list-style: circle;
244
129
  }
130
+ ul ul ul {
131
+ list-style: square;
132
+ }
245
133
  ol ol {
246
134
  list-style: lower-alpha;
247
135
  }
248
-
249
- /* Any second-level list spacing */
136
+ ol ol ol {
137
+ list-style: lower-roman;
138
+ }
250
139
  ul ul,
251
140
  ul ol,
252
141
  ol ul,
253
142
  ol ol {
254
- margin-top: 0.25rem;
143
+ margin-top: 0.5rem;
255
144
  margin-block-end: 0;
256
145
  }
257
-
258
- /* Third-level lists */
259
- ul ul ul {
260
- list-style: square;
261
- }
262
- ol ol ol {
263
- list-style: lower-roman;
264
- }
265
-
266
146
  li {
267
147
  list-style: inherit;
268
148
  text-align: -webkit-match-parent;
269
149
  }
270
- li + li {
271
- margin-top: 0.25rem;
150
+ li::marker {
151
+ color: var(--color-primary-strong);
272
152
  }
273
153
 
274
- /* Headings */
275
- h1,
276
- h2,
277
- h3,
278
- h4,
279
- h5,
280
- h6 {
281
- scroll-margin-top: var(--header-height);
282
- break-inside: avoid;
283
- color: var(--base-heading);
284
- font-family: 'Inter', var(--ui-font-family);
285
- font-optical-sizing: auto;
286
- font-weight: 100;
287
- font-style: normal;
154
+ /* Links */
155
+ a {
156
+ color: var(--color-body);
157
+ text-decoration: underline;
158
+ text-underline-offset: 6px;
159
+ transition: color 0.15s;
288
160
  }
289
-
290
- /* h1.title:first-of-type,
291
- h1:first-of-type { margin-top: 0.25rem; margin-bottom: 0.5rem; } */
292
-
293
- h1.title,
294
- h1 {
295
- margin-top: 2rem;
296
- margin-bottom: 0.25rem;
297
- font-size: 1.5rem;
298
- line-height: 2rem;
299
- letter-spacing: 0.025em;
300
- font-weight: 700;
301
- break-inside: avoid;
161
+ a:hover {
162
+ color: var(--color-primary-strong);
302
163
  }
303
164
 
304
- h2 {
305
- margin-top: 1.5rem;
306
- margin-bottom: 0.25rem;
307
- font-size: 1.25rem;
308
- line-height: 1.75rem;
165
+ /* Inline formatting */
166
+ strong {
167
+ color: var(--color-primary-strong);
309
168
  font-weight: 600;
310
169
  }
311
-
312
- h3 {
313
- margin-top: 1.25rem;
314
- margin-bottom: 0.25rem;
315
- font-size: 1rem;
316
- line-height: 1.5rem;
317
- font-weight: 600;
170
+ del {
171
+ color: var(--color-muted);
318
172
  }
319
173
 
320
- h4 {
321
- margin-top: 1rem;
322
- font-size: 0.875rem;
323
- line-height: 1.25rem;
324
- font-weight: 600;
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;
325
181
  }
326
- h5 {
327
- margin-top: 1rem;
182
+ form code {
183
+ font-size: unset;
184
+ }
185
+
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;
328
194
  font-size: 0.75rem;
329
- line-height: 1rem;
330
- font-weight: 600;
331
195
  }
332
- h6 {
333
- margin-top: 1rem;
196
+ pre code {
197
+ background: none;
198
+ padding: 0;
334
199
  font-size: 0.75rem;
335
- line-height: 1rem;
200
+ color: var(--color-code-text);
201
+ white-space: pre-wrap;
336
202
  }
337
203
 
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;
216
+ }
217
+
218
+ /* Horizontal rule */
338
219
  hr {
339
- height: 1px;
340
- margin-top: 2rem;
341
- margin-bottom: 2rem;
342
- max-width: 36rem;
343
- margin-left: auto;
344
- margin-right: auto;
345
- background-color: var(--base-300);
346
- border: 0;
220
+ border: none;
221
+ border-top: 1px solid var(--color-border);
222
+ margin: 2.5rem 0;
347
223
  }
348
224
 
349
- code {
350
- font-family: var(--monospace-font-family);
351
- font-size: 0.875em;
352
- background-color: var(--base-200);
353
- border: 1px solid var(--base-300);
354
- border-radius: 0.125rem;
355
- padding-left: 0.25rem;
356
- padding-right: 0.25rem;
357
- padding-top: 0.125rem;
358
- padding-bottom: 0.125rem;
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);
359
243
  }
360
244
 
361
- form code {
362
- font-size: unset;
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;
363
260
  }
364
261
 
365
- blockquote {
366
- background-color: var(--base-200);
367
- border-left: 4px solid var(--base-content-muted);
368
- padding-left: 0.75rem;
369
- margin-top: 2rem;
370
- margin-bottom: 2rem;
371
- padding-top: 0.5rem;
372
- padding-bottom: 0.5rem;
262
+ /* ============================================================
263
+ Utilities
264
+ ============================================================ */
265
+
266
+ /* OSX-style scrollbars */
267
+ .pretty-scrollbar {
268
+ scrollbar-width: thin;
269
+ scrollbar-color: #d1d5db transparent;
373
270
  }
374
- blockquote > blockquote {
375
- margin: 0;
271
+ .pretty-scrollbar::-webkit-scrollbar {
272
+ height: 6px;
273
+ width: 6px;
376
274
  }
377
- blockquote > :first-child {
378
- margin-top: 0;
275
+ .pretty-scrollbar::-webkit-scrollbar-track {
276
+ background-color: transparent;
379
277
  }
380
- blockquote > :last-child {
381
- margin-bottom: 0;
278
+ .pretty-scrollbar::-webkit-scrollbar-thumb {
279
+ background-color: transparent;
280
+ border-radius: 7px;
382
281
  }
383
- blockquote * {
384
- color: var(--base-content-muted);
282
+ .pretty-scrollbar:hover::-webkit-scrollbar-thumb {
283
+ background-color: #e5e7eb;
385
284
  }
386
285
 
387
- /* Ensure size and color are maintained for bold, italic, strikethrough, links inside markdown */
388
- strong,
389
- em,
390
- del,
391
- a {
392
- font-size: 1em;
393
- color: inherit;
286
+ /* Hidden scrollbar */
287
+ .no-scrollbar::-webkit-scrollbar {
288
+ display: none;
289
+ }
290
+ .no-scrollbar {
291
+ -ms-overflow-style: none;
292
+ scrollbar-width: none;
394
293
  }
395
294
 
396
- /*table {
397
- min-width: 100%;
398
- border-collapse: collapse;
399
- text-align: center;
295
+ /* ============================================================
296
+ Prose container (rendered markdown)
297
+ ============================================================ */
298
+ .pageContent {
299
+ font-family: var(--font-prose);
300
+ letter-spacing: -0.01em;
301
+ }
302
+
303
+ /* Embedded images in rendered markdown */
304
+ .pageContent img {
305
+ display: block;
400
306
  margin-left: auto;
401
307
  margin-right: auto;
402
- margin-top: 1.25rem;
403
- margin-bottom: 1.25rem;
308
+ height: auto;
309
+ max-width: 100%;
310
+ border-radius: 0.5rem;
404
311
  }
405
- th {
406
- font-size: 0.875rem;
407
- line-height: 1.25rem;
408
- font-weight: 500;
409
- border-bottom: 1px solid var(--grey-800);
410
- padding-top: 0;
411
- padding-bottom: 0;
412
- padding-left: 0.5rem;
413
- padding-right: 0.5rem;
414
- text-overflow: ellipsis;
415
- overflow: hidden;
312
+
313
+ .pageContent .chart {
314
+ margin: 1rem 0 2rem;
315
+ }
316
+
317
+ /* Viz/UI components render as direct div children — default bottom margin for dashboard flow */
318
+ .pageContent > div {
319
+ margin-bottom: 1.5rem;
320
+ }
321
+
322
+ /* Extra breathing room when prose follows a viz */
323
+ .pageContent > div + :is(p, ul, ol, blockquote, hr, table, pre) {
324
+ margin-top: 1rem;
416
325
  }
417
- td {
418
- font-size: 0.875rem;
419
- line-height: 1.25rem;
420
- padding-top: 0.25rem;
421
- padding-bottom: 0.25rem;
422
- padding-left: 0.5rem;
423
- padding-right: 0.5rem;
424
- overflow: hidden;
425
- text-overflow: ellipsis;
426
- }*/