1- import React , { ReactNode } from "react" ;
1+ import React from "react" ;
22import ReactDOM from "react-dom/client" ;
33import {
44 Route ,
55 RouterProvider ,
66 createBrowserRouter ,
77 createRoutesFromElements ,
88} from "react-router-dom" ;
9-
109import "@abgov/web-components" ;
1110
1211import Root from "@routes/root" ;
13- import { useMediaQuery } from "@hooks/useMediaQuery" ;
14- import { DeviceWidthContext } from "@contexts/DeviceWidthContext" ;
12+ import { DeviceWidthProvider } from "@contexts/DeviceWidthContext" ;
1513import "./index.css" ;
1614
1715// Support
1816
1917import HomePage from "@routes/home" ;
2018
21- // Components
22-
23- import ComponentsPage from "@routes/components/Components" ;
24-
25- import AllComponentsPage from "@routes/components/AllComponents" ;
26- import AccordionPage from "@routes/components/Accordion.tsx" ;
27- import BadgePage from "@routes/components/Badge" ;
28- import BlockPage from "@routes/components/Block" ;
29- import ButtonGroupPage from "@routes/components/ButtonGroup" ;
30- import ButtonPage from "@routes/components/Button" ;
31- import CalloutPage from "@routes/components/Callout" ;
32- import CheckboxPage from "@routes/components/Checkbox" ;
33- import ComponentNotFoundPage from "@routes/not-found/NotFound" ;
34- import ContainerPage from "@routes/components/Container" ;
35- import DatePickerPage from "@routes/components/DatePicker" ;
36- import DetailsPage from "@routes/components/Details" ;
37- import DividerPage from "@routes/components/Divider" ;
38- import DropdownPage from "@routes/components/Dropdown" ;
39- import FileUploaderPage from "@routes/components/FileUploader" ;
40- import FilterChipPage from "@routes/components/FilterChip" ;
41- import FormItemPage from "@routes/components/FormItemPage.tsx" ;
42- import FormStepperPage from "@routes/components/FormStepper" ;
43- import GridPage from "@routes/components/Grid" ;
44- import HeroBannerPage from "@routes/components/HeroBanner" ;
45- import IconsPage from "@routes/components/Icons" ;
46- import IconButtonPage from "@routes/components/IconButton" ;
47- import ListPage from "@routes/components/List" ;
48- import ModalPage from "@routes/components/Modal" ;
49- import NotificationBannerPage from "@routes/components/Notificationbanner" ;
50- import PaginationPage from "@routes/components/Pagination" ;
51- import PopoverPage from "@routes/components/Popover" ;
52- import ProgressIndicatorPage from "@routes/components/ProgressIndicator" ;
53- import RadioPage from "@routes/components/Radio" ;
54- import SkeletonPage from "@routes/components/Skeleton.tsx" ;
55- import SpacerPage from "@routes/components/Spacer" ;
56- import TablePage from "@routes/components/Table" ;
57- import TabsPage from "@routes/components/Tabs.tsx" ;
58- import TooltipPage from "@routes/components/Tooltip" ;
59- import TextFieldPage from "@routes/components/TextField" ;
60- import TextAreaPage from "@routes/components/TextArea" ;
61- import MicrositeHeaderPage from "@routes/components/MicrositeHeader" ;
62- import AppHeaderPage from "@routes/components/AppHeader" ;
63- import AppFooterPage from "@routes/components/AppFooter" ;
64- import SideMenuPage from "@routes/components/SideMenu" ;
65-
6619// Design Tokens
6720
6821import DesignTokensOverviewPage from "@routes/design-tokens/overview/Overview" ;
@@ -103,88 +56,18 @@ import ErrorMessagesPage from "@routes/content/ErrorMessages";
10356import HelperTextPage from "@routes/content/HelperText" ;
10457import UserExperienceGuidelinesPage from "@routes/get-started/UserExperienceGuidelines" ;
10558
106- // Patterns Pages
107-
108- import PatternsLayout from "@routes/patterns/PatternsLayout" ;
109- import LayoutPage from "@routes/patterns/LayoutPage" ;
110- import PatternsOverviewPage from "@routes/patterns/PatternsOverview" ;
111- import SimpleFormPage from "@routes/patterns/SimpleFormPage" ;
112- import StartPage from "@routes/patterns/StartPage" ;
113- import TaskListPage from "@routes/patterns/TaskListPage" ;
114- import QuestionPage from "@routes/patterns/QuestionPage" ;
115- import ReviewPage from "@routes/patterns/ReviewPage" ;
116- import ResultPage from "@routes/patterns/ResultPage" ;
117-
118- interface DeviceWidthProviderProps {
119- children : ReactNode ;
120- }
121-
122- const DeviceWidthProvider : React . FC < DeviceWidthProviderProps > = ( { children } ) => {
123- const isDesktop = useMediaQuery ( "(min-width: 1232px)" ) ;
124- const isMobile = useMediaQuery ( "(max-width: 623px)" ) ;
125-
126- return (
127- < DeviceWidthContext . Provider value = { { isDesktop, isMobile } } >
128- { children }
129- </ DeviceWidthContext . Provider >
130- ) ;
131- } ;
59+ import { VersionFromUrlProvider } from "@contexts/VersionFromUrlContext.tsx" ;
60+ import { ComponentsRouter , PatternsRouter } from "./versioned-router" ;
61+ import ComponentNotFound from "@routes/not-found/NotFound.tsx" ;
62+ import { LanguageVersionProvider } from "@contexts/LanguageVersionContext.tsx" ;
63+ import DevelopersUpgradePage from "@routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx" ;
13264
13365const router = createBrowserRouter (
13466 createRoutesFromElements (
13567 < Route path = "/" element = { < Root /> } >
13668 < Route path = "/" element = { < HomePage /> } />
137- < Route
138- path = "components"
139- element = { < ComponentsPage /> }
140- errorElement = { < ComponentNotFoundPage /> } >
141- < Route index element = { < AllComponentsPage /> } />
142- < Route path = "accordion" element = { < AccordionPage /> } />
143- < Route path = "header" element = { < AppHeaderPage /> } />
144- < Route path = "footer" element = { < AppFooterPage /> } />
145- < Route path = "badge" element = { < BadgePage /> } />
146- < Route path = "block" element = { < BlockPage /> } />
147- < Route path = "button" element = { < ButtonPage /> } />
148- < Route path = "button-group" element = { < ButtonGroupPage /> } />
149- < Route path = "callout" element = { < CalloutPage /> } />
150- < Route path = "checkbox" element = { < CheckboxPage /> } />
151- < Route path = "container" element = { < ContainerPage /> } />
152- < Route path = "date-picker" element = { < DatePickerPage /> } />
153- < Route path = "details" element = { < DetailsPage /> } />
154- < Route path = "divider" element = { < DividerPage /> } />
155- < Route path = "dropdown" element = { < DropdownPage /> } />
156- < Route path = "file-uploader" element = { < FileUploaderPage /> } />
157- < Route path = "filter-chip" element = { < FilterChipPage /> } />
158- < Route path = "form-item" element = { < FormItemPage /> } />
159- < Route path = "form-stepper" element = { < FormStepperPage /> } />
160- < Route path = "grid" element = { < GridPage /> } />
161- < Route path = "hero-banner" element = { < HeroBannerPage /> } />
162- < Route path = "icons" element = { < IconsPage /> } />
163- < Route path = "icon-button" element = { < IconButtonPage /> } />
164- < Route path = "input" element = { < TextFieldPage /> } />
165- < Route path = "list" element = { < ListPage /> } />
166- < Route path = "microsite-header" element = { < MicrositeHeaderPage /> } />
167- < Route path = "modal" element = { < ModalPage /> } />
168- < Route path = "notification-banner" element = { < NotificationBannerPage /> } />
169- < Route path = "pagination" element = { < PaginationPage /> } />
170- < Route path = "popover" element = { < PopoverPage /> } />
171- < Route path = "progress-indicator" element = { < ProgressIndicatorPage /> } />
172- < Route path = "radio" element = { < RadioPage /> } />
173- < Route path = "side-menu" element = { < SideMenuPage /> } />
174- < Route path = "skeleton-loader" element = { < SkeletonPage /> } />
175- < Route path = "spacer" element = { < SpacerPage /> } />
176- < Route path = "table" element = { < TablePage /> } />
177- < Route path = "tabs" element = { < TabsPage /> } />
178- < Route path = "text-area" element = { < TextAreaPage /> } />
179- < Route path = "tooltip" element = { < TooltipPage /> } />
180- < Route path = "text-field" element = { < TextFieldPage /> } />
181- < Route path = "*" element = { < ComponentNotFoundPage /> } />
182- </ Route >
183-
184- < Route
185- path = "design-tokens"
186- element = { < DesignTokens /> }
187- errorElement = { < ComponentNotFoundPage /> } >
69+ < Route path = "/components/*" element = { < ComponentsRouter /> } > </ Route >
70+ < Route path = "design-tokens" element = { < DesignTokens /> } errorElement = { < ComponentNotFound /> } >
18871 < Route index element = { < DesignTokensOverviewPage /> } />
18972 < Route path = "border-width" element = { < BorderWidthPage /> } />
19073 < Route path = "border-radius" element = { < BorderRadiusPage /> } />
@@ -208,6 +91,7 @@ const router = createBrowserRouter(
20891 < Route path = "technologies" element = { < DevelopersTechnologiesPage /> } />
20992 < Route path = "vscode" element = { < DevelopersVSCodePage /> } />
21093 < Route path = "bug" element = { < BugVerificationPage /> } />
94+ < Route path = "update" element = { < DevelopersUpgradePage /> } />
21195 </ Route >
21296 < Route path = "qa-testing" >
21397 < Route index element = { < QATestingOverviewPage /> } />
@@ -233,24 +117,19 @@ const router = createBrowserRouter(
233117 < Route path = "helper-text" element = { < HelperTextPage /> } />
234118 </ Route >
235119
236- < Route path = "patterns" element = { < PatternsLayout /> } errorElement = { < ComponentNotFoundPage /> } >
237- < Route index element = { < PatternsOverviewPage /> } />
238- < Route path = "simple-form" element = { < SimpleFormPage /> } />
239- < Route path = "layout" element = { < LayoutPage /> } />
240- < Route path = "start-page" element = { < StartPage /> } />
241- < Route path = "task-list-page" element = { < TaskListPage /> } />
242- < Route path = "question-page" element = { < QuestionPage /> } />
243- < Route path = "review-page" element = { < ReviewPage /> } />
244- < Route path = "result-page" element = { < ResultPage /> } />
245- </ Route >
120+ < Route path = "/patterns/*" element = { < PatternsRouter /> } > </ Route >
246121 </ Route >
247122 )
248123) ;
249124
250125ReactDOM . createRoot ( document . getElementById ( "root" ) as HTMLElement ) . render (
251126 < React . StrictMode >
252- < DeviceWidthProvider >
253- < RouterProvider router = { router } />
254- </ DeviceWidthProvider >
127+ < LanguageVersionProvider >
128+ < VersionFromUrlProvider >
129+ < DeviceWidthProvider >
130+ < RouterProvider router = { router } />
131+ </ DeviceWidthProvider >
132+ </ VersionFromUrlProvider >
133+ </ LanguageVersionProvider >
255134 </ React . StrictMode >
256135) ;
0 commit comments