@astrojs/starlight 0.33.1 → 0.34.0

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 (85) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/components/AnchorHeading.astro +53 -0
  3. package/components/Banner.astro +14 -12
  4. package/components/ContentNotice.astro +13 -11
  5. package/components/ContentPanel.astro +17 -15
  6. package/components/EditLink.astro +10 -8
  7. package/components/Footer.astro +30 -28
  8. package/components/Header.astro +54 -51
  9. package/components/Hero.astro +60 -58
  10. package/components/MobileMenuFooter.astro +19 -16
  11. package/components/MobileMenuToggle.astro +41 -37
  12. package/components/MobileTableOfContents.astro +71 -69
  13. package/components/Page.astro +8 -8
  14. package/components/PageFrame.astro +61 -57
  15. package/components/PageSidebar.astro +33 -31
  16. package/components/PageTitle.astro +8 -6
  17. package/components/Pagination.astro +38 -36
  18. package/components/Search.astro +277 -272
  19. package/components/Select.astro +50 -46
  20. package/components/SidebarPersister.astro +4 -2
  21. package/components/SidebarSublist.astro +78 -76
  22. package/components/SiteTitle.astro +17 -15
  23. package/components/SkipLink.astro +17 -15
  24. package/components/SocialIcons.astro +9 -7
  25. package/components/TableOfContents/TableOfContentsList.astro +49 -47
  26. package/components/TwoColumnContent.astro +32 -30
  27. package/index.ts +11 -4
  28. package/integrations/expressive-code/index.ts +2 -0
  29. package/integrations/heading-links.ts +104 -0
  30. package/integrations/virtual-user-config.ts +9 -0
  31. package/package.json +12 -7
  32. package/schemas/head.ts +2 -2
  33. package/schemas/i18n.ts +2 -0
  34. package/style/anchor-links.css +125 -0
  35. package/style/asides.css +46 -44
  36. package/style/layers.css +1 -0
  37. package/style/markdown.css +195 -189
  38. package/style/print.css +30 -35
  39. package/style/props.css +180 -178
  40. package/style/reset.css +42 -40
  41. package/style/util.css +51 -49
  42. package/translations/ar.json +2 -1
  43. package/translations/ca.json +2 -1
  44. package/translations/cs.json +2 -1
  45. package/translations/da.json +2 -1
  46. package/translations/de.json +2 -1
  47. package/translations/en.json +2 -1
  48. package/translations/es.json +2 -1
  49. package/translations/fa.json +2 -1
  50. package/translations/fr.json +2 -1
  51. package/translations/gl.json +2 -1
  52. package/translations/he.json +2 -1
  53. package/translations/hi.json +2 -1
  54. package/translations/id.json +2 -1
  55. package/translations/it.json +2 -1
  56. package/translations/ja.json +2 -1
  57. package/translations/ko.json +2 -1
  58. package/translations/lv.json +2 -1
  59. package/translations/nb.json +2 -1
  60. package/translations/nl.json +2 -1
  61. package/translations/pl.json +2 -1
  62. package/translations/pt.json +2 -1
  63. package/translations/ro.json +2 -1
  64. package/translations/ru.json +2 -1
  65. package/translations/sk.json +2 -1
  66. package/translations/sv.json +2 -1
  67. package/translations/tr.json +2 -1
  68. package/translations/uk.json +2 -1
  69. package/translations/vi.json +2 -1
  70. package/translations/zh-CN.json +2 -1
  71. package/translations/zh-TW.json +2 -1
  72. package/user-components/Badge.astro +118 -116
  73. package/user-components/Card.astro +44 -42
  74. package/user-components/CardGrid.astro +20 -18
  75. package/user-components/FileTree.astro +105 -103
  76. package/user-components/Icon.astro +7 -5
  77. package/user-components/LinkButton.astro +43 -41
  78. package/user-components/LinkCard.astro +45 -43
  79. package/user-components/Steps.astro +65 -61
  80. package/user-components/Tabs.astro +35 -33
  81. package/utils/head.ts +12 -4
  82. package/utils/starlight-page.ts +16 -19
  83. package/utils/user-config.ts +14 -0
  84. package/virtual-internal.d.ts +2 -0
  85. package/style/shiki.css +0 -13
@@ -28,5 +28,6 @@
28
28
  "expressiveCode.copyButtonTooltip": "Copier dans le presse-papiers",
29
29
  "expressiveCode.terminalWindowFallbackTitle": "Fenêtre de terminal",
30
30
  "fileTree.directory": "Répertoire",
31
- "builtWithStarlight.label": "Créé avec Starlight"
31
+ "builtWithStarlight.label": "Créé avec Starlight",
32
+ "heading.anchorLabel": "Section intitulée « {{title}} »"
32
33
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Caution",
26
26
  "aside.danger": "Danger",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Caution",
26
26
  "aside.danger": "Danger",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "सावधानी",
26
26
  "aside.danger": "खतरा",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Starlight द्वारा निर्मित"
28
+ "builtWithStarlight.label": "Starlight द्वारा निर्मित",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Perhatian",
26
26
  "aside.danger": "Bahaya",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Attenzione",
26
26
  "aside.danger": "Pericolo",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Sezione intitolata “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "注意",
26
26
  "aside.danger": "危険",
27
27
  "fileTree.directory": "ディレクトリ",
28
- "builtWithStarlight.label": "Starlightで作成"
28
+ "builtWithStarlight.label": "Starlightで作成",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "주의",
26
26
  "aside.danger": "위험",
27
27
  "fileTree.directory": "디렉터리",
28
- "builtWithStarlight.label": "Starlight로 제작됨"
28
+ "builtWithStarlight.label": "Starlight로 제작됨",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Uzmanību",
26
26
  "aside.danger": "Bīstamība",
27
27
  "fileTree.directory": "Direktorija",
28
- "builtWithStarlight.label": "Veidots ar Starlight"
28
+ "builtWithStarlight.label": "Veidots ar Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Advarsel",
26
26
  "aside.danger": "Fare",
27
27
  "fileTree.directory": "Mappe",
28
- "builtWithStarlight.label": "Laget med Starlight"
28
+ "builtWithStarlight.label": "Laget med Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Opgepast",
26
26
  "aside.danger": "Gevaar",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -28,5 +28,6 @@
28
28
  "expressiveCode.copyButtonCopied": "Skopiowane!",
29
29
  "expressiveCode.copyButtonTooltip": "Skopiuj do schowka",
30
30
  "expressiveCode.terminalWindowFallbackTitle": "Okno terminala",
31
- "builtWithStarlight.label": "Built with Starlight"
31
+ "builtWithStarlight.label": "Built with Starlight",
32
+ "heading.anchorLabel": "Dział zatytułowany „{{title}}”"
32
33
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Cuidado",
26
26
  "aside.danger": "Perigo",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Feito com Starlight"
28
+ "builtWithStarlight.label": "Feito com Starlight",
29
+ "heading.anchorLabel": "Seção intitulada “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Atenție",
26
26
  "aside.danger": "Pericol",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -28,5 +28,6 @@
28
28
  "expressiveCode.copyButtonCopied": "Скопировано!",
29
29
  "expressiveCode.copyButtonTooltip": "Копировать",
30
30
  "expressiveCode.terminalWindowFallbackTitle": "Окно терминала",
31
- "builtWithStarlight.label": "Сделано с помощью Starlight"
31
+ "builtWithStarlight.label": "Сделано с помощью Starlight",
32
+ "heading.anchorLabel": "Заголовок раздела «{{title}}»"
32
33
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Upozornenie",
26
26
  "aside.danger": "Nebezpečenstvo",
27
27
  "fileTree.directory": "Adresár",
28
- "builtWithStarlight.label": "Postavené so Starlight"
28
+ "builtWithStarlight.label": "Postavené so Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Caution",
26
26
  "aside.danger": "Danger",
27
27
  "fileTree.directory": "Directory",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Dikkat",
26
26
  "aside.danger": "Tehlike",
27
27
  "fileTree.directory": "Dizin",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Обережно",
26
26
  "aside.danger": "Небезпечно",
27
27
  "fileTree.directory": "Каталог",
28
- "builtWithStarlight.label": "Створено з Starlight"
28
+ "builtWithStarlight.label": "Створено з Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "Thận trọng",
26
26
  "aside.danger": "Nguy hiểm",
27
27
  "fileTree.directory": "Danh mục",
28
- "builtWithStarlight.label": "Tạo với Starlight"
28
+ "builtWithStarlight.label": "Tạo với Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "警告",
26
26
  "aside.danger": "危险",
27
27
  "fileTree.directory": "文件夹",
28
- "builtWithStarlight.label": "基于 Starlight 构建"
28
+ "builtWithStarlight.label": "基于 Starlight 构建",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -25,5 +25,6 @@
25
25
  "aside.caution": "警告",
26
26
  "aside.danger": "危險",
27
27
  "fileTree.directory": "目錄",
28
- "builtWithStarlight.label": "Built with Starlight"
28
+ "builtWithStarlight.label": "Built with Starlight",
29
+ "heading.anchorLabel": "Section titled “{{title}}”"
29
30
  }
@@ -26,121 +26,123 @@ const {
26
26
  <><span class:list={['sl-badge', variant, size, customClass]} {...attrs}>{text}</span></>
27
27
 
28
28
  <style>
29
- :global(:root) {
30
- --sl-badge-default-border: var(--sl-color-accent);
31
- --sl-badge-default-bg: var(--sl-color-accent-low);
32
- --sl-badge-default-text: #fff;
33
-
34
- --sl-badge-note-border: var(--sl-color-blue);
35
- --sl-badge-note-bg: var(--sl-color-blue-low);
36
- --sl-badge-note-text: #fff;
37
-
38
- --sl-badge-danger-border: var(--sl-color-red);
39
- --sl-badge-danger-bg: var(--sl-color-red-low);
40
- --sl-badge-danger-text: #fff;
41
-
42
- --sl-badge-success-border: var(--sl-color-green);
43
- --sl-badge-success-bg: var(--sl-color-green-low);
44
- --sl-badge-success-text: #fff;
45
-
46
- --sl-badge-caution-border: var(--sl-color-orange);
47
- --sl-badge-caution-bg: var(--sl-color-orange-low);
48
- --sl-badge-caution-text: #fff;
49
-
50
- --sl-badge-tip-border: var(--sl-color-purple);
51
- --sl-badge-tip-bg: var(--sl-color-purple-low);
52
- --sl-badge-tip-text: #fff;
53
- }
54
-
55
- :global([data-theme='light']:root) {
56
- --sl-badge-default-bg: var(--sl-color-accent-high);
57
- --sl-badge-note-bg: var(--sl-color-blue-high);
58
- --sl-badge-danger-bg: var(--sl-color-red-high);
59
- --sl-badge-success-bg: var(--sl-color-green-high);
60
- --sl-badge-caution-bg: var(--sl-color-orange-high);
61
- --sl-badge-tip-bg: var(--sl-color-purple-high);
62
- }
63
-
64
- .sl-badge {
65
- display: inline-block;
66
- border: 1px solid var(--sl-color-border-badge);
67
- border-radius: 0.25rem;
68
- font-family: var(--sl-font-system-mono);
69
- line-height: normal;
70
- color: var(--sl-color-text-badge);
71
- background-color: var(--sl-color-bg-badge);
72
- overflow-wrap: anywhere;
73
- }
74
-
75
- /* Sidebar overrides */
76
- :global(.sidebar-content) .sl-badge {
77
- line-height: 1;
78
- font-size: var(--sl-text-xs);
79
- padding: 0.125rem 0.375rem;
80
- }
81
-
82
- /* outline variant */
83
- :global(.sidebar-content a[aria-current='page']) > .sl-badge {
84
- --sl-color-bg-badge: transparent;
85
- --sl-color-border-badge: currentColor;
86
- color: inherit;
87
- }
88
-
89
- /* Color variants */
90
- .default {
91
- --sl-color-bg-badge: var(--sl-badge-default-bg);
92
- --sl-color-border-badge: var(--sl-badge-default-border);
93
- --sl-color-text-badge: var(--sl-badge-default-text);
94
- }
95
-
96
- .note {
97
- --sl-color-bg-badge: var(--sl-badge-note-bg);
98
- --sl-color-border-badge: var(--sl-badge-note-border);
99
- --sl-color-text-badge: var(--sl-badge-note-text);
100
- }
101
-
102
- .danger {
103
- --sl-color-bg-badge: var(--sl-badge-danger-bg);
104
- --sl-color-border-badge: var(--sl-badge-danger-border);
105
- --sl-color-text-badge: var(--sl-badge-danger-text);
106
- }
107
-
108
- .success {
109
- --sl-color-bg-badge: var(--sl-badge-success-bg);
110
- --sl-color-border-badge: var(--sl-badge-success-border);
111
- --sl-color-text-badge: var(--sl-badge-success-text);
112
- }
113
-
114
- .tip {
115
- --sl-color-bg-badge: var(--sl-badge-tip-bg);
116
- --sl-color-border-badge: var(--sl-badge-tip-border);
117
- --sl-color-text-badge: var(--sl-badge-tip-text);
118
- }
119
-
120
- .caution {
121
- --sl-color-bg-badge: var(--sl-badge-caution-bg);
122
- --sl-color-border-badge: var(--sl-badge-caution-border);
123
- --sl-color-text-badge: var(--sl-badge-caution-text);
124
- }
125
-
126
- /* Size variants */
127
- .small {
128
- font-size: var(--sl-text-xs);
129
- padding: 0.125rem 0.25rem;
130
- }
131
-
132
- .medium {
133
- font-size: var(--sl-text-sm);
134
- padding: 0.175rem 0.35rem;
135
- }
136
-
137
- .large {
138
- font-size: var(--sl-text-base);
139
- padding: 0.225rem 0.45rem;
140
- }
141
-
142
- /* Badge in headings */
143
- :global(.sl-markdown-content :is(h1, h2, h3, h4, h5, h6)) .sl-badge {
144
- vertical-align: middle;
29
+ @layer starlight.components {
30
+ :global(:root) {
31
+ --sl-badge-default-border: var(--sl-color-accent);
32
+ --sl-badge-default-bg: var(--sl-color-accent-low);
33
+ --sl-badge-default-text: #fff;
34
+
35
+ --sl-badge-note-border: var(--sl-color-blue);
36
+ --sl-badge-note-bg: var(--sl-color-blue-low);
37
+ --sl-badge-note-text: #fff;
38
+
39
+ --sl-badge-danger-border: var(--sl-color-red);
40
+ --sl-badge-danger-bg: var(--sl-color-red-low);
41
+ --sl-badge-danger-text: #fff;
42
+
43
+ --sl-badge-success-border: var(--sl-color-green);
44
+ --sl-badge-success-bg: var(--sl-color-green-low);
45
+ --sl-badge-success-text: #fff;
46
+
47
+ --sl-badge-caution-border: var(--sl-color-orange);
48
+ --sl-badge-caution-bg: var(--sl-color-orange-low);
49
+ --sl-badge-caution-text: #fff;
50
+
51
+ --sl-badge-tip-border: var(--sl-color-purple);
52
+ --sl-badge-tip-bg: var(--sl-color-purple-low);
53
+ --sl-badge-tip-text: #fff;
54
+ }
55
+
56
+ :global([data-theme='light']:root) {
57
+ --sl-badge-default-bg: var(--sl-color-accent-high);
58
+ --sl-badge-note-bg: var(--sl-color-blue-high);
59
+ --sl-badge-danger-bg: var(--sl-color-red-high);
60
+ --sl-badge-success-bg: var(--sl-color-green-high);
61
+ --sl-badge-caution-bg: var(--sl-color-orange-high);
62
+ --sl-badge-tip-bg: var(--sl-color-purple-high);
63
+ }
64
+
65
+ .sl-badge {
66
+ display: inline-block;
67
+ border: 1px solid var(--sl-color-border-badge);
68
+ border-radius: 0.25rem;
69
+ font-family: var(--sl-font-system-mono);
70
+ line-height: normal;
71
+ color: var(--sl-color-text-badge);
72
+ background-color: var(--sl-color-bg-badge);
73
+ overflow-wrap: anywhere;
74
+ }
75
+
76
+ /* Sidebar overrides */
77
+ :global(.sidebar-content) .sl-badge {
78
+ line-height: 1;
79
+ font-size: var(--sl-text-xs);
80
+ padding: 0.125rem 0.375rem;
81
+ }
82
+
83
+ /* outline variant */
84
+ :global(.sidebar-content a[aria-current='page']) > .sl-badge {
85
+ --sl-color-bg-badge: transparent;
86
+ --sl-color-border-badge: currentColor;
87
+ color: inherit;
88
+ }
89
+
90
+ /* Color variants */
91
+ .default {
92
+ --sl-color-bg-badge: var(--sl-badge-default-bg);
93
+ --sl-color-border-badge: var(--sl-badge-default-border);
94
+ --sl-color-text-badge: var(--sl-badge-default-text);
95
+ }
96
+
97
+ .note {
98
+ --sl-color-bg-badge: var(--sl-badge-note-bg);
99
+ --sl-color-border-badge: var(--sl-badge-note-border);
100
+ --sl-color-text-badge: var(--sl-badge-note-text);
101
+ }
102
+
103
+ .danger {
104
+ --sl-color-bg-badge: var(--sl-badge-danger-bg);
105
+ --sl-color-border-badge: var(--sl-badge-danger-border);
106
+ --sl-color-text-badge: var(--sl-badge-danger-text);
107
+ }
108
+
109
+ .success {
110
+ --sl-color-bg-badge: var(--sl-badge-success-bg);
111
+ --sl-color-border-badge: var(--sl-badge-success-border);
112
+ --sl-color-text-badge: var(--sl-badge-success-text);
113
+ }
114
+
115
+ .tip {
116
+ --sl-color-bg-badge: var(--sl-badge-tip-bg);
117
+ --sl-color-border-badge: var(--sl-badge-tip-border);
118
+ --sl-color-text-badge: var(--sl-badge-tip-text);
119
+ }
120
+
121
+ .caution {
122
+ --sl-color-bg-badge: var(--sl-badge-caution-bg);
123
+ --sl-color-border-badge: var(--sl-badge-caution-border);
124
+ --sl-color-text-badge: var(--sl-badge-caution-text);
125
+ }
126
+
127
+ /* Size variants */
128
+ .small {
129
+ font-size: var(--sl-text-xs);
130
+ padding: 0.125rem 0.25rem;
131
+ }
132
+
133
+ .medium {
134
+ font-size: var(--sl-text-sm);
135
+ padding: 0.175rem 0.35rem;
136
+ }
137
+
138
+ .large {
139
+ font-size: var(--sl-text-base);
140
+ padding: 0.225rem 0.45rem;
141
+ }
142
+
143
+ /* Badge in headings */
144
+ :global(.sl-markdown-content :is(h1, h2, h3, h4, h5, h6)) .sl-badge {
145
+ vertical-align: middle;
146
+ }
145
147
  }
146
148
  </style>
@@ -19,47 +19,49 @@ const { icon, title } = Astro.props;
19
19
  </article>
20
20
 
21
21
  <style>
22
- .card {
23
- --sl-card-border: var(--sl-color-purple);
24
- --sl-card-bg: var(--sl-color-purple-low);
25
- border: 1px solid var(--sl-color-gray-5);
26
- background-color: var(--sl-color-black);
27
- padding: clamp(1rem, calc(0.125rem + 3vw), 2.5rem);
28
- flex-direction: column;
29
- gap: clamp(0.5rem, calc(0.125rem + 1vw), 1rem);
30
- }
31
- .card:nth-child(4n + 1) {
32
- --sl-card-border: var(--sl-color-orange);
33
- --sl-card-bg: var(--sl-color-orange-low);
34
- }
35
- .card:nth-child(4n + 3) {
36
- --sl-card-border: var(--sl-color-green);
37
- --sl-card-bg: var(--sl-color-green-low);
38
- }
39
- .card:nth-child(4n + 4) {
40
- --sl-card-border: var(--sl-color-red);
41
- --sl-card-bg: var(--sl-color-red-low);
42
- }
43
- .card:nth-child(4n + 5) {
44
- --sl-card-border: var(--sl-color-blue);
45
- --sl-card-bg: var(--sl-color-blue-low);
46
- }
47
- .title {
48
- font-weight: 600;
49
- font-size: var(--sl-text-h4);
50
- color: var(--sl-color-white);
51
- line-height: var(--sl-line-height-headings);
52
- gap: 1rem;
53
- align-items: center;
54
- }
55
- .card .icon {
56
- border: 1px solid var(--sl-card-border);
57
- background-color: var(--sl-card-bg);
58
- padding: 0.2em;
59
- border-radius: 0.25rem;
60
- }
61
- .card .body {
62
- margin: 0;
63
- font-size: clamp(var(--sl-text-sm), calc(0.5rem + 1vw), var(--sl-text-body));
22
+ @layer starlight.components {
23
+ .card {
24
+ --sl-card-border: var(--sl-color-purple);
25
+ --sl-card-bg: var(--sl-color-purple-low);
26
+ border: 1px solid var(--sl-color-gray-5);
27
+ background-color: var(--sl-color-black);
28
+ padding: clamp(1rem, calc(0.125rem + 3vw), 2.5rem);
29
+ flex-direction: column;
30
+ gap: clamp(0.5rem, calc(0.125rem + 1vw), 1rem);
31
+ }
32
+ .card:nth-child(4n + 1) {
33
+ --sl-card-border: var(--sl-color-orange);
34
+ --sl-card-bg: var(--sl-color-orange-low);
35
+ }
36
+ .card:nth-child(4n + 3) {
37
+ --sl-card-border: var(--sl-color-green);
38
+ --sl-card-bg: var(--sl-color-green-low);
39
+ }
40
+ .card:nth-child(4n + 4) {
41
+ --sl-card-border: var(--sl-color-red);
42
+ --sl-card-bg: var(--sl-color-red-low);
43
+ }
44
+ .card:nth-child(4n + 5) {
45
+ --sl-card-border: var(--sl-color-blue);
46
+ --sl-card-bg: var(--sl-color-blue-low);
47
+ }
48
+ .title {
49
+ font-weight: 600;
50
+ font-size: var(--sl-text-h4);
51
+ color: var(--sl-color-white);
52
+ line-height: var(--sl-line-height-headings);
53
+ gap: 1rem;
54
+ align-items: center;
55
+ }
56
+ .card .icon {
57
+ border: 1px solid var(--sl-card-border);
58
+ background-color: var(--sl-card-bg);
59
+ padding: 0.2em;
60
+ border-radius: 0.25rem;
61
+ }
62
+ .card .body {
63
+ margin: 0;
64
+ font-size: clamp(var(--sl-text-sm), calc(0.5rem + 1vw), var(--sl-text-body));
65
+ }
64
66
  }
65
67
  </style>
@@ -9,28 +9,30 @@ const { stagger = false } = Astro.props;
9
9
  <div class:list={['card-grid', { stagger }]}><slot /></div>
10
10
 
11
11
  <style>
12
- .card-grid {
13
- display: grid;
14
- grid-template-columns: 100%;
15
- gap: 1rem;
16
- }
17
-
18
- .card-grid > :global(*) {
19
- margin-top: 0 !important;
20
- }
21
-
22
- @media (min-width: 50rem) {
12
+ @layer starlight.components {
23
13
  .card-grid {
24
- grid-template-columns: 1fr 1fr;
25
- gap: 1.5rem;
14
+ display: grid;
15
+ grid-template-columns: 100%;
16
+ gap: 1rem;
26
17
  }
27
- .stagger {
28
- --stagger-height: 5rem;
29
- padding-bottom: var(--stagger-height);
18
+
19
+ .card-grid > :global(*) {
20
+ margin-top: 0 !important;
30
21
  }
31
22
 
32
- .stagger > :global(*):nth-child(2n) {
33
- transform: translateY(var(--stagger-height));
23
+ @media (min-width: 50rem) {
24
+ .card-grid {
25
+ grid-template-columns: 1fr 1fr;
26
+ gap: 1.5rem;
27
+ }
28
+ .stagger {
29
+ --stagger-height: 5rem;
30
+ padding-bottom: var(--stagger-height);
31
+ }
32
+
33
+ .stagger > :global(*):nth-child(2n) {
34
+ transform: translateY(var(--stagger-height));
35
+ }
34
36
  }
35
37
  }
36
38
  </style>