Skip to content

Commit 2ced51d

Browse files
EbonsignoriCopilot
andauthored
Add @primer/react-brand foundation and migrate Pagination (#62080)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 8778eca commit 2ced51d

8 files changed

Lines changed: 66 additions & 12 deletions

File tree

next.config.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ const { data } = frontmatter(fs.readFileSync(homepage, 'utf8'))
1212
const productIds = data.children as string[]
1313

1414
const config: NextConfig = {
15-
// Transpile @primer/react so Next's webpack can process its CSS and other assets
16-
// This ensures CSS in node_modules/@primer/react is handled by the app's loaders.
17-
transpilePackages: ['@primer/react'],
15+
// Transpile @primer/react and @primer/react-brand so Next's webpack can process their
16+
// CSS and other assets. This ensures CSS from these node_modules packages is handled by
17+
// the app's loaders.
18+
transpilePackages: ['@primer/react', '@primer/react-brand'],
1819
// Keep OTel packages out of the Next.js server bundle.
1920
// They must be loaded via native require() for auto-instrumentation to work.
2021
serverExternalPackages: [

package-lock.json

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@
191191
"@primer/octicons-react": "^19.22.0",
192192
"@primer/primitives": "^11.3.1",
193193
"@primer/react": "^38.13.0",
194+
"@primer/react-brand": "^0.70.0",
194195
"accept-language-parser": "^1.5.0",
195196
"ajv": "^8.18.0",
196197
"ajv-errors": "^3.0.0",

src/frame/pages/app.tsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import App from 'next/app'
33
import type { AppProps, AppContext } from 'next/app'
44
import Head from 'next/head'
55
import { ThemeProvider } from '@primer/react'
6+
import { ThemeProvider as BrandThemeProvider } from '@primer/react-brand'
67
import { useRouter } from 'next/router'
78

89
import { initializeEvents } from '@/events/components/events'
@@ -111,12 +112,22 @@ const MyApp = ({ Component, pageProps, languagesContext, stagingName }: MyAppPro
111112
dayScheme={theme.component.dayScheme}
112113
nightScheme={theme.component.nightScheme}
113114
>
114-
<LanguagesContext.Provider value={languagesContext}>
115-
<SharedUIContextProvider>
116-
<ClientSideHashFocus />
117-
<Component {...pageProps} />
118-
</SharedUIContextProvider>
119-
</LanguagesContext.Provider>
115+
{/*
116+
Primer Brand ThemeProvider, nested so migrated @primer/react-brand
117+
components receive brand theme context during the Docs 2026 migration
118+
(github/docs-engineering#5879). Runs alongside the @primer/react
119+
ThemeProvider above while the component-by-component swap is in progress.
120+
Brand expects a CSS color mode ('auto' | 'light' | 'dark'), so pass
121+
theme.css.colorMode rather than the component ('auto' | 'day' | 'night') mode.
122+
*/}
123+
<BrandThemeProvider colorMode={theme.css.colorMode}>
124+
<LanguagesContext.Provider value={languagesContext}>
125+
<SharedUIContextProvider>
126+
<ClientSideHashFocus />
127+
<Component {...pageProps} />
128+
</SharedUIContextProvider>
129+
</LanguagesContext.Provider>
130+
</BrandThemeProvider>
120131
</ThemeProvider>
121132
</>
122133
)

src/frame/stylesheets/index.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
@import "@primer/css/alerts/index.scss";
99
@import "@primer/css/popover/index.scss";
1010

11+
// Primer Brand design system (Docs 2026 migration — github/docs-engineering#5879).
12+
// Loaded alongside @primer/css during the incremental component-by-component swap.
13+
@import "@primer/react-brand/lib/css/main.css";
14+
1115
@import "headings.scss";
1216
@import "scroll-top.scss";
1317
@import "utilities.scss";

src/landings/components/shared/LandingArticleGridWithFilter.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useState, useRef, useEffect, useMemo } from 'react'
2-
import { TextInput, ActionMenu, ActionList, Token, Pagination } from '@primer/react'
2+
import { TextInput, ActionMenu, ActionList, Token } from '@primer/react'
3+
import { Pagination } from '@primer/react-brand'
34
import { SearchIcon } from '@primer/octicons-react'
45
import { announce } from '@primer/live-region-element'
56
import cx from 'classnames'

src/search/components/results/SearchResults.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Pagination } from '@primer/react'
1+
import { Pagination } from '@primer/react-brand'
22
import { SearchIcon } from '@primer/octicons-react'
33
import { useRouter } from 'next/router'
44
import React, { useEffect, useRef, useState } from 'react'

src/secret-scanning/components/SecretScanningTable.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react'
22
import { DataTable, Table } from '@primer/react/experimental'
3-
import { TextInput, ActionMenu, ActionList, Pagination, Button } from '@primer/react'
3+
import { TextInput, ActionMenu, ActionList, Button } from '@primer/react'
4+
import { Pagination } from '@primer/react-brand'
45
import debounce from 'lodash/debounce'
56
import { useTranslation } from '@/languages/components/useTranslation'
67
import { sendEvent } from '@/events/components/events'

0 commit comments

Comments
 (0)