@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
@@ -51,53 +51,57 @@ import Icon from '../user-components/Icon.astro';
51
51
  </script>
52
52
 
53
53
  <style>
54
- button {
55
- position: fixed;
56
- top: calc((var(--sl-nav-height) - var(--sl-menu-button-size)) / 2);
57
- inset-inline-end: var(--sl-nav-pad-x);
58
- z-index: var(--sl-z-index-navbar);
59
- border: 0;
60
- border-radius: 50%;
61
- width: var(--sl-menu-button-size);
62
- height: var(--sl-menu-button-size);
63
- padding: 0.5rem;
64
- background-color: var(--sl-color-white);
65
- color: var(--sl-color-black);
66
- box-shadow: var(--sl-shadow-md);
67
- cursor: pointer;
68
- }
54
+ @layer starlight.core {
55
+ button {
56
+ position: fixed;
57
+ top: calc((var(--sl-nav-height) - var(--sl-menu-button-size)) / 2);
58
+ inset-inline-end: var(--sl-nav-pad-x);
59
+ z-index: var(--sl-z-index-navbar);
60
+ border: 0;
61
+ border-radius: 50%;
62
+ width: var(--sl-menu-button-size);
63
+ height: var(--sl-menu-button-size);
64
+ padding: 0.5rem;
65
+ background-color: var(--sl-color-white);
66
+ color: var(--sl-color-black);
67
+ box-shadow: var(--sl-shadow-md);
68
+ cursor: pointer;
69
+ }
69
70
 
70
- [aria-expanded='true'] button {
71
- background-color: var(--sl-color-gray-2);
72
- box-shadow: none;
73
- }
71
+ [aria-expanded='true'] button {
72
+ background-color: var(--sl-color-gray-2);
73
+ box-shadow: none;
74
+ }
74
75
 
75
- [aria-expanded='true'] button .open-menu {
76
- display: none;
77
- }
76
+ [aria-expanded='true'] button .open-menu {
77
+ display: none;
78
+ }
78
79
 
79
- :not([aria-expanded='true']) button .close-menu {
80
- display: none;
81
- }
80
+ :not([aria-expanded='true']) button .close-menu {
81
+ display: none;
82
+ }
82
83
 
83
- :global([data-theme='light']) button {
84
- background-color: var(--sl-color-black);
85
- color: var(--sl-color-white);
86
- }
84
+ :global([data-theme='light']) button {
85
+ background-color: var(--sl-color-black);
86
+ color: var(--sl-color-white);
87
+ }
87
88
 
88
- :global([data-theme='light']) [aria-expanded='true'] button {
89
- background-color: var(--sl-color-gray-5);
89
+ :global([data-theme='light']) [aria-expanded='true'] button {
90
+ background-color: var(--sl-color-gray-5);
91
+ }
90
92
  }
91
93
  </style>
92
94
 
93
95
  <style is:global>
94
- [data-mobile-menu-expanded] {
95
- overflow: hidden;
96
- }
97
-
98
- @media (min-width: 50rem) {
96
+ @layer starlight.core {
99
97
  [data-mobile-menu-expanded] {
100
- overflow: auto;
98
+ overflow: hidden;
99
+ }
100
+
101
+ @media (min-width: 50rem) {
102
+ [data-mobile-menu-expanded] {
103
+ overflow: auto;
104
+ }
101
105
  }
102
106
  }
103
107
  </style>
@@ -27,82 +27,84 @@ const { toc } = Astro.locals.starlightRoute;
27
27
  }
28
28
 
29
29
  <style>
30
- nav {
31
- position: fixed;
32
- z-index: var(--sl-z-index-toc);
33
- top: calc(var(--sl-nav-height) - 1px);
34
- inset-inline: 0;
35
- border-top: 1px solid var(--sl-color-gray-5);
36
- background-color: var(--sl-color-bg-nav);
37
- }
38
- @media (min-width: 50rem) {
30
+ @layer starlight.core {
39
31
  nav {
40
- inset-inline-start: var(--sl-content-inline-start, 0);
32
+ position: fixed;
33
+ z-index: var(--sl-z-index-toc);
34
+ top: calc(var(--sl-nav-height) - 1px);
35
+ inset-inline: 0;
36
+ border-top: 1px solid var(--sl-color-gray-5);
37
+ background-color: var(--sl-color-bg-nav);
38
+ }
39
+ @media (min-width: 50rem) {
40
+ nav {
41
+ inset-inline-start: var(--sl-content-inline-start, 0);
42
+ }
41
43
  }
42
- }
43
44
 
44
- summary {
45
- gap: 0.5rem;
46
- align-items: center;
47
- height: var(--sl-mobile-toc-height);
48
- border-bottom: 1px solid var(--sl-color-hairline-shade);
49
- padding: 0.5rem 1rem;
50
- font-size: var(--sl-text-xs);
51
- outline-offset: var(--sl-outline-offset-inside);
52
- }
53
- summary::marker,
54
- summary::-webkit-details-marker {
55
- display: none;
56
- }
45
+ summary {
46
+ gap: 0.5rem;
47
+ align-items: center;
48
+ height: var(--sl-mobile-toc-height);
49
+ border-bottom: 1px solid var(--sl-color-hairline-shade);
50
+ padding: 0.5rem 1rem;
51
+ font-size: var(--sl-text-xs);
52
+ outline-offset: var(--sl-outline-offset-inside);
53
+ }
54
+ summary::marker,
55
+ summary::-webkit-details-marker {
56
+ display: none;
57
+ }
57
58
 
58
- .toggle {
59
- flex-shrink: 0;
60
- gap: 1rem;
61
- align-items: center;
62
- justify-content: space-between;
63
- border: 1px solid var(--sl-color-gray-5);
64
- border-radius: 0.5rem;
65
- padding-block: 0.5rem;
66
- padding-inline-start: 0.75rem;
67
- padding-inline-end: 0.5rem;
68
- line-height: 1;
69
- background-color: var(--sl-color-black);
70
- user-select: none;
71
- cursor: pointer;
72
- }
73
- details[open] .toggle {
74
- color: var(--sl-color-white);
75
- border-color: var(--sl-color-accent);
76
- }
77
- details .toggle:hover {
78
- color: var(--sl-color-white);
79
- border-color: var(--sl-color-gray-2);
80
- }
59
+ .toggle {
60
+ flex-shrink: 0;
61
+ gap: 1rem;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ border: 1px solid var(--sl-color-gray-5);
65
+ border-radius: 0.5rem;
66
+ padding-block: 0.5rem;
67
+ padding-inline-start: 0.75rem;
68
+ padding-inline-end: 0.5rem;
69
+ line-height: 1;
70
+ background-color: var(--sl-color-black);
71
+ user-select: none;
72
+ cursor: pointer;
73
+ }
74
+ details[open] .toggle {
75
+ color: var(--sl-color-white);
76
+ border-color: var(--sl-color-accent);
77
+ }
78
+ details .toggle:hover {
79
+ color: var(--sl-color-white);
80
+ border-color: var(--sl-color-gray-2);
81
+ }
81
82
 
82
- :global([dir='rtl']) .caret {
83
- transform: rotateZ(180deg);
84
- }
85
- details[open] .caret {
86
- transform: rotateZ(90deg);
87
- }
83
+ :global([dir='rtl']) .caret {
84
+ transform: rotateZ(180deg);
85
+ }
86
+ details[open] .caret {
87
+ transform: rotateZ(90deg);
88
+ }
88
89
 
89
- .display-current {
90
- white-space: nowrap;
91
- text-overflow: ellipsis;
92
- overflow: hidden;
93
- color: var(--sl-color-white);
94
- }
90
+ .display-current {
91
+ white-space: nowrap;
92
+ text-overflow: ellipsis;
93
+ overflow: hidden;
94
+ color: var(--sl-color-white);
95
+ }
95
96
 
96
- .dropdown {
97
- --border-top: 1px;
98
- margin-top: calc(-1 * var(--border-top));
99
- border: var(--border-top) solid var(--sl-color-gray-6);
100
- border-top-color: var(--sl-color-hairline-shade);
101
- max-height: calc(85vh - var(--sl-nav-height) - var(--sl-mobile-toc-height));
102
- overflow-y: auto;
103
- background-color: var(--sl-color-black);
104
- box-shadow: var(--sl-shadow-md);
105
- overscroll-behavior: contain;
97
+ .dropdown {
98
+ --border-top: 1px;
99
+ margin-top: calc(-1 * var(--border-top));
100
+ border: var(--border-top) solid var(--sl-color-gray-6);
101
+ border-top-color: var(--sl-color-hairline-shade);
102
+ max-height: calc(85vh - var(--sl-nav-height) - var(--sl-mobile-toc-height));
103
+ overflow-y: auto;
104
+ background-color: var(--sl-color-black);
105
+ box-shadow: var(--sl-shadow-md);
106
+ overscroll-behavior: contain;
107
+ }
106
108
  }
107
109
  </style>
108
110
 
@@ -1,11 +1,17 @@
1
1
  ---
2
+ // Important that this is the first import so it can override cascade layers order.
3
+ import 'virtual:starlight/user-css';
4
+
5
+ // Starlight nested cascade layers definitions which specify the default order of internal layers.
6
+ import '../style/layers.css';
7
+
2
8
  // Built-in CSS styles.
3
9
  import '../style/props.css';
4
10
  import '../style/reset.css';
5
- import '../style/shiki.css';
11
+ import '../style/asides.css';
6
12
  import '../style/util.css';
13
+ import 'virtual:starlight/optional-css';
7
14
 
8
- // Components — can override built-in CSS, but not user CSS.
9
15
  import Banner from 'virtual:starlight/components/Banner';
10
16
  import ContentPanel from 'virtual:starlight/components/ContentPanel';
11
17
  import FallbackContentNotice from 'virtual:starlight/components/FallbackContentNotice';
@@ -23,12 +29,6 @@ import SkipLink from 'virtual:starlight/components/SkipLink';
23
29
  import ThemeProvider from 'virtual:starlight/components/ThemeProvider';
24
30
  import TwoColumnContent from 'virtual:starlight/components/TwoColumnContent';
25
31
 
26
- // Remark component CSS (needs to override `MarkdownContent.astro`)
27
- import '../style/asides.css';
28
-
29
- // Important that this is the last import so it can override built-in styles.
30
- import 'virtual:starlight/user-css';
31
-
32
32
  import printHref from '../style/print.css?url&no-inline';
33
33
 
34
34
  const { starlightRoute } = Astro.locals;
@@ -22,72 +22,76 @@ const { hasSidebar } = Astro.locals.starlightRoute;
22
22
  </div>
23
23
 
24
24
  <style>
25
- .page {
26
- flex-direction: column;
27
- min-height: 100vh;
28
- }
29
-
30
- .header {
31
- z-index: var(--sl-z-index-navbar);
32
- position: fixed;
33
- inset-inline-start: 0;
34
- inset-block-start: 0;
35
- width: 100%;
36
- height: var(--sl-nav-height);
37
- border-bottom: 1px solid var(--sl-color-hairline-shade);
38
- padding: var(--sl-nav-pad-y) var(--sl-nav-pad-x);
39
- padding-inline-end: var(--sl-nav-pad-x);
40
- background-color: var(--sl-color-bg-nav);
41
- }
25
+ @layer starlight.core {
26
+ .page {
27
+ flex-direction: column;
28
+ min-height: 100vh;
29
+ }
42
30
 
43
- :global([data-has-sidebar]) .header {
44
- padding-inline-end: calc(var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size));
45
- }
31
+ .header {
32
+ z-index: var(--sl-z-index-navbar);
33
+ position: fixed;
34
+ inset-inline-start: 0;
35
+ inset-block-start: 0;
36
+ width: 100%;
37
+ height: var(--sl-nav-height);
38
+ border-bottom: 1px solid var(--sl-color-hairline-shade);
39
+ padding: var(--sl-nav-pad-y) var(--sl-nav-pad-x);
40
+ padding-inline-end: var(--sl-nav-pad-x);
41
+ background-color: var(--sl-color-bg-nav);
42
+ }
46
43
 
47
- .sidebar-pane {
48
- visibility: var(--sl-sidebar-visibility, hidden);
49
- position: fixed;
50
- z-index: var(--sl-z-index-menu);
51
- inset-block: var(--sl-nav-height) 0;
52
- inset-inline-start: 0;
53
- width: 100%;
54
- background-color: var(--sl-color-black);
55
- overflow-y: auto;
56
- }
44
+ :global([data-has-sidebar]) .header {
45
+ padding-inline-end: calc(
46
+ var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size)
47
+ );
48
+ }
57
49
 
58
- :global([aria-expanded='true']) ~ .sidebar-pane {
59
- --sl-sidebar-visibility: visible;
60
- }
50
+ .sidebar-pane {
51
+ visibility: var(--sl-sidebar-visibility, hidden);
52
+ position: fixed;
53
+ z-index: var(--sl-z-index-menu);
54
+ inset-block: var(--sl-nav-height) 0;
55
+ inset-inline-start: 0;
56
+ width: 100%;
57
+ background-color: var(--sl-color-black);
58
+ overflow-y: auto;
59
+ }
61
60
 
62
- .sidebar-content {
63
- height: 100%;
64
- min-height: max-content;
65
- padding: 1rem var(--sl-sidebar-pad-x) 0;
66
- flex-direction: column;
67
- gap: 1rem;
68
- }
61
+ :global([aria-expanded='true']) ~ .sidebar-pane {
62
+ --sl-sidebar-visibility: visible;
63
+ }
69
64
 
70
- @media (min-width: 50rem) {
71
- .sidebar-content::after {
72
- content: '';
73
- padding-bottom: 1px;
65
+ .sidebar-content {
66
+ height: 100%;
67
+ min-height: max-content;
68
+ padding: 1rem var(--sl-sidebar-pad-x) 0;
69
+ flex-direction: column;
70
+ gap: 1rem;
74
71
  }
75
- }
76
72
 
77
- .main-frame {
78
- padding-top: calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));
79
- padding-inline-start: var(--sl-content-inline-start);
80
- }
73
+ @media (min-width: 50rem) {
74
+ .sidebar-content::after {
75
+ content: '';
76
+ padding-bottom: 1px;
77
+ }
78
+ }
81
79
 
82
- @media (min-width: 50rem) {
83
- :global([data-has-sidebar]) .header {
84
- padding-inline-end: var(--sl-nav-pad-x);
80
+ .main-frame {
81
+ padding-top: calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));
82
+ padding-inline-start: var(--sl-content-inline-start);
85
83
  }
86
- .sidebar-pane {
87
- --sl-sidebar-visibility: visible;
88
- width: var(--sl-sidebar-width);
89
- background-color: var(--sl-color-bg-sidebar);
90
- border-inline-end: 1px solid var(--sl-color-hairline-shade);
84
+
85
+ @media (min-width: 50rem) {
86
+ :global([data-has-sidebar]) .header {
87
+ padding-inline-end: var(--sl-nav-pad-x);
88
+ }
89
+ .sidebar-pane {
90
+ --sl-sidebar-visibility: visible;
91
+ width: var(--sl-sidebar-width);
92
+ background-color: var(--sl-color-bg-sidebar);
93
+ border-inline-end: 1px solid var(--sl-color-hairline-shade);
94
+ }
91
95
  }
92
96
  }
93
97
  </style>
@@ -19,39 +19,41 @@ import TableOfContents from 'virtual:starlight/components/TableOfContents';
19
19
  }
20
20
 
21
21
  <style>
22
- .right-sidebar-panel {
23
- padding: 1rem var(--sl-sidebar-pad-x);
24
- }
25
- .sl-container {
26
- width: calc(var(--sl-sidebar-width) - 2 * var(--sl-sidebar-pad-x));
27
- }
28
- .right-sidebar-panel :global(h2) {
29
- color: var(--sl-color-white);
30
- font-size: var(--sl-text-h5);
31
- font-weight: 600;
32
- line-height: var(--sl-line-height-headings);
33
- margin-bottom: 0.5rem;
34
- }
35
- .right-sidebar-panel :global(:where(a)) {
36
- display: block;
37
- font-size: var(--sl-text-xs);
38
- text-decoration: none;
39
- color: var(--sl-color-gray-3);
40
- overflow-wrap: anywhere;
41
- }
42
- .right-sidebar-panel :global(:where(a):hover) {
43
- color: var(--sl-color-white);
44
- }
45
- @media (min-width: 72rem) {
22
+ @layer starlight.core {
23
+ .right-sidebar-panel {
24
+ padding: 1rem var(--sl-sidebar-pad-x);
25
+ }
46
26
  .sl-container {
47
- max-width: calc(
48
- (
27
+ width: calc(var(--sl-sidebar-width) - 2 * var(--sl-sidebar-pad-x));
28
+ }
29
+ .right-sidebar-panel :global(h2) {
30
+ color: var(--sl-color-white);
31
+ font-size: var(--sl-text-h5);
32
+ font-weight: 600;
33
+ line-height: var(--sl-line-height-headings);
34
+ margin-bottom: 0.5rem;
35
+ }
36
+ .right-sidebar-panel :global(:where(a)) {
37
+ display: block;
38
+ font-size: var(--sl-text-xs);
39
+ text-decoration: none;
40
+ color: var(--sl-color-gray-3);
41
+ overflow-wrap: anywhere;
42
+ }
43
+ .right-sidebar-panel :global(:where(a):hover) {
44
+ color: var(--sl-color-white);
45
+ }
46
+ @media (min-width: 72rem) {
47
+ .sl-container {
48
+ max-width: calc(
49
49
  (
50
- 100vw - var(--sl-sidebar-width) - 2 * var(--sl-content-pad-x) - 2 *
51
- var(--sl-sidebar-pad-x)
52
- ) * 0.25 /* MAGIC NUMBER 🥲 */
53
- )
54
- );
50
+ (
51
+ 100vw - var(--sl-sidebar-width) - 2 * var(--sl-content-pad-x) - 2 *
52
+ var(--sl-sidebar-pad-x)
53
+ ) * 0.25 /* MAGIC NUMBER 🥲 */
54
+ )
55
+ );
56
+ }
55
57
  }
56
58
  }
57
59
  </style>
@@ -5,11 +5,13 @@ import { PAGE_TITLE_ID } from '../constants';
5
5
  <h1 id={PAGE_TITLE_ID}>{Astro.locals.starlightRoute.entry.data.title}</h1>
6
6
 
7
7
  <style>
8
- h1 {
9
- margin-top: 1rem;
10
- font-size: var(--sl-text-h1);
11
- line-height: var(--sl-line-height-headings);
12
- font-weight: 600;
13
- color: var(--sl-color-white);
8
+ @layer starlight.core {
9
+ h1 {
10
+ margin-top: 1rem;
11
+ font-size: var(--sl-text-h1);
12
+ line-height: var(--sl-line-height-headings);
13
+ font-weight: 600;
14
+ color: var(--sl-color-white);
15
+ }
14
16
  }
15
17
  </style>
@@ -34,44 +34,46 @@ const isRtl = dir === 'rtl';
34
34
  </div>
35
35
 
36
36
  <style>
37
- .pagination-links {
38
- display: grid;
39
- grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
40
- gap: 1rem;
41
- }
37
+ @layer starlight.core {
38
+ .pagination-links {
39
+ display: grid;
40
+ grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
41
+ gap: 1rem;
42
+ }
42
43
 
43
- a {
44
- display: flex;
45
- align-items: center;
46
- justify-content: flex-start;
47
- gap: 0.5rem;
48
- width: 100%;
49
- flex-basis: calc(50% - 0.5rem);
50
- flex-grow: 1;
51
- border: 1px solid var(--sl-color-gray-5);
52
- border-radius: 0.5rem;
53
- padding: 1rem;
54
- text-decoration: none;
55
- color: var(--sl-color-gray-2);
56
- box-shadow: var(--sl-shadow-md);
57
- overflow-wrap: anywhere;
58
- }
59
- [rel='next'] {
60
- justify-content: end;
61
- text-align: end;
62
- flex-direction: row-reverse;
63
- }
64
- a:hover {
65
- border-color: var(--sl-color-gray-2);
66
- }
44
+ a {
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: flex-start;
48
+ gap: 0.5rem;
49
+ width: 100%;
50
+ flex-basis: calc(50% - 0.5rem);
51
+ flex-grow: 1;
52
+ border: 1px solid var(--sl-color-gray-5);
53
+ border-radius: 0.5rem;
54
+ padding: 1rem;
55
+ text-decoration: none;
56
+ color: var(--sl-color-gray-2);
57
+ box-shadow: var(--sl-shadow-md);
58
+ overflow-wrap: anywhere;
59
+ }
60
+ [rel='next'] {
61
+ justify-content: end;
62
+ text-align: end;
63
+ flex-direction: row-reverse;
64
+ }
65
+ a:hover {
66
+ border-color: var(--sl-color-gray-2);
67
+ }
67
68
 
68
- .link-title {
69
- color: var(--sl-color-white);
70
- font-size: var(--sl-text-2xl);
71
- line-height: var(--sl-line-height-headings);
72
- }
69
+ .link-title {
70
+ color: var(--sl-color-white);
71
+ font-size: var(--sl-text-2xl);
72
+ line-height: var(--sl-line-height-headings);
73
+ }
73
74
 
74
- svg {
75
- flex-shrink: 0;
75
+ svg {
76
+ flex-shrink: 0;
77
+ }
76
78
  }
77
79
  </style>