@contentgrowth/content-widget 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astro/ContentViewer.astro +38 -38
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +0 -7
- package/dist/react/ContentViewer.js +7 -7
- package/dist/styles.css +29 -29
- package/dist/vue/ContentViewer.vue +7 -7
- package/dist/widget/widget.css +1 -0
- package/dist/widget/widget.dev.css +970 -0
- package/dist/widget/widget.dev.js +3805 -0
- package/dist/widget/widget.js +1 -240
- package/package.json +5 -2
- package/dist/widget/content-card.js +0 -190
- package/dist/widget/content-list.js +0 -289
- package/dist/widget/content-viewer.js +0 -230
- package/dist/widget/index.js +0 -40
- package/dist/widget/utils/api-client.js +0 -154
- package/dist/widget/utils/helpers.js +0 -71
- package/dist/widget/widget-js/content-card.js +0 -190
- package/dist/widget/widget-js/content-list.js +0 -289
- package/dist/widget/widget-js/content-viewer.js +0 -230
- package/dist/widget/widget-js/index.js +0 -40
- package/dist/widget/widget-js/utils/api-client.js +0 -154
- package/dist/widget/widget-js/utils/helpers.js +0 -71
- package/dist/widget/widget-js/widget.d.ts +0 -24
- package/dist/widget/widget-js/widget.js +0 -240
- package/dist/widget/widget.d.ts +0 -24
|
@@ -75,7 +75,7 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
75
75
|
data-cg-widget="post"
|
|
76
76
|
>
|
|
77
77
|
{showBackButton && (
|
|
78
|
-
<div class="cg-
|
|
78
|
+
<div class="cg-content-header-back">
|
|
79
79
|
<a href={backUrl} class="cg-back-btn">
|
|
80
80
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
81
81
|
<path d="M12 16L6 10L12 4" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
|
@@ -85,14 +85,14 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
85
85
|
</div>
|
|
86
86
|
)}
|
|
87
87
|
|
|
88
|
-
<header class="cg-
|
|
88
|
+
<header class="cg-content-header">
|
|
89
89
|
{article.category && (
|
|
90
|
-
<div class="cg-
|
|
90
|
+
<div class="cg-content-category">
|
|
91
91
|
<span class="cg-category-badge">{article.category}</span>
|
|
92
92
|
</div>
|
|
93
93
|
)}
|
|
94
94
|
|
|
95
|
-
<h1 class="cg-
|
|
95
|
+
<h1 class="cg-content-title">{article.title}</h1>
|
|
96
96
|
|
|
97
97
|
{showAiSummary && article.summary && (
|
|
98
98
|
<div class="cg-ai-summary">
|
|
@@ -106,7 +106,7 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
106
106
|
</div>
|
|
107
107
|
)}
|
|
108
108
|
|
|
109
|
-
<div class="cg-
|
|
109
|
+
<div class="cg-content-meta">
|
|
110
110
|
<span class="cg-info-author">{article.authorName}</span>
|
|
111
111
|
<span class="cg-info-separator">•</span>
|
|
112
112
|
<time class="cg-info-date" datetime={new Date(article.publishedAt * 1000).toISOString()}>
|
|
@@ -117,7 +117,7 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
117
117
|
</div>
|
|
118
118
|
|
|
119
119
|
{article.tags.length > 0 && (
|
|
120
|
-
<div class="cg-
|
|
120
|
+
<div class="cg-content-tags">
|
|
121
121
|
{article.tags.map((tag) => (
|
|
122
122
|
<span class="cg-tag">{tag}</span>
|
|
123
123
|
))}
|
|
@@ -125,56 +125,56 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
125
125
|
)}
|
|
126
126
|
</header>
|
|
127
127
|
|
|
128
|
-
<div class="cg-
|
|
128
|
+
<div class="cg-content-body" set:html={contentHtml} />
|
|
129
129
|
</article>
|
|
130
130
|
|
|
131
131
|
<style is:global>
|
|
132
132
|
/* Markdown content styling */
|
|
133
|
-
.cg-
|
|
133
|
+
.cg-content-body {
|
|
134
134
|
line-height: 1.7;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
.cg-
|
|
138
|
-
.cg-
|
|
139
|
-
.cg-
|
|
140
|
-
.cg-
|
|
141
|
-
.cg-
|
|
142
|
-
.cg-
|
|
137
|
+
.cg-content-body h1,
|
|
138
|
+
.cg-content-body h2,
|
|
139
|
+
.cg-content-body h3,
|
|
140
|
+
.cg-content-body h4,
|
|
141
|
+
.cg-content-body h5,
|
|
142
|
+
.cg-content-body h6 {
|
|
143
143
|
margin-top: 2em;
|
|
144
144
|
margin-bottom: 0.5em;
|
|
145
145
|
font-weight: 600;
|
|
146
146
|
line-height: 1.3;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
.cg-
|
|
150
|
-
.cg-
|
|
151
|
-
.cg-
|
|
152
|
-
.cg-
|
|
149
|
+
.cg-content-body h1 { font-size: 2em; }
|
|
150
|
+
.cg-content-body h2 { font-size: 1.5em; }
|
|
151
|
+
.cg-content-body h3 { font-size: 1.25em; }
|
|
152
|
+
.cg-content-body h4 { font-size: 1.1em; }
|
|
153
153
|
|
|
154
|
-
.cg-
|
|
154
|
+
.cg-content-body p {
|
|
155
155
|
margin-bottom: 1.5em;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
.cg-
|
|
158
|
+
.cg-content-body a {
|
|
159
159
|
color: #2563eb;
|
|
160
160
|
text-decoration: underline;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
.cg-
|
|
163
|
+
.cg-content-body a:hover {
|
|
164
164
|
color: #1d4ed8;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
.cg-
|
|
168
|
-
.cg-
|
|
167
|
+
.cg-content-body ul,
|
|
168
|
+
.cg-content-body ol {
|
|
169
169
|
margin-bottom: 1.5em;
|
|
170
170
|
padding-left: 2em;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
.cg-
|
|
173
|
+
.cg-content-body li {
|
|
174
174
|
margin-bottom: 0.5em;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
.cg-
|
|
177
|
+
.cg-content-body code {
|
|
178
178
|
background: #f3f4f6;
|
|
179
179
|
padding: 0.2em 0.4em;
|
|
180
180
|
border-radius: 3px;
|
|
@@ -182,7 +182,7 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
182
182
|
font-family: 'Courier New', monospace;
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
.cg-
|
|
185
|
+
.cg-content-body pre {
|
|
186
186
|
background: #1f2937;
|
|
187
187
|
color: #f9fafb;
|
|
188
188
|
padding: 1.5em;
|
|
@@ -191,13 +191,13 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
191
191
|
margin-bottom: 1.5em;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
.cg-
|
|
194
|
+
.cg-content-body pre code {
|
|
195
195
|
background: none;
|
|
196
196
|
padding: 0;
|
|
197
197
|
color: inherit;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
.cg-
|
|
200
|
+
.cg-content-body blockquote {
|
|
201
201
|
border-left: 4px solid #e5e7eb;
|
|
202
202
|
padding-left: 1.5em;
|
|
203
203
|
margin: 1.5em 0;
|
|
@@ -205,48 +205,48 @@ const readingTime = calculateReadingTime(article.wordCount);
|
|
|
205
205
|
color: #6b7280;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
.cg-
|
|
208
|
+
.cg-content-body img {
|
|
209
209
|
max-width: 100%;
|
|
210
210
|
height: auto;
|
|
211
211
|
border-radius: 8px;
|
|
212
212
|
margin: 1.5em 0;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
.cg-
|
|
215
|
+
.cg-content-body table {
|
|
216
216
|
width: 100%;
|
|
217
217
|
border-collapse: collapse;
|
|
218
218
|
margin-bottom: 1.5em;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
.cg-
|
|
222
|
-
.cg-
|
|
221
|
+
.cg-content-body th,
|
|
222
|
+
.cg-content-body td {
|
|
223
223
|
border: 1px solid #e5e7eb;
|
|
224
224
|
padding: 0.75em;
|
|
225
225
|
text-align: left;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
.cg-
|
|
228
|
+
.cg-content-body th {
|
|
229
229
|
background: #f9fafb;
|
|
230
230
|
font-weight: 600;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
/* Dark theme overrides */
|
|
234
|
-
.cg-theme-dark .cg-
|
|
234
|
+
.cg-theme-dark .cg-content-body code {
|
|
235
235
|
background: #374151;
|
|
236
236
|
color: #f9fafb;
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
.cg-theme-dark .cg-
|
|
239
|
+
.cg-theme-dark .cg-content-body blockquote {
|
|
240
240
|
border-left-color: #4b5563;
|
|
241
241
|
color: #9ca3af;
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
-
.cg-theme-dark .cg-
|
|
244
|
+
.cg-theme-dark .cg-content-body th {
|
|
245
245
|
background: #1f2937;
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
.cg-theme-dark .cg-
|
|
249
|
-
.cg-theme-dark .cg-
|
|
248
|
+
.cg-theme-dark .cg-content-body th,
|
|
249
|
+
.cg-theme-dark .cg-content-body td {
|
|
250
250
|
border-color: #374151;
|
|
251
251
|
}
|
|
252
252
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,KAAK,CAA+B;gBAEhC,MAAM,EAAE,YAAY;IAmBhC;;OAEG;IACG,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwChF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmB3D;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBjE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAelD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAetC;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;YACW,KAAK;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,KAAK,CAA+B;gBAEhC,MAAM,EAAE,YAAY;IAmBhC;;OAEG;IACG,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwChF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmB3D;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBjE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAelD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAetC;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;YACW,KAAK;IA2CnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
|
package/dist/core/client.js
CHANGED
|
@@ -144,8 +144,6 @@ export class ContentGrowthClient {
|
|
|
144
144
|
* Internal fetch wrapper with error handling
|
|
145
145
|
*/
|
|
146
146
|
async fetch(url) {
|
|
147
|
-
console.log('[ContentGrowthClient] Fetching:', url);
|
|
148
|
-
console.log('[ContentGrowthClient] API Key:', this.config.apiKey);
|
|
149
147
|
try {
|
|
150
148
|
const response = await fetch(url, {
|
|
151
149
|
headers: {
|
|
@@ -153,10 +151,8 @@ export class ContentGrowthClient {
|
|
|
153
151
|
'Content-Type': 'application/json'
|
|
154
152
|
}
|
|
155
153
|
});
|
|
156
|
-
console.log('[ContentGrowthClient] Response status:', response.status, response.statusText);
|
|
157
154
|
if (!response.ok) {
|
|
158
155
|
const errorText = await response.text();
|
|
159
|
-
console.error('[ContentGrowthClient] Error response:', errorText);
|
|
160
156
|
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
161
157
|
try {
|
|
162
158
|
const errorJson = JSON.parse(errorText);
|
|
@@ -168,16 +164,13 @@ export class ContentGrowthClient {
|
|
|
168
164
|
throw new ContentGrowthError(errorMessage, response.status, errorText);
|
|
169
165
|
}
|
|
170
166
|
const data = await response.json();
|
|
171
|
-
console.log('[ContentGrowthClient] Response data:', data);
|
|
172
167
|
return data;
|
|
173
168
|
}
|
|
174
169
|
catch (error) {
|
|
175
170
|
if (error instanceof ContentGrowthError) {
|
|
176
|
-
console.error('[ContentGrowthClient] ContentGrowthError:', error);
|
|
177
171
|
throw error;
|
|
178
172
|
}
|
|
179
173
|
// Network or parsing error
|
|
180
|
-
console.error('[ContentGrowthClient] Network/Parse error:', error);
|
|
181
174
|
throw new ContentGrowthError(`Failed to fetch from Content Growth API: ${error.message}`, undefined, error);
|
|
182
175
|
}
|
|
183
176
|
}
|
|
@@ -70,28 +70,28 @@ export const ContentViewer = ({ apiKey, uuid, slug, baseUrl, theme = 'light', sh
|
|
|
70
70
|
const publishedDate = formatDate(article.publishedAt);
|
|
71
71
|
const readingTime = calculateReadingTime(article.wordCount);
|
|
72
72
|
return (React.createElement("article", { className: `cg-content-viewer cg-theme-${theme} ${className}`, "data-cg-widget": "post" },
|
|
73
|
-
showBackButton && (React.createElement("div", { className: "cg-
|
|
73
|
+
showBackButton && (React.createElement("div", { className: "cg-content-header-back" },
|
|
74
74
|
React.createElement("a", { href: backUrl, className: "cg-back-btn" },
|
|
75
75
|
React.createElement("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none" },
|
|
76
76
|
React.createElement("path", { d: "M12 16L6 10L12 4", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })),
|
|
77
77
|
"Back to articles"))),
|
|
78
|
-
React.createElement("header", { className: "cg-
|
|
79
|
-
article.category && (React.createElement("div", { className: "cg-
|
|
78
|
+
React.createElement("header", { className: "cg-content-header" },
|
|
79
|
+
article.category && (React.createElement("div", { className: "cg-content-category" },
|
|
80
80
|
React.createElement("span", { className: "cg-category-badge" }, article.category))),
|
|
81
|
-
React.createElement("h1", { className: "cg-
|
|
81
|
+
React.createElement("h1", { className: "cg-content-title" }, article.title),
|
|
82
82
|
showAiSummary && article.summary && (React.createElement("div", { className: "cg-ai-summary" },
|
|
83
83
|
React.createElement("div", { className: "cg-ai-summary-header" },
|
|
84
84
|
React.createElement("svg", { className: "cg-ai-summary-icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
85
85
|
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M13 10V3L4 14h7v7l9-11h-7z" })),
|
|
86
86
|
React.createElement("span", { className: "cg-ai-summary-label" }, "AI Generated Summary")),
|
|
87
87
|
React.createElement("p", { className: "cg-ai-summary-text" }, article.summary))),
|
|
88
|
-
React.createElement("div", { className: "cg-
|
|
88
|
+
React.createElement("div", { className: "cg-content-meta" },
|
|
89
89
|
React.createElement("span", { className: "cg-info-author" }, article.authorName),
|
|
90
90
|
React.createElement("span", { className: "cg-info-separator" }, "\u2022"),
|
|
91
91
|
React.createElement("time", { className: "cg-info-date", dateTime: new Date(article.publishedAt * 1000).toISOString() }, publishedDate),
|
|
92
92
|
React.createElement("span", { className: "cg-info-separator" }, "\u2022"),
|
|
93
93
|
React.createElement("span", { className: "cg-info-reading-time" }, readingTime)),
|
|
94
|
-
article.tags.length > 0 && (React.createElement("div", { className: "cg-
|
|
95
|
-
React.createElement("div", { className: "cg-
|
|
94
|
+
article.tags.length > 0 && (React.createElement("div", { className: "cg-content-tags" }, article.tags.map((tag) => (React.createElement("span", { key: tag, className: "cg-tag" }, tag)))))),
|
|
95
|
+
React.createElement("div", { className: "cg-content-body", dangerouslySetInnerHTML: { __html: contentHtml } })));
|
|
96
96
|
};
|
|
97
97
|
export default ContentViewer;
|
package/dist/styles.css
CHANGED
|
@@ -404,27 +404,27 @@ a.cg-card {
|
|
|
404
404
|
padding: 1rem;
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
-
.cg-
|
|
407
|
+
.cg-content-header {
|
|
408
408
|
margin-bottom: 2rem;
|
|
409
409
|
padding-bottom: 2rem;
|
|
410
410
|
border-bottom: 1px solid var(--cg-border);
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
.cg-
|
|
413
|
+
.cg-content-title {
|
|
414
414
|
font-size: 2.5rem;
|
|
415
415
|
font-weight: 700;
|
|
416
416
|
line-height: 1.2;
|
|
417
|
-
margin-bottom:
|
|
417
|
+
margin-bottom: 1.5rem;
|
|
418
418
|
color: var(--cg-text);
|
|
419
419
|
}
|
|
420
420
|
|
|
421
421
|
@media (max-width: 768px) {
|
|
422
|
-
.cg-
|
|
422
|
+
.cg-content-title {
|
|
423
423
|
font-size: 2rem;
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
.cg-
|
|
427
|
+
.cg-content-meta {
|
|
428
428
|
display: flex;
|
|
429
429
|
flex-wrap: wrap;
|
|
430
430
|
gap: 1.5rem;
|
|
@@ -432,50 +432,50 @@ a.cg-card {
|
|
|
432
432
|
font-size: 0.9375rem;
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
-
.cg-
|
|
435
|
+
.cg-content-body {
|
|
436
436
|
color: var(--cg-text);
|
|
437
437
|
line-height: 1.75;
|
|
438
438
|
}
|
|
439
439
|
|
|
440
440
|
/* Markdown content styling */
|
|
441
|
-
.cg-
|
|
441
|
+
.cg-content-body h2 {
|
|
442
442
|
font-size: 1.875rem;
|
|
443
443
|
font-weight: 700;
|
|
444
444
|
margin: 2rem 0 1rem;
|
|
445
445
|
color: var(--cg-text);
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
-
.cg-
|
|
448
|
+
.cg-content-body h3 {
|
|
449
449
|
font-size: 1.5rem;
|
|
450
450
|
font-weight: 600;
|
|
451
451
|
margin: 1.5rem 0 0.75rem;
|
|
452
452
|
color: var(--cg-text);
|
|
453
453
|
}
|
|
454
454
|
|
|
455
|
-
.cg-
|
|
455
|
+
.cg-content-body p {
|
|
456
456
|
margin-bottom: 1.25rem;
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
.cg-
|
|
460
|
-
.cg-
|
|
459
|
+
.cg-content-body ul,
|
|
460
|
+
.cg-content-body ol {
|
|
461
461
|
margin-bottom: 1.25rem;
|
|
462
462
|
padding-left: 1.5rem;
|
|
463
463
|
}
|
|
464
464
|
|
|
465
|
-
.cg-
|
|
465
|
+
.cg-content-body li {
|
|
466
466
|
margin-bottom: 0.5rem;
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
-
.cg-
|
|
469
|
+
.cg-content-body a {
|
|
470
470
|
color: var(--cg-primary);
|
|
471
471
|
text-decoration: underline;
|
|
472
472
|
}
|
|
473
473
|
|
|
474
|
-
.cg-
|
|
474
|
+
.cg-content-body a:hover {
|
|
475
475
|
color: var(--cg-primary-hover);
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
.cg-
|
|
478
|
+
.cg-content-body code {
|
|
479
479
|
padding: 0.125rem 0.375rem;
|
|
480
480
|
background: var(--cg-bg-secondary);
|
|
481
481
|
border: 1px solid var(--cg-border);
|
|
@@ -484,7 +484,7 @@ a.cg-card {
|
|
|
484
484
|
font-family: 'Courier New', monospace;
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
.cg-
|
|
487
|
+
.cg-content-body pre {
|
|
488
488
|
padding: 1rem;
|
|
489
489
|
background: var(--cg-bg-secondary);
|
|
490
490
|
border: 1px solid var(--cg-border);
|
|
@@ -493,13 +493,13 @@ a.cg-card {
|
|
|
493
493
|
margin-bottom: 1.25rem;
|
|
494
494
|
}
|
|
495
495
|
|
|
496
|
-
.cg-
|
|
496
|
+
.cg-content-body pre code {
|
|
497
497
|
padding: 0;
|
|
498
498
|
background: none;
|
|
499
499
|
border: none;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
.cg-
|
|
502
|
+
.cg-content-body blockquote {
|
|
503
503
|
padding-left: 1rem;
|
|
504
504
|
border-left: 4px solid var(--cg-primary);
|
|
505
505
|
margin: 1.25rem 0;
|
|
@@ -507,7 +507,7 @@ a.cg-card {
|
|
|
507
507
|
color: var(--cg-text-secondary);
|
|
508
508
|
}
|
|
509
509
|
|
|
510
|
-
.cg-
|
|
510
|
+
.cg-content-body img {
|
|
511
511
|
max-width: 100%;
|
|
512
512
|
height: auto;
|
|
513
513
|
border-radius: 8px;
|
|
@@ -825,7 +825,7 @@ a.cg-card {
|
|
|
825
825
|
}
|
|
826
826
|
|
|
827
827
|
/* ContentViewer Styles */
|
|
828
|
-
.cg-
|
|
828
|
+
.cg-content-header-back {
|
|
829
829
|
margin-bottom: 2rem;
|
|
830
830
|
}
|
|
831
831
|
|
|
@@ -854,17 +854,17 @@ a.cg-card {
|
|
|
854
854
|
height: 20px;
|
|
855
855
|
}
|
|
856
856
|
|
|
857
|
-
.cg-
|
|
857
|
+
.cg-content-header {
|
|
858
858
|
margin-bottom: 3rem;
|
|
859
859
|
padding-bottom: 2rem;
|
|
860
860
|
border-bottom: 1px solid var(--cg-border);
|
|
861
861
|
}
|
|
862
862
|
|
|
863
|
-
.cg-
|
|
863
|
+
.cg-content-category {
|
|
864
864
|
margin-bottom: 1rem;
|
|
865
865
|
}
|
|
866
866
|
|
|
867
|
-
.cg-
|
|
867
|
+
.cg-content-title {
|
|
868
868
|
font-size: 2.5rem;
|
|
869
869
|
font-weight: 700;
|
|
870
870
|
line-height: 1.2;
|
|
@@ -873,12 +873,12 @@ a.cg-card {
|
|
|
873
873
|
}
|
|
874
874
|
|
|
875
875
|
@media (max-width: 768px) {
|
|
876
|
-
.cg-
|
|
876
|
+
.cg-content-title {
|
|
877
877
|
font-size: 2rem;
|
|
878
878
|
}
|
|
879
879
|
}
|
|
880
880
|
|
|
881
|
-
.cg-
|
|
881
|
+
.cg-content-summary {
|
|
882
882
|
font-size: 1.125rem;
|
|
883
883
|
line-height: 1.6;
|
|
884
884
|
color: var(--cg-text-secondary);
|
|
@@ -939,27 +939,27 @@ a.cg-card {
|
|
|
939
939
|
color: #d1d5db;
|
|
940
940
|
}
|
|
941
941
|
|
|
942
|
-
.cg-
|
|
942
|
+
.cg-content-meta {
|
|
943
943
|
display: flex;
|
|
944
944
|
align-items: center;
|
|
945
945
|
gap: 0.5rem;
|
|
946
|
+
flex-wrap: wrap;
|
|
946
947
|
font-size: 0.875rem;
|
|
947
948
|
color: var(--cg-text-secondary);
|
|
948
|
-
margin-bottom: 1rem;
|
|
949
949
|
}
|
|
950
950
|
|
|
951
951
|
.cg-info-separator {
|
|
952
952
|
color: var(--cg-border);
|
|
953
953
|
}
|
|
954
954
|
|
|
955
|
-
.cg-
|
|
955
|
+
.cg-content-tags {
|
|
956
956
|
display: flex;
|
|
957
957
|
flex-wrap: wrap;
|
|
958
958
|
gap: 0.5rem;
|
|
959
959
|
margin-top: 1rem;
|
|
960
960
|
}
|
|
961
961
|
|
|
962
|
-
.cg-
|
|
962
|
+
.cg-content-body {
|
|
963
963
|
max-width: 100%;
|
|
964
964
|
color: var(--cg-text);
|
|
965
965
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<p>{{ error || 'Article not found' }}</p>
|
|
11
11
|
</div>
|
|
12
12
|
<article v-else>
|
|
13
|
-
<div v-if="showBackButton" class="cg-
|
|
13
|
+
<div v-if="showBackButton" class="cg-content-header-back">
|
|
14
14
|
<a :href="backUrl" class="cg-back-btn">
|
|
15
15
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
16
16
|
<path d="M12 16L6 10L12 4" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
</a>
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
|
-
<header class="cg-
|
|
23
|
-
<div v-if="article.category" class="cg-
|
|
22
|
+
<header class="cg-content-header">
|
|
23
|
+
<div v-if="article.category" class="cg-content-category">
|
|
24
24
|
<span class="cg-category-badge">{{ article.category }}</span>
|
|
25
25
|
</div>
|
|
26
26
|
|
|
27
|
-
<h1 class="cg-
|
|
27
|
+
<h1 class="cg-content-title">{{ article.title }}</h1>
|
|
28
28
|
|
|
29
29
|
<div v-if="showAiSummary && article.summary" class="cg-ai-summary">
|
|
30
30
|
<div class="cg-ai-summary-header">
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<p class="cg-ai-summary-text">{{ article.summary }}</p>
|
|
37
37
|
</div>
|
|
38
38
|
|
|
39
|
-
<div class="cg-
|
|
39
|
+
<div class="cg-content-meta">
|
|
40
40
|
<span class="cg-info-author">{{ article.authorName }}</span>
|
|
41
41
|
<span class="cg-info-separator">•</span>
|
|
42
42
|
<time class="cg-info-date" :datetime="new Date(article.publishedAt * 1000).toISOString()">
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
<span class="cg-info-reading-time">{{ calculateReadingTime(article.wordCount) }}</span>
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
|
-
<div v-if="article.tags.length > 0" class="cg-
|
|
49
|
+
<div v-if="article.tags.length > 0" class="cg-content-tags">
|
|
50
50
|
<span v-for="tag in article.tags" :key="tag" class="cg-tag">{{ tag }}</span>
|
|
51
51
|
</div>
|
|
52
52
|
</header>
|
|
53
53
|
|
|
54
|
-
<div class="cg-
|
|
54
|
+
<div class="cg-content-body" v-html="contentHtml"></div>
|
|
55
55
|
</article>
|
|
56
56
|
</div>
|
|
57
57
|
</template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cg-content-list,.cg-content-viewer,.cg-widget{--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:16px;line-height:1.5;color:var(--cg-text)}.cg-content-list.cg-theme-dark,.cg-content-viewer.cg-theme-dark,.cg-widget[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-content-list *,.cg-content-viewer *,.cg-widget *{box-sizing:border-box;margin:0;padding:0}.cg-content-list,.cg-content-viewer,.cg-widget{width:100%;max-width:100%}.cg-content-list{width:100%}.cg-list-header{display:flex;justify-content:flex-end;margin-bottom:1.5rem}.cg-display-toggle{display:flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);font-size:0.875rem}.cg-display-toggle:hover{background:var(--cg-bg);border-color:var(--cg-primary)}.cg-display-toggle svg{width:20px;height:20px}.cg-content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}@media (max-width:768px){.cg-content-grid{grid-template-columns:1fr}}.cg-content-rows{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.cg-content-rows .cg-card{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:0.75rem 1.5rem;align-items:start}.cg-content-rows .cg-card-header{grid-column:1 / 2;grid-row:1;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:0}.cg-content-rows .cg-card-meta{grid-column:1 / 2;grid-row:2;margin-top:0}.cg-content-rows .cg-expand-btn{grid-column:2 / 3;grid-row:1;flex-shrink:0}.cg-content-rows .cg-card-title{margin:0;flex:1}.cg-content-rows .cg-card--compact,.cg-content-rows .cg-card--comfortable,.cg-content-rows .cg-card--spacious{width:100%}@media (max-width:768px){.cg-content-rows .cg-card{grid-template-columns:1fr;grid-template-rows:auto auto}.cg-content-rows .cg-expand-btn{grid-column:1;grid-row:1;justify-self:end}}.cg-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);padding:1.5rem;cursor:pointer;transition:var(--cg-transition);display:block}a.cg-card{text-decoration:none;color:inherit}.cg-card--compact{padding:1rem}.cg-card--compact .cg-card-title{font-size:1rem;line-height:1.4}.cg-card--compact .cg-card-meta{font-size:0.75rem}.cg-card--comfortable{padding:1.5rem}.cg-card--comfortable .cg-card-title{font-size:1.125rem;line-height:1.5}.cg-card--comfortable .cg-card-meta{font-size:0.875rem}.cg-card--spacious{padding:2rem}.cg-card--spacious .cg-card-title{font-size:1.25rem;line-height:1.6}.cg-card--spacious .cg-card-meta{font-size:0.875rem;margin-top:0.75rem}.cg-card:hover{box-shadow:var(--cg-shadow-lg);border-color:var(--cg-primary)}.cg-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.cg-card-title{font-size:1.25rem;font-weight:600;color:var(--cg-text);line-height:1.4;flex:1}.cg-expand-btn{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;color:var(--cg-text-secondary);cursor:pointer;transition:var(--cg-transition)}.cg-expand-btn:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-card-summary{margin-bottom:1rem;padding:1rem;background:var(--cg-bg-secondary);border-radius:8px}.cg-card-summary p{color:var(--cg-text-secondary);font-size:0.9375rem;line-height:1.6}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.cg-tag{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:999px;font-size:0.75rem;font-weight:500}.cg-card-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-meta-item{display:flex;align-items:center;gap:0.375rem}.cg-meta-item svg{width:14px;height:14px;flex-shrink:0}.cg-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 0}.cg-btn-prev,.cg-btn-next{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-btn-prev:hover:not(:disabled),.cg-btn-next:hover:not(:disabled){background:var(--cg-primary-hover);box-shadow:var(--cg-shadow-lg)}.cg-btn-prev:disabled,.cg-btn-next:disabled{opacity:0.5;cursor:not-allowed}.cg-page-info{color:var(--cg-text-secondary);font-size:0.875rem}.cg-content-viewer{width:100%;background:var(--cg-bg);min-height:400px}.cg-viewer-header{margin-bottom:2rem;background:var(--cg-bg)}.cg-back-btn{display:flex;align-items:center;gap:0.5rem;padding:0.75rem 1.5rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-viewer-content{max-width:800px;margin:0 auto;background:var(--cg-bg);padding:1rem}.cg-content-header{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1.5rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-meta{display:flex;flex-wrap:wrap;gap:1.5rem;color:var(--cg-text-secondary);font-size:0.9375rem}.cg-content-body{color:var(--cg-text);line-height:1.75}.cg-content-body h2{font-size:1.875rem;font-weight:700;margin:2rem 0 1rem;color:var(--cg-text)}.cg-content-body h3{font-size:1.5rem;font-weight:600;margin:1.5rem 0 0.75rem;color:var(--cg-text)}.cg-content-body p{margin-bottom:1.25rem}.cg-content-body ul,.cg-content-body ol{margin-bottom:1.25rem;padding-left:1.5rem}.cg-content-body li{margin-bottom:0.5rem}.cg-content-body a{color:var(--cg-primary);text-decoration:underline}.cg-content-body a:hover{color:var(--cg-primary-hover)}.cg-content-body code{padding:0.125rem 0.375rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:4px;font-size:0.875em;font-family:'Courier New',monospace}.cg-content-body pre{padding:1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:8px;overflow-x:auto;margin-bottom:1.25rem}.cg-content-body pre code{padding:0;background:none;border:none}.cg-content-body blockquote{padding-left:1rem;border-left:4px solid var(--cg-primary);margin:1.25rem 0;font-style:italic;color:var(--cg-text-secondary)}.cg-content-body img{max-width:100%;height:auto;border-radius:8px;margin:1.25rem 0}.cg-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;opacity:0;pointer-events:none;transition:opacity 0.3s ease;--cg-primary:#3b82f6;--cg-primary-hover:#2563eb;--cg-bg:#ffffff;--cg-bg-secondary:#f9fafb;--cg-text:#1f2937;--cg-text-secondary:#6b7280;--cg-border:#e5e7eb;--cg-shadow:0 1px 3px rgba(0,0,0,0.1);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.1);--cg-radius:12px;--cg-transition:all 0.2s ease;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}.cg-modal--active{opacity:1;pointer-events:auto}.cg-modal[data-theme="dark"]{--cg-primary:#60a5fa;--cg-primary-hover:#3b82f6;--cg-bg:#1f2937;--cg-bg-secondary:#111827;--cg-text:#f9fafb;--cg-text-secondary:#9ca3af;--cg-border:#374151;--cg-shadow:0 1px 3px rgba(0,0,0,0.3);--cg-shadow-lg:0 10px 15px -3px rgba(0,0,0,0.5)}.cg-modal-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.8);cursor:pointer}.cg-modal-content{position:relative;max-width:900px;max-height:90vh;margin:5vh auto;background:var(--cg-bg);border-radius:var(--cg-radius);overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5);z-index:10;opacity:1 !important}.cg-modal-close{position:sticky;top:1rem;right:1rem;float:right;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:50%;color:var(--cg-text);cursor:pointer;transition:var(--cg-transition);z-index:10}.cg-modal-close:hover{background:var(--cg-primary);color:white;border-color:var(--cg-primary)}.cg-modal-body{padding:2rem;background:var(--cg-bg);min-height:200px}.cg-loading,.cg-viewer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-spinner{width:48px;height:48px;border:4px solid var(--cg-border);border-top-color:var(--cg-primary);border-radius:50%;animation:cg-spin 0.8s linear infinite;margin-bottom:1rem}@keyframes cg-spin{to{transform:rotate(360deg)}}.cg-loading p,.cg-viewer-loading p{color:var(--cg-text-secondary)}.cg-error,.cg-viewer-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-error svg,.cg-viewer-error svg{color:#ef4444;margin-bottom:1rem}.cg-error p,.cg-viewer-error p{color:var(--cg-text);margin-bottom:1.5rem}.cg-retry-btn{padding:0.75rem 1.5rem;background:var(--cg-primary);color:white;border:none;border-radius:var(--cg-radius);font-weight:500;cursor:pointer;transition:var(--cg-transition)}.cg-retry-btn:hover{background:var(--cg-primary-hover)}.cg-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.cg-empty-state svg{color:var(--cg-text-secondary);margin-bottom:1rem}.cg-empty-state p{color:var(--cg-text-secondary);margin-top:1rem}.cg-articles-grid.cg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.cg-articles-grid.cg-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}@media (max-width:768px){.cg-articles-grid.cg-grid{grid-template-columns:1fr}}.cg-article-card{background:var(--cg-bg);border:1px solid var(--cg-border);border-radius:var(--cg-radius);overflow:hidden;transition:var(--cg-transition)}.cg-article-card:hover{box-shadow:var(--cg-shadow-lg);transform:translateY(-2px)}.cg-card-link{display:block;text-decoration:none;color:inherit}.cg-card-content{padding:1.5rem}.cg-display-compact .cg-card-content{padding:1rem}.cg-display-spacious .cg-card-content{padding:2rem}.cg-card-category{margin-bottom:0.75rem}.cg-category-badge{display:inline-block;padding:0.25rem 0.75rem;background:var(--cg-primary);color:white;border-radius:9999px;font-size:0.75rem;font-weight:500;text-transform:uppercase;letter-spacing:0.05em}.cg-card-title{font-size:1.25rem;font-weight:600;line-height:1.4;margin-bottom:0.75rem;color:var(--cg-text)}.cg-display-compact .cg-card-title{font-size:1.1rem}.cg-display-spacious .cg-card-title{font-size:1.5rem}.cg-card-summary{color:var(--cg-text-secondary);line-height:1.6;margin-bottom:1rem;font-size:0.95rem}.cg-card-meta{display:flex;align-items:center;gap:0.5rem;font-size:0.875rem;color:var(--cg-text-secondary);margin-bottom:1rem}.cg-meta-separator{color:var(--cg-border)}.cg-card-tags{display:flex;flex-wrap:wrap;gap:0.5rem}.cg-tag{padding:0.25rem 0.75rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:9999px;font-size:0.75rem;color:var(--cg-text-secondary)}.cg-content-header-back{margin-bottom:2rem}.cg-back-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1rem;background:var(--cg-bg-secondary);border:1px solid var(--cg-border);border-radius:var(--cg-radius);color:var(--cg-text);text-decoration:none;font-size:0.875rem;transition:var(--cg-transition)}.cg-back-btn:hover{background:var(--cg-bg);border-color:var(--cg-primary);color:var(--cg-primary)}.cg-back-btn svg{width:20px;height:20px}.cg-content-header{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--cg-border)}.cg-content-category{margin-bottom:1rem}.cg-content-title{font-size:2.5rem;font-weight:700;line-height:1.2;margin-bottom:1rem;color:var(--cg-text)}@media (max-width:768px){.cg-content-title{font-size:2rem}}.cg-content-summary{font-size:1.125rem;line-height:1.6;color:var(--cg-text-secondary);margin-bottom:1.5rem}.cg-ai-summary{background:linear-gradient(to right,#eff6ff,#dbeafe);border-left:4px solid #3b82f6;border-radius:0 var(--cg-radius) var(--cg-radius) 0;padding:1rem 1.25rem;margin-bottom:1.5rem}.cg-theme-dark .cg-ai-summary{background:linear-gradient(to right,#1e3a5f,#1e40af);border-left-color:#60a5fa}.cg-ai-summary-header{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem}.cg-ai-summary-icon{width:1rem;height:1rem;color:#2563eb}.cg-theme-dark .cg-ai-summary-icon{color:#60a5fa}.cg-ai-summary-label{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#1d4ed8}.cg-theme-dark .cg-ai-summary-label{color:#93c5fd}.cg-ai-summary-text{font-size:0.875rem;font-style:italic;line-height:1.6;color:#374151}.cg-theme-dark .cg-ai-summary-text{color:#d1d5db}.cg-content-meta{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap;font-size:0.875rem;color:var(--cg-text-secondary)}.cg-info-separator{color:var(--cg-border)}.cg-content-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:1rem}.cg-content-body{max-width:100%;color:var(--cg-text)}.cg-empty-state p{color:var(--cg-text-secondary);font-size:1.125rem}
|