cosmos-docusaurus-theme 1.2.6 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -7,6 +7,30 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
7
7
 
8
8
  ---
9
9
 
10
+ ## [2.0.1] — 2026-03-10
11
+
12
+ ### Fixed
13
+
14
+ - **Tables full-width**: `display:table; width:100%` on desktop (>996px),
15
+ `display:block; overflow-x:auto` on mobile — responsive, never breaks layout
16
+
17
+ ## [2.0.0] — 2026-03-10
18
+
19
+ ### Added — Native Docusaurus component coverage
20
+
21
+ 1. **Color mode toggle icons** — sun (amber `#fbbf24`) in dark mode, moon (brand indigo `#7592ff`) in light mode via CSS `filter` colorization
22
+ 2. **TOCCollapsible** — mobile table-of-contents styled as bordered card with uppercase monospace label, matching sidebar section labels
23
+ 3. **DocCard / DocCardList** — auto-generated category index cards follow Void/Slate palette with hover lift
24
+ 4. **Announcement bar close button** — `×` styled with opacity + hover bg tint
25
+ 5. **Tag pages** — `/docs/tags/...` pages use pill tags with brand hover state
26
+ 6. **Mobile search** — search input collapses to `2rem` icon-only on ≤576px, expands on focus with smooth width transition
27
+ 7. **prefers-reduced-motion** — all transitions and animations disabled when the OS accessibility setting is active
28
+
29
+ ### Fixed
30
+
31
+ - **Docker GHCR push timeout** — `provenance: false` + `sbom: false` on `docker/build-push-action` eliminates attestation overhead that caused network timeouts; `timeout-minutes: 30` on job; `docker/setup-buildx-action` added explicitly
32
+ - **CSS comments** — removed stale TailAdmin references, fixed redundant inline color-name comments
33
+
10
34
  ## [1.2.6] — 2026-03-10
11
35
 
12
36
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cosmos-docusaurus-theme",
3
- "version": "1.2.6",
3
+ "version": "2.0.1",
4
4
  "description": "A clean, dark-first Docusaurus CSS theme based on TailAdmin design system with Outfit typography",
5
5
  "keywords": [
6
6
  "docusaurus",
package/src/css/theme.css CHANGED
@@ -10,8 +10,7 @@
10
10
  * Font: Outfit + JetBrains Mono for code
11
11
  *
12
12
  * Usage:
13
- * In docusaurus.config.js → theme.customCss:
14
- * require.resolve('cosmos-docusaurus-theme')
13
+ * themes: ['cosmos-docusaurus-theme']
15
14
  *
16
15
  * @see https://github.com/SckyzO/cosmos-docusaurus-theme
17
16
  * @license MIT
@@ -22,16 +21,16 @@
22
21
 
23
22
  /* ── Light mode ──────────────────────────────────────────────────────────── */
24
23
  :root {
25
- /* Primary brand colorsTailAdmin brand-* palette */
26
- --ifm-color-primary: #465fff; /* brand-500 */
27
- --ifm-color-primary-dark: #3641f5; /* brand-600 */
28
- --ifm-color-primary-darker: #2a31d8; /* brand-700 */
29
- --ifm-color-primary-darkest: #252dae; /* brand-800 */
30
- --ifm-color-primary-light: #7592ff; /* brand-400 */
31
- --ifm-color-primary-lighter: #9cb9ff; /* brand-300 */
32
- --ifm-color-primary-lightest:#dde9ff; /* brand-100 */
33
-
34
- /* Typography — TailAdmin uses Outfit as the primary typeface */
24
+ /* Brand palette (indigo)matches Rackscope accent color */
25
+ --ifm-color-primary: #465fff;
26
+ --ifm-color-primary-dark: #3641f5;
27
+ --ifm-color-primary-darker: #2a31d8;
28
+ --ifm-color-primary-darkest: #252dae;
29
+ --ifm-color-primary-light: #7592ff;
30
+ --ifm-color-primary-lighter: #9cb9ff;
31
+ --ifm-color-primary-lightest:#dde9ff;
32
+
33
+ /* Typography — Outfit + JetBrains Mono, same as Rackscope app */
35
34
  --ifm-font-family-base: 'Outfit', system-ui, -apple-system, sans-serif;
36
35
  --ifm-font-family-monospace: 'JetBrains Mono', 'Fira Code', monospace;
37
36
  --ifm-font-size-base: 16.5px;
@@ -43,8 +42,8 @@
43
42
  --ifm-h3-font-size: 1.25rem;
44
43
 
45
44
  /* Background — Slate: Tailwind gray-50 / white */
46
- --ifm-background-color: #f9fafb; /* gray-50 */
47
- --ifm-background-surface-color: #fff; /* white */
45
+ --ifm-background-color: #f9fafb;
46
+ --ifm-background-surface-color: #fff;
48
47
 
49
48
  /* Text — Slate: warm brown tones (not cold blue-gray) */
50
49
  --ifm-font-color-base: #1a1714; /* warm near-black */
@@ -55,14 +54,14 @@
55
54
  --ifm-navbar-background-color: #fff;
56
55
  --ifm-navbar-shadow: 0px 1px 3px 0px rgb(16,24,40,0.10), 0px 1px 2px 0px rgb(16,24,40,0.06);
57
56
  --ifm-navbar-link-color: #2c2822; /* warm dark text */
58
- --ifm-navbar-link-hover-color: #465fff; /* brand-500 */
57
+ --ifm-navbar-link-hover-color: #465fff;
59
58
  --ifm-navbar-link-active-color: #465fff;
60
59
 
61
60
  /* Sidebar */
62
61
  --ifm-sidebar-width: 280px;
63
62
  --doc-sidebar-width: 280px;
64
63
  --ifm-sidebar-padding: 16px;
65
- --docusaurus-collapse-button-bg-hover-color: #f3f4f6; /* gray-100 */
64
+ --docusaurus-collapse-button-bg-hover-color: #f3f4f6;
66
65
 
67
66
  /* Links */
68
67
  --ifm-link-color: #465fff;
@@ -95,20 +94,20 @@
95
94
  /* ── Dark mode ───────────────────────────────────────────────────────────── */
96
95
  [data-theme='dark'] {
97
96
  /* Primary — lighter variant for readability on dark backgrounds */
98
- --ifm-color-primary: #7592ff; /* brand-400 */
99
- --ifm-color-primary-dark: #465fff; /* brand-500 */
100
- --ifm-color-primary-darker: #3641f5; /* brand-600 */
101
- --ifm-color-primary-darkest: #2a31d8; /* brand-700 */
102
- --ifm-color-primary-light: #9cb9ff; /* brand-300 */
103
- --ifm-color-primary-lighter: #c2d6ff; /* brand-200 */
104
- --ifm-color-primary-lightest:#dde9ff; /* brand-100 */
97
+ --ifm-color-primary: #7592ff;
98
+ --ifm-color-primary-dark: #465fff;
99
+ --ifm-color-primary-darker: #3641f5;
100
+ --ifm-color-primary-darkest: #2a31d8;
101
+ --ifm-color-primary-light: #9cb9ff;
102
+ --ifm-color-primary-lighter: #c2d6ff;
103
+ --ifm-color-primary-lightest:#dde9ff;
105
104
  --docusaurus-highlighted-code-line-bg: rgb(117, 146, 255, 0.15);
106
105
 
107
106
  /* Background — Void: Tailwind gray-950 / gray-900 neutral blacks */
108
107
  --ifm-background-color: #030712; /* gray-950 — deepest background */
109
108
  --ifm-background-surface-color: #111827; /* gray-900 — cards, sidebar, panels */
110
- --ifm-navbar-background-color: #111827; /* gray-900 */
111
- --ifm-footer-background-color: #030712; /* gray-950 */
109
+ --ifm-navbar-background-color: #111827;
110
+ --ifm-footer-background-color: #030712;
112
111
 
113
112
  /* Text — neutral grays, no blue tint */
114
113
  --ifm-font-color-base: #e5e5e5; /* neutral light */
@@ -133,7 +132,7 @@
133
132
  --ifm-navbar-shadow: 0px 1px 0px 0px #1f2937;
134
133
 
135
134
  /* Code */
136
- --ifm-code-background: #1f2937; /* gray-800 */
135
+ --ifm-code-background: #1f2937;
137
136
 
138
137
  /* Sidebar collapse button */
139
138
  --docusaurus-collapse-button-bg-hover-color: rgb(255,255,255,0.05);
@@ -304,21 +303,21 @@ button[aria-label*="dark and light mode"]:hover::before {
304
303
  transition: background 0.12s, color 0.12s;
305
304
  }
306
305
 
307
- /* Active sidebar link — TailAdmin: bg-brand-50 + text-brand-500 */
306
+ /* Active sidebar link — brand tint bg + brand color text */
308
307
  .menu__link--active,
309
308
  .menu__link--active:hover {
310
- background: #ecf3ff; /* brand-50 */
311
- color: #465fff; /* brand-500 */
309
+ background: #ecf3ff;
310
+ color: #465fff;
312
311
  font-weight: 600;
313
312
  }
314
313
 
315
314
  [data-theme='dark'] .menu__link--active,
316
315
  [data-theme='dark'] .menu__link--active:hover {
317
316
  background: rgb(70, 95, 255, 0.12);
318
- color: #7592ff; /* brand-400 */
317
+ color: #7592ff;
319
318
  }
320
319
 
321
- /* Sidebar collapsible category */
320
+ /* Sidebar category toggle */
322
321
  .menu__list-item-collapsible {
323
322
  border-radius: 8px;
324
323
  }
@@ -398,6 +397,23 @@ code {
398
397
 
399
398
  /* ── Tables — direct overrides (CSS variables not reliably cascaded) ─────── */
400
399
 
400
+ /* Full-width tables on desktop; scrollable on mobile.
401
+ Infima forces display:block which caps width — we override for desktop,
402
+ and restore scrollable block on narrow viewports. */
403
+ .markdown table {
404
+ display: table !important;
405
+ width: 100% !important;
406
+ }
407
+
408
+ @media (width <= 996px) {
409
+ .markdown table {
410
+ display: block !important;
411
+ overflow-x: auto !important;
412
+ max-width: 100% !important;
413
+ width: max-content !important;
414
+ }
415
+ }
416
+
401
417
  /* Dark mode — Infima applies --ifm-table-head-background directly on th,
402
418
  so we must target th explicitly (higher specificity than thead). */
403
419
  [data-theme='dark'] table {
@@ -1281,6 +1297,175 @@ details > :not(summary) {
1281
1297
  border-top-color: #1f2937;
1282
1298
  }
1283
1299
 
1300
+ /* =============================================================================
1301
+ NATIVE DOCUSAURUS COMPONENTS
1302
+ ============================================================================= */
1303
+
1304
+ /* ── 1. Color mode toggle icons ──────────────────────────────────────────── */
1305
+ /* Sun = amber shown in dark mode (hints "switch to light").
1306
+ Moon = brand indigo shown in light mode (hints "switch to dark").
1307
+ Uses CSS filter to colorize since Docusaurus SVG paths use hardcoded fill. */
1308
+
1309
+ /* Dark mode shows the sun icon */
1310
+ [data-theme='dark'] [class*="toggleButton"] [class*="lightToggleIcon"],
1311
+ [data-theme='dark'] [class*="toggleButton"] svg {
1312
+ filter: drop-shadow(0 0 0 #fbbf24) sepia(1) saturate(4) hue-rotate(5deg) brightness(1.1);
1313
+ }
1314
+
1315
+ /* Light mode shows the moon icon */
1316
+ [data-theme='light'] [class*="toggleButton"] [class*="darkToggleIcon"],
1317
+ [data-theme='light'] [class*="toggleButton"] svg {
1318
+ filter: drop-shadow(0 0 0 #7592ff) sepia(1) saturate(6) hue-rotate(190deg) brightness(0.9);
1319
+ }
1320
+
1321
+ /* ── 2. TOCCollapsible (mobile table of contents) ────────────────────────── */
1322
+ [class*="tocCollapsible"] {
1323
+ border: 1px solid var(--ifm-toc-border-color);
1324
+ border-radius: 10px;
1325
+ margin-bottom: 1rem;
1326
+ overflow: hidden;
1327
+ }
1328
+
1329
+ [class*="tocCollapsibleButton"] {
1330
+ background: none;
1331
+ border: none;
1332
+ cursor: pointer;
1333
+ display: flex;
1334
+ align-items: center;
1335
+ justify-content: space-between;
1336
+ width: 100%;
1337
+ padding: 10px 14px;
1338
+ font-family: var(--ifm-font-family-monospace);
1339
+ font-size: 0.68rem;
1340
+ font-weight: 600;
1341
+ letter-spacing: 0.1em;
1342
+ text-transform: uppercase;
1343
+ color: var(--ifm-font-color-secondary);
1344
+ transition: color 0.12s, background 0.12s;
1345
+ }
1346
+
1347
+ [class*="tocCollapsibleButton"]:hover {
1348
+ color: var(--ifm-color-primary);
1349
+ background: rgb(70, 95, 255, 0.04);
1350
+ }
1351
+
1352
+ [class*="tocCollapsibleContent"] {
1353
+ border-top: 1px solid var(--ifm-toc-border-color);
1354
+ padding: 8px 0;
1355
+ }
1356
+
1357
+ /* ── 3. DocCard / DocCardList (auto-generated category index pages) ─────── */
1358
+ [class*="cardContainer"] > article.card {
1359
+ height: 100%;
1360
+ transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
1361
+ }
1362
+
1363
+ [class*="cardContainer"] > article.card:hover {
1364
+ transform: translateY(-2px);
1365
+ }
1366
+
1367
+ [class*="cardContainer"] a {
1368
+ text-decoration: none;
1369
+ }
1370
+
1371
+ /* Category card title */
1372
+ [class*="cardContainer"] h2 {
1373
+ font-size: 1rem;
1374
+ font-weight: 700;
1375
+ margin-bottom: 0.5rem;
1376
+ }
1377
+
1378
+ /* Category card description */
1379
+ [class*="cardContainer"] p {
1380
+ font-size: 0.875rem;
1381
+ color: var(--ifm-font-color-secondary);
1382
+ margin: 0;
1383
+ }
1384
+
1385
+ /* ── 4. Announcement bar close button ────────────────────────────────────── */
1386
+ .announcement-close,
1387
+ [class*="announcementBarClose"] {
1388
+ color: rgb(255, 255, 255, 0.65) !important;
1389
+ border-radius: 6px !important;
1390
+ padding: 4px 6px !important;
1391
+ transition: color 0.15s, background 0.15s !important;
1392
+ }
1393
+
1394
+ .announcement-close:hover,
1395
+ [class*="announcementBarClose"]:hover {
1396
+ color: #fff !important;
1397
+ background: rgb(255, 255, 255, 0.12) !important;
1398
+ }
1399
+
1400
+ /* ── 5. Tag pages (/docs/tags/...) ───────────────────────────────────────── */
1401
+ [class*="tagList"] {
1402
+ display: flex;
1403
+ flex-wrap: wrap;
1404
+ gap: 8px;
1405
+ list-style: none;
1406
+ padding: 0;
1407
+ margin: 0;
1408
+ }
1409
+
1410
+ [class*="tagItem"] a,
1411
+ [class*="tag_"] {
1412
+ display: inline-flex;
1413
+ align-items: center;
1414
+ border: 1px solid var(--ifm-toc-border-color);
1415
+ border-radius: 20px;
1416
+ padding: 4px 14px;
1417
+ font-size: 0.8125rem;
1418
+ font-weight: 500;
1419
+ color: var(--ifm-font-color-base);
1420
+ text-decoration: none;
1421
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
1422
+ }
1423
+
1424
+ [class*="tagItem"] a:hover,
1425
+ [class*="tag_"]:hover {
1426
+ border-color: var(--ifm-color-primary);
1427
+ background: rgb(70, 95, 255, 0.06);
1428
+ color: var(--ifm-color-primary);
1429
+ }
1430
+
1431
+ /* ── 7. Responsive search ─────────────────────────────────────────────────── */
1432
+ /* On mobile the input collapses — restore sizing on focus */
1433
+ @media (width <= 576px) {
1434
+ .navbar__search-input {
1435
+ min-width: 0 !important;
1436
+ width: 2rem !important;
1437
+ padding-left: 2rem !important;
1438
+ transition: width 0.25s ease, background-color 0.15s !important;
1439
+ }
1440
+
1441
+ .navbar__search-input:focus {
1442
+ width: 220px !important;
1443
+ }
1444
+ }
1445
+
1446
+ /* ── 8. prefers-reduced-motion ───────────────────────────────────────────── */
1447
+ /* Respects the OS-level "reduce motion" accessibility setting by
1448
+ disabling all transitions and animations. */
1449
+ @media (prefers-reduced-motion: reduce) {
1450
+ .navbar,
1451
+ .theme-doc-sidebar-container,
1452
+ .menu__link,
1453
+ .main-wrapper,
1454
+ article,
1455
+ .footer,
1456
+ .table-of-contents__link,
1457
+ .pagination-nav__link,
1458
+ .prism-code,
1459
+ .alert,
1460
+ .card,
1461
+ [class*="sidebar-cat-"] > .menu__list-item-collapsible > .menu__link,
1462
+ [class*="toggleIcon"],
1463
+ button[aria-label*="dark and light mode"] {
1464
+ transition: none !important;
1465
+ animation: none !important;
1466
+ }
1467
+ }
1468
+
1284
1469
  /* =============================================================================
1285
1470
  OPTIONAL UTILITY CLASSES
1286
1471
  The following classes are not required for the theme to work.