11---
2- import Default from " @astrojs/starlight/components/Footer.astro" ;
32import { Icon } from " @astrojs/starlight/components" ;
43import type { StarlightIcon } from " @astrojs/starlight/types" ;
4+ import EditLink from " @astrojs/starlight/components/EditLink.astro" ;
5+ import LastUpdated from " @astrojs/starlight/components/LastUpdated.astro" ;
6+ import Pagination from " @astrojs/starlight/components/Pagination.astro" ;
57
68import OneTrust from " ../OneTrust.astro" ;
79import FeedbackPrompt from " ../FeedbackPrompt.tsx" ;
8284}
8385---
8486
85- {
86- ! homepage && showFeedback && (
87- <div class = " feedback-prompt" >
88- <FeedbackPrompt client :idle />
87+ <footer class =" sl-flex" >
88+ <div class =" custom-footer-section w-full" >
89+ <div class =" grid grid-cols-2 gap-8 pt-6 pb-10 lg:grid-cols-5" >
90+ {
91+ groups .map (([title , items ]) => (
92+ <ul class = " flex w-full list-none flex-col gap-3 pl-0" >
93+ <li class = " text-xs leading-5" >
94+ <strong >{ title } </strong >
95+ </li >
96+ { items .map ((link ) => (
97+ <li class = " text-sm" >
98+ <a
99+ href = { link .href }
100+ class = " flex items-center gap-2 text-black! no-underline"
101+ >
102+ { " icon" in link && <Icon name = { link .icon as StarlightIcon } />}
103+ { link .text }
104+ </a >
105+ </li >
106+ ))}
107+ </ul >
108+ ))
109+ }
89110 </div >
90- )
91- }
92- { ! splash && <Default />}
93- <div class =" w-full" >
94- <div class =" grid grid-cols-2 gap-8 pt-6 pb-10 lg:grid-cols-5" >
95- {
96- groups .map (([title , items ]) => (
97- <ul class = " flex w-full list-none flex-col gap-3 pl-0" >
98- <li class = " text-xs leading-5" >
99- <strong >{ title } </strong >
100- </li >
101- { items .map ((link ) => (
102- <li class = " text-sm" >
111+ <div >
112+ <ul
113+ class =" text-cl1-gray-4! dark:text-cl1-gray-7! flex list-inside flex-wrap items-center justify-center gap-3 gap-y-4 pl-0 text-xs"
114+ >
115+ <li class =" list-none" >© 2026 Cloudflare, Inc.</li >
116+ {
117+ links .map (([text , href ]) => (
118+ <li >
103119 <a
104- href = { link . href }
105- class = " flex items-center gap-2 text-black ! no-underline"
120+ href = { href }
121+ class = " text-cl1-gray-4! dark: text-cl1-gray-7 ! no-underline"
106122 >
107- { " icon" in link && <Icon name = { link .icon as StarlightIcon } />}
108- { link .text }
123+ { text }
109124 </a >
110125 </li >
111- ))}
112- </ul >
113- ))
114- }
115- </div >
116- <div >
117- <ul
118- class =" text-cl1-gray-4! dark:text-cl1-gray-7! flex list-inside flex-wrap items-center justify-center gap-3 gap-y-4 pl-0 text-xs"
119- >
120- <li class =" list-none" >© 2026 Cloudflare, Inc.</li >
121- {
122- links .map (([text , href ]) => (
123- <li >
124- <a
125- href = { href }
126- class = " text-cl1-gray-4! dark:text-cl1-gray-7! no-underline"
127- >
128- { text }
129- </a >
130- </li >
131- ))
132- }
133- {
134- isProduction && (
135- <li >
136- <OneTrust />
137- </li >
138- )
139- }
140- </ul >
126+ ))
127+ }
128+ {
129+ isProduction && (
130+ <li >
131+ <OneTrust />
132+ </li >
133+ )
134+ }
135+ </ul >
136+ </div >
141137 </div >
142- </div >
143138
144- <style >
145- :global(footer:not(.DocSearch-Footer)) {
146- flex-direction: column-reverse !important;
139+ {
140+ ! splash && (
141+ <div class = " starlight-footer-section" >
142+ <Pagination />
143+ <div class = " meta sl-flex" >
144+ <EditLink />
145+ <LastUpdated />
146+ </div >
147+ </div >
148+ )
147149 }
148150
149- :global(footer) {
150- .meta {
151- margin-top: 0 !important;
152- }
151+ {
152+ ! homepage && showFeedback && (
153+ <div class = " feedback-prompt" >
154+ <FeedbackPrompt client :idle />
155+ </div >
156+ )
157+ }
158+ </footer >
159+
160+ <style >
161+ footer {
162+ flex-direction: column-reverse !important;
153163 }
154164
155165 .feedback-prompt {
166+ padding-top: 2rem;
167+ margin-bottom: 2rem;
168+
156169 h2 {
157170 color: var(--sl-color-white);
158171 font-size: var(--sl-text-h5);
@@ -162,6 +175,23 @@ if (
162175 }
163176 }
164177
178+ .starlight-footer-section {
179+ padding-bottom: 2rem;
180+
181+ .meta {
182+ margin-top: 2em;
183+ gap: 0.75rem 3rem;
184+ justify-content: space-between;
185+ flex-wrap: wrap;
186+ font-size: var(--sl-text-sm);
187+ color: var(--sl-color-gray-3);
188+ }
189+ }
190+
191+ .custom-footer-section {
192+ padding-top: 2rem;
193+ }
194+
165195 @media (min-width: 72rem) {
166196 html[data-has-toc] {
167197 .feedback-prompt {
0 commit comments