diff --git a/package-lock.json b/package-lock.json index 8bd0b7845..ec9a94357 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,9 @@ "name": "code-sandbox", "version": "0.0.0", "dependencies": { - "@abgov/react-components": "6.3.0", - "@abgov/ui-components-common": "1.3.0", - "@abgov/web-components": "1.33.0", + "@abgov/react-components": "6.4.1", + "@abgov/ui-components-common": "1.4.0", + "@abgov/web-components": "1.34.0", "@faker-js/faker": "^8.3.1", "highlight.js": "^11.8.0", "js-cookie": "^3.0.5", @@ -67,9 +67,9 @@ } }, "node_modules/@abgov/react-components": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@abgov/react-components/-/react-components-6.3.0.tgz", - "integrity": "sha512-MxQFFHXL/WKrcG+h6cB7HpHGmgY8hgpFTMOkpLlwC9jdDpAd9lxwHLjp0TzYmYDjuwXrpC6i7lrPGaIV62sUzQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@abgov/react-components/-/react-components-6.4.1.tgz", + "integrity": "sha512-3YCtM9eIAUXOvJQ0rlMJ59a6Wuxk0I/DCrhlG38C/z46+7QBos4zaxC5PqC29j6KgfNrI15qaJbO5DS0Kq2K4Q==", "license": "Apache-2.0", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", @@ -78,15 +78,15 @@ } }, "node_modules/@abgov/ui-components-common": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@abgov/ui-components-common/-/ui-components-common-1.3.0.tgz", - "integrity": "sha512-tQhaTvjPjBMQIh0khN8kUaZFp/mwdtqYy2yIC+ehA5si4X+k6+fwt39mnnRYNis9DDAdV1+MmMuHrMC4UTIPyA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@abgov/ui-components-common/-/ui-components-common-1.4.0.tgz", + "integrity": "sha512-x/tNW8VM928emGNINp7jTFEv4tLEC4am8dpoNWPO9RqsYKyCLs4OyWgIecRctiFhYbab2WQYsZ59bAAhfVlfmw==", "license": "Apache-2.0" }, "node_modules/@abgov/web-components": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@abgov/web-components/-/web-components-1.33.0.tgz", - "integrity": "sha512-Iix6I3c6rQar3L2dBd6x+f+Q5yXoOmCXEFcFPK4RaOwIU6Y+FB86P8Se7QbUafSL/c350MSTBL2he4cvk5WRcQ==", + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@abgov/web-components/-/web-components-1.34.0.tgz", + "integrity": "sha512-tNyPJcAvP5AMPc1HtvBfn1zjv7409Cqi1OX+MbVDtqjzVLnNmGttL+Tj1itqjfiaKtAQ7vsCI+a+0ACjJS7J5g==", "license": "Apache-2.0", "peerDependencies": { "@sveltejs/vite-plugin-svelte": "3.x", diff --git a/package.json b/package.json index 04d14174b..9387cca3e 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "prettier": "npx prettier . --write" }, "dependencies": { - "@abgov/react-components": "6.3.0", - "@abgov/ui-components-common": "1.3.0", - "@abgov/web-components": "1.33.0", + "@abgov/react-components": "6.4.1", + "@abgov/ui-components-common": "1.4.0", + "@abgov/web-components": "1.34.0", "@faker-js/faker": "^8.3.1", "highlight.js": "^11.8.0", "js-cookie": "^3.0.5", diff --git a/public/images/governance-process.png b/public/images/governance-process.png new file mode 100644 index 000000000..d1a4b976e Binary files /dev/null and b/public/images/governance-process.png differ diff --git a/src/App.tsx b/src/App.tsx index a207abd59..1c1673cd6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -46,6 +46,7 @@ import ReportBugPage from "@routes/get-started/ReportBug"; import RoadmapPage from "@routes/get-started/Roadmap"; import SupportedBrowsersPage from "@routes/get-started/developers/SupportedBrowsers"; import UxDesignerPage from "@routes/get-started/designers/UxDesigner"; +import { LtsPolicyPage } from "@routes/get-started/LtsPolicyPage.tsx"; // Content Pages @@ -62,6 +63,7 @@ import ComponentNotFound from "@routes/not-found/NotFound.tsx"; import { LanguageVersionProvider } from "@contexts/LanguageVersionContext.tsx"; import DevelopersUpgradePage from "@routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx"; + const router = createBrowserRouter( createRoutesFromElements( }> @@ -96,6 +98,9 @@ const router = createBrowserRouter( } /> + + } /> + } /> diff --git a/src/components/card-lite/CardLite.css b/src/components/card-lite/CardLite.css index a2b10e0f6..bcb906e8b 100644 --- a/src/components/card-lite/CardLite.css +++ b/src/components/card-lite/CardLite.css @@ -1,23 +1,25 @@ -.card-lite .title { - font: var(--goa-typography-heading-l); - margin-bottom: var(--goa-space-m); +.card-lite { + text-decoration: none; } -.card-lite .description { - font-size: var(--goa-font-size-4); - margin-bottom: var(--goa-space-xs); +.card-heading { + color: black; + display: inline-block; } -.card-content a { - font-size: var(--goa-font-size-5); +.card-description { + color: black; + display: block; } -.card-lite .link { - font-size: var(--goa-font-size-5); +a:hover .card-heading { + color: var(--goa-color-interactive-hover); + text-decoration: underline; } -@media screen and (min-width: 1231px) { - .card-lite { - max-width: 300px; - } +.card-lite:focus-visible { + outline: 3px solid var(--goa-color-interactive-focus); + outline-offset: 4px; + border-radius: 4px; } + diff --git a/src/components/card-lite/CardLite.tsx b/src/components/card-lite/CardLite.tsx index da30f5bb8..2a465ae13 100644 --- a/src/components/card-lite/CardLite.tsx +++ b/src/components/card-lite/CardLite.tsx @@ -1,6 +1,6 @@ -import { ReactNode } from "react"; -import { Link } from "react-router-dom"; import "./CardLite.css"; +import { ReactNode } from "react"; +import { GoabLink, GoabText } from "@abgov/react-components"; export interface Props { title: string; @@ -11,13 +11,17 @@ export interface Props { export function CardLite(props: Props) { return ( -
-
{props.title}
-
{props.description}
- + ); } diff --git a/src/components/sandbox/Sandbox.css b/src/components/sandbox/Sandbox.css index 017ba6f83..6b0dc6444 100644 --- a/src/components/sandbox/Sandbox.css +++ b/src/components/sandbox/Sandbox.css @@ -1,5 +1,8 @@ .sandbox-note { color: #666; + margin-top: var(--goa-space-m); + margin-bottom: var(--goa-space-2xl); + font: var(--goa-typography-body-s); } .sandbox-render { diff --git a/src/components/sandbox/Sandbox.tsx b/src/components/sandbox/Sandbox.tsx index 59e7902b6..afe38e897 100644 --- a/src/components/sandbox/Sandbox.tsx +++ b/src/components/sandbox/Sandbox.tsx @@ -1,4 +1,6 @@ import { ReactElement, ReactNode, useContext, useEffect, useState } from "react"; +import { GoabCallout } from "@abgov/react-components"; +import { GoabCalloutType } from "@abgov/ui-components-common"; import SandboxProperties from "./SandboxProperties"; import { CodeSnippet } from "@components/code-snippet/CodeSnippet"; @@ -22,7 +24,7 @@ type Serializer = (el: any, properties: ComponentBinding[]) => string; interface SandboxProps { properties?: ComponentBinding[]; formItemProperties?: ComponentBinding[]; - note?: string; + note?: string | { type?: GoabCalloutType; heading?: string; content: string }; fullWidth?: boolean; onChange?: (bindings: ComponentBinding[], props: Record) => void; onChangeFormItemBindings?: (bindings: ComponentBinding[], props: Record) => void; @@ -140,7 +142,21 @@ export const Sandbox = (props: SandboxProps) => { )} - {props.note && (
{props.note}
)} + {props.note && + (typeof props.note === "string" ? ( +

{props.note}

+ ) : ( + + {props.note.content} + + ))} ); }; diff --git a/src/examples/checkbox/CheckboxDescriptionExample.tsx b/src/examples/checkbox/CheckboxDescriptionExample.tsx new file mode 100644 index 000000000..7b4aa8593 --- /dev/null +++ b/src/examples/checkbox/CheckboxDescriptionExample.tsx @@ -0,0 +1,96 @@ +import { GoabCheckbox, GoabFormItem } from "@abgov/react-components"; +import { Sandbox } from "@components/sandbox"; +import { CodeSnippet } from "@components/code-snippet/CodeSnippet.tsx"; +import { useContext } from "react"; +import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx"; + +export default function CheckboxDescriptionExample () { + const {version} = useContext(LanguageVersionContext); + return ( + <> + + {/*Angular*/} + + {version === "old" && + + Help text with a link. + + + + + `} + />} + + {version === "new" && + + + Help text with a link. + + + + + + `} + />} + + {/*React*/} + {version === "old" && + Help text with a link.} + /> + + + + `} + />} + + {version === "new" && + Help text with a link.} + /> + + + + `} + />} + + + Help text with a link.} + /> + + + + + + ); +} diff --git a/src/examples/checkbox/CheckboxExamples.tsx b/src/examples/checkbox/CheckboxExamples.tsx index 51fcdacbf..4a275448f 100644 --- a/src/examples/checkbox/CheckboxExamples.tsx +++ b/src/examples/checkbox/CheckboxExamples.tsx @@ -1,101 +1,21 @@ -import { GoabCheckbox, GoabFormItem } from "@abgov/react-components"; -import { Sandbox } from "@components/sandbox"; -import { CodeSnippet } from "@components/code-snippet/CodeSnippet.tsx"; -import { useContext } from "react"; -import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx"; +import CheckboxDescriptionExample from "@examples/checkbox/CheckboxDescriptionExample.tsx"; +import CheckboxNoneOrManyExample from "@examples/checkbox/CheckboxNoneOrManyExample.tsx"; import { SandboxHeader } from "@components/sandbox/sandbox-header/sandboxHeader.tsx"; -export default function CheckboxExamples () { - const {version} = useContext(LanguageVersionContext); - return ( - <> - - - - {/*Angular*/} +export const CheckboxExamples = () => { + return <> + {/*Checkbox example 1*/} + + + - {version === "old" && - - Help text with a link. - - - - - `} - />} - - {version === "new" && - - - Help text with a link. - - - - - - `} - />} - - {/*React*/} - {version === "old" && - Help text with a link.} - /> - - - - `} - />} - - {version === "new" && - Help text with a link.} - /> - - - - `} - />} - - - Help text with a link.} - /> - - - - - - ); + {/*Checkbox example 2*/} + + + + ; } diff --git a/src/examples/checkbox/CheckboxNoneOrManyExample.tsx b/src/examples/checkbox/CheckboxNoneOrManyExample.tsx new file mode 100644 index 000000000..9dff6aadf --- /dev/null +++ b/src/examples/checkbox/CheckboxNoneOrManyExample.tsx @@ -0,0 +1,87 @@ +import { GoabCheckbox, GoabFormItem } from "@abgov/react-components"; +import { Sandbox } from "@components/sandbox"; +import { CodeSnippet } from "@components/code-snippet/CodeSnippet.tsx"; +import { useContext } from "react"; +import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx"; + +export default function CheckboxNoneOrManyExample () { + const {version} = useContext(LanguageVersionContext); + return ( + <> + + {/*Angular*/} + + {version === "old" && + + + + + `} + />} + + {version === "new" && + + + + + `} + />} + + {/*React*/} + {version === "old" && + + + + + `} + />} + + {version === "new" && + + + + + `} + />} + + + + + + + + + ); +} diff --git a/src/examples/modal/ModalWarnUserDeadlineExample.tsx b/src/examples/modal/ModalWarnUserDeadlineExample.tsx index a911b3966..ffb42a4a3 100644 --- a/src/examples/modal/ModalWarnUserDeadlineExample.tsx +++ b/src/examples/modal/ModalWarnUserDeadlineExample.tsx @@ -8,7 +8,12 @@ export const ModalWarnUserDeadlineExample = () => { const {version} = useContext(LanguageVersionContext); const [warnCalloutModalOpen, setWarnCalloutModalOpen] = useState(); return ( - + setWarnCalloutModalOpen(true)}> Save for later diff --git a/src/examples/notification/NotificationExamples.tsx b/src/examples/notification/NotificationExamples.tsx new file mode 100644 index 000000000..bc9ff59df --- /dev/null +++ b/src/examples/notification/NotificationExamples.tsx @@ -0,0 +1,14 @@ +import { SandboxHeader } from "@components/sandbox/sandbox-header/sandboxHeader.tsx"; +import { NotificationServiceOutageExample } from "@examples/notification/NotificationServiceOutageExample.tsx"; + +export const NotificationExamples = () => { + return ( + <> + + + + + ) +} diff --git a/src/examples/notification/NotificationServiceOutageExample.tsx b/src/examples/notification/NotificationServiceOutageExample.tsx new file mode 100644 index 000000000..495947814 --- /dev/null +++ b/src/examples/notification/NotificationServiceOutageExample.tsx @@ -0,0 +1,66 @@ +import { Sandbox } from "@components/sandbox"; +import { CodeSnippet } from "@components/code-snippet/CodeSnippet.tsx"; +import { GoabNotification } from "@abgov/react-components"; +import { useContext } from "react"; +import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx"; + +export const NotificationServiceOutageExample = () => { + const {version} = useContext(LanguageVersionContext); + return ( + <> + + {/*Angular code*/} + {version === "old" && + Our system will be under maintenance from Thursday, September 15, 2025 at 10 pm to Friday, September 16, 2025 at 10 am. If you have questions or concerns, contact us at support@example.com. + + `} + />} + + {version === "new" && + Our system will be under maintenance from Thursday, September 15, 2025 at 10 pm to Friday, September 16, 2025 at 10 am. If you have questions or concerns, contact us at support@example.com. + + `} + />} + + {/*React code*/} + {version === "old" && + Our system will be under maintenance from Thursday, September 15, 2025 at 10 pm to Friday, September 16, 2025 at 10 am. If you have questions or concerns, contact us at support@example.com. + + `} + />} + + {version === "new" && + Our system will be under maintenance from Thursday, September 15, 2025 at 10 pm to Friday, September 16, 2025 at 10 am. If you have questions or concerns, contact us at support@example.com. + + `} + />} + + + Our system will be under maintenance from Thursday, September 15, 2025 at 10 pm + to Friday, September 16, 2025 at 10 am. If you have questions or concerns, + contact us at support@example.com. + + + + ) +} diff --git a/src/examples/textarea/TextAreaAskLongQuestionExample.tsx b/src/examples/textarea/TextAreaAskLongQuestionExample.tsx new file mode 100644 index 000000000..a09628a04 --- /dev/null +++ b/src/examples/textarea/TextAreaAskLongQuestionExample.tsx @@ -0,0 +1,20 @@ +import { Sandbox } from "@components/sandbox"; +import { + GoabFormItem, + GoabTextarea +} from "@abgov/react-components"; + +export const TextAreaAskLongQuestionExample = () => { + const noop = () => {} + return ( + + + + + + + + ) +} diff --git a/src/examples/textarea/TextAreaExamples.tsx b/src/examples/textarea/TextAreaExamples.tsx index ad1d0b7b4..59e2ce599 100644 --- a/src/examples/textarea/TextAreaExamples.tsx +++ b/src/examples/textarea/TextAreaExamples.tsx @@ -1,6 +1,8 @@ import { TextAreaAskQuestionMoreInformationExample } from "@examples/textarea/TextAreaAskQuestionMoreInformationExample.tsx"; + +import { TextAreaAskLongQuestionExample } from "@examples/textarea/TextAreaAskLongQuestionExample.tsx"; import { SandboxHeader } from "@components/sandbox/sandbox-header/sandboxHeader.tsx"; export const TextAreaExamples = () => { @@ -11,6 +13,12 @@ export const TextAreaExamples = () => { figmaExample="https://www.figma.com/design/aIRjvBzpIUH0GbkffjbL04/%E2%9D%96-Patterns-library-%7C-DDD?node-id=6311-137633&t=X0IQW5flDDaj8Vyg-4"> + + + + ) } diff --git a/src/routes/components/Checkbox.tsx b/src/routes/components/Checkbox.tsx index f8b126e01..20e314b3d 100644 --- a/src/routes/components/Checkbox.tsx +++ b/src/routes/components/Checkbox.tsx @@ -9,7 +9,7 @@ import { import { Category, ComponentHeader } from "@components/component-header/ComponentHeader.tsx"; import { useSandboxFormItem } from "@hooks/useSandboxFormItem.tsx"; import { ComponentContent } from "@components/component-content/ComponentContent"; -import CheckboxExamples from "@examples/checkbox/CheckboxExamples.tsx"; +import { CheckboxExamples } from "@examples/checkbox/CheckboxExamples.tsx"; import { LanguageVersionContext } from "@contexts/LanguageVersionContext.tsx"; import { LegacyTestIdProperties, @@ -328,7 +328,7 @@ export default function CheckboxPage() { heading={ <> Examples - + } > diff --git a/src/routes/components/Notificationbanner.tsx b/src/routes/components/Notificationbanner.tsx index 5ea2b2118..5925c0171 100644 --- a/src/routes/components/Notificationbanner.tsx +++ b/src/routes/components/Notificationbanner.tsx @@ -15,7 +15,7 @@ import { ComponentContent } from "@components/component-content/ComponentContent import { GoabNotificationType } from "@abgov/ui-components-common"; import { DesignEmpty } from "@components/empty-states/design-empty/DesignEmpty.tsx"; import { AccessibilityEmpty } from "@components/empty-states/accessibility-empty/AccessibilityEmpty.tsx"; -import {ExamplesEmpty} from "@components/empty-states/examples-empty/ExamplesEmpty.tsx"; +import { NotificationExamples } from "@examples/notification/NotificationExamples.tsx"; // == Page props == @@ -161,11 +161,11 @@ export default function NotificationBannerPage() { heading={ <> Examples - + } > - + diff --git a/src/routes/components/TextArea.tsx b/src/routes/components/TextArea.tsx index 278a1db5c..0b4766e25 100644 --- a/src/routes/components/TextArea.tsx +++ b/src/routes/components/TextArea.tsx @@ -506,7 +506,7 @@ export default function TextAreaPage() { heading={ <> Examples - + } > diff --git a/src/routes/get-started/GetStartedLayout.tsx b/src/routes/get-started/GetStartedLayout.tsx index a143cbedb..5265de802 100644 --- a/src/routes/get-started/GetStartedLayout.tsx +++ b/src/routes/get-started/GetStartedLayout.tsx @@ -15,11 +15,12 @@ export default function GetStartedLayout() { Setup Verify a bug VS Code - Technologies + Technologies Supported Browsers Version update guide QA testing + Long Term Support (LTS) Contribute Support Roadmap diff --git a/src/routes/get-started/GetStartedOverview.tsx b/src/routes/get-started/GetStartedOverview.tsx index 2adc272e3..bf4641815 100644 --- a/src/routes/get-started/GetStartedOverview.tsx +++ b/src/routes/get-started/GetStartedOverview.tsx @@ -1,65 +1,67 @@ -import { GoabButton, GoabButtonGroup, GoabContainer, GoabGrid } from "@abgov/react-components"; -import { useNavigate } from "react-router-dom"; +import { + GoabBlock, + GoabCallout, + GoabContainer, + GoabLink, + GoabText +} from "@abgov/react-components"; import { ComponentContent } from "@components/component-content/ComponentContent.tsx"; export default function GetStartedOverviewPage() { - const navigate = useNavigate(); return ( - -

Starting with the design system

-

- Start with the design system to build on the research and experience of other service - teams and avoid repeating work that's already been done. -

+ + + Starting with the design system + + + Start with the design system to build on the research and experience of other service teams and avoid + repeating work that's already been done. + -
- -

Using the design system by role:

- - navigate("/get-started/designers")}> - Designers - - navigate("/get-started/developers")}> - Developers - - navigate("/get-started/qa-testing")}> - QA Testers - - -
+ + + Design system by role: + + + + Designer + + + + + Developer + + + + + QA Tester + + + - + Start with the design system. You don't need to reinvent the wheel. The design system is the floor, not the ceiling. Start with it to save time building the common parts of a service, so that you can spend time on the unique challenges within your service context. - -

The value of starting with the design system components

-

- The design system is your foundation for success and an incredible time-saver, allowing - you to focus on high-value work. By starting with the design system, you can: -

+

Why start with the design system?

+ + The design system can save you time and effort getting to a better service, allowing you to focus on other + high-value work. By starting with the design system, you can: + +
  • Streamline collaboration: Your developers can use the corresponding coded design system components.
  • - Ensure accessibility: Accessibility is built into the components from + Ensure better accessibility: Accessibility is built into the components from both design and code.
  • - Benefit from thorough testing: Components have been rigorously tested + Save time on testing: Components have been rigorously tested across various devices, browsers, and service contexts.
  • @@ -67,12 +69,15 @@ export default function GetStartedOverviewPage() { system for a cohesive experience.
- -

More time for other high value work

-

- Leveraging what exists in the design system saves you time, enabling you to spend more - time on other high-value tasks such as: -

+
+ + More time for other high value work + + + Leveraging what exists in the design system saves you time, enabling you to spend more time on other + high-value tasks such as: + +
  • Usability testing
  • User research
  • @@ -81,7 +86,49 @@ export default function GetStartedOverviewPage() {
  • Design integrity of the product
  • Low fidelity design and testing
-
-
+ + +

How do I use the design system in my service?

+ + Start by using the design system components and patterns. You should expect that this will cover about 80% of your needs in a service. + When usability testing shows that a new solution or an improvement to an existing solution is needed, design a + better solution. Use a 3rd party library, code your own, and/or share solutions with other teams. + + +
    +
  1. + Use the design system as the default first solution in design and development +
  2. +
  3. + Identify any needs that don't exist in the design system through user testing +
  4. +
  5. + Talk to the design system team to see what’s available and what other + teams have done +
  6. +
  7. + Test a better solution with users +
  8. +
  9. + Share learnings from design and development back to the design system so everyone can learn and improve +
  10. +
  11. + The new solution or change to an existing solution: +
      +
    • Is added to the system
    • +
    • Stays a snowflake (unique to your service) for now and is tracked in the design system backlog
    • +
    +
  12. +
+
+ + Avoid custom solutions without a genuine user need to prevent unnecessary work and save time.
View + the design system governance process +
+ +
); } diff --git a/src/routes/get-started/LtsPolicyPage.tsx b/src/routes/get-started/LtsPolicyPage.tsx new file mode 100644 index 000000000..321f6dad6 --- /dev/null +++ b/src/routes/get-started/LtsPolicyPage.tsx @@ -0,0 +1,32 @@ +import { GoabCallout, GoabText } from "@abgov/react-components"; +import { Link } from "react-router-dom"; + +export const LtsPolicyPage = () => { + return ( + <> + Long Term Support (LTS) + + + The Long Term Support (LTS) version will continue to be supported until September 30, 2025. Learn more about what you can expect. + + + + The previous version of the design system v3 (Angular) and v5 (React) is now in Long-Term Support (LTS). Here's what that means: + + +
    +
  • Bug fixes only: We'll continue fixing critical bugs and regressions.
  • +
  • No new features or enhancements: All new development is happening in the latest major version.
  • +
  • Same reliable experience: Your project will continue to work as expected.
  • +
+ +

+ Ready to update to the latest version, visit our update guide +

+ + + Projects still using LTS will continue to work, but new issues or bugs will not be prioritized. + + + ); +} diff --git a/src/routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx b/src/routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx index e2ed38e3e..529fa0745 100644 --- a/src/routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx +++ b/src/routes/get-started/developers/upgrade-guide/DevelopersUpgrade.tsx @@ -1,4 +1,4 @@ -import { GoabContainer } from "@abgov/react-components"; +import { GoabCallout, GoabContainer } from "@abgov/react-components"; import "../Developers.css"; import { ComponentContent } from "@components/component-content/ComponentContent"; import css from "@routes/patterns/patterns.module.css"; @@ -13,13 +13,23 @@ export default function DevelopersUpgradePage() {

Version update guide

Step-by-step guide to updating your code from DDD Design System v3 to v4 (Angular) and v5 to v6 (React)

- This guide will help you update your project to DDD Design System v4 (Angular) and v6 (React). The update - introduces key improvements, including enhanced alignment between Angular and React - properties, better error checking during builds, and type-ahead suggestions for Angular - components. These changes aim to improve the developer experience when working with the - design system. + The update introduces the following key improvements:

- +
    +
  • Type-ahead support for Angular components: Get coding faster with smart suggestions directly in your IDE.
  • +
  • New features and properties added across existing components: More flexibility, and improved accessibility.
  • +
  • New components available: Build more complex interfaces with less custom code.
  • +
  • Improved error checking during builds: Catch issues earlier for a smoother development experience.
  • +
+

+ This guide will help you update your project to DDD Design System v4 (Angular) and v6 (React). +

+ + + The component is stable and supported in the latest major release. However, we recommend using the public form pattern for a more modular, flexible, and accessible approach. + + +

Major differences between current and new version

One of the most significant changes in v4 (Angular) and v6 (React) is the renaming of component prefixes to align diff --git a/src/routes/home.tsx b/src/routes/home.tsx index 82a0a6ab0..0a47c718e 100644 --- a/src/routes/home.tsx +++ b/src/routes/home.tsx @@ -1,16 +1,17 @@ import { + GoabAccordion, GoabButton, - GoabButtonGroup, + GoabButtonGroup, GoabCallout, GoabContainer, GoabDivider, GoabGrid, GoabHeroBanner, - GoabHeroBannerActions, + GoabHeroBannerActions, GoabLink, GoabPageBlock, - GoabSpacer, + GoabSpacer, GoabText } from "@abgov/react-components"; import "./home.css"; import CardLite from "../components/card-lite/CardLite"; -import { Link, useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { SupportInfo } from '../components/support-info/SupportInfo'; import { MAX_CONTENT_WIDTH } from "../global-constants.ts"; @@ -18,15 +19,20 @@ const HomePage = () => { const navigate = useNavigate(); return ( <> +

- Resources for Government of Alberta product teams to build better services. Learn from the research and experience of other - product teams and avoid repeating work that’s already been done. + + Use the design system to build your service. Build on the research and experience of other service teams and + avoid repeating work that’s already been done. + + - { + { navigate("get-started"); }} trailingIcon="arrow-forward" @@ -41,57 +47,134 @@ const HomePage = () => { +
- + - -

How to use the design system in your service

-
-
    -
  1. Start by using the design system resources and validate your product through user testing.
  2. -
  3. - If a component or pattern doesn’t exist in production or doesn’t meet the needs of your users, - {' '}contact the design system team. We’ll discuss the issue to understand it better and decide on the next steps together. -
  4. -
-

- Remember: Avoid custom solutions without a genuine user need. Leverage the existing resources from the design system first to prevent - unnecessary work and iterate on your service faster. -

- - Learn more about starting with the design system - - -
+ + +
+ Start by using the design system in your service + + Use the existing components and patterns in the design system to save time and build off of the current + standard. Typically, these cover around 80% of your service's needs. + + + Talk to the Design System team{" "} + before creating a custom solution. This + way you can see what’s available, what + other teams have already done, and avoid repeating work. + + + { + navigate("get-started"); + }}> + Learn more + +
+
+ + + If a component or pattern doesn’t exists in the design system or doesn’t meet the needs of your users, + follow the process below: + + + + Design system workflow diagram + + + + View process for new components and patterns (Figjam) + + + + + Avoid custom solutions without a genuine user need to prevent unnecessary work and save time. + +
+
+ + Additional resources + + + + Common capabilities: Shared digital services + + + A directory of reusable backend services designed to help you and your team work more efficiently and + align to government infrastructure standards. + + + + Go to common capabilities + + + + + + User Experience best practices + + + These resources establish best practices to shape and guide the work of DDD user experience designers. + + + + Go to UX practice resources + + + + + +
+ + ); }; export default HomePage;