@ox-content/vite-plugin 3.0.0-alpha.1 → 3.0.0-alpha.11

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.
@@ -0,0 +1,625 @@
1
+ /* ox-content Social Embeds - Twitter/X, Bluesky, WebContainer, media iframes */
2
+
3
+ /* Static link cards (<Tweet>/<XPost>/<Bluesky> without build-time fetch) */
4
+ .ox-tweet,
5
+ .ox-bluesky {
6
+ display: block;
7
+ margin: 1.5rem 0;
8
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
9
+ border-bottom: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
10
+ }
11
+
12
+ .ox-tweet > a,
13
+ .ox-bluesky > a {
14
+ display: block;
15
+ padding: 1rem 0;
16
+ text-decoration: none;
17
+ color: var(--octc-color-text);
18
+ }
19
+
20
+ .ox-tweet > a:hover,
21
+ .ox-bluesky > a:hover {
22
+ text-decoration: none;
23
+ }
24
+
25
+ .ox-tweet > a > span,
26
+ .ox-bluesky > a > span {
27
+ display: block;
28
+ font-size: 0.6875rem;
29
+ font-weight: 600;
30
+ letter-spacing: 0.08em;
31
+ text-transform: uppercase;
32
+ color: var(--octc-color-text-muted);
33
+ margin-bottom: 0.375rem;
34
+ }
35
+
36
+ .ox-tweet > a > strong,
37
+ .ox-bluesky > a > strong {
38
+ display: block;
39
+ font-weight: 600;
40
+ font-size: 0.9375rem;
41
+ color: var(--octc-color-primary);
42
+ overflow: hidden;
43
+ text-overflow: ellipsis;
44
+ white-space: nowrap;
45
+ }
46
+
47
+ .ox-tweet > a:hover > strong,
48
+ .ox-bluesky > a:hover > strong {
49
+ text-decoration: underline;
50
+ }
51
+
52
+ .ox-tweet > a > p,
53
+ .ox-bluesky > a > p {
54
+ margin: 0.5rem 0 0;
55
+ font-size: 0.875rem;
56
+ line-height: 1.5;
57
+ color: var(--octc-color-text-muted);
58
+ }
59
+
60
+ .ox-bluesky__header {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 0.75rem;
64
+ min-width: 0;
65
+ }
66
+
67
+ .ox-bluesky__avatar-wrap {
68
+ flex: 0 0 auto;
69
+ }
70
+
71
+ .ox-bluesky__avatar,
72
+ .ox-bluesky__avatar-fallback {
73
+ display: grid;
74
+ place-items: center;
75
+ width: 42px;
76
+ height: 42px;
77
+ border-radius: 50%;
78
+ background: color-mix(in srgb, var(--octc-color-primary) 16%, var(--octc-color-bg-alt));
79
+ color: var(--octc-color-primary);
80
+ font-weight: 700;
81
+ }
82
+
83
+ .ox-bluesky__avatar {
84
+ object-fit: cover;
85
+ }
86
+
87
+ .ox-bluesky__identity {
88
+ display: grid;
89
+ min-width: 0;
90
+ gap: 0.125rem;
91
+ }
92
+
93
+ .ox-bluesky__author-name,
94
+ .ox-bluesky__handle {
95
+ overflow: hidden;
96
+ text-overflow: ellipsis;
97
+ white-space: nowrap;
98
+ }
99
+
100
+ .ox-bluesky__author-name {
101
+ font-size: 0.95rem;
102
+ line-height: 1.2;
103
+ color: var(--octc-color-text);
104
+ }
105
+
106
+ .ox-bluesky__handle,
107
+ .ox-bluesky__network,
108
+ .ox-bluesky__meta {
109
+ color: var(--octc-color-text-muted);
110
+ }
111
+
112
+ .ox-bluesky__network {
113
+ margin-left: auto;
114
+ flex: 0 0 auto;
115
+ font-size: 0.75rem;
116
+ font-weight: 600;
117
+ }
118
+
119
+ .ox-bluesky__body {
120
+ margin: 0.875rem 0 0;
121
+ font-size: 0.95rem;
122
+ line-height: 1.55;
123
+ color: var(--octc-color-text);
124
+ }
125
+
126
+ .ox-bluesky__meta {
127
+ display: flex;
128
+ flex-wrap: wrap;
129
+ gap: 0.45rem 0.8rem;
130
+ margin-top: 0.875rem;
131
+ font-size: 0.75rem;
132
+ }
133
+
134
+ .ox-bluesky__source {
135
+ color: var(--octc-color-primary);
136
+ font-weight: 600;
137
+ }
138
+
139
+ /* Fetched tweet cards (<Tweet> with `twitter: { fetch: true }`) */
140
+ .ox-tweet--fetched > a {
141
+ padding: 1rem 0;
142
+ }
143
+
144
+ .ox-tweet__header {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: space-between;
148
+ gap: 0.5rem;
149
+ margin-bottom: 0.625rem;
150
+ }
151
+
152
+ .ox-tweet__profile {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 0.625rem;
156
+ min-width: 0;
157
+ }
158
+
159
+ .ox-tweet__avatar {
160
+ width: 40px;
161
+ height: 40px;
162
+ border-radius: 9999px;
163
+ background: var(--octc-color-bg-alt);
164
+ }
165
+
166
+ .ox-tweet__author-name {
167
+ display: block;
168
+ font-weight: 600;
169
+ font-size: 0.9375rem;
170
+ color: var(--octc-color-text);
171
+ }
172
+
173
+ .ox-tweet__author-handle {
174
+ display: block;
175
+ font-size: 0.8125rem;
176
+ color: var(--octc-color-text-muted);
177
+ }
178
+
179
+ .ox-tweet__body {
180
+ margin: 0 0 0.625rem;
181
+ font-size: 0.9375rem;
182
+ line-height: 1.55;
183
+ color: var(--octc-color-text);
184
+ white-space: pre-wrap;
185
+ }
186
+
187
+ .ox-tweet__media {
188
+ display: grid;
189
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
190
+ gap: 0.5rem;
191
+ margin-bottom: 0.625rem;
192
+ }
193
+
194
+ .ox-tweet__media-item {
195
+ width: 100%;
196
+ height: auto;
197
+ border-radius: 8px;
198
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
199
+ background: var(--octc-color-bg-alt);
200
+ }
201
+
202
+ .ox-tweet__media-fallback {
203
+ display: flex;
204
+ flex-direction: column;
205
+ min-width: 0;
206
+ }
207
+
208
+ .ox-tweet__media-fallback > img {
209
+ width: 100%;
210
+ height: auto;
211
+ border-radius: inherit;
212
+ }
213
+
214
+ .ox-tweet__watch {
215
+ margin-top: 0.375rem;
216
+ font-size: 0.8125rem;
217
+ }
218
+
219
+ .ox-tweet__footer {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 0.5rem;
223
+ font-size: 0.75rem;
224
+ color: var(--octc-color-text-muted);
225
+ }
226
+
227
+ .ox-tweet__permalink {
228
+ overflow: hidden;
229
+ text-overflow: ellipsis;
230
+ white-space: nowrap;
231
+ }
232
+
233
+ .ox-tweet__source {
234
+ color: var(--octc-color-primary);
235
+ font-weight: 600;
236
+ }
237
+
238
+ .ox-tweet__metrics {
239
+ display: flex;
240
+ flex-wrap: wrap;
241
+ gap: 0.4rem 0.75rem;
242
+ margin: 0.5rem 0 0;
243
+ font-size: 0.75rem;
244
+ color: var(--octc-color-text-muted);
245
+ }
246
+
247
+ .ox-tweet__metric strong {
248
+ color: var(--octc-color-text);
249
+ }
250
+
251
+ .ox-tweet__reply {
252
+ margin: 0 0 0.5rem;
253
+ font-size: 0.8125rem;
254
+ }
255
+
256
+ .ox-tweet__reply-link {
257
+ color: var(--octc-color-text-muted);
258
+ text-decoration: none;
259
+ }
260
+
261
+ .ox-tweet__reply-link:hover {
262
+ text-decoration: underline;
263
+ }
264
+
265
+ .ox-tweet__quote {
266
+ margin: 0 0 0.625rem;
267
+ padding: 0.75rem;
268
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
269
+ border-radius: 8px;
270
+ }
271
+
272
+ .ox-tweet__quote-header {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 0.5rem;
276
+ margin-bottom: 0.5rem;
277
+ }
278
+
279
+ .ox-tweet__quote .ox-tweet__avatar {
280
+ width: 28px;
281
+ height: 28px;
282
+ }
283
+
284
+ .ox-tweet__quote-body {
285
+ margin: 0 0 0.5rem;
286
+ font-size: 0.875rem;
287
+ line-height: 1.5;
288
+ color: var(--octc-color-text);
289
+ white-space: pre-wrap;
290
+ }
291
+
292
+ .ox-tweet__quote .ox-tweet__media {
293
+ margin-bottom: 0;
294
+ }
295
+
296
+ /* WebContainer lazy placeholder */
297
+ .ox-webcontainer {
298
+ margin: 1.5rem 0;
299
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
300
+ border-radius: 8px;
301
+ overflow: hidden;
302
+ }
303
+
304
+ .ox-webcontainer__header {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: space-between;
308
+ gap: 0.75rem;
309
+ padding: 0.625rem 1rem;
310
+ border-bottom: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
311
+ background: var(--octc-color-bg-alt);
312
+ }
313
+
314
+ .ox-webcontainer__header strong {
315
+ font-size: 0.875rem;
316
+ color: var(--octc-color-text);
317
+ }
318
+
319
+ .ox-webcontainer__header span {
320
+ font-size: 0.75rem;
321
+ color: var(--octc-color-text-muted);
322
+ white-space: nowrap;
323
+ }
324
+
325
+ .ox-webcontainer pre {
326
+ margin: 0;
327
+ border: 0;
328
+ border-radius: 0;
329
+ }
330
+ /* Provider cards for static article, place, community, and social embeds */
331
+ .ox-provider-card {
332
+ display: block;
333
+ margin: 1.5rem 0;
334
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
335
+ border-radius: 8px;
336
+ overflow: hidden;
337
+ background: var(--octc-color-bg);
338
+ }
339
+
340
+ .ox-provider-card__main {
341
+ display: block;
342
+ padding: 1rem;
343
+ color: var(--octc-color-text);
344
+ text-decoration: none;
345
+ }
346
+
347
+ .ox-provider-card__main:hover {
348
+ text-decoration: none;
349
+ }
350
+
351
+ .ox-provider-card__header,
352
+ .ox-provider-card__meta {
353
+ display: flex;
354
+ flex-wrap: wrap;
355
+ align-items: center;
356
+ gap: 0.35rem 0.75rem;
357
+ color: var(--octc-color-text-muted);
358
+ }
359
+
360
+ .ox-provider-card__header {
361
+ margin-bottom: 0.625rem;
362
+ font-size: 0.75rem;
363
+ }
364
+
365
+ .ox-provider-card__network,
366
+ .ox-provider-card__source {
367
+ font-weight: 600;
368
+ }
369
+
370
+ .ox-provider-card__network {
371
+ color: var(--octc-color-primary);
372
+ letter-spacing: 0.08em;
373
+ text-transform: uppercase;
374
+ }
375
+
376
+ .ox-provider-card__body-wrap {
377
+ display: flex;
378
+ align-items: flex-start;
379
+ gap: 0.75rem;
380
+ min-width: 0;
381
+ }
382
+
383
+ .ox-provider-card__avatar {
384
+ flex: 0 0 auto;
385
+ width: 42px;
386
+ height: 42px;
387
+ border-radius: 50%;
388
+ object-fit: cover;
389
+ background: var(--octc-color-bg-alt);
390
+ }
391
+
392
+ .ox-provider-card__copy {
393
+ min-width: 0;
394
+ }
395
+
396
+ .ox-provider-card__title {
397
+ margin: 0;
398
+ font-size: 1rem;
399
+ line-height: 1.35;
400
+ color: var(--octc-color-text);
401
+ }
402
+
403
+ .ox-provider-card__main:hover .ox-provider-card__title {
404
+ text-decoration: underline;
405
+ }
406
+
407
+ .ox-provider-card__excerpt {
408
+ margin: 0.625rem 0 0;
409
+ font-size: 0.875rem;
410
+ line-height: 1.55;
411
+ color: var(--octc-color-text-muted);
412
+ white-space: pre-wrap;
413
+ }
414
+
415
+ .ox-provider-card__image {
416
+ display: block;
417
+ width: 100%;
418
+ height: auto;
419
+ max-height: 420px;
420
+ margin-top: 0.875rem;
421
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
422
+ border-radius: 8px;
423
+ object-fit: cover;
424
+ background: var(--octc-color-bg-alt);
425
+ }
426
+
427
+ .ox-provider-card__meta {
428
+ margin-top: 0.875rem;
429
+ font-size: 0.75rem;
430
+ }
431
+
432
+ .ox-provider-card__metric > span {
433
+ font-weight: 600;
434
+ color: var(--octc-color-text);
435
+ }
436
+
437
+ .ox-provider-card__source {
438
+ color: var(--octc-color-primary);
439
+ }
440
+
441
+ .ox-provider-card__map {
442
+ display: block;
443
+ width: 100%;
444
+ border: 0;
445
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
446
+ background: var(--octc-color-bg-alt);
447
+ }
448
+ .ox-tweet--rich .ox-tweet__card {
449
+ display: block;
450
+ padding: 1rem 0;
451
+ color: var(--octc-color-text);
452
+ text-decoration: none;
453
+ }
454
+
455
+ .ox-tweet--rich .ox-tweet__profile {
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 0.625rem;
459
+ min-width: 0;
460
+ }
461
+
462
+ .ox-tweet--rich .ox-tweet__avatar-wrap {
463
+ flex: 0 0 auto;
464
+ }
465
+
466
+ .ox-tweet--rich .ox-tweet__avatar,
467
+ .ox-tweet--rich .ox-tweet__avatar-fallback {
468
+ display: grid;
469
+ place-items: center;
470
+ width: 42px;
471
+ height: 42px;
472
+ border-radius: 50%;
473
+ background: color-mix(in srgb, var(--octc-color-text) 10%, var(--octc-color-bg-alt));
474
+ color: var(--octc-color-text);
475
+ font-weight: 800;
476
+ }
477
+
478
+ .ox-tweet--rich .ox-tweet__avatar {
479
+ object-fit: cover;
480
+ }
481
+
482
+ .ox-tweet--rich .ox-tweet__identity {
483
+ display: grid;
484
+ min-width: 0;
485
+ gap: 0.125rem;
486
+ }
487
+
488
+ .ox-tweet--rich .ox-tweet__author-name,
489
+ .ox-tweet--rich .ox-tweet__author-handle {
490
+ overflow: hidden;
491
+ text-overflow: ellipsis;
492
+ white-space: nowrap;
493
+ }
494
+
495
+ .ox-tweet--rich .ox-tweet__network {
496
+ margin-left: auto;
497
+ flex: 0 0 auto;
498
+ font-size: 0.75rem;
499
+ font-weight: 700;
500
+ color: var(--octc-color-text-muted);
501
+ }
502
+
503
+ .ox-tweet--rich .ox-tweet__meta {
504
+ display: flex;
505
+ flex-wrap: wrap;
506
+ gap: 0.45rem 0.8rem;
507
+ margin-top: 0.875rem;
508
+ font-size: 0.75rem;
509
+ color: var(--octc-color-text-muted);
510
+ }
511
+
512
+ .ox-tweet--rich .ox-tweet__source {
513
+ color: var(--octc-color-primary);
514
+ font-weight: 600;
515
+ }
516
+ /* Reddit post cards */
517
+ .ox-reddit-card {
518
+ display: block;
519
+ margin: 1.5rem 0;
520
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
521
+ border-radius: 8px;
522
+ overflow: hidden;
523
+ background: var(--octc-color-bg);
524
+ }
525
+
526
+ .ox-reddit-card__main,
527
+ .ox-reddit-card__original {
528
+ display: block;
529
+ color: var(--octc-color-text);
530
+ text-decoration: none;
531
+ }
532
+
533
+ .ox-reddit-card__main {
534
+ padding: 1rem;
535
+ }
536
+
537
+ .ox-reddit-card__main:hover,
538
+ .ox-reddit-card__original:hover {
539
+ text-decoration: none;
540
+ }
541
+
542
+ .ox-reddit-card__header,
543
+ .ox-reddit-card__meta {
544
+ display: flex;
545
+ flex-wrap: wrap;
546
+ align-items: center;
547
+ gap: 0.35rem 0.75rem;
548
+ color: var(--octc-color-text-muted);
549
+ }
550
+
551
+ .ox-reddit-card__header {
552
+ margin-bottom: 0.625rem;
553
+ font-size: 0.75rem;
554
+ }
555
+
556
+ .ox-reddit-card__network,
557
+ .ox-reddit-card__subreddit,
558
+ .ox-reddit-card__source,
559
+ .ox-reddit-card__original {
560
+ font-weight: 600;
561
+ }
562
+
563
+ .ox-reddit-card__network {
564
+ color: #ff4500;
565
+ letter-spacing: 0.08em;
566
+ text-transform: uppercase;
567
+ }
568
+
569
+ .ox-reddit-card__subreddit,
570
+ .ox-reddit-card__source,
571
+ .ox-reddit-card__original {
572
+ color: var(--octc-color-primary);
573
+ }
574
+
575
+ .ox-reddit-card__author,
576
+ .ox-reddit-card__time {
577
+ color: var(--octc-color-text-muted);
578
+ }
579
+
580
+ .ox-reddit-card__title {
581
+ margin: 0;
582
+ font-size: 1rem;
583
+ line-height: 1.35;
584
+ color: var(--octc-color-text);
585
+ }
586
+
587
+ .ox-reddit-card__body {
588
+ margin: 0.625rem 0 0;
589
+ font-size: 0.875rem;
590
+ line-height: 1.55;
591
+ color: var(--octc-color-text-muted);
592
+ }
593
+
594
+ .ox-reddit-card__image {
595
+ display: block;
596
+ width: 100%;
597
+ height: auto;
598
+ max-height: 420px;
599
+ margin-top: 0.875rem;
600
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
601
+ border-radius: 8px;
602
+ object-fit: cover;
603
+ background: var(--octc-color-bg-alt);
604
+ }
605
+
606
+ .ox-reddit-card__meta {
607
+ margin-top: 0.875rem;
608
+ font-size: 0.75rem;
609
+ }
610
+
611
+ .ox-reddit-card__metric strong {
612
+ color: var(--octc-color-text);
613
+ }
614
+
615
+ .ox-reddit-card__original {
616
+ padding: 0.625rem 1rem;
617
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
618
+ background: var(--octc-color-bg-alt);
619
+ font-size: 0.8125rem;
620
+ }
621
+
622
+ .ox-reddit-card--fallback,
623
+ .ox-reddit-card.error {
624
+ border-style: dashed;
625
+ }