From bb30a7f228366c4299ac53cc1816a10f778b3e5c Mon Sep 17 00:00:00 2001 From: Hendrik Schmidt Date: Fri, 17 Jan 2025 14:40:54 +0100 Subject: [PATCH] Refactor css (#248) * Update package-lock.json * Update Angie * Update heading styles * Remove sr-only already covered by tailwind * Move telephone link styling * Don't use index as key * Refactor details / summary css * Move button styling to shared CSS * Move rich text link styling to shared CSS * Restructure CSS and add headings * Remove IE11 edge case * Move paragraph-list class * Remove support for browsers without focus-visible * Remove unused class rich-text-2xl * Move styles to PreCheckNavigation * Remove unused max class * Move ParagraphList ol styling to component * Move list stylings and remove dito styles.css * Make props Readonly * Refactor focus styling * Refactor footer link styling * Change utilities syntax * Change base syntax * Drop old safari support * Change components syntax * Remove superfluous rich text styling * Give Accordion bg-color only on focus-visible * Move body styles to styles.css * Create custom twMerge with ds support and use * Use twMerge in RichText * Make eslint happy * Refactor nested string template * Refactor index principle list styling * Refactor sitemap styling * Adapt remaining lists to new styles * Refactor error page * Refactor principle section on landing * Fix line-height * Unify prop order * Update styles.css * Fix undefined class bug * Fix component names * Give all lists max-width and remove for exceptions * Remove rich-text classes and give link styling * Update RichText.tsx * Remove list-none and ds-label-01-reg from Details * Introduce list-unstyled utility * Remove unused class from links * Inline `rich-text` styles and refactor white links * Fix vitest * Refactor twMerge import * Cache playwright dependencies * Refactor conditional pipeline checks * Revert "Refactor conditional pipeline checks" This reverts commit 5410dd8b06a998f86594c6c8f5eb3534658853e5. * Revert "Cache playwright dependencies" This reverts commit 60b24e5d29cd621e30578019d5e266733f4218ae. * Update sitemap.tsx * Remove redundant styles * Move body height / flex styles to tag * Fix support page typo * Unify breadcrumbs spacing * Improve VP index styling * Make visualisation page responsive * Improve visualisation gaps * Fix technicalFeasibility content * Change method page heading styles * Remove rounded border in feedback form * Improve feedback buttons spacing * Change method subpages heading look to h3 * Change labels to subheads where applicable * Improve PrincipleExplanation styling * Change list-unstyled handling * Add spacing between list-items --- .eslintrc.cjs | 13 ++ package-lock.json | 2 +- package.json | 2 +- packages/dito/app/components/Accordion.tsx | 4 +- .../dito/app/components/AccordionItem.tsx | 4 +- packages/dito/app/components/FeedbackForm.tsx | 8 +- .../dito/app/components/ParagraphList.tsx | 17 +- .../dito/app/components/SupportBanner.tsx | 4 +- .../dito/app/components/VisualisationItem.tsx | 6 +- packages/dito/app/resources/content.ts | 36 ++-- packages/dito/app/root.tsx | 20 +- packages/dito/app/routes/_index.tsx | 37 ++-- .../routes/beispiele.prinzipien.$prinzip.tsx | 6 +- .../routes/beispiele.regelungen.$regelung.tsx | 9 +- .../app/routes/beispiele.visualisierungen.tsx | 27 ++- packages/dito/app/routes/methoden.tsx | 5 +- .../dito/app/routes/methoden_.$subPage.tsx | 20 +- .../app/routes/methoden_.fuenf-prinzipien.tsx | 4 +- packages/dito/app/routes/sitemap.tsx | 11 +- .../dito/app/routes/unterstuetzung/route.tsx | 17 +- .../PreCheckNavigation.tsx | 11 +- .../dito/app/routes/vorpruefung._index.tsx | 8 +- .../vorpruefung.ergebnis/ResultPage.tsx | 4 +- packages/dito/app/styles.css | 44 ----- packages/shared/components/Background.tsx | 2 +- packages/shared/components/Box.tsx | 2 +- packages/shared/components/Breadcrumbs.tsx | 2 +- packages/shared/components/Button.tsx | 2 +- .../shared/components/ButtonContainer.tsx | 2 +- packages/shared/components/Container.tsx | 2 +- packages/shared/components/DetailsSummary.tsx | 6 +- packages/shared/components/Footer.tsx | 4 +- packages/shared/components/Heading.tsx | 2 +- packages/shared/components/InfoBox.tsx | 2 +- packages/shared/components/InlineInfoList.tsx | 2 +- packages/shared/components/List.tsx | 4 +- packages/shared/components/ListItem.tsx | 10 +- packages/shared/components/Question.tsx | 2 +- packages/shared/components/RichText.spec.tsx | 5 - packages/shared/components/RichText.tsx | 10 +- packages/shared/components/Textarea.tsx | 2 +- packages/shared/styles.css | 182 ++++++------------ packages/shared/utils/tailwindMerge.ts | 46 +++++ packages/shared/vitest.config.ts | 2 + .../src/components/Recommendation.tsx | 2 +- 45 files changed, 283 insertions(+), 329 deletions(-) delete mode 100644 packages/dito/app/styles.css create mode 100644 packages/shared/utils/tailwindMerge.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 9e39d123..75fc7cea 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -33,6 +33,19 @@ module.exports = { endOfLine: "auto", }, ], + "no-restricted-imports": [ + "error", + { + paths: [ + { + name: "tailwind-merge", + importNames: ["twMerge"], + message: + "Please import { twMerge } from '@digitalcheck/shared/utils/tailwind-merge'.", + }, + ], + }, + ], }, overrides: [ diff --git a/package-lock.json b/package-lock.json index b455e818..89c806b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ ], "dependencies": { "@digitalcheck/shared": "*", - "@digitalservice4germany/angie": "^1.1.1", + "@digitalservice4germany/angie": "^1.2.0", "@digitalservice4germany/style-dictionary": "^2.0.0", "@digitalservicebund/icons": "^2.0.0", "react": "^18.2.0", diff --git a/package.json b/package.json index 183767f8..92dc0419 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "@digitalcheck/shared": "*", - "@digitalservice4germany/angie": "^1.1.1", + "@digitalservice4germany/angie": "^1.2.0", "@digitalservice4germany/style-dictionary": "^2.0.0", "@digitalservicebund/icons": "^2.0.0", "react": "^18.2.0", diff --git a/packages/dito/app/components/Accordion.tsx b/packages/dito/app/components/Accordion.tsx index 58557047..ca25692d 100644 --- a/packages/dito/app/components/Accordion.tsx +++ b/packages/dito/app/components/Accordion.tsx @@ -5,9 +5,9 @@ export default function Accordion({ }: Readonly<{ items: AccordionItemProps[] }>) { return (
- {items.map((item, index) => ( + {items.map((item) => ( ) { return (
- +
{headline}
diff --git a/packages/dito/app/components/FeedbackForm.tsx b/packages/dito/app/components/FeedbackForm.tsx index 2a0251fa..76df515a 100644 --- a/packages/dito/app/components/FeedbackForm.tsx +++ b/packages/dito/app/components/FeedbackForm.tsx @@ -25,7 +25,7 @@ function FeedbackInput({ ariaLabel: string; }>) { const classes = twJoin( - "rounded-lg px-24 h-64 flex items-center gap-8", + "px-16 h-48 sm:px-24 sm:h-64 flex items-center", selected ? "bg-blue-800 text-white" : "bg-blue-200 text-blue-800", ); @@ -103,7 +103,7 @@ function FeedbackQuestion({
) : (
-
+
{[1, 2, 3, 4, 5].map((number) => { let ariaLabel: string; switch (number) { @@ -216,12 +216,12 @@ export default function FeedbackForm() { /> - + ); diff --git a/packages/dito/app/components/ParagraphList.tsx b/packages/dito/app/components/ParagraphList.tsx index 27ccfbdb..e73d806c 100644 --- a/packages/dito/app/components/ParagraphList.tsx +++ b/packages/dito/app/components/ParagraphList.tsx @@ -100,9 +100,9 @@ const PrincipleExplanation = ({ const shouldHighlight = location.hash === `#${id}`; const color = HIGHLIGHT_COLORS[erfuellung.Prinzip.Nummer]; const explanationClasses = twJoin( - "p-4 w-fit max-w-[642px]", + "w-fit max-w-[642px] px-8", color.border, - shouldHighlight ? "border-4" : "border-l-4 py-8", + shouldHighlight ? "border-4 p-4" : "border-l-4 p-8", ); return ( @@ -111,7 +111,7 @@ const PrincipleExplanation = ({ {highlightID && ( +
{absatzGroup.PrinzipErfuellungen.length > 0 && (
- + {digitalSuitability.paragraphs.explanation} {absatzGroup.PrinzipErfuellungen.toSorted( @@ -286,13 +286,14 @@ function Paragraph({ return (
-
+
-

{paragraph.Titel}

+

{paragraph.Titel}

{groupedAbsaetze.map((absatzGroup) => ( -
+
+
-
+
{visualisierung.Titel} diff --git a/packages/dito/app/resources/content.ts b/packages/dito/app/resources/content.ts index 9b068746..feb5af7b 100644 --- a/packages/dito/app/resources/content.ts +++ b/packages/dito/app/resources/content.ts @@ -238,15 +238,19 @@ Damit die digitale Umsetzung reibungslos klappt, muss die Regelung digitaltaugli }, ], }, - principals: { + principles: { title: "5 Prinzipien für digitaltaugliche Gesetzgebung", - content: `1. Prinzip 1: Digitale Kommunikation sicherstellen -2. Prinzip 2: Wiederverwendung von Daten und Standards ermöglichen -3. Prinzip 3: Datenschutz und Informationssicherheit gewährleisten -4. Prinzip 4: Klare Regelungen für eine digitale Ausführung finden -5. Prinzip 5: Automatisierung ermöglichen - -[Details und Beispiele](${ROUTE_METHODS_FIVE_PRINCIPLES.url})`, + content: [ + "Prinzip 1: Digitale Kommunikation sicherstellen", + "Prinzip 2: Wiederverwendung von Daten und Standards ermöglichen", + "Prinzip 3: Datenschutz und Informationssicherheit gewährleisten", + "Prinzip 4: Klare Regelungen für eine digitale Ausführung finden", + "Prinzip 5: Automatisierung ermöglichen", + ], + link: { + text: "Details und Beispiele", + href: ROUTE_METHODS_FIVE_PRINCIPLES.url, + }, }, }; @@ -659,7 +663,7 @@ Mit diesen Informationen sind Sie gut vorbereitet, um - in der **formellen Beteiligung** eine wirkungsvolle Umsetzung zu besprechen.`, }, { - background: "blue", + isSubstep: true, headline: { text: "2.1. Zuständige Akteurinnen und Akteure auflisten" }, info: [ { @@ -676,7 +680,7 @@ Mit diesen Informationen sind Sie gut vorbereitet, um ], }, { - background: "blue", + isSubstep: true, headline: { text: "2.2. Aufgaben und Abläufe gemeinsam erfassen", }, @@ -703,7 +707,7 @@ Mit diesen Informationen sind Sie gut vorbereitet, um ], }, { - background: "blue", + isSubstep: true, headline: { text: "2.3. IT-Systeme gemeinsam erfassen", }, @@ -735,7 +739,7 @@ Mit diesen Informationen sind Sie gut vorbereitet, um text: "Mit einem guten Verständnis des Ist-Zustandes erarbeiten Sie nun Ihre Regelung. Jetzt geht es darum, Möglichkeiten zur Digitalisierung zu finden und Hindernisse aus dem Weg zu räumen — eine gute digitale Umsetzung spart langfristig Zeit und Geld und erfüllt die heutigen Erwartungen der Betroffenen an den Staat.", }, { - background: "blue", + isSubstep: true, headline: { text: "2.4. Möglichkeiten und Hindernisse der digitalen Umsetzung identifizieren", }, @@ -754,7 +758,7 @@ Mit diesen Informationen sind Sie gut vorbereitet, um ], }, { - background: "blue", + isSubstep: true, headline: { text: "2.5. Technische Umsetzbarkeit sicherstellen", }, @@ -791,7 +795,7 @@ Die Erkenntnisse und Ergebnisse aus den vorigen Schritten helfen Ihnen dabei, - den **Umsetzungsprozess einfach besprechbar** zu machen in Abstimmungen anhand von Visualisierungen.`, }, { - background: "blue", + isSubstep: true, headline: { text: "Schreiben Sie die Regelung" }, text: "Nutzen Sie Ihre gewohnten Programme und Arbeitshilfen, um die Regelung zu schreiben — z. B. eNorm und das Handbuch der Rechtsförmigkeit.", }, @@ -1276,13 +1280,13 @@ export const technicalFeasibility = { icon: DrawOutlined, title: "Verstehen Sie die Auswirkungen auf IT-Systeme", text: `Vergleichen Sie gemeinsam mit den [zuständigen Akteurinnen und Akteuren](${ROUTE_METHODS_RESPONSIBLE_ACTORS.url}) das geplante Vorhaben mit den Möglichkeiten der bestehenden IT-Systeme. Überprüfen Sie die Informationen mithilfe neutraler IT-Expertinnen und -Experten. -
+ So erfahren Sie - welche IT-Systeme für Ihr Vorhaben verwendet werden können - und an welchen Stellen Änderungen nötig sind.
-### Sie müssen nicht alles allein bewältigen +

Sie müssen nicht alles allein bewältigen

Bei kleinen Fragen rufen Sie den Digitalcheck-Support an unter 0151/40 76 78 39. Für ein unterstützendes, einstündiges Videotelefonat schreiben Sie eine E-Mail an digitalcheck@digitalservice.bund.de oder buchen Sie direkt einen Termin.`, diff --git a/packages/dito/app/root.tsx b/packages/dito/app/root.tsx index b33cfbda..01c63d8f 100644 --- a/packages/dito/app/root.tsx +++ b/packages/dito/app/root.tsx @@ -44,7 +44,6 @@ import { import { PLAUSIBLE_DOMAIN, PLAUSIBLE_SCRIPT } from "utils/constants.server"; import { getFeatureFlags } from "utils/featureFlags.server"; import { useNonce } from "utils/nonce"; -import styles from "./styles.css?url"; export function loader({ request }: LoaderFunctionArgs) { const featureFlags = getFeatureFlags(); @@ -158,7 +157,6 @@ export const headers: HeadersFunction = () => ({ export const links: LinksFunction = () => [ { rel: "stylesheet", href: sharedStyles }, - { rel: "stylesheet", href: styles }, { rel: "icon", href: "/favicon.svg", type: "image/svg+xml" }, { rel: "icon", @@ -220,11 +218,11 @@ const PageHeader = ({ }) => (
- + Logo des Bundes
-
+
{header.title} |
@@ -352,15 +350,9 @@ Vielen Dank für Ihr Verständnis.`;
- + {errorStatus} -
- -
+